diff options
author | Martin Bravenboer <martin.bravenboer@logicblox.com> | 2007-03-05 17:13:53 +0000 |
---|---|---|
committer | Martin Bravenboer <martin.bravenboer@logicblox.com> | 2007-03-05 17:13:53 +0000 |
commit | 6892b99bf6db5e520058a879d082367d906fb8fd (patch) | |
tree | be55d4b8614b0a653631e13cdc1e0775f50023cc /pkgs/development/compilers/jdk | |
parent | 12b6b77f966b7b17a531295829460ae47b4f8b54 (diff) |
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
Diffstat (limited to 'pkgs/development/compilers/jdk')
-rw-r--r-- | pkgs/development/compilers/jdk/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/compilers/jdk/dlj-bundle-builder.sh | 35 | ||||
-rw-r--r-- | pkgs/development/compilers/jdk/jdk5-sun-linux.nix | 29 | ||||
-rw-r--r-- | pkgs/development/compilers/jdk/jdk6-construct.sh | 273 | ||||
-rw-r--r-- | pkgs/development/compilers/jdk/jdk6-linux.nix | 45 |
5 files changed, 356 insertions, 30 deletions
diff --git a/pkgs/development/compilers/jdk/default.nix b/pkgs/development/compilers/jdk/default.nix index 824a560d9c58c..9801b3f0e12c9 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/compilers/jdk/dlj-bundle-builder.sh b/pkgs/development/compilers/jdk/dlj-bundle-builder.sh new file mode 100644 index 0000000000000..627bfb4a846ac --- /dev/null +++ b/pkgs/development/compilers/jdk/dlj-bundle-builder.sh @@ -0,0 +1,35 @@ +source $stdenv/setup +sh ${src} --accept-license + +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/* +do + if test -f $file ; then + rm $file + fi +done +rm -rf $out/docs + +# Set the dynamic linker. +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" {} \; 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 b6c7759dc1500..0000000000000 --- 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 <martin@cs.uu.nl> - */ -{ 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 0000000000000..3e09d4621d63d --- /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 <<EOF > $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 <<EOF > $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 0000000000000..78ea373cf04f3 --- /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 |