java-init: initial import

This commit is contained in:
Danny Rawlins 2021-02-04 00:32:32 +11:00
parent 1f5c95c86d
commit c3c375f9ac
7 changed files with 633 additions and 0 deletions

167
java-init/.footprint Normal file
View File

@ -0,0 +1,167 @@
drwxr-xr-x root/root opt/
drwxr-xr-x root/root opt/java-init/
drwxr-xr-x root/root opt/java-init/bin/
lrwxrwxrwx root/root opt/java-init/bin/ant -> ../lib/ant/bin/ant
-rwxr-xr-x root/root opt/java-init/bin/ecj
-rwxr-xr-x root/root opt/java-init/bin/gappletviewer
-rwxr-xr-x root/root opt/java-init/bin/gjar
-rwxr-xr-x root/root opt/java-init/bin/gjarsigner
-rwxr-xr-x root/root opt/java-init/bin/gjavah
-rwxr-xr-x root/root opt/java-init/bin/gkeytool
-rwxr-xr-x root/root opt/java-init/bin/gnative2ascii
-rwxr-xr-x root/root opt/java-init/bin/gorbd
-rwxr-xr-x root/root opt/java-init/bin/grmic
-rwxr-xr-x root/root opt/java-init/bin/grmid
-rwxr-xr-x root/root opt/java-init/bin/grmiregistry
-rwxr-xr-x root/root opt/java-init/bin/gserialver
-rwxr-xr-x root/root opt/java-init/bin/gtnameserv
-rwxr-xr-x root/root opt/java-init/bin/jamvm
-rwxr-xr-x root/root opt/java-init/bin/jamvm.bin
lrwxrwxrwx root/root opt/java-init/bin/jar -> gjar
lrwxrwxrwx root/root opt/java-init/bin/jarsigner -> gjarsigner
lrwxrwxrwx root/root opt/java-init/bin/java -> jamvm
lrwxrwxrwx root/root opt/java-init/bin/javac -> ecj
lrwxrwxrwx root/root opt/java-init/bin/javah -> gjavah
lrwxrwxrwx root/root opt/java-init/bin/keytool -> gkeytool
lrwxrwxrwx root/root opt/java-init/bin/native2ascii -> gnative2ascii
lrwxrwxrwx root/root opt/java-init/bin/orbd -> gorbd
lrwxrwxrwx root/root opt/java-init/bin/rmic -> grmic
lrwxrwxrwx root/root opt/java-init/bin/rmid -> grmid
lrwxrwxrwx root/root opt/java-init/bin/rmiregistry -> grmiregistry
lrwxrwxrwx root/root opt/java-init/bin/serialver -> gserialver
lrwxrwxrwx root/root opt/java-init/bin/tnameserv -> gtnameserv
drwxr-xr-x root/root opt/java-init/include/
-rw-r--r-- root/root opt/java-init/include/jawt.h
-rw-r--r-- root/root opt/java-init/include/jawt_md.h
-rw-r--r-- root/root opt/java-init/include/jni.h
-rw-r--r-- root/root opt/java-init/include/jni_md.h
lrwxrwxrwx root/root opt/java-init/jre -> .
drwxr-xr-x root/root opt/java-init/lib/
drwxr-xr-x root/root opt/java-init/lib/ant/
drwxr-xr-x root/root opt/java-init/lib/ant/bin/
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/ant
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/ant.bat
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/ant.cmd
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/antRun
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/antRun.bat
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/antRun.pl
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/antenv.cmd
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/complete-ant-cmd.pl
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/envset.cmd
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/lcp.bat
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/runant.pl
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/runant.py
-rwxr-xr-x root/root opt/java-init/lib/ant/bin/runrc.cmd
drwxr-xr-x root/root opt/java-init/lib/ant/etc/
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/ant-bootstrap.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/changelog.xsl
drwxr-xr-x root/root opt/java-init/lib/ant/etc/checkstyle/
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/checkstyle/checkstyle-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/checkstyle/checkstyle-text.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/checkstyle/checkstyle-xdoc.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/coverage-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/jdepend-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/jdepend.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/junit-frames-xalan1.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/junit-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/junit-noframes.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/log.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/maudit-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/mmetrics-frames.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/etc/tagdiff.xsl
-rwxr-xr-x root/root opt/java-init/lib/ant/fetch.xml
-rwxr-xr-x root/root opt/java-init/lib/ant/get-m2.xml
drwxr-xr-x root/root opt/java-init/lib/ant/lib/
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-antlr.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-antlr.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-bcel.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-bcel.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-bsf.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-bsf.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-log4j.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-log4j.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-oro.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-oro.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-regexp.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-regexp.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-resolver.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-resolver.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-xalan2.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-apache-xalan2.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-commons-logging.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-commons-logging.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-commons-net.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-commons-net.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jai.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jai.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-javamail.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-javamail.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jdepend.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jdepend.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jmf.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jmf.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jsch.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-jsch.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-junit.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-junit.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-junit4.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-junit4.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-launcher.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-launcher.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-netrexx.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-netrexx.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-parent.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-swing.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-swing.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant-testutil.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant.jar
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/ant.pom
-rwxr-xr-x root/root opt/java-init/lib/ant/lib/libraries.properties
drwxr-xr-x root/root opt/java-init/lib/classpath/
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavaio.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavaio.so -> libjavaio.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavaio.so.0 -> libjavaio.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavaio.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalang.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalang.so -> libjavalang.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalang.so.0 -> libjavalang.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalang.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalangmanagement.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalangmanagement.so -> libjavalangmanagement.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalangmanagement.so.0 -> libjavalangmanagement.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalangmanagement.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalangreflect.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalangreflect.so -> libjavalangreflect.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavalangreflect.so.0 -> libjavalangreflect.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavalangreflect.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavamath.la
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavamath.so
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavanet.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavanet.so -> libjavanet.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavanet.so.0 -> libjavanet.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavanet.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavanio.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavanio.so -> libjavanio.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavanio.so.0 -> libjavanio.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavanio.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavautil.la
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavautil.so -> libjavautil.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/classpath/libjavautil.so.0 -> libjavautil.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/classpath/libjavautil.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/libjvm.la
lrwxrwxrwx root/root opt/java-init/lib/libjvm.so -> libjvm.so.0.0.0
lrwxrwxrwx root/root opt/java-init/lib/libjvm.so.0 -> libjvm.so.0.0.0
-rwxr-xr-x root/root opt/java-init/lib/libjvm.so.0.0.0
-rw-r--r-- root/root opt/java-init/lib/logging.properties
lrwxrwxrwx root/root opt/java-init/lib/rt.jar -> ../share/classpath/glibj.zip
drwxr-xr-x root/root opt/java-init/lib/security/
-rw-r--r-- root/root opt/java-init/lib/security/classpath.security
lrwxrwxrwx root/root opt/java-init/lib/tools.jar -> ../share/classpath/tools.zip
drwxr-xr-x root/root opt/java-init/share/
drwxr-xr-x root/root opt/java-init/share/classpath/
-rw-r--r-- root/root opt/java-init/share/classpath/glibj.zip
-rw-r--r-- root/root opt/java-init/share/classpath/tools.zip
drwxr-xr-x root/root opt/java-init/share/jamvm/
-rw-r--r-- root/root opt/java-init/share/jamvm/classes.zip
drwxr-xr-x root/root opt/java-init/share/java/
-rwxr-xr-x root/root opt/java-init/share/java/ecj.jar

