diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/doc/README.solaris | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/doc/README.solaris')
-rw-r--r-- | Build/source/doc/README.solaris | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/Build/source/doc/README.solaris b/Build/source/doc/README.solaris new file mode 100644 index 00000000000..6b13f3feb48 --- /dev/null +++ b/Build/source/doc/README.solaris @@ -0,0 +1,182 @@ +(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.5. +The only thing that is needed to build for 64-bit is to define + export CC="/path/to/gcc-5.5 -m64" + export CXX="/path/to/g++-5.5 -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 asymptote +================== + +Asymptote has been built with the following flags: + +export CC=/opt/csw/bin/gcc-5.5 +export CXX=/opt/csw/bin/g++-5.5 +./configure --prefix=/tmp/asyinst --enable-texlive-build \ + --disable-fftw --disable-offscreen --disable-sigsegv \ + --disable-gl --disable-gsl --disable-readline + +Even though GL, GSL and readline should generally not be disabled, +the resulting binaries would not be portable enough otherwise. + +Because a newer gcc compiler was used we had to link statically against stdlib. +The following patch/hack took care of this: + +--- Makefile.in.orig ++++ Makefile.in +@@ -12,7 +12,7 @@ + GCPPLIB = @GCPPLIB@ + GCLIBS = $(GCPPLIB) $(GCLIB) + LFLAGS = @LDFLAGS@ +-LIBS = $(LFLAGS) @PTHREAD_LIBS@ @GLEW@ @LIBS@ $(GCLIBS) ++LIBS = $(LFLAGS) $(GCLIBS) -nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic @PTHREAD_LIBS@ @GLEW@ @LIBS@ -lgcc_eh -lgcc -lc -lm + DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -lgdi32 -lwinmm -s -static + + PERL = perl +------ + +The resulting binary depends on: + +> pvs asy + libnsl.so.1 (SUNW_0.7); + librt.so.1 (SUNW_1.2); + libm.so.2 (SUNW_1.2); + libc.so.1 (SUNW_1.22, SUNWprivate_1.1); +> ldd asy + libnsl.so.1 => /lib/libnsl.so.1 + librt.so.1 => /lib/librt.so.1 + libz.so.1 => /usr/lib/libz.so.1 + libm.so.2 => /lib/libm.so.2 + libc.so.1 => /lib/libc.so.1 + libmp.so.2 => /lib/libmp.so.2 + libmd.so.1 => /lib/libmd.so.1 + libscf.so.1 => /lib/libscf.so.1 + libaio.so.1 => /lib/libaio.so.1 + libdoor.so.1 => /lib/libdoor.so.1 + libuutil.so.1 => /lib/libuutil.so.1 + libgen.so.1 => /lib/libgen.so.1 + +Building texlive +================ + +Additional settings were needed to compile TeX Live with gcc 5.5: + * ./Build --without-iconv + +The '--without-iconv' makes sure to avoid linking against libiconv +which is not available on SunOS by default. + +luajittex seems to be broken on Solaris 10 x86_64 (even if it works +with Solaris 11) and doesn't support Sparc, so it was only compiled +for i386. + |