Hi there folks! At my work, I am forced to use JDK5 for compatability reasons, so I made a nixpkg for it. I'd like to share it, in case anybody else is similarly burdened with such stressful obligations to obsolescence.
On a more upbeat note, I've also nixpkged the excelletn "notion" tiling window manager! Please find patches attached. I won't be offended if nobody wants JDK5 and it's rejected, but notion is a nice WM :-) I'm not on this list, so please make sure to Cc: any comments to me. I'm a nix noob, so I'm expecting I've done something not quite right somewhere... ABS -- Alaric Snell-Pym http://www.snell-pym.org.uk/alaric/
commit d9208eea1c4a176906755e575883b478f20b0d83 Author: Alaric Snell-Pym <[email protected]> Date: Wed Jul 16 10:38:04 2014 +0100 The notion tiling window manager, version notion-3-2014052800 diff --git a/pkgs/desktops/notion/default.nix b/pkgs/desktops/notion/default.nix new file mode 100644 index 0000000..49d4190 --- /dev/null +++ b/pkgs/desktops/notion/default.nix @@ -0,0 +1,33 @@ +{ stdenv, pkgconfig, fetchurl, lua5_1, x11, xlibs, gettext, which }: + +stdenv.mkDerivation { + name = "notion-3-2014052800"; + + src = fetchurl { + url = mirror://sourceforge/notion/notion-3-2014052800-src.tar.bz2; + sha256 = "09vh7kpwc99vmfiswr1pjdz5lzhy3nm992zsvfyrrd7ln47wj69n"; + }; + + + preBuild = '' + buildFlags="PREFIX=$out" + ''; + + preInstall = '' + makeFlags="PREFIX=$out" + ''; + + #patches = [ ./system-autodetect.patch ]; + + buildInputs = [ + lua5_1 xlibs.libX11 xlibs.libXext xlibs.libSM + xlibs.libXinerama xlibs.libXrandr gettext + pkgconfig which + ]; + + meta = { + description = "Tabbed, tiling, window manager"; + homepage = http://notion.sourceforge.net/; + maintainers = [stdenv.lib.maintainers.alaricsp]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 48b466e..9b5f39f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10495,6 +10495,8 @@ let enlightenment = callPackage ../desktops/enlightenment { }; + notion = callPackage ../desktops/notion { }; + e17 = recurseIntoAttrs ( let callPackage = newScope pkgs.e17; in import ../desktops/e17 { inherit callPackage pkgs; }
commit 4b429d9d4815e1ef80d207ecc1db3b176328f363 Author: Alaric Snell-Pym <[email protected]> Date: Mon Aug 19 12:40:07 2013 +0100 Oracle jdk-1.5.0.09 diff --git a/pkgs/development/compilers/jdk/jdk5-construct.sh b/pkgs/development/compilers/jdk/jdk5-construct.sh new file mode 100644 index 0000000..ff58f4e --- /dev/null +++ b/pkgs/development/compilers/jdk/jdk5-construct.sh @@ -0,0 +1,269 @@ +#!/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/jfc` + if [ ! -d $javahome ]; then + echo "${program}: unbundle directory incorrect: $undir" + echo " expecting $undir/jdk1.5.0_xx" + exit 2 + else + javahome=$(dirname $(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/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/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/java +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/jdk5-linux.nix b/pkgs/development/compilers/jdk/jdk5-linux.nix new file mode 100644 index 0000000..ac70505 --- /dev/null +++ b/pkgs/development/compilers/jdk/jdk5-linux.nix @@ -0,0 +1,71 @@ +{ swingSupport ? true +, stdenv +, requireFile +, unzip +, makeWrapper +, xlibs ? null +, installjdk ? true +, pluginSupport ? true +}: + +assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; +assert swingSupport -> xlibs != null; + +let + + /** + * The JRE libraries are in directories that depend on the CPU. + */ + architecture = + if stdenv.system == "i686-linux" then + "i386" + else if stdenv.system == "x86_64-linux" then + "amd64" + else + abort "jdk requires i686-linux or x86_64 linux"; + +in + +stdenv.mkDerivation { + name = + if installjdk then "jdk-1.5.0.09" else "jre-1.5.0.09"; + + src = + if stdenv.system == "i686-linux" then + requireFile { + name = "jdk-1_5_0_09-linux-i586.bin"; + url = "http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html#jdk-1.5.0_09-oth-JPR"; + sha256 = "0da00eb57fe7b3a7c81f0f553aba0c5324628fce9e49d5bca3eaea8c900435ae"; + } + else if stdenv.system == "x86_64-linux" then + requireFile { + name = "jdk-1_5_0_09-linux-amd64.bin"; + url = "http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html#jdk-1.5.0_09-oth-JPR"; + sha256 = "de8701da213eaac7a344f2b1552605334ba3b277ad08129519868580d67a6092"; + } + else + abort "jdk requires i686-linux or x86_64 linux"; + + builder = ./dlj-bundle-builder.sh; + + construct = ./jdk5-construct.sh; + inherit installjdk; + + buildInputs = [unzip makeWrapper]; + + /** + * libXt is only needed on amd64 + */ + libraries = + [stdenv.gcc.libc] ++ + (if swingSupport then [xlibs.libX11 xlibs.libXext xlibs.libXtst xlibs.libXi xlibs.libXp xlibs.libXt] else []); + + inherit swingSupport pluginSupport architecture; + inherit (xlibs) libX11; + + mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins"; + + meta.license = "unfree"; + meta.description = "Oracle Java Development Kit"; + meta.maintainers = [stdenv.lib.maintainers.alaricsp]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d128e17..48b466e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3048,6 +3048,8 @@ let oraclejdk = pkgs.jdkdistro true false; + oraclejdk5 = pkgs.oraclejdk5distro true false; + oraclejdk7 = pkgs.oraclejdk7distro true false; oraclejdk8 = pkgs.oraclejdk8distro true false; @@ -3064,6 +3066,11 @@ let system == "i686-linux" || system == "x86_64-linux"; + oraclejdk5distro = installjdk: pluginSupport: + assert supportsJDK; + (if pluginSupport then appendToName "with-plugin" else x: x) + (callPackage ../development/compilers/jdk/jdk5-linux.nix { }); + jdkdistro = installjdk: pluginSupport: assert supportsJDK; (if pluginSupport then appendToName "with-plugin" else x: x)
commit 2ecba58dcd31045640c6e23cd2a9bfe61a49109e Author: Alaric Snell-Pym <[email protected]> Date: Wed Jul 16 09:28:30 2014 +0100 Added myself (Alaric Snell-Pym) as a maintainer diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 6110b74..0833e97 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -8,6 +8,7 @@ aforemny = "Alexander Foremny <[email protected]>"; ak = "Alexander Kjeldaas <[email protected]>"; akc = "Anders Claesson <[email protected]>"; + alaricsp = "Alaric Snell-Pym <[email protected]>"; algorith = "Dries Van Daele <[email protected]>"; all = "Nix Committers <[email protected]>"; amiddelk = "Arie Middelkoop <[email protected]>";
signature.asc
Description: OpenPGP digital signature
_______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
