summaryrefslogtreecommitdiff
path: root/bootstrap/README.Linux
blob: ad7d32d72e0dfe4253f97bfba5479624f7e050d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
$NetBSD: README.Linux,v 1.6 2017/03/06 21:26:01 sevan Exp $

Please read the general README file as well.

==========================================================================

For Debian and derivatives such as Ubuntu the following packages should be
installed prior to attempting bootstrap

apt-get install cvs libncurses5-dev gcc g++ zlib1g-dev zlib1g libssl-dev libudev-dev

==========================================================================

Some versions of Linux (RHEL3 Update 2 for i386 for example) have a
/usr/lib/libacl.la libtool archive file that lists /lib/libattr.la as a
dependency.  However, libattr.la does not exist in /lib/libattr.la.  If
this is the case, the bootstrap will fail with

grep: /lib/libattr.la: No such file or directory
/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/.tools/bin/sed: can't read /lib/libattr.la: No such file or directory
libtool: link: `/lib/libattr.la' is not a valid libtool archive

The solution is to copy /usr/lib/libattr.la to /lib/libattr.la with:

cp -p /usr/lib/libattr.la /lib

==========================================================================

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.

==========================================================================

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.

To bootstrap using icc, assuming the default icc installation
directory:

	env CC=/opt/intel_cc_80/bin/icc LDFLAGS=-static-libcxa \
		ac_cv___attribute__=yes ./bootstrap

note: icc 8.1 needs the `-i-static' argument instead of
-static-libcxa.

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.

After bootstrapping, you should set PKGSRC_COMPILER in mk.conf:

	PKGSRC_COMPILER=icc

The default installation directory for icc is /opt/intel_cc_80, which
is also the pkgsrc default. If you have installed it into a different
directory, set ICCBASE in mk.conf:

	ICCBASE=/opt/icc

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.

Libtool, however, extracts a list of libraries from the 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.