Thursday, June 14, 2018

GNU/Solaris

Since a few months or perhaps almost a couple of years, I've been trying to learn how to manually update a few software from an ordinary Solaris 11.3 GA. That's because even if I had a contract support I wouldn't have all the latest software versions I would like to use on my Solaris system.

Of course, that's not the Solaris main goals by nowadays as currently advertised. Nevertheless, against the vision one should get another system as a front-end to Solaris, I still prefer to also use Solaris as my front-end system because I also very much appreciate all the potential that Solaris has to offer in this area as well. But for that purpose I have to manually update several software to more current versions in order to keep pace with the modern world and natural evolution. It's true that Solaris 11.4 is promising a somewhat better catch-up with this, but still it doesn't seem to be among its main goals, of course! Solaris is huge and specially fitted to big-iron SPARC systems and I totally agree with this while I'm greatly delighted I still could enjoy it on my low-end toy x86_64 system.

SAFE HARBOUR / DISCLAMER
Please, note that I mean no Licenses, Rights or Copyright infringement at all in what I post here. It's just that I appreciate so much Solaris that I'd dream of (as if it were possible) having the best of many worlds merged on a single system. For instance, I would dream of something called GNU/Solaris somewhat as presented on Linux & GNU and somewhat in the sense of GNU's What's in a Name.

Thursday, June 7, 2018

Building libxslt 1.1.32


The basic building strategy and general assumptions have been detailed on a previous post: Staged Building:

 $ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../libxslt-1.1.32.tar.gz
...

$ cd libxml2/libxslt-1.1.32-32

$ source ../setenv-1.1.32 32

Configuration file [version 4]: /stage/build/libxslt/ld.config-32 
 Platform:     32-bit LSB 80386
 Default Library Path (ELF):   /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (... default)

Command line:
  crle 

   -c /stage/build/libxslt/ld.config-32 
   -l /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib

LD_CONFIG_32=/stage/build/libxslt/ld.config-32

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu99

CXX=/usr/bin/g++ CXXFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu++98

LD=/usr/bin/ld LDFLAGS=-m32 -march=nocona -mtune=nocona

PATH=/opt/gnu/bin:/opt/usr/bin:/usr/gnu/bin:/usr/bin:/usr/sbin

PKG_CONFIG_PATH=/opt/usr/lib/pkgconfig

Suggested build sequence:

Fine-tune/fix config.h.in, Makefile.in and others...

$ ./configure \
    --build=i386-pc-solaris2.11 \
    --prefix=/opt/... \
    ...

$ gmake -j2

$ su
# source ../setenv-1.1.32 32

For IPS package:

# gmake DESTDIR=/stage/prototype/libxslt/1.1.32/32 install

For immediate use:

# gmake install
# zfs snapshot -r .../opt/...@libxslt-1.1.32


Building libxml2 2.98

The basic building strategy and general assumptions have been detailed on a previous post: Staged Building:

 $ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../libxml2-2.9.8.tar.gz
...

$ cd libxml2/libxml2-2.9.8-32

$ source ../setenv-2.9.8 32

Configuration file [version 4]: /stage/build/libxml2/ld.config-32 
 Platform:     32-bit LSB 80386
 Default Library Path (ELF):   /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (... default)

Command line:
  crle 

   -c /stage/build/libxml2/ld.config-32 
   -l /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib

LD_CONFIG_32=/stage/build/libxml2/ld.config-32

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu99

CXX=/usr/bin/g++ CXXFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu++98

LD=/usr/bin/ld LDFLAGS=-m32 -march=nocona -mtune=nocona

PATH=/opt/gnu/bin:/opt/usr/bin:/usr/gnu/bin:/usr/bin:/usr/sbin

PKG_CONFIG_PATH=/opt/usr/lib/pkgconfig

Suggested build sequence:

Fine-tune/fix config.h.in, Makefile.in and others...

$ ./configure \
    --build=i386-pc-solaris2.11 \
    --prefix=/opt/... \
    ...

$ gmake -j2

$ su
# source ../setenv-2.9.8 32

For IPS package:

# gmake DESTDIR=/stage/prototype/libxml2/2.9.8/32 install

For immediate use:

# gmake install
# zfs snapshot -r .../opt/...@libxml2-2.9.8


Building GNU libunistring 0.9.10

The basic building strategy and general assumptions have been detailed on a previous post: Staged Building:

 $ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../libunistring-0.9.10.tar.gz
...

$ cd libunistring/libunistring-0.9.10-32

$ source ../setenv-0.9.10 32

Configuration file [version 4]: /stage/build/libunistring/ld.config-32 
 Platform:     32-bit LSB 80386
 Default Library Path (ELF):   /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (... default)

Command line:
  crle 

   -c /stage/build/libunistring/ld.config-32 
   -l /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib

LD_CONFIG_32=/stage/build/libunistring/ld.config-32

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu89

CXX=/usr/bin/g++ CXXFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu++98

LD=/usr/bin/ld LDFLAGS=-m32 -march=nocona -mtune=nocona

PATH=/opt/gnu/bin:/opt/usr/bin:/usr/gnu/bin:/usr/bin:/usr/sbin

PKG_CONFIG_PATH=/opt/usr/lib/pkgconfig

Suggested build sequence:

Fine-tune/fix config.h.in, Makefile.in and others...

$ ./configure \
    --build=i386-pc-solaris2.11 \
    --prefix=/opt/... \
    ...

$ gmake -j2

$ su
# source ../setenv-0.9.10 32

For IPS package:

# gmake DESTDIR=/stage/prototype/libunistring/0.9.10/32 install

For immediate use:

# gmake install
# zfs snapshot -r .../opt/...@libunistring-0.9.10


Building GNU libiconv 1.15

The basic building strategy and general assumptions have been detailed on a previous post: Staged Building:

 $ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../libiconv-1.15.tar.gz
...

$ cd libiconv/libiconv-1.15-32

$ source ../setenv-1.15 32

Configuration file [version 4]: /stage/build/libiconv/ld.config-32 
 Platform:     32-bit LSB 80386
 Default Library Path (ELF):   /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (... default)

Command line:
  crle 

   -c /stage/build/libiconv/ld.config-32 
   -l /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib

LD_CONFIG_32=/stage/build/libiconv/ld.config-32

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu89

CXX=/usr/bin/g++ CXXFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu++98

LD=/usr/bin/ld LDFLAGS=-m32 -march=nocona -mtune=nocona

PATH=/opt/gnu/bin:/opt/usr/bin:/usr/gnu/bin:/usr/bin:/usr/sbin

PKG_CONFIG_PATH=/opt/usr/lib/pkgconfig

Suggested build sequence:

Fine-tune/fix config.h.in, Makefile.in and others...

$ ./configure \
    --build=i386-pc-solaris2.11 \
    --prefix=/opt/... \
    ...

$ gmake -j2

$ su
# source ../setenv-1.15 32

For IPS package:

# gmake DESTDIR=/stage/prototype/libiconv/1.15/32 install

For immediate use:

# gmake install
# zfs snapshot -r .../opt/...@libiconv-1.15


NOTE
This build is somewhat tricky because it has a cyclic dependency on GNU gettext, which depends back on GNU libiconv. One way to solve the issue is to build GNU libiconv first using --without-libintl-prefix, then GNU gettext and finally GNU libiconv once more using --with-libintl-prefix=/opt/gnu. But before getting to GNU gettext, one should pass by GNU libunistring, GNU libxml2 and perhaps ncurses.