summaryrefslogtreecommitdiff
path: root/Build/source/README.solaris
blob: 170153998b57e874cc1096ea77c55f136f591d6c (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
73
Compiling TeX binaries on Solaris

(The document describes the procedures used on Sparc Solaris binaries, but the same rules should apply to i386 and x86_64 as well.)

Solaris 9 has been out of official support for a while and making software compile on that platform is challenging, so it hardly make any sense to try to support it.

Solaris 10 reaches end of support in January 2021.
    http://en.wikipedia.org/wiki/Solaris_(operating_system)#Version_history
an TeX Live binaries try to stay compatible with that OS version.

Every once in a while a new Update is shipped:
    U1  2006-01
    U2  2006-06
    U3  2006-11
    U4  2007-08
    U5  2008-05
    U6  2008-10
    U7  2009-05
    U8  2009-10
    U9  2010-09
    U10 2011-08
    U11 2013-01
and the problem is that binaries compiled on an updated system might not run on an older one.

You can check the libc version with
> pvs -no /usr/lib/libc.so

> pvs -d /lib/libc.so.1 | grep SUNW
        SUNW_1.23;
        SUNW_1.22.7;
        SUNW_1.22.6;
        /.../
        SUNW_1.1;
        SUNW_0.9;
        SUNW_0.8;
        SUNW_0.7;

Building wget
=============

Building wget on the latest version of Solaris 10 will make the binary useless on older Updates of Solaris 10 as it would depend on SUNW_1.22.7.

One option to build wget in a "compatible way" would be to build it on Solaris 9 with "cc". The other hack is the usage of map files.

To make it work on older systems the following hack was used (thanks to the OpenCSW community):
    https://buildfarm.opencsw.org/source/xref/opencsw/csw/mgar/pkg/wget/trunk/files/map.wget

> cat mapfile
libc.so - SUNW_1.22.5 SUNWprivate_1.1 $ADDVERS=SUNW_1.22.5;

export LD_OPTIONS="-M $PWD/mapfile"

And the following configuration was used to get rid of dependencies (which are not installed on Solaris by default):

> ./configure --enable-ipv6 --disable-iri --disable-nls \
             --disable-ntlm --disable-pcre --without-libiconv-prefix \
             --without-libintl-prefix --without-libuuid --without-libpsl \
             --without-ssl --without-zlib

The binary was built with gcc 4.9.2.

> pvs Master/tlpkg/installer/wget/wget.sparc-solaris
    libsocket.so.1 (SUNW_1.4);
    libnsl.so.1 (SUNW_1.7);
    librt.so.1 (SUNW_1.2);
    libc.so.1 (SUNW_1.22.5, SUNWprivate_1.1);

> ./Master/tlpkg/installer/wget/wget.sparc-solaris --version
    GNU Wget 1.16.3 built on solaris2.10.
    +digest -https +ipv6 -iri +large-file -nls -ntlm +opie -psl -ssl 

In case that binaries should run on even older systems, users should report problems and we can target even older systems by patching the mapfile.