summaryrefslogtreecommitdiff
path: root/Build/source/doc/README.solaris
blob: 6a2e1c7cd2f675647733e47efebc32777665714b (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
(This file public domain.  Originally written by Mojca Miklavec, 2015-16.)

Compiling TeX binaries on Solaris

Solaris 9 has been out of official support for a while and making
software compile on that platform is challenging, so it hardly makes 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
and 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 for 64-bit
===================

All binaries have been compiled with gcc-5.2.
The only thing that is needed to build for 64-bit is to define
    export CC="/path/to/gcc-5.2 -m64"
    export CXX="/path/to/g++-5.2 -m64"

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 SUNWprivate_1.1 $ADDVERS=SUNW_1.22;

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 5.2.
The definition '#define _XOPEN_SOURCE 500' has been removed from 'src/sysdep.h'
to avoid compile error due to the fact that GCC 5 switched to -std=99. 

On i386 and x86_64 one has to manually add "-lsocket -lnsl" to the last linker command.
This should be reported upstream.

> 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, SUNWprivate_1.1);

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

(That list of configure options is current as of the above version of
wget; not all those dependencies are present in earlier versions.)

Building xz
===========

The xz binaries would likewise depend on SUNW_1.22.6 by default, so we
used the same hack with a map file to make it work on slightly older
systems.

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

> export LD_OPTIONS="-M $PWD/mapfile"
> ./configure --disable-nls --disable-shared

> pvs Master/tlpkg/installer/xz/xz.sparc-solaris
    librt.so.1 (SUNW_1.2);
    libpthread.so.1 (SUNW_1.2);
    libc.so.1 (SUNW_1.22);
> pvs Master/tlpkg/installer/xz/xzdec.sparc-solaris
    libc.so.1 (SUNW_1.22);

If users need binaries to run on even older systems, we can target what
is desired by changing the map file.

Building texlive
================

Additional settings were needed to compile TeX Live with gcc 5.2:
  * ./Build --without-iconv

The '--without-iconv' makes sure to avoid linking against libiconv
which is not available on SunOS by default.