683 lines
28 KiB
XML
683 lines
28 KiB
XML
<!-- $NetBSD: platforms.xml,v 1.29 2006/03/01 00:04:30 reed Exp $ -->
|
|
|
|
<chapter id="platforms">
|
|
<title>Using pkgsrc on systems other than &os;</title>
|
|
|
|
<sect1 id="bootstrapping-pkgsrc">
|
|
<title>Bootstrapping pkgsrc</title>
|
|
|
|
<para>For operating systems other than &os;, we provide a bootstrap kit to
|
|
build the required tools to use pkgsrc on your platform. Besides
|
|
support for native &os;, pkgsrc and the bootstrap kit have support for
|
|
the following operating systems:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Darwin (Mac OS X)</para></listitem>
|
|
<listitem><para>DragonFly BSD</para></listitem>
|
|
<listitem><para>FreeBSD</para></listitem>
|
|
<listitem><para>Interix (Windows 2000, XP, 2003)</para></listitem>
|
|
<listitem><para>IRIX</para></listitem>
|
|
<listitem><para>Linux</para></listitem>
|
|
<listitem><para>OpenBSD</para></listitem>
|
|
<listitem><para>Solaris</para></listitem>
|
|
<listitem><para>Tru64 (Digital UNIX/OSF1)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Support for other platforms is under development.</para>
|
|
|
|
<para>Installing the bootstrap kit should be as simple as:</para>
|
|
|
|
<screen>
|
|
&rprompt; <userinput>env CVS_RSH=ssh cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout pkgsrc</userinput>
|
|
&rprompt; <userinput>cd pkgsrc/bootstrap</userinput>
|
|
&rprompt; <userinput>./bootstrap</userinput></screen>
|
|
|
|
<para>See <xref linkend="getting"/> for other ways to get
|
|
pkgsrc before bootstrapping. The given
|
|
<command>bootstrap</command> command will use the defaults of
|
|
<filename>/usr/pkg</filename> for the
|
|
<emphasis>prefix</emphasis> where programs will be installed in,
|
|
and <filename>/var/db/pkg</filename> for the package database
|
|
directory where pkgsrc will do its internal bookkeeping.
|
|
However, these can also be set using command-line
|
|
arguments.</para>
|
|
|
|
<para>Binary packages for the pkgsrc tools and an initial set of packages is
|
|
available for supported platforms. An up-to-date list of these can be
|
|
found on <ulink url="http://www.pkgsrc.org/">www.pkgsrc.org</ulink>.
|
|
Note that this only works for privileged builds that install
|
|
into <filename>/usr/pkg</filename>.</para>
|
|
|
|
<note>
|
|
<para>The bootstrap installs a <command>bmake</command> tool.
|
|
Use this <command>bmake</command> when building via pkgsrc.
|
|
For examples in this guide, use <command>bmake</command>
|
|
instead of <quote>make</quote>.</para>
|
|
</note>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="platform-specific-notes">
|
|
<title>Platform-specific notes</title>
|
|
|
|
<para>Here are some platform-specific notes you should be aware of.</para>
|
|
|
|
<sect2 id="darwin">
|
|
<title>Darwin (Mac OS X)</title>
|
|
|
|
<para>Darwin 5.x and 6.x are supported. There are two methods of using
|
|
pkgsrc on Mac OS X, by using a <link linkend="platform.osx-image">disk
|
|
image</link>, or a <link linkend="platform.osx-ufs">UFS
|
|
partition</link>.</para>
|
|
|
|
<para>Before you start, you will need to download and install the Mac OS X Developer
|
|
Tools from Apple's Developer Connection. See <ulink
|
|
url="http://developer.apple.com/macosx/">http://developer.apple.com/macosx/</ulink>
|
|
for details. Also, make sure you install X11 for Mac OS X and the X11 SDK
|
|
from <ulink
|
|
url="http://www.apple.com/macosx/x11/download/">http://www.apple.com/macosx/x11/download/</ulink>
|
|
if you intend to build packages that use the X11 Window System.</para>
|
|
|
|
<para>If you already have a UFS partition, or have a spare partition
|
|
that you can format as UFS, it is recommended to use that instead of
|
|
the disk image. It'll be somewhat faster and will mount automatically
|
|
at boot time, where you must manually mount a disk image.</para>
|
|
|
|
<note>
|
|
<para>You cannot use a HFS+ file system for pkgsrc, because pkgsrc currently
|
|
requires the file system to be case-sensitive, and HFS+ is not.</para>
|
|
</note>
|
|
|
|
<sect3 id="platform.osx-image">
|
|
<title>Using a disk image</title>
|
|
|
|
<para>Create the disk image:</para>
|
|
|
|
<screen>&rprompt; <userinput>cd pkgsrc/bootstrap</userinput>
|
|
&rprompt; <userinput>./ufsdiskimage create ~/Documents/NetBSD 512</userinput> # megabytes - season to taste
|
|
&rprompt; <userinput>./ufsdiskimage mount ~/Documents/NetBSD</userinput>
|
|
&rprompt; <userinput>sudo chown `id -u`:`id -g` /Volumes/NetBSD</userinput></screen>
|
|
|
|
<para>That's it!</para>
|
|
</sect3>
|
|
|
|
<sect3 id="platform.osx-ufs">
|
|
<title>Using a UFS partition</title>
|
|
|
|
<para>By default, <filename>/usr</filename> will be on your root file
|
|
system, normally HFS+. It is possible to use the default
|
|
<emphasis>prefix</emphasis> of <filename>/usr/pkg</filename>
|
|
by symlinking <filename>/usr/pkg</filename> to a directory on a UFS
|
|
file system. Obviously, another symlink is required if you want to
|
|
place the package database directory outside the
|
|
<emphasis>prefix</emphasis>. e.g.</para>
|
|
|
|
<screen>&rprompt; <userinput>./bootstrap --pkgdbdir /usr/pkg/pkgdb</userinput></screen>
|
|
|
|
<para>If you created your partitions at the time of installing Mac OS X
|
|
and formatted the target partition as UFS, it should automatically
|
|
mount on <filename>/Volumes/<volume name></filename> when the
|
|
machine boots. If you are (re)formatting a partition as UFS, you need
|
|
to ensure that the partition map correctly reflects
|
|
<quote>Apple_UFS</quote> and not <quote>Apple_HFS</quote>.</para>
|
|
|
|
<para>The problem is that none of the disk tools will let you touch a
|
|
disk that is booted from. You can unmount the partition, but even if
|
|
you newfs it, the partition type will be incorrect and the
|
|
automounter won't mount it. It can be mounted manually, but it won't
|
|
appear in Finder.</para>
|
|
|
|
<para>You'll need to boot off of the OS X Installation (User) CD. When
|
|
the Installation program starts, go up to the menu and select Disk
|
|
Utility. Now, you will be able to select the partition you want
|
|
to be UFS, and Format it Apple UFS. Quit the Disk Utility, quit the
|
|
installer which will reboot your machine. The new UFS file system
|
|
will appear in Finder.</para>
|
|
|
|
<para>Be aware that the permissions on the new file system will be writable
|
|
by root only.</para>
|
|
|
|
<para>This note is as of 10.2 (Jaguar) and applies to earlier versions.
|
|
Hopefully Apple will fix Disk Utility in 10.3 (Panther).</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="freebsd">
|
|
<title>FreeBSD</title>
|
|
|
|
<para>
|
|
FreeBSD 4.7 and 5.0 have been tested and are supported, other versions
|
|
may work.</para>
|
|
|
|
<para>Care should be taken so that the tools that this kit installs do not conflict
|
|
with the FreeBSD userland tools. There are several steps:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>FreeBSD stores its ports pkg database in
|
|
<filename>/var/db/pkg</filename>. It is therefore
|
|
recommended that you choose a different location (e.g.
|
|
<filename>/usr/pkgdb</filename>) by
|
|
using the --pkgdbdir option to the bootstrap script.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you do not intend to use the FreeBSD ports tools, it's probably a
|
|
good idea to move them out of the way to avoid confusion, e.g.</para>
|
|
|
|
<screen>&rprompt; <userinput>cd /usr/sbin</userinput>
|
|
&rprompt; <userinput>mv pkg_add pkg_add.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_create pkg_create.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_delete pkg_delete.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_info pkg_info.orig</userinput></screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>An example <filename>/etc/mk.conf</filename> file will be placed in
|
|
<filename>/etc/mk.conf.example</filename> file
|
|
when you use the bootstrap script.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="interix">
|
|
<title>Interix</title>
|
|
|
|
<para>Interix is a POSIX-compatible subsystem for the Windows NT kernel,
|
|
providing a Unix-like environment with a tighter kernel integration than
|
|
available with Cygwin. It is part of the Windows Services for Unix
|
|
package, available for free for any licensed copy of Windows 2000, XP
|
|
(not including XP Home), or 2003. SFU can be downloaded from <ulink
|
|
url="http://www.microsoft.com/windows/sfu/">http://www.microsoft.com/windows/sfu/</ulink>.</para>
|
|
|
|
<para>Services for Unix 3.5, current as of this writing, has been tested. 3.0
|
|
or 3.1 may work, but are not officially supported. (The main difference
|
|
in 3.0/3.1 is lack of pthreads.)</para>
|
|
|
|
<sect3 id="platform.interix-sfu-install">
|
|
<title>When installing Interix/SFU</title>
|
|
|
|
<para>At an absolute minimum, the following packages must be installed from
|
|
the Windows Services for Unix 3.5 distribution in order to use pkgsrc:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Utilities -> Base Utilities</para></listitem>
|
|
<listitem><para>Interix GNU Components -> (all)</para></listitem>
|
|
<listitem><para>Remote Connectivity</para></listitem>
|
|
<listitem><para>Interix SDK</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>When using pkgsrc on Interix, DO NOT install the Utilities subcomponent
|
|
"UNIX Perl". That is Perl 5.6 without shared module support, installed to
|
|
/usr/local, and will only cause confusion. Instead, install Perl 5.8 from
|
|
pkgsrc (or from a binary package).</para>
|
|
|
|
<para>The Remote Connectivity subcomponent "Windows Remote Shell Service" does
|
|
not need to be installed, but Remote Connectivity itself should be
|
|
installed in order to have a working inetd.</para>
|
|
|
|
<para>During installation you may be asked whether to enable setuid
|
|
behavior for Interix programs, and whether to make pathnames default to
|
|
case-sensitive. Setuid should be enabled, and case-sensitivity MUST be
|
|
enabled. (Without case-sensitivity, a large number of packages including
|
|
perl will not build.)</para>
|
|
|
|
<para>NOTE: Newer Windows service packs change the way binary execution
|
|
works (via the Data Execution Prevention feature). In order to use
|
|
pkgsrc and other gcc-compiled binaries reliably, a hotfix containing
|
|
POSIX.EXE, PSXDLL.DLL, PSXRUN.EXE, and PSXSS.EXE (899522 or newer)
|
|
must be installed. Hotfixes are available from Microsoft through a
|
|
support contract; however, a NetBSD developer has made most Interix
|
|
hotfixes available for personal use from <ulink
|
|
url="http://www.duh.org/interix/hotfixes.php">http://www.duh.org/interix/hotfixes.php</ulink>.</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="platform.interix-sfu-postinstall">
|
|
<title>What to do if Interix/SFU is already installed</title>
|
|
|
|
<para>If SFU is already installed and you wish to alter these settings to work
|
|
with pkgsrc, note the following things.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>To uninstall UNIX Perl, use Add/Remove Programs, select Microsoft
|
|
Windows Services for UNIX, then click Change. In the installer, choose
|
|
Add or Remove, then uncheck Utilities->UNIX Perl.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>To enable case-sensitivity for the file system, run REGEDIT.EXE, and
|
|
change the following registry key:</para>
|
|
<para>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel</para>
|
|
<para>Set the DWORD value "obcaseinsensitive" to 0; then reboot.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>To enable setuid binaries (optional), run REGEDIT.EXE, and change the
|
|
following registry key:</para>
|
|
<para>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Services for UNIX</para>
|
|
<para>Set the DWORD value "EnableSetuidBinaries" to 1; then reboot.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
<sect3 id="platform.interix-notes">
|
|
<title>Important notes for using pkgsrc</title>
|
|
|
|
<para>The package manager (either the pkgsrc "su" user, or the user
|
|
running "pkg_add") must be a member of the local Administrators
|
|
group. Such a user must also be used to run the bootstrap. This is
|
|
slightly relaxed from the normal pkgsrc requirement of "root".</para>
|
|
|
|
<para>The package manager should use a umask of 002. "make install" will
|
|
automatically complain if this is not the case. This ensures that
|
|
directories written in /var/db/pkg are Administrators-group writeable.</para>
|
|
|
|
<para>The popular Interix binary packages from http://www.interopsystems.com/
|
|
use an older version of pkgsrc's pkg_* tools. Ideally, these should
|
|
NOT be used in conjunction with pkgsrc. If you choose to use them at
|
|
the same time as the pkgsrc packages, ensure that you use the proper
|
|
pkg_* tools for each type of binary package.</para>
|
|
|
|
<para>The TERM setting used for DOS-type console windows (including those
|
|
invoked by the csh and ksh startup shortcuts) is "interix". Most systems
|
|
don't have a termcap/terminfo entry for it, but the following .termcap
|
|
entry provides adequate emulation in most cases:</para>
|
|
|
|
<programlisting>
|
|
interix:kP=\E[S:kN=\E[T:kH=\E[U:dc@:DC@:tc=pcansi:
|
|
</programlisting>
|
|
|
|
</sect3>
|
|
<sect3 id="platform.interix-limits">
|
|
<title>Limitations of the Interix platform</title>
|
|
|
|
<para>Though Interix suffices as a familiar and flexible substitute
|
|
for a full Unix-like platform, it has some drawbacks that should
|
|
be noted for those desiring to make the most of Interix.</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para><emphasis role="strong">X11:</emphasis></para>
|
|
<para>Interix comes with the standard set of X11R6 client libraries,
|
|
and can run X11 based applications, but it does
|
|
<emphasis>not</emphasis> come with an X server. Some options are
|
|
<ulink url="http://www.starnet.com/products/xwin32/">StarNet X-Win32</ulink>,
|
|
<ulink url="http://connectivity.hummingbird.com/products/nc/exceed/">Hummingbird Exceed</ulink>
|
|
(available in a trimmed version for Interix from Interop Systems as the
|
|
<ulink url="http://www.interopsystems.com/InteropXserver.htm">Interop X Server</ulink>),
|
|
and the free X11 server included with
|
|
<ulink url="http://x.cygwin.com/">Cygwin</ulink>.</para>
|
|
|
|
<para>Also, StarNet Communications has graciously provided a free
|
|
version of their X-Win32 product that accepts connections only
|
|
from localhost:
|
|
<ulink url="http://www.starnet.com/xwin32LX/get_xwin32LX.htm">X-Win32 LX</ulink>,
|
|
recommended by the maintainer of Interix pkgsrc support.</para></listitem>
|
|
|
|
<listitem><para><emphasis role="strong">X11 acceleration:</emphasis></para>
|
|
<para>Because Interix runs in a completely different NT subsystem from
|
|
Win32 applications, it does not currently support various X11
|
|
protocol extensions for acceleration (such as MIT-SHM or DGA).
|
|
Most interactive applications to a local X server will run
|
|
reasonably fast, but full motion video and other graphics
|
|
intensive applications may require a faster-than-expected CPU.</para></listitem>
|
|
|
|
<listitem><para><emphasis role="strong">Audio:</emphasis></para>
|
|
<para>Interix has no native support for audio output. For audio
|
|
support, pkgsrc uses the <command>esound</command> client/server
|
|
audio system on Interix. Unlike on most platforms, the
|
|
<filename role="pkg">audio/esound</filename> package does
|
|
<emphasis>not</emphasis> contain the <command>esd</command>
|
|
server component. To output audio via an Interix host, the
|
|
<filename role="pkg">emulators/cygwin_esound</filename> package
|
|
must also be installed.</para></listitem>
|
|
|
|
<listitem><para><emphasis role="strong">CD/DVDs, USB, and SCSI:</emphasis></para>
|
|
<para>Direct device access is not currently supported in Interix, so it
|
|
is not currently possible to access CD/DVD drives, USB devices,
|
|
or SCSI devices through non-filesystem means. Among other things,
|
|
this makes it impossible to use Interix directly for CD/DVD
|
|
burning.</para></listitem>
|
|
|
|
<listitem><para><emphasis role="strong">Tape drives:</emphasis></para>
|
|
<para>Due to the same limitations as for CD-ROMs and SCSI devices, tape
|
|
drives are also not directly accessible in Interix. However,
|
|
support is in work to make tape drive access possible by using
|
|
Cygwin as a bridge (similarly to audio bridged via Cygwin's
|
|
esound server).</para></listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3 id="platform.interix-knownissues">
|
|
<title>Known issues for pkgsrc on Interix</title>
|
|
|
|
<para>It is not necessary, in general, to have a "root" user on the
|
|
Windows system; any member of the local Administrators group will
|
|
suffice. However, some packages currently assume that the user
|
|
named "root" is the privileged user. To accommodate these, you
|
|
may create such a user; make sure it is in the local group
|
|
Administrators (or your language equivalent).</para>
|
|
|
|
<para>"pkg_add" creates directories of mode 0755, not 0775, in
|
|
$PKG_DBDIR. For the time being, install packages as the local
|
|
Administrator (or your language equivalent), or run the following
|
|
command after installing a package to work around the issue:</para>
|
|
|
|
<screen>
|
|
&rprompt; <userinput>chmod -R g+w $PKG_DBDIR</userinput></screen>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="irix">
|
|
<title>IRIX</title>
|
|
|
|
<para>You will need a working C compiler, either gcc or SGI's MIPS and MIPSpro
|
|
compiler (cc/c89). Please set the <varname>CC</varname> environment variable
|
|
according to your preference. If you do not have a license for the MIPSpro
|
|
compiler suite, you can download a gcc tardist file from <ulink
|
|
url="http://freeware.sgi.com/">http://freeware.sgi.com/</ulink>.</para>
|
|
|
|
<para>Please note that you will need IRIX 6.5.17 or higher, as this is the earliest
|
|
version of IRIX providing support for &man.if.indextoname.3;, &man.if.nametoindex.3;,
|
|
etc.</para>
|
|
|
|
<para>At this point in time, pkgsrc only supports one ABI at a time. That is, you can not
|
|
switch between the old 32-bit ABI, the new 32-bit ABI and the 64-bit ABI. If
|
|
you start out using "abi=n32", that's what all your packages will be built
|
|
with.</para>
|
|
|
|
<para>Therefore, please make sure that you have no conflicting
|
|
<varname>CFLAGS</varname> in your environment or the
|
|
<filename>/etc/mk.conf</filename>. Particularly, make sure that you do not
|
|
try to link n32 object files with lib64 or vice versa. Check your
|
|
<filename>/etc/compiler.defaults</filename>!</para>
|
|
|
|
<para>If you have the actual pkgsrc tree mounted via NFS from a different host,
|
|
please make sure to set <varname>WRKOBJDIR</varname> to a local directory,
|
|
as it appears that IRIX linker occasionally runs into issues when trying to
|
|
link over a network-mounted file system.</para>
|
|
|
|
<para>The bootstrapping process should set all the right options for programs such
|
|
as imake(1), but you may want to set some options depending on your local
|
|
setup. Please see <filename>pkgsrc/mk/defaults/mk.conf</filename> and, of
|
|
course, your compiler's man pages for details.</para>
|
|
|
|
<para>If you are using SGI's MIPSPro compiler, please set
|
|
|
|
<programlisting>
|
|
PKGSRC_COMPILER= mipspro
|
|
</programlisting>
|
|
|
|
in <filename>/etc/mk.conf</filename>. Otherwise, pkgsrc will assume you
|
|
are using gcc and may end up passing invalid flags to the compiler. Note that
|
|
bootstrap should create an appropriate <filename>mk.conf.example</filename> by
|
|
default.</para>
|
|
|
|
<para>If you have both the MIPSPro compiler chain installed as well as gcc,
|
|
but want to make sure that MIPRPro is used, please set your <varname>PATH</varname>
|
|
to <emphasis>not</emphasis> include the location of gcc (often
|
|
<filename>/usr/freeware/bin</filename>), and (important) pass the
|
|
'--preserve-path' flag.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="linux">
|
|
<title>Linux</title>
|
|
|
|
<para>
|
|
Some versions of Linux (for example Debian GNU/Linux) need either
|
|
libtermcap or libcurses (libncurses). Installing the distributions
|
|
libncurses-dev package (or equivalent) should fix the problem.</para>
|
|
|
|
<para>
|
|
pkgsrc supports both gcc (GNU Compiler Collection) and icc (Intel C++
|
|
Compiler). gcc is the default. icc 8.0 and 8.1 on i386 have been tested.
|
|
</para>
|
|
|
|
<para>To bootstrap using icc, assuming the default icc installation
|
|
directory:</para>
|
|
|
|
<programlisting>
|
|
env CC=/opt/intel_cc_80/bin/icc LDFLAGS=-static-libcxa \
|
|
ac_cv___attribute__=yes ./bootstrap
|
|
</programlisting>
|
|
|
|
<note>
|
|
<para>icc 8.1 needs the `-i-static' argument instead of -static-libcxa.</para>
|
|
</note>
|
|
|
|
<para>icc supports __attribute__, but the GNU configure test uses a nested
|
|
function, which icc does not support. #undef'ing __attribute__ has the
|
|
unfortunate side-effect of breaking many of the Linux header files, which
|
|
cannot be compiled properly without __attribute__. The test must be
|
|
overridden so that __attribute__ is assumed supported by the
|
|
compiler.</para>
|
|
|
|
<para>After bootstrapping, you should set <varname>PKGSRC_COMPILER</varname>
|
|
in <filename>/etc/mk.conf</filename>:</para>
|
|
|
|
<programlisting>
|
|
PKGSRC_COMPILER= icc
|
|
</programlisting>
|
|
|
|
<para>The default installation directory for icc is
|
|
<filename>/opt/intel_cc_80</filename>, which
|
|
is also the pkgsrc default. If you have installed it into a different
|
|
directory, set <varname>ICCBASE</varname> in
|
|
<filename>/etc/mk.conf</filename>:</para>
|
|
|
|
<programlisting>
|
|
ICCBASE= /opt/icc
|
|
</programlisting>
|
|
|
|
<para>pkgsrc uses the static linking method of the runtime libraries
|
|
provided by icc, so binaries can be run on other systems which do not
|
|
have the shared libraries installed.</para>
|
|
|
|
<para>Libtool, however, extracts a list of libraries from the &man.ld.1;
|
|
command run when linking a C++ shared library and records it, throwing
|
|
away the -Bstatic and -Bdynamic options interspersed between the libraries.
|
|
This means that libtool-linked C++ shared libraries will have a
|
|
runtime dependency on the icc libraries until this is fixed in libtool.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="openbsd">
|
|
<title>OpenBSD</title>
|
|
|
|
<para>OpenBSD 3.0 and 3.2 are tested and supported.</para>
|
|
|
|
<para>Care should be taken so that the tools that this kit installs do not conflict
|
|
with the OpenBSD userland tools. There are several steps:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>OpenBSD stores its ports pkg database in
|
|
<filename>/var/db/pkg</filename>. It is therefore
|
|
recommended that you choose a different location (e.g.
|
|
<filename>/usr/pkgdb</filename>) by
|
|
using the --pkgdbdir option to the bootstrap script.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you do not intend to use the OpenBSD ports tools, it's probably a
|
|
good idea to move them out of the way to avoid confusion, e.g.</para>
|
|
|
|
<screen>&rprompt; <userinput>cd /usr/sbin</userinput>
|
|
&rprompt; <userinput>mv pkg_add pkg_add.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_create pkg_create.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_delete pkg_delete.orig</userinput>
|
|
&rprompt; <userinput>mv pkg_info pkg_info.orig</userinput></screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>An example <filename>/etc/mk.conf</filename> file will be placed in
|
|
<filename>/etc/mk.conf.example</filename> file
|
|
when you use the bootstrap script. OpenBSD's make program uses
|
|
<filename>/etc/mk.conf</filename>
|
|
as well. You can work around this by enclosing all the pkgsrc-specific parts
|
|
of the file with:</para>
|
|
|
|
<programlisting>
|
|
.ifdef BSD_PKG_MK
|
|
# pkgsrc stuff, e.g. insert defaults/mk.conf or similar here
|
|
.else
|
|
# OpenBSD stuff
|
|
.endif
|
|
</programlisting>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="solaris">
|
|
<title>Solaris</title>
|
|
|
|
<para>Solaris 2.6 through 9 are supported on both x86 and sparc.
|
|
You will need a working C compiler. Both gcc 2.95.3 and
|
|
Sun WorkShop 5 have been tested.</para>
|
|
|
|
<para>The following packages are required on Solaris 8 for the bootstrap
|
|
process and to build packages.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>SUNWsprot</para></listitem>
|
|
<listitem><para>SUNWarc</para></listitem>
|
|
<listitem><para>SUNWbtool</para></listitem>
|
|
<listitem><para>SUNWtoo</para></listitem>
|
|
<listitem><para>SUNWlibm</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Please note the use of GNU binutils on Solaris is
|
|
<emphasis>not</emphasis> supported.</para>
|
|
|
|
<para>Whichever compiler you use, please ensure the compiler tools and
|
|
your $prefix are in your <varname>PATH</varname>. This includes
|
|
<filename>/usr/ccs/{bin,lib}</filename>
|
|
and e.g. <filename>/usr/pkg/{bin,sbin}</filename>.</para>
|
|
|
|
<sect3 id="solaris-gcc-note">
|
|
<title>If you are using gcc</title>
|
|
|
|
<para>It makes life much simpler if you only use the same gcc consistently
|
|
for building all packages.</para>
|
|
|
|
<para>It is recommended that an external gcc be used only for bootstrapping,
|
|
then either build gcc from
|
|
<filename role="pkg">lang/gcc</filename> or install a binary gcc
|
|
package, then remove gcc used during bootstrapping.</para>
|
|
|
|
<para>Binary packages of gcc can be found through <ulink
|
|
url="http://www.sun.com/bigadmin/common/freewareSearch.html">http://www.sun.com/bigadmin/common/freewareSearch.html</ulink>.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="solaris-sun-workshop-note">
|
|
<title>If you are using Sun WorkShop</title>
|
|
|
|
<para>You will need at least the following packages installed (from WorkShop
|
|
5.0)</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>SPROcc
|
|
- Sun WorkShop Compiler C 5.0</para></listitem>
|
|
<listitem><para>SPROcpl
|
|
- Sun WorkShop Compiler C++ 5.0</para></listitem>
|
|
<listitem><para>SPROild
|
|
- Sun WorkShop Incremental Linker</para></listitem>
|
|
<listitem><para>SPROlang
|
|
- Sun WorkShop Compilers common components</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>You should set <varname>CC</varname>, <varname>CXX</varname> and
|
|
optionally, <varname>CPP</varname> in <filename>/etc/mk.conf</filename>,
|
|
e.g.:</para>
|
|
|
|
<programlisting>
|
|
CC= cc
|
|
CXX= CC
|
|
CPP= /usr/ccs/lib/cpp
|
|
</programlisting>
|
|
|
|
</sect3>
|
|
<sect3 id="solaris-sunpro-64">
|
|
<title>Buildling 64-bit binaries with SunPro</title>
|
|
|
|
<para>Building 64-bit binaries is a little trickier. First, you
|
|
need to bootstrap pkgsrc in 64-bit mode. One problem here is
|
|
that while building one of the programs in the bootstrap kit
|
|
(<filename>bmake</filename>), the <varname>CFLAGS</varname>
|
|
variable is not honored, even if it is set in the environment.
|
|
To work around this bug, you can create a simple shell script
|
|
called <filename>cc64</filename> and put it somewhere in the
|
|
<varname>PATH</varname>:</para>
|
|
|
|
<programlisting>
|
|
#! /bin/sh
|
|
exec /opt/SUNWspro/bin/cc -xtarget=ultra -xarch=v9 ${1+"$@"}
|
|
</programlisting>
|
|
|
|
<para>Then, pass the definition for <varname>CC</varname> in the
|
|
environment of the <command>bootstrap</command> command:</para>
|
|
|
|
<programlisting>
|
|
&uprompt; <userinput>cd bootstrap</userinput>
|
|
&uprompt; <userinput>CC=cc64 ./bootstrap</userinput>
|
|
</programlisting>
|
|
|
|
<para>After bootstrapping, there are two alternative ways,
|
|
depending on whether you want to find bugs in packages or get
|
|
your system ready quickly. If you just want a running system,
|
|
add the following lines to your <filename>mk.conf</filename>
|
|
file:</para>
|
|
|
|
<programlisting>
|
|
CC= cc64
|
|
CXX= CC64
|
|
PKGSRC_COMPILER= sunpro
|
|
</programlisting>
|
|
|
|
<para>This way, all calls to the compiler will be intercepted by
|
|
the above wrapper and therefore get the necessary ABI options
|
|
automatically. (Don't forget to create the shell script
|
|
<filename>CC64</filename>, too.)</para>
|
|
|
|
<para>To find packages that ignore the user-specified
|
|
<varname>CFLAGS</varname> and <varname>CXXFLAGS</varname>, add
|
|
the following lines to your <filename>mk.conf</filename>
|
|
file:</para>
|
|
|
|
<programlisting>
|
|
CC= cc
|
|
CXX= CC
|
|
PKGSRC_COMPILER= sunpro
|
|
CFLAGS= -xtarget=ultra -xarch=v9
|
|
CXXFLAGS= -xtarget=ultra -xarch=v9
|
|
LDFLAGS= -xtarget=ultra -xarch=v9
|
|
</programlisting>
|
|
|
|
<para>Packages that don't use the flags provided in the
|
|
configuration file will try to build 32-bit binaries and fail
|
|
during linking. Detecting this is useful to prevent bugs on
|
|
other platforms where the error would not show up but pass
|
|
silently.</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="plat.sunos.problems"><title>Common problems</title>
|
|
|
|
<para>Sometimes, when using <command>libtool</command>,
|
|
<filename>/bin/ksh</filename> crashes with a segmentation fault.
|
|
The workaround is to use another shell for the configure
|
|
scripts, for example by installing <filename
|
|
role="pkg">shells/bash</filename> and adding the following lines
|
|
to your <filename>mk.conf</filename>:</para>
|
|
|
|
<programlisting>
|
|
CONFIG_SHELL= ${LOCALBASE}/bin/bash
|
|
WRAPPER_SHELL= ${LOCALBASE}/bin/bash
|
|
</programlisting>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|