11
java-init/.md5sum Normal file
View File

@ -0,0 +1,11 @@
c474fa9d0c35a24037c23b6e476862c1 apache-ant-1.8.4-src.tar.bz2
9d99f1052febb87da3b6714244bfd751 build.xml
ffa9e9cac31c5acbf0ea9eff9efa923d classpath-0.93.tar.gz
0ae1571249172acd82488724a3b8acb4 classpath-0.99.tar.gz
f9d7b548658c84231b00fada8d4b4f1b ecjsrc.zip
d2d264d343d4d0e1575832cc1023c3bf fastjar-0.98.tar.gz
5c852dec3df6e7bba98a95f3e9a16d27 fastjar-jartool.c_rev1.62.patch
33f19f624a2f7751e23181ed2da72cbb fix-update-mode.diff
5a82751b50391eb092c906ce64f3b6bf jamvm-1.5.1.tar.gz
a6e3321ef4b3cfb4afc20bd75452e11e jamvm-2.0.0.tar.gz
cda958c7fef6b43b803e1d1ef9afcb85 jikes-1.22.tar.bz2

225
java-init/Pkgfile Normal file
View File

@ -0,0 +1,225 @@
# 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 {} \;
}

4
java-init/README Normal file
View File

@ -0,0 +1,4 @@
This port is intended as a bootstrapper jdk for building openjdk6.
The initial concept came about when I found out that gcc was going
to remove gcj from its collection starting with gcc 7. Much of this
port is based on the java bootstrapping in GUIX and Yocto.

