diff --git a/pkgs/development/compilers/icedtea/cppflags-include-fix.patch b/pkgs/development/compilers/icedtea/cppflags-include-fix.patch deleted file mode 100644 index 731a8d07548..00000000000 --- a/pkgs/development/compilers/icedtea/cppflags-include-fix.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git openjdk-orig/jdk/make/sun/awt/mawt.gmk openjdk/jdk/make/sun/awt/mawt.gmk -index c6ab06d..23a14da 100644 ---- openjdk-orig/jdk/make/sun/awt/mawt.gmk -+++ openjdk/jdk/make/sun/awt/mawt.gmk -@@ -270,12 +270,6 @@ LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB) - endif # !HEADLESS - endif # PLATFORM - --ifeq ($(PLATFORM), linux) -- # Checking for the X11/extensions headers at the additional location -- CPPFLAGS += -I$(firstword $(wildcard $(OPENWIN_HOME)/include/X11/extensions) \ -- $(wildcard /usr/include/X11/extensions)) --endif -- - ifeq ($(PLATFORM), macosx) - CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \ - -I$(OPENWIN_HOME)/include diff --git a/pkgs/development/compilers/icedtea/default.nix b/pkgs/development/compilers/icedtea/default.nix deleted file mode 100644 index 8a96d1c380d..00000000000 --- a/pkgs/development/compilers/icedtea/default.nix +++ /dev/null @@ -1,181 +0,0 @@ -{ stdenv, fetchurl, jdk, ant, wget, zip, unzip, cpio, file, libxslt -, xorg, zlib, pkgconfig, libjpeg, libpng, giflib, lcms2, gtk2, kerberos, attr -, alsaLib, procps, automake, autoconf, cups, which, perl, coreutils, binutils -, cacert, setJavaClassPath -}: - -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 - throw "icedtea requires i686-linux or x86_64 linux"; - - srcInfo = (import ./sources.nix).icedtea7; - - pkgName = "icedtea7-${srcInfo.version}"; - - defSrc = name: - with (builtins.getAttr name srcInfo.bundles); fetchurl { - inherit url sha256; - name = "${pkgName}-${baseNameOf url}"; - }; - - bundleNames = builtins.attrNames srcInfo.bundles; - - sources = stdenv.lib.genAttrs bundleNames (name: defSrc name); - - bundleFun = name: "--with-${name}-src-zip=" + builtins.getAttr name sources; - bundleFlags = map bundleFun bundleNames; - - icedtea = stdenv.mkDerivation (with srcInfo; { - name = pkgName; - - src = fetchurl { - inherit url sha256; - }; - - outputs = [ "out" "jre" ]; - - # TODO: Probably some more dependencies should be on this list but are being - # propagated instead - buildInputs = [ - jdk ant wget zip unzip cpio file libxslt pkgconfig procps automake - autoconf which perl coreutils xorg.lndir - zlib libjpeg libpng giflib lcms2 kerberos attr alsaLib cups - xorg.libX11 xorg.libXtst gtk2 - ]; - - configureFlags = bundleFlags ++ [ - "--disable-bootstrap" - "--disable-downloading" - - "--without-rhino" - "--with-pax=paxctl" - "--with-jdk-home=${jdk.home}" - ]; - - preConfigure = '' - unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS - - substituteInPlace javac.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl' - substituteInPlace javah.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl' - - ./autogen.sh - ''; - - preBuild = '' - make stamps/extract.stamp - - substituteInPlace openjdk/jdk/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo' - substituteInPlace openjdk/corba/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo' - - patch -p0 < ${./cppflags-include-fix.patch} - patch -p0 < ${./fix-java-home.patch} - ''; - - NIX_NO_SELF_RPATH = true; - - makeFlags = [ - "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h" - "ALT_UNIXCOMMAND_PATH=" - "ALT_USRBIN_PATH=" - "ALT_DEVTOOLS_PATH=" - "ALT_COMPILER_PATH=" - "ALT_CUPS_HEADERS_PATH=${cups}/include" - "ALT_OBJCOPY=${binutils}/bin/objcopy" - "SORT=${coreutils}/bin/sort" - "UNLIMITED_CRYPTO=1" - ]; - - installPhase = '' - mkdir -p $out/lib/icedtea $out/share $jre/lib/icedtea - - cp -av openjdk.build/j2sdk-image/* $out/lib/icedtea - - # Move some stuff to top-level. - mv $out/lib/icedtea/include $out/include - mv $out/lib/icedtea/man $out/share/man - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/linux/*_md.h $out/include/ - - # Remove some broken manpages. - rm -rf $out/share/man/ja* - - # Remove crap from the installation. - rm -rf $out/lib/icedtea/demo $out/lib/icedtea/sample - - # Move the JRE to a separate output. - mv $out/lib/icedtea/jre $jre/lib/icedtea/ - mkdir $out/lib/icedtea/jre - lndir $jre/lib/icedtea/jre $out/lib/icedtea/jre - - # The following files cannot be symlinked, as it seems to violate Java security policies - rm $out/lib/icedtea/jre/lib/ext/* - cp $jre/lib/icedtea/jre/lib/ext/* $out/lib/icedtea/jre/lib/ext/ - - rm -rf $out/lib/icedtea/jre/bin - ln -s $out/lib/icedtea/bin $out/lib/icedtea/jre/bin - - # Remove duplicate binaries. - for i in $(cd $out/lib/icedtea/bin && echo *); do - if [ "$i" = java ]; then continue; fi - if cmp -s $out/lib/icedtea/bin/$i $jre/lib/icedtea/jre/bin/$i; then - ln -sfn $jre/lib/icedtea/jre/bin/$i $out/lib/icedtea/bin/$i - fi - done - - # Generate certificates. - pushd $jre/lib/icedtea/jre/lib/security - rm cacerts - perl ${./generate-cacerts.pl} $jre/lib/icedtea/jre/bin/keytool ${cacert}/etc/ssl/certs/ca-bundle.crt - popd - - ln -s $out/lib/icedtea/bin $out/bin - ln -s $jre/lib/icedtea/jre/bin $jre/bin - ''; - - # FIXME: this is unnecessary once the multiple-outputs branch is merged. - preFixup = '' - prefix=$jre stripDirs "$stripDebugList" "''${stripDebugFlags:--S}" - patchELF $jre - propagatedNativeBuildInputs+=" $jre" - - # Propagate the setJavaClassPath setup hook from the JRE so that - # any package that depends on the JRE has $CLASSPATH set up - # properly. - mkdir -p $jre/nix-support - echo -n "${setJavaClassPath}" > $jre/nix-support/propagated-native-build-inputs - - # Set JAVA_HOME automatically. - mkdir -p $out/nix-support - cat < $out/nix-support/setup-hook - if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/icedtea; fi - EOF - ''; - - meta = { - description = "Free Java development kit based on OpenJDK 7.0 and the IcedTea project"; - longDescription = '' - Free Java environment based on OpenJDK 7.0 and the IcedTea project. - - Full Java runtime environment - - Needed for executing Java Webstart programs and the free Java web browser plugin. - ''; - homepage = http://icedtea.classpath.org; - maintainers = with stdenv.lib.maintainers; [ wizeman ]; - platforms = stdenv.lib.platforms.linux; - }; - - passthru = { - inherit architecture; - home = "${icedtea}/lib/icedtea"; - }; - }); -in icedtea diff --git a/pkgs/development/compilers/icedtea/fix-java-home.patch b/pkgs/development/compilers/icedtea/fix-java-home.patch deleted file mode 100644 index 5def344f171..00000000000 --- a/pkgs/development/compilers/icedtea/fix-java-home.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -ru -x '*~' openjdk-orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp ---- openjdk-orig/hotspot/src/os/linux/vm/os_linux.cpp 2013-09-06 20:22:03.000000000 +0200 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2014-01-24 22:44:08.223857012 +0100 -@@ -2358,12 +2358,10 @@ - CAST_FROM_FN_PTR(address, os::jvm_path), - dli_fname, sizeof(dli_fname), NULL); - assert(ret, "cannot locate libjvm"); - char *rp = NULL; - if (ret && dli_fname[0] != '\0') { -- rp = realpath(dli_fname, buf); -+ snprintf(buf, buflen, "%s", dli_fname); - } -- if (rp == NULL) -- return; - - if (Arguments::created_by_gamma_launcher()) { - // Support for the gamma launcher. Typical value for buf is diff --git a/pkgs/development/compilers/icedtea/generate-cacerts.pl b/pkgs/development/compilers/icedtea/generate-cacerts.pl deleted file mode 100644 index 3bdd42f7274..00000000000 --- a/pkgs/development/compilers/icedtea/generate-cacerts.pl +++ /dev/null @@ -1,366 +0,0 @@ -#!/usr/bin/perl - -# Copyright (C) 2007, 2008 Red Hat, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# generate-cacerts.pl generates a JKS keystore named 'cacerts' from -# OpenSSL's certificate bundle using OpenJDK's keytool. - -# First extract each of OpenSSL's bundled certificates into its own -# aliased filename. - -# Downloaded from http://cvs.fedoraproject.org/viewvc/rpms/ca-certificates/F-12/generate-cacerts.pl?revision=1.2 -# Check and prevention of duplicate aliases added by Vlastimil Babka - -$file = $ARGV[1]; -open(CERTS, $file); -@certs = ; -close(CERTS); - -$pem_file_count = 0; -$in_cert_block = 0; -$write_current_cert = 1; -foreach $cert (@certs) -{ - if ($cert =~ /Issuer: /) - { - $_ = $cert; - if ($cert =~ /personal-freemail/) - { - $cert_alias = "thawtepersonalfreemailca"; - } - elsif ($cert =~ /personal-basic/) - { - $cert_alias = "thawtepersonalbasicca"; - } - elsif ($cert =~ /personal-premium/) - { - $cert_alias = "thawtepersonalpremiumca"; - } - elsif ($cert =~ /server-certs/) - { - $cert_alias = "thawteserverca"; - } - elsif ($cert =~ /premium-server/) - { - $cert_alias = "thawtepremiumserverca"; - } - elsif ($cert =~ /Class 1 Public Primary Certification Authority$/) - { - $cert_alias = "verisignclass1ca"; - } - elsif ($cert =~ /Class 1 Public Primary Certification Authority - G2/) - { - $cert_alias = "verisignclass1g2ca"; - } - elsif ($cert =~ - /VeriSign Class 1 Public Primary Certification Authority - G3/) - { - $cert_alias = "verisignclass1g3ca"; - } - elsif ($cert =~ /Class 2 Public Primary Certification Authority$/) - { - $cert_alias = "verisignclass2ca"; - } - elsif ($cert =~ /Class 2 Public Primary Certification Authority - G2/) - { - $cert_alias = "verisignclass2g2ca"; - } - elsif ($cert =~ - /VeriSign Class 2 Public Primary Certification Authority - G3/) - { - $cert_alias = "verisignclass2g3ca"; - } - elsif ($cert =~ /Class 3 Public Primary Certification Authority$/) - { - $cert_alias = "verisignclass3ca"; - } - # Version 1 of Class 3 Public Primary Certification Authority - # - G2 is added. Version 3 is excluded. See below. - elsif ($cert =~ - /VeriSign Class 3 Public Primary Certification Authority - G3/) - { - $cert_alias = "verisignclass3g3ca"; - } - elsif ($cert =~ - /RSA Data Security.*Secure Server Certification Authority/) - { - $cert_alias = "verisignserverca"; - } - elsif ($cert =~ /GTE CyberTrust Global Root/) - { - $cert_alias = "gtecybertrustglobalca"; - } - elsif ($cert =~ /Baltimore CyberTrust Root/) - { - $cert_alias = "baltimorecybertrustca"; - } - elsif ($cert =~ /www.entrust.net\/Client_CA_Info\/CPS/) - { - $cert_alias = "entrustclientca"; - } - elsif ($cert =~ /www.entrust.net\/GCCA_CPS/) - { - $cert_alias = "entrustglobalclientca"; - } - elsif ($cert =~ /www.entrust.net\/CPS_2048/) - { - $cert_alias = "entrust2048ca"; - } - elsif ($cert =~ /www.entrust.net\/CPS /) - { - $cert_alias = "entrustsslca"; - } - elsif ($cert =~ /www.entrust.net\/SSL_CPS/) - { - $cert_alias = "entrustgsslca"; - } - elsif ($cert =~ /The Go Daddy Group/) - { - $cert_alias = "godaddyclass2ca"; - } - elsif ($cert =~ /Starfield Class 2 Certification Authority/) - { - $cert_alias = "starfieldclass2ca"; - } - elsif ($cert =~ /ValiCert Class 2 Policy Validation Authority/) - { - $cert_alias = "valicertclass2ca"; - } - elsif ($cert =~ /GeoTrust Global CA$/) - { - $cert_alias = "geotrustglobalca"; - } - elsif ($cert =~ /Equifax Secure Certificate Authority/) - { - $cert_alias = "equifaxsecureca"; - } - elsif ($cert =~ /Equifax Secure eBusiness CA-1/) - { - $cert_alias = "equifaxsecureebusinessca1"; - } - elsif ($cert =~ /Equifax Secure eBusiness CA-2/) - { - $cert_alias = "equifaxsecureebusinessca2"; - } - elsif ($cert =~ /Equifax Secure Global eBusiness CA-1/) - { - $cert_alias = "equifaxsecureglobalebusinessca1"; - } - elsif ($cert =~ /Sonera Class1 CA/) - { - $cert_alias = "soneraclass1ca"; - } - elsif ($cert =~ /Sonera Class2 CA/) - { - $cert_alias = "soneraclass2ca"; - } - elsif ($cert =~ /AAA Certificate Services/) - { - $cert_alias = "comodoaaaca"; - } - elsif ($cert =~ /AddTrust Class 1 CA Root/) - { - $cert_alias = "addtrustclass1ca"; - } - elsif ($cert =~ /AddTrust External CA Root/) - { - $cert_alias = "addtrustexternalca"; - } - elsif ($cert =~ /AddTrust Qualified CA Root/) - { - $cert_alias = "addtrustqualifiedca"; - } - elsif ($cert =~ /UTN-USERFirst-Hardware/) - { - $cert_alias = "utnuserfirsthardwareca"; - } - elsif ($cert =~ /UTN-USERFirst-Client Authentication and Email/) - { - $cert_alias = "utnuserfirstclientauthemailca"; - } - elsif ($cert =~ /UTN - DATACorp SGC/) - { - $cert_alias = "utndatacorpsgcca"; - } - elsif ($cert =~ /UTN-USERFirst-Object/) - { - $cert_alias = "utnuserfirstobjectca"; - } - elsif ($cert =~ /America Online Root Certification Authority 1/) - { - $cert_alias = "aolrootca1"; - } - elsif ($cert =~ /DigiCert Assured ID Root CA/) - { - $cert_alias = "digicertassuredidrootca"; - } - elsif ($cert =~ /DigiCert Global Root CA/) - { - $cert_alias = "digicertglobalrootca"; - } - elsif ($cert =~ /DigiCert High Assurance EV Root CA/) - { - $cert_alias = "digicerthighassuranceevrootca"; - } - elsif ($cert =~ /GlobalSign Root CA$/) - { - $cert_alias = "globalsignca"; - } - elsif ($cert =~ /GlobalSign Root CA - R2/) - { - $cert_alias = "globalsignr2ca"; - } - elsif ($cert =~ /Elektronik.*Kas.*2005/) - { - $cert_alias = "extra-elektronikkas2005"; - } - elsif ($cert =~ /Elektronik/) - { - $cert_alias = "extra-elektronik2005"; - } - # Mozilla does not provide these certificates: - # baltimorecodesigningca - # gtecybertrust5ca - # trustcenterclass2caii - # trustcenterclass4caii - # trustcenteruniversalcai - else - { - # Generate an alias using the OU and CN attributes of the - # Issuer field if both are present, otherwise use only the - # CN attribute. The Issuer field must have either the OU - # or the CN attribute. - $_ = $cert; - if ($cert =~ /OU=/) - { - s/Issuer:.*?OU=//; - # Remove other occurrences of OU=. - s/OU=.*CN=//; - # Remove CN= if there were not other occurrences of OU=. - s/CN=//; - s/\/emailAddress.*//; - s/Certificate Authority/ca/g; - s/Certification Authority/ca/g; - } - elsif ($cert =~ /CN=/) - { - s/Issuer:.*CN=//; - s/\/emailAddress.*//; - s/Certificate Authority/ca/g; - s/Certification Authority/ca/g; - } - s/\W//g; - tr/A-Z/a-z/; - $cert_alias = "extra-$_"; - - } - while (-e "$cert_alias.pem") - { - $cert_alias = "$cert_alias" . "_"; - } - } - # When it attempts to parse: - # - # Class 3 Public Primary Certification Authority - G2, Version 3 - # - # keytool says: - # - # #2: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false - # Unparseable AuthorityInfoAccess extension due to - # java.io.IOException: Invalid encoding of URI - # - # If we do not exclude this file - # openjdk/jdk/test/lib/security/cacerts/VerifyCACerts.java fails - # on this cert, printing: - # - # Couldn't verify: java.security.SignatureException: Signature - # does not match. - # - elsif ($cert =~ - /A6:0F:34:C8:62:6C:81:F6:8B:F7:7D:A9:F6:67:58:8A:90:3F:7D:36/) - { - $write_current_cert = 0; - $pem_file_count--; - } - elsif ($cert eq "-----BEGIN CERTIFICATE-----\n") - { - $_ = $cert; - s/\W//g; - tr/A-Z/a-z/; - $cert_alias = "extra-$_"; - while (-e "$cert_alias.pem") - { - $cert_alias = "$cert_alias" . "_"; - } - if ($in_cert_block != 0) - { - die "$file is malformed."; - } - $in_cert_block = 1; - if ($write_current_cert == 1) - { - $pem_file_count++; - if (-e "$cert_alias.pem") - { - print "$cert_alias"; - die "already exists" - } - open(PEM, ">$cert_alias.pem"); - print PEM $cert; - } - } - elsif ($cert eq "-----END CERTIFICATE-----\n") - { - $in_cert_block = 0; - if ($write_current_cert == 1) - { - print PEM $cert; - close(PEM); - } - $write_current_cert = 1 - } - else - { - if ($in_cert_block == 1 && $write_current_cert == 1) - { - print PEM $cert; - } - } -} - -# Check that the correct number of .pem files were produced. -@pem_files = <*.pem>; -if (@pem_files != $pem_file_count) -{ - print "$pem_file_count"; - die "Number of .pem files produced does not match". - " number of certs read from $file."; -} - -# Now store each cert in the 'cacerts' file using keytool. -$certs_written_count = 0; -foreach $pem_file (@pem_files) -{ - system "$ARGV[0] -noprompt -import". - " -alias `basename $pem_file .pem`". - " -keystore cacerts -storepass 'changeit' -file $pem_file"; - unlink($pem_file); - $certs_written_count++; -} - -# Check that the correct number of certs were added to the keystore. -if ($certs_written_count != $pem_file_count) -{ - die "Number of certs added to keystore does not match". - " number of certs read from $file."; -} diff --git a/pkgs/development/compilers/icedtea/sources.nix b/pkgs/development/compilers/icedtea/sources.nix deleted file mode 100644 index 80d96b4660a..00000000000 --- a/pkgs/development/compilers/icedtea/sources.nix +++ /dev/null @@ -1,48 +0,0 @@ -# This file is autogenerated from update.py in the same directory. -{ - icedtea7 = rec { - version = "2.5.5"; - - url = "http://icedtea.wildebeest.org/download/source/icedtea-${version}.tar.xz"; - sha256 = "1irxk2ndwsfk4c1zbzb5h3rpwv2bc9bhfjvz6p4dws5476vsxrq9"; - - common_url = "http://icedtea.classpath.org/download/drops/icedtea7/${version}"; - - bundles = { - openjdk = rec { - url = "${common_url}/openjdk.tar.bz2"; - sha256 = "5301baacfb6b4ee28a3469b8429a0017898615532f727bb50d94777682c5fd0d"; - }; - - corba = rec { - url = "${common_url}/corba.tar.bz2"; - sha256 = "f0576599b474f56e58068071242cedbbf2f181b58c9010b614c9096be764ac51"; - }; - - jaxp = rec { - url = "${common_url}/jaxp.tar.bz2"; - sha256 = "293218d595763f7e02a91ea88860e5314e42330cbc21b73dc5de32e7e26fd256"; - }; - - jaxws = rec { - url = "${common_url}/jaxws.tar.bz2"; - sha256 = "76d6d0670ede806b01d39e07c644e423a50984f1cf0ec560afa23f0fedf575be"; - }; - - jdk = rec { - url = "${common_url}/jdk.tar.bz2"; - sha256 = "c1bc0d25457ccf40fcaeb5311052f6d2fbab8ef316b0381995835827711da483"; - }; - - langtools = rec { - url = "${common_url}/langtools.tar.bz2"; - sha256 = "71b269ea930da36d751c6183816ef53a65c0587b7cf0195f87759b4c02c3b660"; - }; - - hotspot = rec { - url = "${common_url}/hotspot.tar.bz2"; - sha256 = "d724a9749f51a3c66351ad8a27bc4570640720eace33cd03f1a52e2e45731dfb"; - }; - }; - }; -} diff --git a/pkgs/development/compilers/icedtea/update.py b/pkgs/development/compilers/icedtea/update.py deleted file mode 100755 index c41cf3d38d2..00000000000 --- a/pkgs/development/compilers/icedtea/update.py +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess, urllib.request, re, os, tarfile -from html.parser import HTMLParser - -URL = 'http://icedtea.classpath.org/download/drops/icedtea{}/{}' -DOWNLOAD_URL = 'http://icedtea.wildebeest.org/download/source/' -DOWNLOAD_HTML = DOWNLOAD_URL + '?C=M;O=D' - -ICEDTEA_JDKS = [7] - -BUNDLES = ['openjdk', 'corba', 'jaxp', 'jaxws', 'jdk', 'langtools', 'hotspot'] - -SRC_PATH = './sources.nix' - -def get_output(cmd, env = None): - try: - proc = subprocess.Popen(cmd, env = env, stdout = subprocess.PIPE) - out = proc.communicate()[0] - except subprocess.CalledProcessError as e: - return None - - return out.decode('utf-8').strip() - -def nix_prefetch_url(url): - env = os.environ.copy() - env['PRINT_PATH'] = '1' - out = get_output(['nix-prefetch-url', url], env = env) - - return out.split('\n') - -def get_nix_attr(path, attr): - out = get_output(['nix-instantiate', '--eval-only', '-A', attr, path]) - - if len(out) < 2 or out[0] != '"' or out[-1] != '"': - raise Exception('Cannot find Nix attribute "{}" (parsing failure?)'.format(attr)) - - # Strip quotes - return out[1:-1] - -def get_jdk_attr(jdk, attr): - return get_nix_attr(SRC_PATH, 'icedtea{}.{}'.format(jdk, attr)) - -class Parser(HTMLParser): - def __init__(self, link_regex): - HTMLParser.__init__(self) - - self.regex = link_regex - self.href = None - self.version = None - - def handle_starttag(self, tag, attrs): - if self.href != None or tag != 'a': - return - - href = None - for attr in attrs: - if attr[0] == 'href': - href = attr[1] - if href == None: - return - - m = re.match(self.regex, href) - if m != None: - self.href = href - self.version = m.group(1) - -def get_latest_version_url(major): - f = urllib.request.urlopen(DOWNLOAD_HTML) - html = f.read().decode('utf-8') - f.close() - - parser = Parser(r'^icedtea\d?-({}\.\d[\d.]*)\.tar\.xz$'.format(major)) - parser.feed(html) - parser.close() - - if parser.href == None: - raise Exception('Error: could not find download url for major version "{}"'.format(major)) - - return parser.version, DOWNLOAD_URL + parser.href - -def get_old_bundle_attrs(jdk, bundle): - attrs = {} - for attr in ('url', 'sha256'): - attrs[attr] = get_jdk_attr(jdk, 'bundles.{}.{}'.format(bundle, attr)) - - return attrs - -def get_old_attrs(jdk): - attrs = {} - - for attr in ('version', 'url', 'sha256'): - attrs[attr] = get_jdk_attr(jdk, attr) - - attrs['bundles'] = {} - - for bundle in BUNDLES: - attrs['bundles'][bundle] = get_old_bundle_attrs(jdk, bundle) - - return attrs - -def get_member_filename(tarball, name): - for fname in tarball.getnames(): - m = re.match(r'^icedtea\d?-\d[\d.]*/{}$'.format(name), fname) - if m != None: - return m.group(0) - - return None - -def get_member_file(tarball, name): - path = get_member_filename(tarball, name) - if path == None: - raise Exception('Could not find "{}" inside tarball'.format(name)) - - f = tarball.extractfile(path) - data = f.read().decode('utf-8') - f.close() - - return data - -def get_new_bundle_attr(makefile, bundle, attr): - var = '{}_{}'.format(bundle.upper(), attr.upper()) - regex = r'^{} = (.*?)$'.format(var) - - m = re.search(regex, makefile, re.MULTILINE) - if m == None: - raise Exception('Could not find variable "{}" in Makefile.am'.format(var)) - - return m.group(1) - -def get_new_bundle_attrs(jdk, version, path): - url = URL.format(jdk, version) - - attrs = {} - - print('Opening file: "{}"'.format(path)) - tar = tarfile.open(name = path, mode = 'r:xz') - - makefile = get_member_file(tar, 'Makefile.am') - hotspot_map = get_member_file(tar, 'hotspot.map.in') - - hotspot_map = hotspot_map.replace('@ICEDTEA_RELEASE@', version) - - for bundle in BUNDLES: - battrs = {} - - battrs['url'] = '{}/{}.tar.bz2'.format(url, bundle) - if bundle == 'hotspot': - m = re.search(r'^default (.*?) (.*?) (.*?) (.*?)$', hotspot_map, re.MULTILINE) - if m == None: - raise Exception('Could not find info for hotspot bundle in hotspot.map.in') - - battrs['sha256'] = m.group(4) - else: - battrs['sha256'] = get_new_bundle_attr(makefile, bundle, 'sha256sum') - - attrs[bundle] = battrs - - tar.close() - - return attrs - -def get_new_attrs(jdk): - print('Getting old attributes for JDK {}...'.format(jdk)) - old_attrs = get_old_attrs(jdk) - attrs = {} - - # The major version corresponds to a specific JDK (1 = OpenJDK6, 2 = OpenJDK7, 3 = OpenJDK8) - major = jdk - 5 - - print('Getting latest version for JDK {}...'.format(jdk)) - version, url = get_latest_version_url(major) - - print() - print('Old version: {}'.format(old_attrs['version'])) - print('New version: {}'.format(version)) - print() - - if version == old_attrs['version']: - print('No update available, skipping...') - print() - return old_attrs - - print('Update available, generating new attributes for JDK {}...'.format(jdk)) - - attrs['version'] = version - attrs['url'] = url - - print('Downloading tarball from url "{}"...'.format(url)) - print() - attrs['sha256'], path = nix_prefetch_url(url) - print() - - print('Inspecting tarball for bundle information...') - - attrs['bundles'] = get_new_bundle_attrs(jdk, attrs['version'], path) - - print('Done!') - - return attrs - -def generate_jdk(jdk): - attrs = get_new_attrs(jdk) - - version = attrs['version'] - src_url = attrs['url'].replace(version, '${version}') - - common_url = URL.format(jdk, version) - src_common_url = URL.format(jdk, '${version}') - - src = ' icedtea{} = rec {{\n'.format(jdk) - src += ' version = "{}";\n'.format(version) - src += '\n' - src += ' url = "{}";\n'.format(src_url) - src += ' sha256 = "{}";\n'.format(attrs['sha256']) - src += '\n' - src += ' common_url = "{}";\n'.format(src_common_url) - src += '\n' - src += ' bundles = {\n' - - for bundle in BUNDLES: - battrs = attrs['bundles'][bundle] - - b_url = battrs['url'] - b_url = b_url.replace(common_url, '${common_url}') - - src += ' {} = rec {{\n'.format(bundle) - src += ' url = "{}";\n'.format(b_url) - src += ' sha256 = "{}";\n'.format(battrs['sha256']) - src += ' };\n' - - if bundle != BUNDLES[-1]: - src += '\n' - - src += ' };\n' - src += ' };\n' - - return src - -def generate_sources(jdks): - src = '# This file is autogenerated from update.py in the same directory.\n' - src += '{\n' - - for jdk in jdks: - print() - print('Generating sources for JDK {}...'.format(jdk)) - src += generate_jdk(jdk) - - src += '}\n' - return src - -if __name__ == '__main__': - print('Generating {}...'.format(SRC_PATH)) - src = generate_sources(ICEDTEA_JDKS) - - f = open(SRC_PATH, 'w', encoding = 'utf-8') - f.write(src) - f.close() - - print() - print('Update complete!') diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 51dc6609660..60c941a7e27 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3905,14 +3905,6 @@ let gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix { }; - icedtea7 = callPackage ../development/compilers/icedtea rec { - bootjdk = openjdk-bootstrap; - giflib = giflib_5_0; - }; - - # There will not likely be an icedtea8 so users should move to openjdk - icedtea = icedtea7; - icedtea7_web = callPackage ../development/compilers/icedtea-web { jdk = jdk7; xulrunner = firefox; @@ -3949,7 +3941,7 @@ let openjdk = if stdenv.isDarwin then openjdk-darwin else openjdk8; - jdk7 = icedtea7; + jdk7 = openjdk7; jdk8 = openjdk8;