Installing hosted Inferno from sourceFirst change mkconfig to reflect your host environment,specifically ROOT (which must be an absolute path name), SYSHOST and OBJTYPE. Like the native kernels _eeee_mmmm_uuuu relies on several auxil-iary libraries (the source of which it often shares with thenative kernels). Emu itself is built by the _mmmm_kkkk_ffff_iiii_llll_eeee in the_eeee_mmmm_uuuu platform directory for the host, as described above.Each library has its own _mmmm_kkkk_ffff_iiii_llll_eeee; the various components aremade in the right order by the _mmmm_kkkk_ffff_iiii_llll_eeee at the root of theInferno tree. The _mmmm_kkkk_ffff_iiii_llll_eeee for each platform will alsoinvoke _mmmm_kkkk recursively to make the appropriate libraries fora given configuration. The Unix emu variant generally is covered by `POSIX'(with common extensions) but each Unix port has one filethat differs considerably for each port, namelyemu/platform/os.c, the differences corresponding to the dif-ferent ways under Unix of implementing kernel-scheduledthreads efficiently. There are working emu versions for FreeBSD/386,Irix/mips, Linux/386, MacOSX/power, Plan 9, Solaris/sparc,and Windows (NT, 2000 and Explorer plug-in). Each platformtypically uses mechanisms specific to the host operatingsystem to implement Inferno's internal thread/process struc-ture. POSIX threads have often been found to be insuffi-cient (poorly implemented) on some platforms, and if so areavoided. See _kkkk_pppp_rrrr_oooo_cccc in _eeee_mmmm_uuuu/*/_oooo_ssss._cccc. Source is included for ports to HP/UX (S800 architec-ture), Solaris/386, and Unixware, in case someone wishes totake them up now, but we have not determined their fitness. The Plan 9 hosted implementation is unusual in that itsupports several processor types: _3333_8888_6666, _mmmm_iiii_pppp_ssss, _pppp_oooo_wwww_eeee_rrrr (PowerPC) and _ssss_pppp_aaaa_rrrr_cccc. Furthermore, all versions of _eeee_mmmm_uuuu can bebuilt on any processor type, in the usual way for Plan 9. Otherwise, as distributed, _eeee_mmmm_uuuu for a platform can onlybe built when running on that platform. One unusual variant makes the whole of Inferno a plug-in for Microsoft's Internet Explorer, giving the same envi-ronment for Inferno applications running in an HTML page asis provided by hosted or native Inferno. That is, there isnot a distinct `applet' environment with special programminginterfaces. The source for the various plug-in componentsis found in /_tttt_oooo_oooo_llll_ssss/_pppp_llll_uuuu_gggg_iiii_nnnn and /_uuuu_ssss_rrrr/_iiii_nnnn_tttt_eeee_rrrr_nnnn_eeee_tttt within theInferno tree; they use the version of _eeee_mmmm_uuuu defined by theconfiguration file /_eeee_mmmm_uuuu/_NNNN_tttt/_iiii_eeee. All the libraries an executables can be built in a treecontaining only the source code. To do that for a supportedvariant of hosted Inferno, on Unix or Plan 9, do the follow-ing in the root of the Inferno tree:1. Run _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh to rebuild the _mmmm_kkkk command, which is used to build everything else.2. Set _PPPP_AAAA_TTTT_HHHH (or _pppp_aaaa_tttt_hhhh on Plan 9) to include the _bbbb_iiii_nnnn directory for the platform, which will now contain the _mmmm_kkkk binary just built. On Unix, export _PPPP_AAAA_TTTT_HHHH.3. Then _mmmm_kkkk _nnnn_uuuu_kkkk_eeee to remove any extraneous object files.4. Finally, _mmmm_kkkk _iiii_nnnn_ssss_tttt_aaaa_llll_llll to create and install the libraries, _llll_iiii_mmmm_bbbb_oooo compiler, _eeee_mmmm_uuuu for hosted Inferno, and auxiliary commands. The rules do that in an order that ensures that the commands or libraries needed by a later stage are built and installed first. (Note that a plain _mmmm_kkkk will not suffice, because it does not put the results in the search path.)Doing something similar on Windows or Plan 9 currentlyrequires the executable for _mmmm_kkkk to be available in thesearch path, since there is no equivalent of _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh.Otherwise the procedure is the same. On Plan 9, of course,the host system's normal version of _mmmm_kkkk should be adequate.
Installing hosted Inferno from source
First change mkconfig to reflect your host environment,
specifically ROOT (which must be an absolute path name), SYSHOST and OBJTYPE.
Like the native kernels _eeee_mmmm_uuuu relies on several auxil-
iary libraries (the source of which it often shares with the
native kernels). Emu itself is built by the _mmmm_kkkk_ffff_iiii_llll_eeee in the
_eeee_mmmm_uuuu platform directory for the host, as described above.
Each library has its own _mmmm_kkkk_ffff_iiii_llll_eeee; the various components are
made in the right order by the _mmmm_kkkk_ffff_iiii_llll_eeee at the root of the
Inferno tree. The _mmmm_kkkk_ffff_iiii_llll_eeee for each platform will also
invoke _mmmm_kkkk recursively to make the appropriate libraries for
a given configuration.
The Unix emu variant generally is covered by `POSIX'
(with common extensions) but each Unix port has one file
that differs considerably for each port, namely
emu/platform/os.c, the differences corresponding to the dif-
ferent ways under Unix of implementing kernel-scheduled
threads efficiently.
There are working emu versions for FreeBSD/386,
Irix/mips, Linux/386, MacOSX/power, Plan 9, Solaris/sparc,
and Windows (NT, 2000 and Explorer plug-in). Each platform
typically uses mechanisms specific to the host operating
system to implement Inferno's internal thread/process struc-
ture. POSIX threads have often been found to be insuffi-
cient (poorly implemented) on some platforms, and if so are
avoided. See _kkkk_pppp_rrrr_oooo_cccc in _eeee_mmmm_uuuu/*/_oooo_ssss._cccc.
Source is included for ports to HP/UX (S800 architec-
ture), Solaris/386, and Unixware, in case someone wishes to
take them up now, but we have not determined their fitness.
The Plan 9 hosted implementation is unusual in that it
supports several processor types: _3333_8888_6666, _mmmm_iiii_pppp_ssss, _pppp_oooo_wwww_eeee_rrrr (Power
PC) and _ssss_pppp_aaaa_rrrr_cccc. Furthermore, all versions of _eeee_mmmm_uuuu can be
built on any processor type, in the usual way for Plan 9.
Otherwise, as distributed, _eeee_mmmm_uuuu for a platform can only
be built when running on that platform.
One unusual variant makes the whole of Inferno a plug-
in for Microsoft's Internet Explorer, giving the same envi-
ronment for Inferno applications running in an HTML page as
is provided by hosted or native Inferno. That is, there is
not a distinct `applet' environment with special programming
interfaces. The source for the various plug-in components
is found in /_tttt_oooo_oooo_llll_ssss/_pppp_llll_uuuu_gggg_iiii_nnnn and /_uuuu_ssss_rrrr/_iiii_nnnn_tttt_eeee_rrrr_nnnn_eeee_tttt within the
Inferno tree; they use the version of _eeee_mmmm_uuuu defined by the
configuration file /_eeee_mmmm_uuuu/_NNNN_tttt/_iiii_eeee.
All the libraries an executables can be built in a tree
containing only the source code. To do that for a supported
variant of hosted Inferno, on Unix or Plan 9, do the follow-
ing in the root of the Inferno tree:
1. Run _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh to rebuild the _mmmm_kkkk command, which is
used to build everything else.
2. Set _PPPP_AAAA_TTTT_HHHH (or _pppp_aaaa_tttt_hhhh on Plan 9) to include the _bbbb_iiii_nnnn
directory for the platform, which will now contain the
_mmmm_kkkk binary just built. On Unix, export _PPPP_AAAA_TTTT_HHHH.
3. Then _mmmm_kkkk _nnnn_uuuu_kkkk_eeee to remove any extraneous object files.
4. Finally, _mmmm_kkkk _iiii_nnnn_ssss_tttt_aaaa_llll_llll to create and install the
libraries, _llll_iiii_mmmm_bbbb_oooo compiler, _eeee_mmmm_uuuu for hosted Inferno,
and auxiliary commands. The rules do that in an order
that ensures that the commands or libraries needed by a
later stage are built and installed first. (Note that
a plain _mmmm_kkkk will not suffice, because it does not put
the results in the search path.)
Doing something similar on Windows or Plan 9 currently
requires the executable for _mmmm_kkkk to be available in the
search path, since there is no equivalent of _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh.
Otherwise the procedure is the same. On Plan 9, of course,
the host system's normal version of _mmmm_kkkk should be adequate.