49
java-init/build.xml Normal file
View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- build script to create a batch compiler from org.eclipse.jdt.core -->
<project name="Compile ecj with javac" default="compile">
<target name="init">
<tstamp/>
<property name="srcdir" value="src" />
<property name="destdir" value="compiler" />
<unzip src="${srcdir}/ecj.zip" dest="${srcdir}"/>
</target>
<target name="compile" depends="init">
<echo message="TARGET: ${destdir}" />
<delete dir="${destdir}"/>
<mkdir dir="${destdir}"/>
<property name="compilerArg" value="-encoding ISO-8859-1" />
<property name="javacSource" value="1.3" />
<property name="javacTarget" value="1.2" />
<property name="javacDebugInfo" value="on" />
<property name="javacFailOnError" value="true" />
<record name="compilelog.txt" action="start" />
<javac verbose="true"
target="${javacTarget}"
source="${javacSource}"
srcdir="${srcdir}"
destdir="${destdir}"
debug="${javacDebugInfo}"
failonerror="${javacFailOnError}">
<compilerarg line="${compilerArg}"/>
</javac>
<record name="compilelog.txt" action="stop" />
<echo message="UPDATE ecj.jar" />
<copy todir="${destdir}">
<fileset dir="${srcdir}">
<include name="**/*.properties"/>
<include name="**/*.rsc"/>
<exclude name="**/ecj.zip"/>
</fileset>
</copy>
<jar jarfile="ecj.jar">
<fileset dir="${destdir}"/>
</jar>
</target>
</project>

View File

