226 lines
6.9 KiB
Plaintext
226 lines
6.9 KiB
Plaintext
# Description: Initial Java bootstrap
|
|
# URL: https://stygian.me/java-bootstrap/
|
|
# Maintainer: John Vogel, jvogel4 at stny dot rr dot com
|
|
# Depends on: libffi unzip zip
|
|
|
|
name=java-init
|
|
version=20180530
|
|
ant_vers=1.8.4
|
|
cp1_vers=0.93
|
|
cp2_vers=0.99
|
|
ecj_vers=3.2.2-200702121330
|
|
fastjar_vers=0.98
|
|
jamvm1_vers=1.5.1
|
|
jamvm2_vers=2.0.0
|
|
jikes_vers=1.22
|
|
release=1
|
|
source=(https://ftp.gnu.org/gnu/classpath/classpath-$cp1_vers.tar.gz
|
|
https://ftp.gnu.org/gnu/classpath/classpath-$cp2_vers.tar.gz
|
|
http://sourceforge.net/projects/jamvm/files/jamvm/JamVM%20$jamvm1_vers/jamvm-$jamvm1_vers.tar.gz
|
|
http://sourceforge.net/projects/jamvm/files/jamvm/JamVM%20$jamvm2_vers/jamvm-$jamvm2_vers.tar.gz
|
|
http://archive.apache.org/dist/ant/source/apache-ant-$ant_vers-src.tar.bz2
|
|
http://archive.eclipse.org/eclipse/downloads/drops/R-$ecj_vers/ecjsrc.zip
|
|
http://download.savannah.nongnu.org/releases/fastjar/fastjar-$fastjar_vers.tar.gz
|
|
https://sourceforge.net/projects/jikes/files/Jikes/$jikes_vers/jikes-$jikes_vers.tar.bz2
|
|
fastjar-jartool.c_rev1.62.patch
|
|
fix-update-mode.diff
|
|
build.xml)
|
|
|
|
unpack_source() {
|
|
for file in ${source[@]}; do
|
|
case ${file##*/} in
|
|
apache-ant-$ant_vers-src.tar.bz2|\
|
|
classpath-$cp1_vers.tar.gz|\
|
|
classpath-$cp2_vers.tar.gz|\
|
|
fastjar-$fastjar_vers.tar.gz|\
|
|
jamvm-$jamvm1_vers.tar.gz|\
|
|
jamvm-$jamvm2_vers.tar.gz|\
|
|
jikes-$jikes_vers.tar.bz2)
|
|
bsdtar -p -o -C $SRC -xf $(get_filename $file) ;;
|
|
*)
|
|
cp $(get_filename $file) $SRC ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
build() {
|
|
find $SRC ! -type l -a \( -perm /go+w -o ! -perm /u+rw \) \
|
|
-exec chmod go-w,u+w,a+r {} \;
|
|
|
|
mkdir -p $SRC/$name/{bin,lib,share/java}
|
|
|
|
cd $SRC/fastjar-$fastjar_vers
|
|
patch -i $SRC/fastjar-jartool.c_rev1.62.patch
|
|
patch -i $SRC/fix-update-mode.diff
|
|
./configure --prefix=$SRC/$name
|
|
make
|
|
make install
|
|
rm -r $SRC/$name/share/{info,man}
|
|
|
|
# Shutting off fp-emulation stopped jikes from segfaulting.
|
|
# We need the source15 to build new enough classpath and to build openjdk6 later.
|
|
cd $SRC/jikes-$jikes_vers
|
|
./configure \
|
|
--prefix=$SRC/$name \
|
|
--disable-fp-emulation \
|
|
--enable-source15
|
|
make
|
|
make install
|
|
rm -r $SRC/$name/{man,share/doc}
|
|
|
|
OLD_PATH=$PATH
|
|
export JAVA_HOME=$SRC/$name
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|
mkdir -p $SRC/tmp
|
|
export HOME=$SRC/tmp
|
|
|
|
cd $SRC/classpath-$cp1_vers
|
|
|
|
./configure \
|
|
--prefix=$SRC/$name \
|
|
--disable-alsa \
|
|
--disable-dssi \
|
|
--disable-examples \
|
|
--disable-gtk-peer \
|
|
--disable-gconf-peer \
|
|
--disable-plugin \
|
|
--disable-Werror \
|
|
--without-gjdoc
|
|
make
|
|
make install
|
|
ln -s ../share/classpath/glibj.zip $SRC/$name/lib/rt.jar
|
|
ln -s ../share/classpath/tools.zip $SRC/$name/lib/tools.jar
|
|
rm -r $SRC/$name/info
|
|
|
|
cd $SRC/jamvm-$jamvm1_vers
|
|
|
|
./configure \
|
|
--prefix=$SRC/$name \
|
|
--enable-ffi \
|
|
--with-classpath-install-dir=$SRC/$name
|
|
make
|
|
make install
|
|
# jamvm install replaces the rt.jar link with one that's invalid.
|
|
rm $SRC/$name/lib/rt.jar
|
|
ln -s ../share/classpath/glibj.zip $SRC/$name/lib/rt.jar
|
|
mv $SRC/$name/bin/jamvm{,.bin}
|
|
# jamvm seems to have issues with running mutli-threaded, this set of options
|
|
# seems to do a good job of preventing that.
|
|
cat > $SRC/$name/bin/jamvm << EOF
|
|
#!/bin/sh
|
|
exec $SRC/$name/bin/jamvm.bin -Xmx1024m -Xnocompact -Xnoinlining -Djdt.compiler.useSingleThread=true "\$@"
|
|
EOF
|
|
chmod 0755 $SRC/$name/bin/jamvm
|
|
ln -s jamvm $SRC/$name/bin/java
|
|
|
|
cd $SRC/apache-ant-$ant_vers
|
|
|
|
sed -i -e 's|\(depends="jars\),test-jar\("\)|\1\2|' build.xml
|
|
touch $HOME/.ant.properties
|
|
JAVAC=jikes \
|
|
JAVACMD=$JAVA_HOME/bin/jamvm \
|
|
CLASSPATH=$JAVA_HOME/lib/rt.jar \
|
|
ANT_OPTS="-Dbuild.compiler=jikes" \
|
|
BOOTJAVAC_OPTS="-nowarn" \
|
|
/bin/bash ./build.sh -Ddist.dir=out dist
|
|
rm -r out/manual
|
|
rm out/{INSTALL,KEYS,LICENSE,NOTICE,README,WHATSNEW,lib/README}
|
|
cp -a out $SRC/$name/lib/ant
|
|
ln -s ../lib/ant/bin/ant $JAVA_HOME/bin/ant
|
|
install -d -m 0755 $PKG/opt/$name/{bin,lib}
|
|
cp -a out $PKG/opt/$name/lib/ant
|
|
ln -s ../lib/ant/bin/ant $PKG/opt/$name/bin/ant
|
|
|
|
mkdir -p $SRC/ecj-$ecj_vers/src
|
|
mv $SRC/ecjsrc.zip $SRC/ecj-$ecj_vers/src/ecj.zip
|
|
cd $SRC/ecj-$ecj_vers
|
|
mv $SRC/build.xml .
|
|
ant --usejikes -f build.xml
|
|
install -D ecj.jar $SRC/$name/share/java/ecj.jar
|
|
install -D ecj.jar $PKG/opt/$name/share/java/ecj.jar
|
|
|
|
cat > $SRC/$name/bin/ecj << EOF
|
|
#!/bin/sh
|
|
exec $SRC/$name/bin/jamvm -cp $SRC/$name/share/java/ecj.jar \\
|
|
org.eclipse.jdt.internal.compiler.batch.Main "\$@"
|
|
EOF
|
|
chmod 0755 $SRC/$name/bin/ecj
|
|
cat > $PKG/opt/$name/bin/ecj << EOF
|
|
#!/bin/sh
|
|
exec /opt/$name/bin/jamvm -cp /opt/$name/share/java/ecj.jar \
|
|
org.eclipse.jdt.internal.compiler.batch.Main "\$@"
|
|
EOF
|
|
chmod 0755 $PKG/opt/$name/bin/ecj
|
|
|
|
cd $SRC/classpath-$cp2_vers
|
|
|
|
JAVAC=$JAVA_HOME/bin/ecj \
|
|
JAVA=$JAVA_HOME/bin/jamvm \
|
|
GCJ_JAVAC_TRUE=no \
|
|
./configure \
|
|
--prefix=/opt/$name \
|
|
--disable-alsa \
|
|
--disable-dssi \
|
|
--disable-examples \
|
|
--disable-gconf-peer \
|
|
--disable-gjdoc \
|
|
--disable-gtk-peer \
|
|
--disable-plugin \
|
|
--disable-Werror \
|
|
--with-ecj-jar=/opt/$name/share/java/ecj.jar \
|
|
ac_cv_prog_java_works=yes
|
|
make
|
|
make DESTDIR=$PKG install
|
|
rm -f $PKG/opt/$name/lib/{rt,tools}.jar
|
|
ln -s ../share/classpath/glibj.zip $PKG/opt/$name/lib/rt.jar
|
|
ln -s ../share/classpath/tools.zip $PKG/opt/$name/lib/tools.jar
|
|
|
|
rm -r $PKG/opt/$name/share/{info,man}
|
|
|
|
# TODO: eventually try to fix this by patching the classpath buildfiles.
|
|
for f in gappletviewer gjar gjarsigner gjavah gkeytool gnative2ascii \
|
|
gorbd grmic grmid grmiregistry gserialver gtnameserv; do
|
|
sed -i -e "s,^\(exec\) .* \(-classpath .*\)$,\1 /opt/$name/bin/jamvm \2," \
|
|
$PKG/opt/$name/bin/$f
|
|
done
|
|
|
|
ln -s . $PKG/opt/$name/jre
|
|
ln -s ecj $PKG/opt/$name/bin/javac
|
|
ln -s gjar $PKG/opt/$name/bin/jar
|
|
ln -s gjarsigner $PKG/opt/$name/bin/jarsigner
|
|
ln -s gjavah $PKG/opt/$name/bin/javah
|
|
ln -s gkeytool $PKG/opt/$name/bin/keytool
|
|
ln -s gnative2ascii $PKG/opt/$name/bin/native2ascii
|
|
ln -s gorbd $PKG/opt/$name/bin/orbd
|
|
ln -s grmic $PKG/opt/$name/bin/rmic
|
|
ln -s grmid $PKG/opt/$name/bin/rmid
|
|
ln -s grmiregistry $PKG/opt/$name/bin/rmiregistry
|
|
ln -s gserialver $PKG/opt/$name/bin/serialver
|
|
ln -s gtnameserv $PKG/opt/$name/bin/tnameserv
|
|
|
|
cd $SRC/jamvm-$jamvm2_vers
|
|
./configure \
|
|
--prefix=/opt/$name \
|
|
--enable-ffi \
|
|
--with-classpath-install-dir=/opt/$name
|
|
make
|
|
make DESTDIR=$PKG install
|
|
# jamvm install replaces the rt.jar link with one that's invalid.
|
|
rm $PKG/opt/$name/lib/rt.jar
|
|
ln -s ../share/classpath/glibj.zip $PKG/opt/$name/lib/rt.jar
|
|
mv $PKG/opt/$name/bin/jamvm{,.bin}
|
|
# jamvm seems to have issues with running mutli-threaded, this set of options
|
|
# seems to do a good job of preventing that.
|
|
cat > $PKG/opt/$name/bin/jamvm << EOF
|
|
#!/bin/sh
|
|
exec /opt/$name/bin/jamvm.bin -Xmx1024m -Xnocompact -Xnoinlining -Djdt.compiler.useSingleThread=true "\$@"
|
|
EOF
|
|
chmod 0755 $PKG/opt/$name/bin/jamvm
|
|
ln -s jamvm $PKG/opt/$name/bin/java
|
|
mv $PKG/opt/$name/lib/libjvm.so{,.0.0.0}
|
|
ln -s libjvm.so.0.0.0 $PKG/opt/$name/lib/libjvm.so
|
|
ln -s libjvm.so.0.0.0 $PKG/opt/$name/lib/libjvm.so.0
|
|
find $PKG ! -type l -a \( -perm /go+w -o ! -perm /u+rw \) \
|
|
-exec chmod go-w,u+rw {} \;
|
|
}
|