OPENJDK env var not playing well with new build
Erik Joelsson
erik.joelsson at oracle.com
Wed Jan 23 04:12:11 PST 2013
On 2013-01-23 12:54, David Holmes wrote:
> On 23/01/2013 8:58 PM, Erik Joelsson wrote:
>> On 2013-01-23 11:30, Weijun Wang wrote:
>>> I thought building an OpenJDK or Oracle JDK can be fully controlled by
>>> using the --enable-openjdk-only configure option, but it seems the
>>> OPENJDK env variable still plays a part. If the variable is set to
>>> true and --enable-openjdk-only is not provided, the new build process
>>> gets confused and fails.
>
> Can you point us at a log? I'd like to see exactly where the confusion
> arises.
>
>>> I understand this is my fault and I should not have that variable
>>> around. However, it will be nice if the build can deny all external
>>> variables like it did with all those ALT_*** variables. Are there any
>>> other variables I should be aware of?
>>>
>> This is bad, I agree. We initially kept the same variable for
>> controlling if the build was OpenJDK only or not as the old build,
>> because it made it easier during the conversion. The problem with this
>> variable is that it is either set or not, which makes it harder to
>> override in makefiles. The proper solution would be to replace this in
>> the new build with something like OPENJDK_ONLY=true/false and completely
>> ignore the old OPENJDK.
>
> Not sure why the set/unset situation is a problem. If OPENJDK is set
> then it must be set to true else the sanity checks fail.
>
> But we should locate anywhere that the make files still examine the
> environment for such variables - not that I thought there were such
> places. The environment variables should only be used to influence how
> configure runs, and the variables it sets should then be used by the
> make files.
>
The problem I can imagine is this: Configure creates a configuration
without --enable-openjdk-only, which results in a spec.gmk with no
OPENJDK=true in it. OPENJDK=true is then set in the environment, which
will trigger all ifdef OPENJDK in the makefiles. This would end up being
a hybrid between fully open and a closed build since configure has
already done things differently at configure time, but the makefiles
will try to behave as if it was an open build. I don't know where this
fails, but I'm not surprised that it does, and even if it didn't fail,
the resulting bits would be bad. If instead spec.gmk would have a line
like OPENJDK_ONLY=false, this would always override any environment
variable.
/Erik
More information about the build-infra-dev
mailing list