RFR: JDK-8069064 Various improvements and fixes in build system
erik.joelsson at oracle.com
Fri Jan 16 08:31:10 UTC 2015
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.
> 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
>> * 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
More information about the build-dev