@ -0,0 +1,133 @@
http://cvs.savannah.gnu.org/viewvc/fastjar/jartool.c?root=fastjar&r1=1.59&r2=1.62&view=patch
Revision 1.62 - Thu Jun 10 11:32:48 2010 UTC (5 years, 6 months ago) by richi
2010-06-10 Jakub Jelinek <jakub@redhat.com>
Dan Rosenberg <dan.j.rosenberg@gmail.com>
* jartool.c (extract_jar): Fix up checks for traversal to parent
directories, disallow absolute paths, make the code slightly more
efficient.
Revision 1.61 - Thu Jun 10 08:46:10 2010 UTC (5 years, 6 months ago) by richi
2010-06-10 Chris Ball <cjb@laptop.org>
* jartool.c (add_file_to_jar): Fix write return value check.
Revision 1.60 - Mon Mar 1 15:38:43 2010 UTC (5 years, 9 months ago) by richi
2010-03-01 Richard Guenther <rguenther@suse.de>
* jartool.c (read_entries): Properly zero-terminate filename.
--- jartool.c 2009/09/06 22:16:00 1.59
+++ jartool.c 2010/06/10 11:32:48 1.62
@@ -790,6 +790,7 @@
progname, jarfile);
return 1;
}
+ ze->filename[len] = '\0';
len = UNPACK_UB4(header, CEN_EFLEN);
len += UNPACK_UB4(header, CEN_COMLEN);
if (lseek (fd, len, SEEK_CUR) == -1)
@@ -1257,7 +1258,7 @@
exit_on_error("write");
/* write the file name to the zip file */
- if (1 == write(jfd, fname, file_name_length))
+ if (-1 == write(jfd, fname, file_name_length))
exit_on_error("write");
if(verbose){
@@ -1730,7 +1731,17 @@
struct stat sbuf;
int depth = 0;
- tmp_buff = malloc(sizeof(char) * strlen((const char *)filename));
+ if(*filename == '/'){
+ fprintf(stderr, "Absolute path names are not allowed.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ tmp_buff = malloc(strlen((const char *)filename));
+
+ if(tmp_buff == NULL) {
+ fprintf(stderr, "Out of memory.\n");
+ exit(EXIT_FAILURE);
+ }
for(;;){
const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/');
@@ -1738,25 +1749,28 @@
if(idx == NULL)
break;
else if(idx == start){
+ tmp_buff[idx - filename] = '/';
start++;
continue;
}
- start = idx + 1;
- strncpy(tmp_buff, (const char *)filename, (idx - filename));
- tmp_buff[(idx - filename)] = '\0';
+ memcpy(tmp_buff + (start - filename), (const char *)start, (idx - start));
+ tmp_buff[idx - filename] = '\0';
#ifdef DEBUG
printf("checking the existance of %s\n", tmp_buff);
#endif
- if(strcmp(tmp_buff, "..") == 0){
+ if(idx - start == 2 && memcmp(start, "..", 2) == 0){
--depth;
if (depth < 0){
fprintf(stderr, "Traversal to parent directories during unpacking!\n");
exit(EXIT_FAILURE);
}
- } else if (strcmp(tmp_buff, ".") != 0)
+ } else if (idx - start != 1 || *start != '.')
++depth;
+
+ start = idx + 1;
+
if(stat(tmp_buff, &sbuf) < 0){
if(errno != ENOENT)
exit_on_error("stat");
@@ -1765,6 +1779,7 @@
#ifdef DEBUG
printf("Directory exists\n");
#endif
+ tmp_buff[idx - filename] = '/';
continue;
}else {
fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n",
@@ -1781,10 +1796,11 @@
if(verbose && handle)
printf("%10s: %s/\n", "created", tmp_buff);
+ tmp_buff[idx - filename] = '/';
}
/* only a directory */
- if(strlen((const char *)start) == 0)
+ if(*start == '\0')
dir = TRUE;
#ifdef DEBUG
@@ -1792,7 +1808,7 @@
#endif
/* If the entry was just a directory, don't write to file, etc */
- if(strlen((const char *)start) == 0)
+ if(*start == '\0')
f_fd = -1;
free(tmp_buff);
@@ -1876,7 +1892,8 @@
exit(EXIT_FAILURE);
}
- close(f_fd);
+ if (f_fd != -1)
+ close(f_fd);
if(verbose && dir == FALSE && handle)
printf("%10s: %s\n",

View File

@ -0,0 +1,44 @@
Index: b/compress.c
===================================================================
--- a/compress.c
+++ b/compress.c
@@ -86,6 +86,10 @@ write_data (int fd, void *buf, size_t le
exit(EXIT_FAILURE);
}
}
+ else if (!next && here + len >= end_of_entries)
+ {
+ end_of_entries = here + len;
+ }
}
return write (fd, buf, len);
Index: b/jartool.c
===================================================================
--- a/jartool.c
+++ b/jartool.c
@@ -1273,15 +1273,18 @@ int add_file_to_jar(int jfd, int ffd, co
compress_file(ffd, jfd, ze, existing);
} else {
/* If we are not writing the last entry, make space for it. */
- if (existing && existing->next_entry)
+ if (existing)
{
- if (ze->usize > existing->usize)
+ if (existing->next_entry)
{
- if (shift_down (jfd, existing->next_entry->offset,
- ze->usize - existing->usize, existing->next_entry))
+ if (ze->usize > existing->usize)
{
- fprintf (stderr, "%s: %s\n", progname, strerror (errno));
- return 1;
+ if (shift_down (jfd, existing->next_entry->offset,
+ ze->usize - existing->usize, existing->next_entry))
+ {
+ fprintf (stderr, "%s: %s\n", progname, strerror (errno));
+ return 1;
+ }
}
}
}