RFR: JDK-8076060 Improve make bootstrap process

Erik Joelsson erik.joelsson at oracle.com
Thu Mar 26 15:15:17 UTC 2015


Thanks, looks good to me now.

/Erik

On 2015-03-26 16:11, Magnus Ihse Bursie wrote:
> On 2015-03-26 15:21, Erik Joelsson wrote:
>> Hello,
>>
>> This looks like a nice cleanup.
>
> Thanks! :-)
>
> New webrev that hopefully addresses all issues below is here:
>
> http://cr.openjdk.java.net/~ihse/JDK-8076060-improve-make-bootstrap/webrev.02 
>
>
> Comments inline.
>
>>
>> Init.gmk
>> 40: When would topdir not be set?
> Answered by a comment now:
> # If included from the top-level Makefile then topdir is set, but not 
> when
> # recursively calling ourself with a spec.
>
>>
>> 56, 59, 188, 215: Please break lines if possible
> Done.
>>
>> 63: What kind of error messages?
>
> If we have no configuration at all, we warn the user that this is the 
> case. For this to work, though, we must not *first* get caught by make 
> claiming that there is no such target. That is, withouth this code, we 
> would get "No such target" as response to e.g. "make all", instead of 
> the message "No configuration found, please run configure". However, 
> I've changed this now (to your off-list suggestion, thanks!) to allow 
> whatever the user entered as a target, instead of an arbitrary list. I 
> also improved the comment:
>
>   # Without at least a single valid configuration, we cannot extract 
> any real
>   # targets. To provide a helpful error message about the missing 
> configuration
>   # later on, accept whatever targets the user has provided for now.
>   ALL_MAIN_TARGETS := $(if $(MAKECMDGOALS), $(MAKECMDGOALS), default)
>
>> 192: Why does MAKEOVERRIDES need to be reset? Is it automatically 
>> propagated to submake and we prefer to use USER_MAKE_VARS instead?
> MAKEOVERRIDES is a special GNU Make variable which contains all the 
> "FOO=bar" variables set on the command line. Unless cleared, it is 
> automatically passed down to all further Make calls. In this case, we 
> don't want to do that since we have a lot of Init.gmk-internal 
> variables. All relevant user-passed variables are in USER_MAKE_VARS. I 
> updated the comment to:
>
>   # MAKEOVERRIDES is automatically set and propagated by Make to 
> sub-Make calls.
>   # We need to clear it of the init-specific variables. The 
> user-specified
>   # variables are explicitely propagated using $(USER_MAKE_VARS).
>
>
>> 194: Should we have "$(INIT_TARGETS): main-init"
> No, since we don't want to rotate logs before running reconfigure.
>
> However, I changed the main dependencies thus:
>   main: $(INIT_TARGETS) main-init
> so reconfigure will be run ahead of rotating the logs (this works due 
> to .NOTPARALLEL:). Seems slightly more logical.
>
>>
>> InitSupport.gmk
>> 57: I agree this should be moved somewhere else. We need to split 
>> MakeBase into one file with very basic functions like this. Can be 
>> done later I suppose.
> Yes, we definitely need to split MakeBase, and yes, it definitely is a 
> separate issue. :-)
>
>>
>> 291: Please break line
>>
>> spec.gmk.in
>> 62: Please break line
> Done and done. :)
>
> /Magnus
>




More information about the build-dev mailing list