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.
|