Software ports for Linux/390
Configure Problems
Config patch:
Config patch for older
autoconf installations:
To cleanly port anything with a configure script, you will want to apply
this patch to config.guess and config.sub.
In the directory that contains config.guess and config.sub:
patch -p1 < pathname-of-config.patch
If that fails, you should try the patch for older autoconf scripts and see
whether that works.
I have written a tool, patchconf.pl, to
apply the patch recursively within a directory hierarchy. Its syntax is
patchconf.pl patch-file-name [dir ...]
If no directory is given, it works from the current directory downward.
It is quite possible that neither of these patches will work. There are a
near-infinite number of configure script variations out there. What you want
to do is actually fairly simple.
- config.guess tries to determine your machine type. It does
this by parsing the output of uname. In short, you look for "s390"
and return "s390-ibm-linux".
- config.sub uses that information to return the canonical system
name. In older configuration scripts, this is a 3-part name, which is
also "s390-ibm-linux". More recent scripts return a four-part name,
which should be "s390-ibm-linux-gnu".
- Even if they won't apply cleanly, the patch files are a good starting
point for fixing your own configure scripts.
In general, configure wants to give you CFLAGS of -g -O2. Optimization level
2 is currently broken under Linux/390, so you should specify CFLAGS=-O1 on
your make command line.
This can be made trickier if CFLAGS itself is more complex; in general,
replace -Ox, where x > 1, with -O1.
sed -e 's/\-O[2-9]/\-O1/g' run over the Makefile will do the trick.
Ported software
So far, I have patches for the following packages to build them under
the IBM flavor of Linux/390.
- OpenSSL 0.9.4.
Works
out of the box after applying the patch.
- OpenSSL 0.9.5.
You might want to ln -s /usr/local/ssl/include/openssl/*
/usr/local/ssl/include after installing.
- SSH 1.2.27. This
one is a little trickier; after applying the older config patch in both the ssh directory
and its gmp-2.0.2-ssh-2 subdirectory (perhaps with
patchconf.pl, do
./configure && make CFLAGS="-O1 -D_GNU_SOURCE" &&
make install
- Big Brother 1.3a. Change -O3 in the makefile to -O1; you may need
to define alternate locations for executables in etc/bbsys.local
as well.
- Lynx 2.8.2 (optionally with SSL). Apply the
config patch, then run
cp makefile makefile.orig && sed -e 's/\-O2/\-O1/g' < makefile.orig
> makefile
and
it builds out of the box.
If you use the SSL patches, you will want to create symlinks in
/usr/local/ssl/include as outlined above.
- Emacs 20.5a.
In the top-level directory,
chmod +w config.sub config.guess configure configure.in
Then apply the patch, and
it builds trivially:
./configure && make && make install
- NcFTP 3.0b21 Builds out of the box. No changes necessary.
- PGP 5.0i Builds out of the box. No changes necessary.
- Cron-3.0.1 Builds out of the box; you may want to enable
optimization and specify gcc in the Makefile.
- VNC-3.3.3r1.
In the top-level directory,
chmod +w Xvnc/config/imake/imakemdep.h Xvnc/config/cf/Imake.cf Xvnc/config/cf/linux.cf
Then apply this patch. In the top-level
directory,
xmkmf && make Makefiles && make
That builds everything but
the server. Then:
cd Xvnc && make World
That should build the Xvnc server. Then
cd .. && ./vncinstall installdir
(I used /usr/local/bin). I think these patches are just
about what would be required to get Imake working 100% correctly on
Linux/390; that's still unconfirmed.
Something is still wrong with the VNC tile encoding; I'm trying to work it
out.
- PostgreSQL 6.5.3. Apply
the patch and follow the
lengthy build and installation procedure.
- C-Kermit 7.0. Builds without modification.
- CU sudo-1.6.2p1. Builds without modification. Thanks to
Bob Shair for these two.
- INN 2.2.2. David Boyes
reports that INN 2.2.2 builds and runs with only the usual config.guess and
config.sub patches.
- Hercules 1.50.
Hercules itself works, but it tickles a
bug in L/390's select() implementation: select() does not correctly set errno.
This is being worked on. Until it is fixed, use
this patch.
Hercules is still
mostly untested. I will update this page when I have MVT running correctly
underneath Hercules on the S/390.
However, even if MVT doesn't boot yet,Linux/390 does.
Go
here.
- XDoom 20000305.
I've run out of disk space to generate patch sets. In essence, to build xdoom,
you copy the Linux/PPC (another 32-bit big-endian processor) configuration.
- MesaLib 3.1.
Fix config.sub and config.guess. Neither of the patches works, but you can
use the newer patch as a guide. After that it builds and installs without
incident.
Questions? Problems? Send mail to Adam
Thornton, <adam@io.com>.