RFR: JDK-8069064 Various improvements and fixes in build system

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Fri Jan 16 13:41:56 UTC 2015

On 2015-01-16 10:34, Volker Simonis wrote:

> Aadvanced bash completion is a cool feature I wasn't aware of until
> now - thanks for mentioning it.
Also, it could be worth mentioning that bash completion works with 
configure as well, but with a twist. The "bash configure" call pattern 
does not work. :-(

So either you need to chmod your configure to executable (but this means 
you must make sure not to check in that change), or you can add a helper 
binary like the one below in your path (that's my choice).

Then you can do "configure --with-<TAB>" and get help with options.

Helper script:
ihse:~/bin$ cat configure
if [ $(pwd) = $(cd $(dirname $0); pwd) ] ; then
   echo >&2 "Abort: Trying to call configure helper recursively"
   exit 1

bash $PWD/configure "$@"


> Unfortunately it doesn't seem to work out of the box on my Ubuntu
> 12.04. I only get:
> $ make [TAB][TAB]
> default   Error     help      Makefile
> Do you use a special completion script?
> Thanks you and best regards,
> Volker
>> /Erik
>> On 2015-01-15 18:33, Volker Simonis wrote:
>>> Hi Magnus,
>>> I've only had a quick look at your changes but I have a question.
>>> When looking at the "make help" I think the relationship between
>>> "repo", "target" and "module" is a little unclear.
>>> As far as I understand a "target" is an artefact which can be named
>>> and build by "make".
>>> A "repo" is a collection of sources which is defined by our version
>>> control system.
>>> A "module" is a logical part of the resulting build output.
>>> All these three are orthogonal (i.e. a "target" can build many
>>> "modules" or just a part of a module, a "repo" can contain several
>>> modules or just the part of a module, etc.)
>>> I think that the division of the OpenJDK source into different repos
>>> is unfortunate and somehow arbitrary. So maybe we should try to avoid
>>> this term when speaking about make targets and modules.
>>> I would also wish there was a dynamically created list of buildable
>>> modules so we could do something like "make modules" to get this list.
>>> I don't know if this is easily possible, it's just an idea.
>>> Also the line "make [default]         # Compile all modules in
>>> langtools, hotspot, jdk, jaxws,.." seems a little confusing to me. It
>>> speaks about modules but lists the current repos. So what are the
>>> available moduls? What does "[default]" stands for?
>>> I like the two "clean" targets:
>>> make clean-<module>
>>> make clean-<module>-<phase>
>>> they are clear and concise (besides the fact that there's no module list).
>>> I'd wish to have the same syntax for the build targets (instead of
>>> make [default]). Something like:
>>> make <module>
>>> make <module>-<phase>
>>> make jdk-image                      Creates a jre image containing
>>> these modules (...) and docs
>>> make jre-image                       Creates a jre image containing
>>> these modules (...) and docs
>>> make images                          Creates both, the jre and the jdk
>>> image
>>> I'm aware that this mail degenerated more into a wish-list than a
>>> review :) Maybe you find it useful nevertheless.
>>> Regards,
>>> Volker
>>> On Thu, Jan 15, 2015 at 4:23 PM, Magnus Ihse Bursie
>>> <magnus.ihse.bursie at oracle.com> wrote:
>>>>    This fix is the result of preparatory work in the build-infra project.
>>>> It
>>>> includes:
>>>> * Remove duplicate detection of comm on Windows
>>>> * compare.sh enhancements and bug fixes
>>>> * Do not fail in SetupFoo macros on empty arguments
>>>> * Minor JavaCompilation enhancements
>>>> * Makefile warns for unknown control variables
>>>> * Improved "make help"
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8069064
>>>> WebRev:
>>>> http://cr.openjdk.java.net/~ihse/JDK-8069064-fixes-from-build-infra/webrev.01
>>>> /Magnus

More information about the build-dev mailing list