From 6892b99bf6db5e520058a879d082367d906fb8fd Mon Sep 17 00:00:00 2001 From: Martin Bravenboer Date: Mon, 5 Mar 2007 17:13:53 +0000 Subject: [PATCH] Update of jdk and jre to jdk-distros, based on Distributor License for Java. D pkgs/development/interpreters/jre Obsolete. jdk and jre are now build by the same expression. D pkgs/development/compilers/blackdown Obsolete. jdk is now downloadable. D pkgs/development/compilers/jdk/jdk5-sun-linux.nix Obsolete A pkgs/development/compilers/jdk/dlj-bundle-builder.sh Build for DLJ bundles. M pkgs/top-level/all-packages.nix Dropped blackdown and ant based on blackdown. A pkgs/development/compilers/jdk/jdk6-construct.sh Copy of DLJ construct script to fix problem with jdk6 bundles. A pkgs/development/compilers/jdk/jdk6-linux.nix New main Nix expression for jdk and jre. Supports mozillaPlugin. A pkgs/development/compilers/jdk/dlj-bundle-builder.sh Include path to libjli in rpath. svn path=/nixpkgs/trunk/; revision=8186 --- .../compilers/blackdown/blackdown-i686.nix | 13 - .../compilers/blackdown/builder.sh | 26 -- .../compilers/blackdown/default.nix | 9 - pkgs/development/compilers/jdk/default.nix | 4 +- .../jdk/dlj-bundle-builder.sh} | 28 +- .../compilers/jdk/jdk5-sun-linux.nix | 29 -- .../compilers/jdk/jdk6-construct.sh | 273 ++++++++++++++++++ pkgs/development/compilers/jdk/jdk6-linux.nix | 45 +++ pkgs/development/interpreters/jre/default.nix | 9 - .../interpreters/jre/jre-sun-linux.nix | 16 - pkgs/top-level/all-packages.nix | 50 +--- pkgs/top-level/build-for-release.nix | 4 +- 12 files changed, 354 insertions(+), 152 deletions(-) delete mode 100644 pkgs/development/compilers/blackdown/blackdown-i686.nix delete mode 100755 pkgs/development/compilers/blackdown/builder.sh delete mode 100644 pkgs/development/compilers/blackdown/default.nix rename pkgs/development/{interpreters/jre/builder.sh => compilers/jdk/dlj-bundle-builder.sh} (55%) delete mode 100644 pkgs/development/compilers/jdk/jdk5-sun-linux.nix create mode 100644 pkgs/development/compilers/jdk/jdk6-construct.sh create mode 100644 pkgs/development/compilers/jdk/jdk6-linux.nix delete mode 100644 pkgs/development/interpreters/jre/default.nix delete mode 100644 pkgs/development/interpreters/jre/jre-sun-linux.nix diff --git a/pkgs/development/compilers/blackdown/blackdown-i686.nix b/pkgs/development/compilers/blackdown/blackdown-i686.nix deleted file mode 100644 index 35ff176bb7bd..000000000000 --- a/pkgs/development/compilers/blackdown/blackdown-i686.nix +++ /dev/null @@ -1,13 +0,0 @@ -{stdenv, fetchurl}: - -assert stdenv.system == "i686-linux"; - -(stdenv.mkDerivation { - name = "blackdown-1.4.2"; - dirname = "j2sdk1.4.2"; - builder = ./builder.sh; - src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/j2sdk-1.4.2-02-linux-i586.bin; - md5 = "a65733528562794b7838407084cabd9a"; - }; -}) // {mozillaPlugin = "/jre/plugin/i386/mozilla";} diff --git a/pkgs/development/compilers/blackdown/builder.sh b/pkgs/development/compilers/blackdown/builder.sh deleted file mode 100755 index 5969318440f1..000000000000 --- a/pkgs/development/compilers/blackdown/builder.sh +++ /dev/null @@ -1,26 +0,0 @@ -set -e - -source $stdenv/setup - -cp $src . -bin=`basename $src` -chmod u+x $bin - -# This is required because those GNU coreutils fuckers suddenly -# removed the `+N' syntax (due to a misguided desire for "standards -# compliance"), which the Blackdown installer uses. -export _POSIX2_VERSION=199209 - -alias more=cat -yes yes | ./$bin - -mkdir $out -mv $dirname/* $out/ - -# remove crap in the root directory -for file in $out/* -do - if test -f $file ; then - rm $file - fi -done diff --git a/pkgs/development/compilers/blackdown/default.nix b/pkgs/development/compilers/blackdown/default.nix deleted file mode 100644 index b83c3124e8a0..000000000000 --- a/pkgs/development/compilers/blackdown/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv, fetchurl}: - -if stdenv.system == "i686-linux" - then - (import ./blackdown-i686.nix) { - inherit stdenv fetchurl; - } - else - null diff --git a/pkgs/development/compilers/jdk/default.nix b/pkgs/development/compilers/jdk/default.nix index 824a560d9c58..9801b3f0e12c 100644 --- a/pkgs/development/compilers/jdk/default.nix +++ b/pkgs/development/compilers/jdk/default.nix @@ -1,8 +1,10 @@ args: if args.stdenv.system == "i686-linux" then - (import ./jdk5-sun-linux.nix) args + (import ./jdk6-linux.nix) args + else if args.stdenv.system == "powerpc-linux" then (import ./jdk5-ibm-powerpc-linux.nix) args + else false diff --git a/pkgs/development/interpreters/jre/builder.sh b/pkgs/development/compilers/jdk/dlj-bundle-builder.sh similarity index 55% rename from pkgs/development/interpreters/jre/builder.sh rename to pkgs/development/compilers/jdk/dlj-bundle-builder.sh index 91ef8ca2fc1f..627bfb4a846a 100644 --- a/pkgs/development/interpreters/jre/builder.sh +++ b/pkgs/development/compilers/jdk/dlj-bundle-builder.sh @@ -1,11 +1,13 @@ source $stdenv/setup +sh ${src} --accept-license -unzip $src || true - -ensureDir $out - -echo "Moving sources to the right location" -mv $version/* $out/ +if test -z "$installjdk"; then + sh ${construct} . tmp-linux-jdk tmp-linux-jre + ensureDir $out + cp -R tmp-linux-jre/* $out +else + sh ${construct} . $out tmp-linux-jre +fi echo "Removing files at top level" for file in $out/* @@ -21,13 +23,13 @@ rpath= for i in $libraries; do rpath=$rpath${rpath:+:}$i/lib done + +if test -z "$installjdk"; then + rpath=${rpath:+:}$out/lib/i386/jli +else + rpath=${rpath:+:}$out/jre/lib/i386/jli +fi + find $out -type f -perm +100 \ -exec patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ --set-rpath "$rpath" {} \; - -# Unpack .pack files. -for i in $(find $out -name "*.pack"); do - echo "unpacking $i..." - $out/bin/unpack200 "$i" "$(dirname $i)/$(basename $i .pack).jar" - rm "$i" -done diff --git a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix deleted file mode 100644 index b6c7759dc150..000000000000 --- a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This Nix expression requires the user to download the jdk - * distribution to /tmp. Please obtain jdk-1_5_0_07-linux-i586.bin - * from java.sun.com by hand and place it in /tmp. Blame Sun, not me. - * - * Note that this is not necessary if someone has already pushed a - * binary. - * - * @author Martin Bravenboer - */ -{ swingSupport ? true -, stdenv, fetchurl, unzip, libX11 ? null, libXext ? null -}: - -assert stdenv.system == "i686-linux"; - -assert swingSupport -> libX11 != null && libXext != null; - -(stdenv.mkDerivation { - name = "jdk-1.5.0"; - builder = ./builder.sh; - filename = "jdk-1_5_0_07"; - dirname = "jdk1.5.0_07"; - pathname = "/tmp/jdk-1_5_0_07-linux-i586.bin"; - md5 = "1325082c36b4adcb71bc5449ae4c68cf"; - buildInputs = [unzip]; - libraries = - (if swingSupport then [libX11 libXext] else []); -} // {inherit swingSupport;}) diff --git a/pkgs/development/compilers/jdk/jdk6-construct.sh b/pkgs/development/compilers/jdk/jdk6-construct.sh new file mode 100644 index 000000000000..3e09d4621d63 --- /dev/null +++ b/pkgs/development/compilers/jdk/jdk6-construct.sh @@ -0,0 +1,273 @@ +#!/bin/bash +# construct.sh +# example construction of JRE and JDK directories from the DLJ bundles +# +# Copyright © 2006 Sun Microsystems, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Sun, Sun Microsystems, the Sun logo and Java, Java HotSpot, +# and JVM trademarks or registered trademarks of Sun Microsystems, +# Inc. in the U.S. and other countries. + + +program=`basename $0` + +usage () { + echo "usage: ${program} path/to/unbundle-jdk path/to/linux-jdk path/to/linux-jre" +} + +getargs() { + undir=$1 + jdkdir=$2 + jredir=$3 + if [ ! -d $undir ]; then + echo "${program}: unbundle directory not found: $undir" + exit 2 + fi + # make sure javahome is the JDK + javahome=`echo $undir/*/demo` + if [ ! -d $javahome ]; then + echo "${program}: unbundle directory incorrect: $undir" + echo " expecting $undir/jdk1.5.0_xx" + exit 2 + else + javahome=`dirname $javahome` + fi + # verify JDK dir + jdkdirp=`dirname $jdkdir` + jdkbase=`basename $jdkdir` + if [ ! -d $jdkdirp ]; then + echo "${program}: parent directory for JDK does not exist: $jdkdirp" + exit 2 + fi + savedir=`pwd` + cd $jdkdirp + jdkdirp=`pwd` + cd $savedir + jdkdir=$jdkdirp/$jdkbase + # verify JRE dir + jredirp=`dirname $jredir` + jrebase=`basename $jredir` + if [ ! -d $jredirp ]; then + echo "${program}: parent directory for JRE does not exist: $jredirp" + exit 2 + fi + savedir=`pwd` + cd $jredirp + jredirp=`pwd` + cd $savedir + jredir=$jredirp/$jrebase +} + +checkfiles() { + if [ -r $jdkdir ]; then + echo "${program}: directory for JDK already exists: $jdkdir" + exit 2 + fi + if [ -r $jredir ]; then + echo "${program}: directory for JRE already exists: $jredir" + exit 2 + fi +} + +copytree() { + echo "copying over the JDK tree..." + cp -a $javahome $jdkdir +} + +linkrel() { + target=$1 + link=$2 + # make a softlink from the $link to the $target + # make this a relative link + targetb=(`echo $target | tr '/' ' '`) + linkb=(`echo $link | tr '/' ' '`) + (( n = ${#targetb[*]} )) + (( m = ${#linkb[*]} )) + c=$n # common length + if [ $m -lt $c ]; then + (( c = m )) + fi + for (( i = 0 ; i < c ; i++ )); do + if [ ${targetb[$i]} != ${linkb[$i]} ]; then + # echo components differ, stopping + break + fi + done + rel="" + for (( j = i + 1; j < m ; j++ )); do + if [ -z $rel ]; then + rel=".." + else + rel="$rel/.." + fi + done + for (( j = i; j < n ; j++ )); do + if [ -z $rel ]; then + rel=${targetb[$j]} + else + rel="$rel/${targetb[$j]}" + fi + done + ln -s $rel $link +} + +createjre() { + echo "creating JRE directory..." + # absolute link + # ln -s $jdkdir/jre $jredir + # relative link + linkrel $jdkdir/jre $jredir +} + +unpackjars() { + echo "unpacking jars..." + unpack200=$jdkdir/bin/unpack200 + if [ ! -x $unpack200 ]; then + echo "${program}: file missing $unpack200" + exit 1 + fi + cd $jdkdir + PACKED_JARS=`find . -name '*.pack'` + for i in $PACKED_JARS; do + # echo $i + jdir=`dirname $i` + jbase=`basename $i .pack` + if ! $unpack200 $jdkdir/$jdir/$jbase.pack $jdkdir/$jdir/$jbase.jar; then + echo "${program}: error unpacking $jdkdir/$jdir/$jbase.jar" + fi + if [ ! -r $jdkdir/$jdir/$jbase.jar ]; then + echo "${program}: missing $jdkdir/$jdir/$jbase.jar" + else + echo " $jdir/$jbase.jar" + # remove pack file + rm $jdkdir/$jdir/$jbase.pack + fi + done +} + +preparecds() { + # if this is a client installation... + compiler="`$jdkdir/bin/java -client -version 2>&1 | tail -n +3 | cut -d' ' -f1-4`" + if [ "X$compiler" = "XJava HotSpot(TM) Client VM" ]; then + # create the CDS archive + echo "creating the class data sharing archive..." + if ! $jdkdir/bin/java -client -Xshare:dump > /dev/null 2>&1; then + echo "returned error code $?" + fi + fi +} + +jreman () { + echo "setting up the JRE man pages..." + # note this list is slightly different for OpenSolaris bundles + jreman=/tmp/jre.man.txt +cat < $jreman +man/ja_JP.eucJP/man1/java.1 +man/ja_JP.eucJP/man1/javaws.1 +man/ja_JP.eucJP/man1/keytool.1 +man/ja_JP.eucJP/man1/orbd.1 +man/ja_JP.eucJP/man1/pack200.1 +man/ja_JP.eucJP/man1/policytool.1 +man/ja_JP.eucJP/man1/rmid.1 +man/ja_JP.eucJP/man1/rmiregistry.1 +man/ja_JP.eucJP/man1/servertool.1 +man/ja_JP.eucJP/man1/tnameserv.1 +man/ja_JP.eucJP/man1/unpack200.1 +man/man1/java.1 +man/man1/javaws.1 +man/man1/keytool.1 +man/man1/orbd.1 +man/man1/pack200.1 +man/man1/policytool.1 +man/man1/rmid.1 +man/man1/rmiregistry.1 +man/man1/servertool.1 +man/man1/tnameserv.1 +man/man1/unpack200.1 +EOF + # create jre/man directory + # mkdir $jdkdir/jre/man + # move the real JRE man pages to jre/man + # link the JDK JRE man pages to jre/man + # real JDK man pages stay where they are + for m in `cat $jreman`; do + manpath=`dirname $jdkdir/jre/$m` + mkdir -p $manpath + mv $jdkdir/$m $jdkdir/jre/$m + linkrel $jdkdir/jre/$m $jdkdir/$m + done + # link in Japanese man pages + ln -s ja_JP.eucJP $jdkdir/jre/man/ja + rm $jreman +} + +elimdups() { + echo "eliminating duplication between the JDK and JDK/jre..." + jdkcomm=/tmp/jdk.bin.comm.txt +cat < $jdkcomm +bin/ControlPanel +bin/java +bin/javaws +bin/keytool +bin/orbd +bin/pack200 +bin/policytool +bin/rmid +bin/rmiregistry +bin/servertool +bin/tnameserv +bin/unpack200 +EOF + # note there is little point in linking these common files + # COPYRIGHT + # LICENSE + # THIRDPARTYLICENSEREADME.txt + # And this file is unique to the JDK + # README.html + # And these files are unique to the JDK/jre/ + # CHANGES + # README + # Welcome.html + for p in `cat $jdkcomm`; do + rm $jdkdir/$p + # this is a relative link + ln -s ../jre/$p $jdkdir/$p + done + rm $jdkcomm +} + +if [ $# -eq 3 ] ; then + getargs $1 $2 $3 + checkfiles + copytree + createjre + unpackjars + preparecds + jreman + elimdups +else + usage + exit 1 +fi + +exit 0 + diff --git a/pkgs/development/compilers/jdk/jdk6-linux.nix b/pkgs/development/compilers/jdk/jdk6-linux.nix new file mode 100644 index 000000000000..78ea373cf04f --- /dev/null +++ b/pkgs/development/compilers/jdk/jdk6-linux.nix @@ -0,0 +1,45 @@ +{ swingSupport ? true +, stdenv +, fetchurl +, unzip +, libX11 ? null +, libXext ? null +, installjdk ? true +}: + +/** + * @todo Support x86_64-linux. + */ +assert stdenv.system == "i686-linux"; +assert swingSupport -> libX11 != null && libXext != null; + +(stdenv.mkDerivation { + name = + if installjdk then "jdk-1.6.0" else "jre-1.6.0"; + + src = + fetchurl { + url = http://download.java.net/dlj/binaries/jdk-6-dlj-linux-i586.bin; + sha256 = "0rw48124fdc5rhafj6qzrysb4w823jbn3awxgn07kcy1nvnrhkqw"; + }; + + builder = ./dlj-bundle-builder.sh; + + /** + * If jdk5 is added, make sure to use the original construct script. + * This copy removes references to kinit, klist, ktab, which seem to be + * gone in jdk. + */ + construct = ./jdk6-construct.sh; + inherit installjdk; + + buildInputs = [unzip]; + libraries = + (if swingSupport then [libX11 libXext] else []); +} // { + inherit swingSupport; +} // { + mozillaPlugin = + if installjdk then "jre/plugin/i386/ns7" else "/plugin/i386/ns7"; + } +) \ No newline at end of file diff --git a/pkgs/development/interpreters/jre/default.nix b/pkgs/development/interpreters/jre/default.nix deleted file mode 100644 index 6e694202fd70..000000000000 --- a/pkgs/development/interpreters/jre/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv, fetchurl, unzip}: - -if stdenv.system == "i686-linux" - then - (import ./jre-sun-linux.nix) { - inherit stdenv fetchurl unzip; - } - else - false diff --git a/pkgs/development/interpreters/jre/jre-sun-linux.nix b/pkgs/development/interpreters/jre/jre-sun-linux.nix deleted file mode 100644 index 274d737e2e2e..000000000000 --- a/pkgs/development/interpreters/jre/jre-sun-linux.nix +++ /dev/null @@ -1,16 +0,0 @@ -{stdenv, fetchurl, unzip}: - -assert stdenv.system == "i686-linux"; - -(stdenv.mkDerivation { - name = "jre-1.5.0"; - version = "jre1.5.0_07"; - builder = ./builder.sh; - src = fetchurl { - url = http://jdl.sun.com/webapps/download/AutoDL?BundleId=10542; - md5 = "e2ad1c9e47f3e34d1efae059b9e2a2d9"; - }; - buildInputs = [unzip]; -}) - -// {mozillaPlugin = "/plugin/i386/ns7";} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4603ff7cf8a1..e9b19a1e253c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -503,8 +503,7 @@ rec { }; trang = import ../tools/text/xml/trang { - inherit fetchurl stdenv unzip; - jre = blackdown; + inherit fetchurl stdenv unzip jre; }; transfig = import ../tools/graphics/transfig { @@ -582,10 +581,8 @@ rec { abcPatchable = patches : import ../development/compilers/abc/default.nix { inherit stdenv fetchurl patches jre apacheAnt; - # apacheAnt = apacheAntBlackdown14; javaCup = import ../development/libraries/java/cup { - inherit stdenv fetchurl; - jdk = blackdown; + inherit stdenv fetchurl jdk; }; }; @@ -594,10 +591,6 @@ rec { inherit stdenv fetchurl jre; }; - blackdown = import ../development/compilers/blackdown { - inherit fetchurl stdenv; - }; - dylan = import ../development/compilers/gwydion-dylan { inherit fetchurl stdenv perl boehmgc yacc flex readline; dylan = @@ -742,12 +735,15 @@ rec { inherit fetchurl stdenv; }; - jdk = + jre = jdkdistro false; + jdk = jdkdistro true; + + jdkdistro = installjdk : if stdenv.isDarwin then "/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" else import ../development/compilers/jdk { - inherit fetchurl stdenv unzip; + inherit fetchurl stdenv unzip installjdk; inherit (xlibs) libX11 libXext; }; @@ -863,10 +859,6 @@ rec { inherit fetchurl stdenv ncurses readline; }; - jre = import ../development/interpreters/jre { - inherit fetchurl stdenv unzip; - }; - kaffe = import ../development/interpreters/kaffe { inherit fetchurl stdenv jikes alsaLib xlibs; }; @@ -941,8 +933,7 @@ rec { */ ecj = import ../development/eclipse/ecj { - inherit fetchurl stdenv unzip jre; - ant = apacheAntBlackdown14; + inherit fetchurl stdenv unzip jre ant; }; jdtsdk = import ../development/eclipse/jdt-sdk { @@ -969,21 +960,16 @@ rec { inherit fetchurl stdenv jre; }; + ant = apacheAnt; apacheAnt = import ../development/tools/build-managers/apache-ant { inherit fetchurl stdenv jdk; - name = "ant-jdk-1.5.0"; + name = "ant-" + jdk.name; }; apacheAnt14 = import ../development/tools/build-managers/apache-ant { inherit fetchurl stdenv; jdk = j2sdk14x; - name = "ant-jdk-1.4.2"; - }; - - apacheAntBlackdown14 = import ../development/tools/build-managers/apache-ant { - inherit fetchurl stdenv; - jdk = blackdown; - name = "ant-blackdown-1.4.2"; + name = "ant-" + j2sdk14x.name; }; autoconf = autoconf259; @@ -1145,8 +1131,7 @@ rec { }; swigWithJava = import ../development/tools/misc/swig { - inherit fetchurl stdenv; - jdk = blackdown; + inherit fetchurl stdenv jdk; perlSupport = false; pythonSupport = false; javaSupport = true; @@ -2065,8 +2050,7 @@ rec { }; mysql_jdbc = import ../servers/sql/mysql/jdbc { - inherit fetchurl stdenv; - ant = apacheAntBlackdown14; + inherit fetchurl stdenv ant; }; nagios = import ../servers/monitoring/nagios { @@ -2082,13 +2066,11 @@ rec { }; postgresql_jdbc = import ../servers/sql/postgresql/jdbc { - inherit fetchurl stdenv; - ant = apacheAntBlackdown14; + inherit fetchurl stdenv ant; }; tomcat5 = import ../servers/http/tomcat { - inherit fetchurl stdenv ; - jdk = blackdown; + inherit fetchurl stdenv jdk; }; vsftpd = import ../servers/ftp/vsftpd { @@ -2910,7 +2892,7 @@ rec { ] # RealPlayer is disabled by default for legal reasons. ++ (if getConfig ["firefox" "enableRealPlayer"] false then [RealPlayer] else []) - ++ (if blackdown != null then [blackdown] else []); + ++ (if jre != false then [jre] else []); }; xara = import ../applications/graphics/xara { diff --git a/pkgs/top-level/build-for-release.nix b/pkgs/top-level/build-for-release.nix index 9248c8262c92..707b4052d45c 100644 --- a/pkgs/top-level/build-for-release.nix +++ b/pkgs/top-level/build-for-release.nix @@ -6,7 +6,7 @@ let { MPlayer MPlayerPlugin #abc - apacheAntBlackdown14 + apacheAnt apacheHttpd aspectj aterm @@ -17,7 +17,6 @@ let { binutils bison23 bittorrent - blackdown bmp bmp_plugin_musepack bmp_plugin_wma @@ -67,6 +66,7 @@ let { hello iputils jakartaregexp + jdk jetty jikes jing_tools