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

Volker Simonis volker.simonis at gmail.com
Fri Jan 16 09:34:08 UTC 2015

On Fri, Jan 16, 2015 at 9:31 AM, Erik Joelsson <erik.joelsson at oracle.com> wrote:
> 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?

Sounds good!

> 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.

Aadvanced bash completion is a cool feature I wasn't aware of until
now - thanks for mentioning it.

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,

> /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