RFR: JDK-8195689 Remove generated-configure.sh and instead use autoconf

Erik Joelsson erik.joelsson at oracle.com
Thu Jan 18 18:37:33 UTC 2018


Hello Magnus,

Nice to see this finally happening!

In building.md, when getting autoconf for Cygwin, I believe you also 
need the autoconf wrapper scripts package. Perhaps it's also worth 
mentioning that you can download the autoconf src and build/install from 
there?

In jib-profiles.js, you need to use build_platform instead of 
target_platform when creating the module name for the dependency. I 
would also like if you added the dependency on the other main profiles 
as well. At least linux-x86, linux-arm64 and windows-x86 are still 
possible to build and should work fine with this. For solaris-x64 you 
would need to generate the package for it to work.

The TMPDIR logic looks weird. Are you unconditionally setting it to 
/cygdrive/t/...? That's a valid dir in our build farm, but not on my 
local windows box:

mkdir: cannot create directory ‘/cygdrive/t’: No such file or directory
autom4te: cannot create 
/cygdrive/t/workspace/.build/tmpdir/am4t7009.7040: No such file or directory
  at 
/cygdrive/c/cygwin64/var/tmp/jib-erik/install/jpg/infra/builddeps/autoconf-windows_x64/2.69+1.0.1/autoconf-windows_x64-2.69+1.0.1.tar.gz/usr/bin/autom4te 
line 954.
Error: Failed to generate runnable configure script

/Erik


On 2018-01-18 05:28, Magnus Ihse Bursie wrote:
> Currently, we require all developers who modify the configure script 
> to run autoconf locally, to update the generated-configure.sh script, 
> which is then checked in. This is the only instance of checked in 
> "compiled" code in OpenJDK, and this has brought along several problems:
>
> * Only a specific version of autoconf, 2.69, can be used, to avoid 
> large code changes in the generated file. Unfortunately, Ubuntu ships 
> a version of autoconf that claims to be 2.69 but is actually heavily 
> patched. This requires all Ubuntu users to compiler their own autoconf 
> from source.
>
> * The Oracle JDK closed sources has a closed version that needs to be 
> updated. In practice, this has meant that all non-Oracle developers, 
> need an Oracle sponsor for patches modifying the configure script.
>
> * If the configure script is not properly updated, the build will 
> fail. The same happens on the Oracle side if the closed version is not 
> in sync with the open version. It is easy to miss re-generating the 
> script after the last fix of a typo in the comments in an .m4 file...
>
> * Merging between two changes containing configure modifications is 
> almost impossible. In practice, the entire generated-configure.sh 
> needs to be thrown away and regenerated.
>
> The entire benefit of having the file in the repo is to save 
> first-time developers the hassle of installing autoconf. On most 
> platforms, this is a no-brainer (like "apt install autoconf"), and the 
> requirement is similar to other open source projects using autoconf 
> and "./configure". It's just not worth it.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8195689
> WebRev: 
> http://cr.openjdk.java.net/~ihse/JDK-8195689-remove-generated-configure/webrev.01
>
> /Magnus




More information about the build-dev mailing list