Problems with ALT_OUTPUTDIR in debug build

Volker Simonis volker.simonis at gmail.com
Fri Jan 11 16:49:27 UTC 2008


> Is it acceptable to assume that any ALT_OUTPUTDIR setting is a path without spaces?

For me that's perfectly fine!

> -kto
>
> Ted Neward wrote:
> >> You wrote that the "MKDIRs" in the setup rules are only needed to
> >> workaround a windows problem. I didn't built an Windows, but perhaps
> >> somebody can try if they are still needed (Ted?). And if they will be
> >> really needed, perhaps we can conditionally enable them on Windows
> >> only, so we don't clutter the Unix build with usless directories?
> >>
> > Right now I'm still stuck trying to get the Windows build to work from the top-level makefile; I'm waiting for bNext to try again and verify if it's an environment issue or a source/make issue, so I can't say for certain. But, IIRC, the last time I looked, the situation on Windows is worse, because we get not only the four directories you mention, but 8.3-named versions of them, as well, so (from memory) you'd end up with:
> >
> > build
> > build-debug
> > build-fastdebug
> > build-d?1
> > build-f?1
> >
> > where the last two are the 8.3 versions of the longer filenames, and they're all empty.
> >
> > Ted Neward
> > Java, .NET, XML Services
> > Consulting, Teaching, Speaking, Writing
> > http://www.tedneward.com
> >
> >
> >> -----Original Message-----
> >> From: Volker Simonis [mailto:volker.simonis at gmail.com]
> >> Sent: Friday, January 11, 2008 1:05 AM
> >> To: Kelly O'Hair
> >> Cc: build-dev at openjdk.java.net; Ted Neward
> >> Subject: Re: Problems with ALT_OUTPUTDIR in debug build
> >>
> >> Ok, I think I can live with ALT_OUTPUTDIR=$(OUTPUTDIR)-$(DEBUG_NAME)
> >> as well. This at least honours the original user setting of
> >> ALT_OUTPUTDIR (though with a "-debug" suffix).
> >>
> >> But it will create FOUR outputdirectories, if we say "make debug_build
> >>  ALT_OUTPUTDIR=xxx" of which only "xxx-debug" will be used:
> >>
> >> xxx
> >> xxx-debug
> >> xxx-debug-fastdebug
> >> xxx-fastdebug
> >>
> >> If we say "make fastdebug_build  ALT_OUTPUTDIR=xxx" if will create
> >> THREE directories, of which only "xxx-fastdebug", will be used:
> >>
> >> xxx
> >> xxx-fastdebug
> >> xxx-fastdebug-fastdebug
> >>
> >> I still think this is quite confusing (especially
> >> "xxx-debug-fastdebug" and "xxx-fastdebug-fastdebug" - what should they
> >> be good for).
> >>
> >> The main cause for this hassle is the setup rule in the top-level
> >> Makefile (and the recursive invocation of this makefile for the
> >> "debug" and "fasdebug" targets) :
> >>
> >> setup:
> >>        $(MKDIR) -p $(OUTPUTDIR)/j2sdk-image
> >>        $(MKDIR) -p $(ABS_OUTPUTDIR)/j2sdk-image
> >>        $(MKDIR) -p $(OUTPUTDIR)-fastdebug/j2sdk-image
> >>        $(MKDIR) -p $(ABS_OUTPUTDIR)-fastdebug/j2sdk-image
> >>
> >> I still don't understand why it is necessary, because if I remove all
> >> the MKDIRs, (and with ALT_OUTPUTDIR=$(OUTPUTDIR)-$(DEBUG_NAME) as
> >> suggested above), at least on my Linux box everything works fine:
> >>
> >> "make debug_build  ALT_OUTPUTDIR=xxx" creates two directories and puts
> >> the output to "xxx-debug":
> >>
> >> xxx
> >> xxx-debug
> >>
> >> "make fastdebug_build  ALT_OUTPUTDIR=xxx" creates two directories and
> >> puts the output to "xxx-fastdebug":
> >>
> >> xxx
> >> xxx-fastdebug
> >>
> >> and "make all  ALT_OUTPUTDIR=xxx" creates just "xxx" and puts the
> >> output into.
> >>
> >> This seams reasonable to me!
> >>
> >> You wrote that the "MKDIRs" in the setup rules are only needed to
> >> workaround a windows problem. I didn't built an Windows, but perhaps
> >> somebody can try if they are still needed (Ted?). And if they will be
> >> really needed, perhaps we can conditionally enable them on Windows
> >> only, so we don't clutter the Unix build with usless directories?
> >>
> >> Regards,
> >> Volker
> >>
> >> On 1/10/08, Kelly O'Hair <Kelly.Ohair at sun.com> wrote:
> >>> ALT_OUTPUTDIR=$(OUTPUTDIR)
> >>> doesn't make sense to me.
> >>>
> >>> The makefiles will define OUTPUTDIR to be equal to $(ALT_OUTPUTDIR)
> >> if
> >>> ALT_OUTPUTDIR is set.
> >>> The _OUTPUTDIR is the default build location, when ALT_OUTPUTDIR is
> >> not set.
> >>> The original idea here in setting ALT_OUTPUTDIR=$(_OUTPUTDIR)-
> >> $(DEBUG_NAME)
> >>> was to put all the results of a debug build in a completely different
> >>> directory, which I still think is right.
> >>> I suspect this needs to be:
> >>>     ALT_OUTPUTDIR=$(OUTPUTDIR)-$(DEBUG_NAME)
> >>>
> >>> A long time ago, the debug files were built along side the normal
> >> files, and
> >>> all debug files had that "_g" suffix (e.g. jvm_g.dll, etc.) but we
> >> completely
> >>> got rid of that because it was a nightmare.
> >>> The debug builds then just became a second pass over the source with
> >> the same
> >>> makefiles but just a different output directory so they didn't mix.
> >>> I'm afraid using ALT_OUTPUTDIR=$(OUTPUTDIR) will mix up the optimized
> >> files
> >>> with the debug files, which won't be good.
> >>>
> >>> -kto
> >>>
> >>> Volker Simonis wrote:
> >>>> I would suggest to fix the top-level  Makefile such that
> >>>> COMMON_DEBUG_FLAGS uses $(OUTPUTDIR) instead of $(_OUTPUTDIR)
> >>>> and doesn't append "-$(DEBUG_NAME)" to ALT_OUTPUTDIR like so:
> >>>>
> >>>> COMMON_DEBUG_FLAGS= \
> >>>>         DEBUG_NAME=$(DEBUG_NAME) \
> >>>>         ALT_OUTPUTDIR=$(OUTPUTDIR) \
> >>>>         NO_DOCS=true
> >>>>
> >>>> We will than always end up with two directories like so:
> >>>>
> >>>> xxx
> >>>> xxx-fastdebug
> >>>>
> >>>> if we used "ALT_OUTPUTDIR=xxx".
> >>>>
> >>>> "xxx-fastdebug" will always be empty (but needed if I follow your
> >>>> previous post) so we can remove it after the build. But the user
> >> will
> >>>> get the output in the directory he specified with ALT_OUTPUTDIR and
> >>>> that seems crucial to me.
> >>>>
> >>>> What do you think?
> >>>>
> >>>> Volker
> >>>>
> >>>> On 1/10/08, Kelly O'Hair <Kelly.Ohair at sun.com> wrote:
> >>>>> Your final paragraph I think is the answer:
> >>>>>
> >>>>>    "In my eyes, the cleanest solution would be if ALT_OUTPUTDIR
> >> would be honoured
> >>>>>     "as is", as the output directory for everything we built,
> >> without anything
> >>>>>     appended to it. So the developer should be free to choose
> >> whatever he wants as
> >>>>>     the output directory. And there should be no additional
> >> directories created."
> >>>>> The ongoing problem has been how to make this work in all cases.
> >>>>> But I'm all for it.
> >>>>>
> >>>>> The generally accepted default for an output directory has been a
> >> ./build or
> >>>>> ./dist directory at the top of the source tree you are building.
> >>>>> With corba, jaxp, jaxws, langtools, hotspot all being
> >> independently buildable,
> >>>>> what exactly are you recommending to fix this?
> >>>>>
> >>>>> -kto
> >>>>>
> >>>>> Volker Simonis wrote:
> >>>>>>>> Any comments if this is the right way to do a debug build?
> >>>>>>> If it works it's fine. I usually just run 'make debug_build',
> >> does that not work?
> >>>>>> It works, but it has the problems that I detailed in my first
> >> mail.
> >>>>>> Did you also read that one?
> >>>>>> I may seem that my second mail contained the solution for the
> >> first
> >>>>>> one, but that's not true, its justa partial workaround for the
> >> problem
> >>>>>> described in the first one:
> >>>>>>
> >>>>>> http://mail.openjdk.java.net/pipermail/build-dev/2008-
> >> January/000669.html
> >>>>>> Thanks and regards,
> >>>>>> Volker
> >> No virus found in this incoming message.
> >> Checked by AVG Free Edition.
> >> Version: 7.5.516 / Virus Database: 269.19.0/1218 - Release Date:
> >> 1/10/2008 1:32 PM
> >>
> >
> > No virus found in this outgoing message.
> > Checked by AVG Free Edition.
> > Version: 7.5.516 / Virus Database: 269.19.0/1218 - Release Date: 1/10/2008 1:32 PM
> >
> >
>



More information about the build-dev mailing list