* Fix regression about APT::Get::List-Cleanup setting being ignored,
[ntk/apt.git] / COMPILING
CommitLineData
1ae93c94
AL
1General Information
2~~~~~~~~~~~~~~~~~~~
3To compile this you need a couple things
4 - A working POSIX system with working POSIX gcc, g++, make (GNU),
5 ar, sh, awk and sed in the path
6 - GNU Make 3.74 or so, -- normal UNIX make will NOT work
7 * Note 3.77 is broken.
8 - A working ANSI C++ compiler, this is not g++ 2.7.*
9 g++ 2.8 works OK and newer egcs work well also. Nobody has tried it
10 on other compilers :< You will need a properly working STL as well.
11 - A C library with the usual POSIX functions and a BSD socket layer.
678bc33e 12 If you OS conforms to the Single Unix Spec then you are fine:
1ae93c94 13 http://www.opengroup.org/onlinepubs/7908799/index.html
a7c3025f
AL
14 - Refer to the Build-Depends information in debian/control for
15 additional requirements (some of which are Debian-specific)
1ae93c94 16
678bc33e
AL
17** NOTICE **
18The C++ global constructors do not link correctly when using non-shared
19libaries. This is probably the correct behavior of the linker, but I have
20not yet had time to devise a work around for it. The correct thing to
21do is add a reference to debSystem in apt-pkg/init.cc,
22assert(&debSystem == 0) would be fine for instance.
23
1ae93c94
AL
24Guidelines
25~~~~~~~~~~
26I am not interested in making 'ultra portable code'. I will accept patches
27to make the code that already exists conform more to SUS or POSIX, but
28I don't really care if your not-SUS OS doesn't work. It is simply too
29much work to maintain patches for dysfunctional OSs. I highly suggest you
30contact your vendor and express intrest in a conforming C library.
31
32That said, there are lots of finniky problems that must be delt with even
33between the supported OS's. Primarily the path I choose to take is to put
34a shim header file in build/include that transparently adds the required
35functionality. Patches to make autoconf detect these cases and generate the
36required shims are OK.
37
38Current shims:
678bc33e
AL
39 * C99 integer types 'inttypes.h'
40 * sys/statvfs.h to convert from BSD/old-glibc statfs to SUS statvfs
1ae93c94 41 * rfc2553 hostname resolution (methods/rfc*), shims to normal gethostbyname.
1cecba4d
AL
42 The more adventerous could steal the KAME IPv6 enabled resolvers for those
43 OS's with IPv6 support but no rfc2553 (why?)
678bc33e 44 * define _XOPEN_EXTENDED_SOURCE to bring in h_errno on HP-UX
1cecba4d 45 * socklen_t shim in netdb.h if the OS does not have socklen_t
1ae93c94 46
a5bae0df 47The only completely non-shimed OS is Linux with glibc2.1, glibc2.0 requires
1cecba4d 48the first three shims.
1ae93c94
AL
49
50Platform Notes
51~~~~~~~~~~~~~~
52Debian GNU Linux 2.1 'slink'
53Debian GNU Linux 'potato'
678bc33e 54Debian GNU Linux 'woody'
1ae93c94
AL
55 * All Archs
56 - Works flawlessly
678bc33e 57 - You will want to have debiandoc-sgml and docbook2man installed to get
1ae93c94 58 best results.
1cecba4d 59 - No IPv6 Support in glibc's < 2.1.
1ae93c94
AL
60
61Sun Solaris
62 SunOS cab101 5.7 Generic_106541-04 sun4u sparc
678bc33e 63 SunOS csu201 5.8 Generic_108528-04 sun4u sparc
1ae93c94
AL
64 - Works fine
65 - Note, no IPv6 Support, OS lacks RFC 2553 hostname resolution
a5bae0df
AL
66
67OpenBSD
68 OpenBSD gsb086 2.5 CMPUT#0 i386 unknown
678bc33e 69 OpenBSD csu101 2.7 CMPUT#1 i386 unknown
1cecba4d
AL
70 - OS needs 'ranlib' to generate the symbol table after 'ar'.. (not using
71 GNU ar with the gnu tool chain :<)
678bc33e
AL
72 - '2.5' does not have RFC 2553 hostname resolution, but '2.7' does
73 - Testing on '2.7' suggests the OS has a bug in its handling of
74 ftruncate on files that have been written via mmap. It fills the page
75 that crosses the truncation boundary with 0's.
76
1ae93c94
AL
77HP-UX
78 HP-UX nyquist B.10.20 C 9000/780 2016574337 32-user license
79 - Evil OS, does not conform very well to SUS
80 1) snprintf exists but is not prototyped, ignore spurios warnings
81 2) No socklen_t
82 3) Requires -D_XOPEN_SOURCE_EXTENDED for h_errno
1cecba4d 83 configure should fix the last two (see above)
1ae93c94
AL
84 - Note, no IPv6 Support, OS lacks RFC 2553 hostname resolution
85