FYI, this would also apply to Qt, as that build accepts the license programmatically as well.
Sent with Good (www.good.com) -----Original Message----- From: Kenneth Hoste [[email protected]<mailto:[email protected]>] Sent: Monday, March 16, 2015 11:10 AM Pacific Standard Time To: [email protected] Subject: Re: [easybuild] Java appears to require manual intervention, and a proposed strategy to fix. On 16/03/15 17:35, Malcolm Cook wrote: On Mon, Mar 16, 2015 at 2:19 AM, Stijn De Weirdt <[email protected]<mailto:[email protected]>> wrote: hi malcolm, can you first clarify what this implies wrt accepting the license? (what is the user agreeing to by setting this cookie?). My understanding is that you in effect accepting the "Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX": http://www.oracle.com/technetwork/java/javase/terms/license/index.html The question is whether this would be clear to someone install Java using EasyBuild... Is it OK to just accept this for them, programmatically, by default? wrt the implementation, i'd suggest to start extending the java easyblock with this functionality. if requires for other packages too, we can always promote the code to some generic block or framework (but i'm afraid oracle will change this method every other month or so...) If you are suggesting that I change just the java.eb to shell out and download the tarball (if not already present) to "the right place", well, then, in fact, I have already done exactly that for myself. But I see that as a hack/temporary workaround - not something in tune with the 'EasyBuild way' (such as I am trying to pick up on). Based on my quick review of the source code, the 'EasyBuild way' to implement this is as I suggest, requiring changes in a few different coordinated places. I'm not sure I like/approve of this 'way', and thought someone might advise that there is a better way to isolate the needed changes just to the easyconfig file, but I certainly don't see it. Or - what am I missing? Stijn is suggesting to tackle this in the easy*block* (https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/j/java.py), not the easyconfig file (since that would require including it in all Java easyconfigs, which results in lots of duplication). Question remains whether it's OK to do this by default, though. We can certainly support it, and require that people add something like 'auto_accept_license = True' in their Java easyconfig files... regards, Kenneth stijn On 03/16/2015 05:36 AM, Malcolm Cook wrote: Hi, eb Java-1.8.0_31.eb Fails Reading the easyconfig source code, I see it advises “# download the tar.gz directly from http://www.oracle.com/technetwork/java/javase/downloads/index.html“ So I download it (following http://stackoverflow.com/questions/10268583/how-to-automate-download-and-installation-of-java-jdk-on-linux) as: wget -P ${PREFIX}/source/j/Java/ --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-x64.tar.gz and the eb now succeeds. Yay. But, surely this should not persist. Something must be done! Perhaps by me!?! Presumably the challenge is the check box which is opaque to the easybuild framework, and what is needed is to get such a header declared in the Java*.eb and contrive for it to be passed down. Something like: - change filetools.py download_file(*) to - accept a new parameter, namely, headers={} - change the call to urlopen as: url_fd = urllib2.urlopen(urllib2.Request(url, headers=headers), timeout=timeout) - give EasyBlock a new instance variable, say, source_url_headers - modify the Java*.eb to include: source_url_headers=[{"Cookie: oraclelicense" : "accept-securebackup-cookie"}] I think this should work and am willing to “cut my teeth” on this project with this small set of changes if y’all agree it is a good approach to this problem. Do you? Thanks ~ Malcolm Cook

