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

Erik Joelsson erik.joelsson at oracle.com
Fri Jan 16 08:31:10 UTC 2015

Hello Volker,

I think I'm mostly to blame for the current state of the make help text 
and I certainly value feedback on it. I agree that talk of repos in the 
help text is just confusing at this point. The pre modules build was 
organized around repos and I got stuck in that thinking when I tried to 
describe the new targets.

Listing available modules is a good idea and implementing it is pretty 
easy. The make targets themselves are dynamically generated from the 
dynamic list of modules. Perhaps a new line of targets named 
list-modules, list-phases etc, or perhaps build on the existing help 
target, help-modules, help-phases, help-clean etc, which would give more 
detailed lists of available targets for those areas?

What you can do right now, if you use bash, is activating advanced bash 
completion. Then you can type "make " and tab your way through the 
targets, which is what I usually do. A warning though that without 
typing a few letters, you get several hundreds targets listed.


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