RFR: JDK-8196356: Changes to m4 files don't trigger autoconf execution at build time

Thomas Stüfe thomas.stuefe at gmail.com
Mon Feb 12 12:03:16 UTC 2018


Hi Magnus,

On Mon, Feb 12, 2018 at 12:50 PM, Magnus Ihse Bursie <
magnus.ihse.bursie at oracle.com> wrote:

> On 2018-02-10 23:39, Martin Buchholz wrote:
>
>> I agree.  Once you make something lazy-initted you have a concurrency
>> problem.  And there's no CAS or lock on the filesystem.  What happens if
>> two configure processes run at exactly the same time, perhaps even with
>> different versions of autoconf?  If you lazy-generate configure, it must
>> be
>> written outside the source tree.
>>
> That is of course a problem with the entire build system, and is certainly
> not unique to this problem. What happens if you run "make" concurrently in
> the same directory? Catastrophe! Or if you run "configure" at the same
> time? Disaster! Creating the file outside the source tree will not help in
> the slightest regard; you can just as well create a race condition in any
> place you select. This does not sound like a real-world problem that one
> has to safe-guard against.
>
>
Until now it was perfectly fine to run N makes in parallel from the same
source tree. I do this all the time: I have a source directory and a number
of output directories side by side for various build configurations (debug,
fastdebug, release, 32bit, zero...); in the morning I pull all changes and
start a number of scratch builds. We also do this nightly. We share source
trees for multiple builds (among other reasons it makes comparing builds
easier).

But since now the configuration is written by the build into the source
tree, parallel builds can overwrite each others generated-configure shell
script.

As for your other mail, this issue here (generating stuff into the source
tree) is for me a far greater pain than the fact that the directory is
hidden; the latter is just aesthetics, and as you say, we already do this
in other cases.

Best Regards, Thomas




> /Magnus
>
>
>
>> On Sat, Feb 10, 2018 at 3:29 AM, Thomas Stüfe <thomas.stuefe at gmail.com>
>> wrote:
>>
>> On Sat, Feb 10, 2018 at 9:12 AM, Alan Bateman <Alan.Bateman at oracle.com>
>>> wrote:
>>>
>>> On 08/02/2018 17:49, Erik Joelsson wrote:
>>>>
>>>> The check for when to generate the generated configure script is not
>>>>> working quite as expected. It currently only compares timestamps if the
>>>>> local repository has any local changes in the make/autoconf directory.
>>>>>
>>>> This
>>>
>>>> used to make sense when we had a committed generated script, but now we
>>>>> actually do need to regenerate any time an input file is newer than the
>>>>> generated script.
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8196356
>>>>>
>>>>> In addition to `hg status` showing no changes, I think it will continue
>>>>
>>> to
>>>
>>>> confuse people to generate it into a hidden directory. Was there any
>>>> consideration to generating into a regular directory?
>>>>
>>>>
>>>> I agree. Also, we still generate the configure.sh into the source tree
>>> even
>>> if the output directory is somewhere else. I always keep my output
>>> directories separate from the source tree. Sometimes my source directory
>>> is
>>> even on a read-only share. I would prefer and also expect any temporary
>>> files to be placed in the output directory resp. the current directory,
>>> not
>>> in the source tree. Would that be possible?
>>>
>>> Thanks and Kind Regards, Thomas
>>>
>>>
>>> -Alan
>>>>
>>>>
>


More information about the build-dev mailing list