JDK-8025705
David Holmes
david.holmes at oracle.com
Wed Apr 23 04:10:42 UTC 2014
Hi Keith,
Okay ... so you don't set OPENJDK and thus from the make logic
perspective you are implicitly ORACLE_JDK. So first question: why don't
you set OPENJDK and then add blocks guarded by MY_JDK (or whatever) for
your custom stuff?
Second, the way to get a disjunction is to use the text functions eg
(untested but you should get the gist):
// OR
ifeq (true, findstring( $(OPENJDK) $(MYJDK), true)
// not-OR
ifneq (true, findstring( $(OPENJDK) $(MYJDK), true)
It's not as trivial as || etc but not too horrendously ugly :)
Does this help?
David
On 22/04/2014 11:10 PM, Keith McGuigan wrote:
> Hi David,
>
> Most of the problem resides in jdk/make, in the following files:
> make/CompileDemos.gmk
> make/CompileJavaClasses.gmk
> make/CopyFiles.gmk
> make/CopyIntoClasses.gmk
> make/CreateSecurityJars.gmk
> make/gensrc/GensrcIcons.gmk
> make/Images.gmk
> make/lib/Awt2dLibraries.gmk
>
> Biggest offender is problem CopyFiles.gmk (but CreateSecurityJars.gmk
> has a bit too). Basically in each situation where there's a "ifndef
> OPENJDK", it encloses a block of code that access something in
> src/closed or make/closed.
>
> I did initially try to set a new variable in our build in an attempt to
> replace these areas with something like:
> ifndef OPENJDK && ifndef PRIVATEJDK
>
> ... but there's apparently no convenient way of doing that in makefiles
> (conjunctions and disjunctions at the preprocessing level aren't
> available -- and the workarounds are rather goofy). Duplicating the
> OPENJDK only code quickly became unreasonable too -- a few of the code
> blocks are one-liners, but there's a bunch that are much more involved
> clauses.
>
>
>
> On Tue, Apr 22, 2014 at 8:23 AM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> Hi Keith,
>
> Sorry I have very limited cycles right now, and just had a 4 day
> Easter break with anther long weekend ahead :)
>
> You are right that the src/closed -> CUSTOM_SRC_DIR is somewhat
> tangential to your issue.
>
> The existence checks I suggested would be a check for whatever
> file/directory is enough to indicate the "feature" is present.
>
> Most uses of OPENJDK are really used to indicate !ORACLE_JDK, so
> introducing a third variation doesn't really fit.
>
> Can you give a concrete example of something that highlights this
> problem for you and how your proposal addresses it? I may get a
> better sense of things with specifics rather than trying to
> generalize - because I don't see a general solution without a lot of
> refactoring.
>
> Thanks,
> David
>
>
> On 22/04/2014 2:42 PM, Keith McGuigan wrote:
>
> Hi Mark, et al.,
>
> The sad reality of the situation is that there is indeed
> Oracle-specific
> code in the OpenJDK makefiles, and this code interferes with our
> customization of the JDK. Adding temporary signposts to allow
> us (and
> others) to avoid this code will not make things worse. It
> doesn't have
> to be a distribution name -- we call it whatever you like:
> TO_BE_REMOVED, KEITH_IS_A_PITA, whatever -- just something to
> latch onto
> to deactivate that code when it is not needed. This would provide
> immediate relief to customizing distributors and give Oracle
> engineers
> time to phase that code into closed makefiles (at which time the
> signposts can be removed completely).
>
> Taking all this code out wholesale instead would be great, and
> this is
> something I am totally willing to tackle and put the effort in
> on if I
> was in a position to do so. Unfortunately, since this is not fully
> open-source, I can't do the refactoring needed to move this code
> into
> the closed directories. And I though I could easily strip the
> code from
> OpenJDK, this would totally muck with Oracle distribution so any
> patch I
> would submit would surely be immediately rejected.
>
> Considering that the code is question has been in OpenJDK for
> about 8
> years now, I think it's safe to assume that it's not a high priority
> item for Oracle engineers to get this fixed. Which is totally
> fine, IMO
> -- it's very much a tenant of open source development that he
> who has
> the itch ought to be the one to scratch it, and different
> entities are
> expected to have different sets of priorities. No doubt I'm
> probably
> the first one to complain about this :)
>
> Unfortunately, I'm also in the unfortunate position of having an
> itch
> (and willing fingernails), but an inability to scratch it.
>
> So, where do we go from here and how can I help in this effort? I
> really do want to help, as this is an immediate problem for me and I
> can't afford to wait years for it to get fixed. I still think that
> signposts are a very reasonable compromise given that:
> (1) It is something that can be done independently and doesn't
> require
> Oracle engineering resources (other than reviews and shepherding)
> (2) It does not interfere with efforts to move closed code out of
> OpenJDK makefiles
> (3) it can be done quickly
> (4) It does not avoid the Makefile-checking for existence of
> required
> files/directories (which reduces build-brittleness)
>
> Mark/Dave, if I can't convince you that we should take this
> path, can
> you please suggest an alternative design? I'm not picky -- if
> we can
> come up with something else that works then let's do it and I'll
> start
> on it right away.
>
> --
> - Keith (itchy)
>
>
>
>
> On Mon, Apr 21, 2014 at 8:23 PM, <mark.reinhold at oracle.com
> <mailto:mark.reinhold at oracle.com>
> <mailto:mark.reinhold at oracle.__com
> <mailto:mark.reinhold at oracle.com>>> wrote:
>
> 2014/4/16 14:52 -0700, david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>
> <mailto:david.holmes at oracle.__com
> <mailto:david.holmes at oracle.com>>:
>
> > src/closed is Oracle's "custom source" location (hotspot
> calls it
> > alt_src). If we never saw src/closed in the makefiles, only
> > CUSTOM_SRC_DIR, and guarded with an existence test for a
> specific
> > directory/file, then that should address your problem.
> That would
> be a
> > first step in moving things to the custom makefiles
> where they
> belong.
> >
> > I'm opposed to the ORACLEJDK variable because I want to
> maintain the
> > pressure to get this fixed properly. If we hack around
> it then it
> will
> > never get cleaned up.
>
> I think it's wrong, in principle, for OpenJDK source code
> to contain
> identifiers naming specific vendors of JDK implementations.
> We're not
> quite there at the moment, but let's please not add any more.
>
> - Mark
>
>
>
More information about the build-dev
mailing list