My former employer has graciously allowed me to post the patches I created to make the Kaffe Java environment run on Linux for System/390. I haven't yet produced an s390 binary RPM, so if you want to follow in my footsteps you'll have to build from source. To do so:
mv kaffe-105-s390-diff.gz kaffe-1.0.5-s390.diff.gz
gunzip kaffe-1.0.5-s390.diff.gz
javac
command has been modified to use Pizza
instead of KJC.
make check
)
if Jikes is installed before Kaffe.
su
unless you're logged in as root.
cd /usr/src
tar -xzvf wherever/kaffe-1.0.5.tar.gz
patch -p0 < wherever/kaffe-1.0.5-s390.diff
Note: If you get an error applying the "config.guess" patch
but all the "config/s390/..." patches applied, you tried to do
this starting from the wrong directory. Blow away your source
tree and repeat from "cd /usr/src
" above.
rpm -iv --nodeps wherever/jikes-1.11-1.s390.rpm
The --nodeps
flag is necessary because the RPM
database on the Marist 2.2.15 "large root filesystem"
distribution doesn't reflect what's actually installed.
Without --nodeps
, rpm
will
complain that the Standard C++ library (libstdc++) is not
installed, although it actually is.
cp wherever/pizza.jar /usr/src/kaffe-1.0.5/libraries/javalib
chmod a+r /usr/src/kaffe-1.0.5/libraries/javalib/pizza.jar
cd kaffe-1.0.5
configure --with-threads=unix-jthreads
make
make check
A number of tests have extremely small limits for certain timeouts and may fail on busy CPUs. When not contending heavily for execution time (e.g. on an idle system), they all pass. These tests are specifically:
The InvTarExcTest.java test is recorded as a failure but in fact passes. This has been reported to the authors.
On machines that do not have the IEEE floating point feature, three additional tests will fail:
make install
cp libraries/javalib/pizza.jar /usr/local/share/kaffe
You've now got several commands:
/usr/local/bin/javac
runs the Pizza compiler to
produce a Java .class
file.
/usr/bin/jikes
runs the Jikes compiler to produce
a Java .class
file. Type man jikes
for more information.
/usr/local/bin/java
runs a Java .class
file produced by any Java compiler on any platform.
java
is actually just a front end to
kaffe
. Type man kaffe
for more
information.
/usr/local/bin
that I won't go into
right now (this isn't intended to be a Kaffe documentation
site).
Ross Patterson
RossPatterson@Yahoo.Com
Back to the home page, Jeeves!