Update Java 7 to Java 8 is urgently needed for use on some toollabs projects
- Mentioned In
- T162828: Upgrade jenkins server and jenkins slaves to java 8
T124903: Figure out a way to support java 1.8 on tool labs (For WLX Jury)
T121279: Figure out a way to keep MerlBot running when the HTTP POST loophole is closed
T121146: Provide a tools-staging-bastion to allow users to test newly built packages
- Mentioned Here
- T114645: Define policy for tools-local packages
T105794: Insecure POST traffic
Two additional reasons:
First one is caused by wikimedia plan to change to ssl only, please read my comment at T105794#1574563. So I need Java 1.8 to keep my bot working.
The second one is that it causes much more work for me to always remember which java features are not available on labs. No one really writes new scripts in java 7 today. I am a professional java programmer and we don't use java 7 since two years. At the moment i am already dealing with java 9. To learn new language features i am writing many example programs. In the past i always wrote bots scripts which were asked by wikipedians so that as side affect wikipedia benefit from the time i investigated in learning the new language. Downgrading from java 9 to java 7 is nearly writing in a new language.
For me it would be ok if only few sge executions host support this and i can limit my scripts to these by a sge resource request.
Once merged, this will install
openjdk version "1.8.0_40-internal" OpenJDK Runtime Environment (build 1.8.0_40-internal-b09) OpenJDK 64-Bit Server VM (build 25.40-b13, mixed mode)
on all trusty exec hosts. We don't have packages for precise and jessie available.
Ok, so it's slightly more complicated. There is a trusty package in apt.wm.o, but it's outdated and currently no-one is responsible for it. I discussed the situation with @MoritzMuehlenhoff, and tried building the package for Trusty with these steps:
dget -ux http://apt.wikimedia.org/wikimedia/pool/backports/o/openjdk-8/openjdk-8_8u66-b17-1~bpo8%2b1.dsc cd openjdk-8-8u66-b17 debian/rules debian/control distrel=trusty DIST=trusty pdebuild
which gave me
root@tools-packages:/data/project/dpkg/src/openjdk# ls /var/cache/pbuilder/result/trusty-amd64/openjdk-8* /var/cache/pbuilder/result/trusty-amd64/openjdk-8_8u66-b17-1~bpo8+1_amd64.changes /var/cache/pbuilder/result/trusty-amd64/openjdk-8_8u66-b17-1~bpo8+1.diff.gz /var/cache/pbuilder/result/trusty-amd64/openjdk-8_8u66-b17-1~bpo8+1.dsc /var/cache/pbuilder/result/trusty-amd64/openjdk-8_8u66-b17.orig.tar.gz /var/cache/pbuilder/result/trusty-amd64/openjdk-8-dbg_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-demo_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-doc_8u66-b17-1~bpo8+1_all.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-jdk_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-jre_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-jre-headless_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-jre-jamvm_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-jre-zero_8u66-b17-1~bpo8+1_amd64.deb /var/cache/pbuilder/result/trusty-amd64/openjdk-8-source_8u66-b17-1~bpo8+1_all.deb
which took about 3.5 hours:
I: Current time: Thu Dec 10 13:22:28 UTC 2015 I: Current time: Thu Dec 10 16:49:33 UTC 2015
Unfortunately, there seems to be a whole bunch of tests that don't pass :/. See the build log here: https://tools.wmflabs.org/dpkg/openjdk-8.build.gz (520KB).
Ah, that's another gotcha I forgot to mention about the openjdk packages: Not all tests of the test suite complete :-/
What I do for the updates in Debian is to compare the test suite results of the earlier build, that's something we could do here as well.
I compared the log file with the result from https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa/+build/8156693, as well as the i386 build from https://buildd.debian.org/status/logs.php?pkg=openjdk-8&arch=amd64, in this way:
grep openjdk-8_8u66-b17-1~bpo8+1_amd64.build -e "^\(Passed\|Error\|FAILED\)" | sort -k 2 | uniq > newlog curl "https://launchpadlibrarian.net/221932084/buildlog_ubuntu-wily-amd64.openjdk-8_8u66-b17-1_BUILDING.txt.gz" | gunzip -c - | grep -e "^\(Passed\|Error\|FAILED\)" | sort -k 2 | uniq > oldlog
which shows 500-550 tests failing:
$ diff -u oldlog newlog | grep '^+' | wc -l 533
which is *a lot*, even though typically ~90 tests are failing already.
I spent a bit more time on this, but I don't see this working: the packages need more work (dependencies are wrong) and I have no way to easily confirm why the test cases are failing (OpenJDK uses a test framework that I don't understand and that I'm not willing to put enough time in to understand).
- until there is an official (ubuntu-supported) backport of openjdk-8, or,
- we can build the backport ourselves based on an official version with minimal effort (i.e. 'run these four commands and a .deb runs out'),
there unfortunately will be no openjdk-8 on precise or trusty. @Merl, I'm not entirely sure what options we can offer to help you run your bot, but I will make a task for that shortly.
You can now use https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa
OpenJDK 8 for for trusty and precise were published there on 2015-12-16
I just installed OpenJDK 8 from there with
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk