Implicit assumptions in Images.gmk: find errors
David Holmes
david.holmes at oracle.com
Sun Nov 25 14:36:30 PST 2012
On 26/11/2012 4:05 AM, Kelly O'Hair wrote:
> That sounds right.
>
> The demos really need to be built from the built jdk image.
> So in my opinion, the demos should follow the jdk image creation.
The actual building of the demos does.
The problem is that the logic that sets up the lists of files for
various targets is always executed, regardless of which target has been
requested.
David
-----
> I think in the old build it was a bit mixed up as to when the demos were built.
>
> -kto
>
> On Nov 23, 2012, at 12:20 AM, Erik Joelsson wrote:
>
>> We could condition these finds on the existence of these directories. I think that would be the cleanest implementation as it would logically act the same as now, just with less noise and execs.
>>
>> /Erik
>>
>> On 2012-11-23 01:19, David Holmes wrote:
>>> Some of the constructs in Images.gmk implicitly assume that you are always building a JDK image and a JRE image. Ie.:
>>>
>>> JDK_DEMO_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/demo/%,$(JDK_IMAGE_DIR)/demo/%,\
>>> $(shell $(FIND) $(JDK_OUTPUTDIR)/demo ! \( -name "_the*" -o -name "javac_state" \) ))
>>>
>>> and:
>>>
>>> # /sample dir
>>> $(foreach f,$(shell $(FIND) $(JDK_OUTPUTDIR)/sample -type f),\
>>> $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_SAMPLE_TARGETS)))
>>>
>>>
>>> will both attempt to issue "find" in a directory that may not exist (jdk/demo and jdk/sample respectively) if you are not building a jdk image.
>>>
>>> Fortunately (or perhaps erroneously?) these find failures do not cause make to fail, they just generate noisy output (which of course is how I noticed it).
>>>
>>> Not sure what the solution is or if it is just something we have to live with. There is an awful lot of setup needed to build images, but some of it is dependent on what image has been requested.
>>>
>>> Cheers,
>>> David
>
More information about the build-infra-dev
mailing list