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.
/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
<[email protected]> 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