summaryrefslogtreecommitdiff
path: root/Build/source/doc/README.solaris
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/doc/README.solaris
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (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.solaris182
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.
+