Build failure with gnu make 4.0 on Arch Linux
Erik Joelsson
erik.joelsson at oracle.com
Tue Nov 5 12:27:27 UTC 2013
So this only happens in hotspot because of
make/linux/makefiles/adjust-mflags.sh. I would suggest this change to
fix it. It adds -I to a set of options that cannot be combined with -j
sharing the same dash (since -I requires an argument).
diff -r ddc3758f68db make/linux/makefiles/adjust-mflags.sh
--- a/make/linux/makefiles/adjust-mflags.sh
+++ b/make/linux/makefiles/adjust-mflags.sh
@@ -64,7 +64,7 @@
echo "$MFLAGS" \
| sed '
s/^-/ -/
- s/ -\([^ ][^ ]*\)j/ -\1 -j/
+ s/ -\([^ I][^ ]*\)j/ -\1 -j/
s/ -j[0-9][0-9]*/ -j/
s/ -j\([^ ]\)/ -j -\1/
s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
/Erik
On 2013-11-05 07:18, Henry Jen wrote:
> Yes, GNU make 4.0 change the format of MFLAGS so that there is no
> longer space between -I and folder.
>
> Cheers,
> Henry
>
>
> On 11/04/2013 01:38 AM, Erik Joelsson wrote:
>> This seems to be make 4.0 specific. I saw the same error when trying a
>> home built make 4.0 on Solaris the other day (for a completely different
>> reason so I didn't pursue the problem).
>>
>> We will investigate.
>>
>> /Erik
>>
>> On 2013-11-02 08:30, Henry Jen wrote:
>>> What I don't understand(misleading me) is that my previous Ubuntu
>>> setup has same directory structure, but not seeing this problem.
>>>
>>> Cheers,
>>> Henry
>>>
>>> On 11/02/2013 12:27 AM, Henry Jen wrote:
>>>> Yes, I just verified that's the result of sed. Following patch fix it.
>>>> I don't quite understand why we need that line.
>>>>
>>>> Cheers,
>>>> Henry
>>>>
>>>> diff -r ea1b8c643fc8 make/linux/makefiles/adjust-mflags.sh
>>>> --- a/make/linux/makefiles/adjust-mflags.sh Wed Oct 30 13:43:16
>>>> 2013
>>>> -0700
>>>> +++ b/make/linux/makefiles/adjust-mflags.sh Sat Nov 02 00:26:42
>>>> 2013
>>>> -0700
>>>> @@ -64,7 +64,6 @@
>>>> echo "$MFLAGS" \
>>>> | sed '
>>>> s/^-/ -/
>>>> - s/ -\([^ ][^ ]*\)j/ -\1 -j/
>>>> s/ -j[0-9][0-9]*/ -j/
>>>> s/ -j\([^ ]\)/ -j -\1/
>>>> s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
>>>>
>>>>
>>>> On 11/02/2013 12:24 AM, David Holmes wrote:
>>>>> Hi Henry,
>>>>>
>>>>> Looks to me like the script that tries to hack the -j option has
>>>>> messed up:
>>>>>
>>>>> -I /home/hjen/ws/tl/common/makefiles -f adlc.make -r -rRs -I/home/h
>>>>> -j3
>>>>> -en/ws/tl/common/makefiles
>>>>>
>>>>> Note the -j3 which seems to have been inserted into the middle of
>>>>> /hjen/ws ...
>>>>>
>>>>> David
>>>>>
>>>>> On 2/11/2013 1:36 PM, Henry Jen wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I am trying to setup build environment on a new installation, and
>>>>>> encounter following build error.
>>>>>>
>>>>>> I suspect this is because of missing some required tools and
>>>>>> software,
>>>>>> however, the error message is not helpful.
>>>>>>
>>>>>> Tried to echo the make commang used, but as you can see the output
>>>>>> seems
>>>>>> to be scrambled. Is there a way to find out what exact command
>>>>>> causing
>>>>>> problem? I tried to configure --with-jobs=1, that doesn't help.
>>>>>>
>>>>>> The Gnu make version is 4.0, let me know what else information I can
>>>>>> collect to help diagnosis the problem.
>>>>>>
>>>>>> Cheers,
>>>>>> Henry
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> INFO: ZIP_DEBUGINFO_FILES=1
>>>>>>> /usr/bin/make -s VERBOSE=-s LOG_LEVEL=warn -R -I
>>>>>>> /home/hjen/ws/tl/common/makefiles -f adlc.make -r -rRs -I/home/h
>>>>>>> -j3
>>>>>>> -en/ws/tl/common/makefiles -I/home/hjen/ws/tl/common/makefiles
>>>>>>> -I/home/hjen/ws/tl/common/makefiles
>>>>>>> -I/home/hjen/ws/tl/common/makefiles
>>>>>>> -I/home/hjen/ws/tl/common/makefiles
>>>>>>> /usr/bin/make: invalid option -- '/'
>>>>>>> /usr/bin/make: invalid option -- '/'
>>>>>>> Usage: make [options] [target] ...
>>>>>>> Options:
>>>>>>> -b, -m Ignored for compatibility.
>>>>>>> -B, --always-make Unconditionally make all targets.
>>>>>>> -C DIRECTORY, --directory=DIRECTORY
>>>>>>> Change to DIRECTORY before doing
>>>>>>> anything.
>>>>>>> -d Print lots of debugging information.
>>>>>>> --debug[=FLAGS] Print various types of debugging
>>>>>>> information.
>>>>>>> -e, --environment-overrides
>>>>>>> Environment variables override
>>>>>>> makefiles.
>>>>>>> --eval=STRING Evaluate STRING as a makefile
>>>>>>> statement.
>>>>>>> -f FILE, --file=FILE, --makefile=FILE
>>>>>>> Read FILE as a makefile.
>>>>>>> -h, --help Print this message and exit.
>>>>>>> -i, --ignore-errors Ignore errors from recipes.
>>>>>>> -I DIRECTORY, --include-dir=DIRECTORY
>>>>>>> Search DIRECTORY for included
>>>>>>> makefiles.
>>>>>>> -j [N], --jobs[=N] Allow N jobs at once; infinite jobs
>>>>>>> with
>>>>>>> no arg.
>>>>>>> -k, --keep-going Keep going when some targets can't be
>>>>>>> made.
>>>>>>> -l [N], --load-average[=N], --max-load[=N]
>>>>>>> Don't start multiple jobs unless
>>>>>>> load is
>>>>>>> below N.
>>>>>>> -L, --check-symlink-times Use the latest mtime between symlinks
>>>>>>> and target.
>>>>>>> -n, --just-print, --dry-run, --recon
>>>>>>> Don't actually run any recipe; just
>>>>>>> print them.
>>>>>>> -o FILE, --old-file=FILE, --assume-old=FILE
>>>>>>> Consider FILE to be very old and
>>>>>>> don't
>>>>>>> remake it.
>>>>>>> -O[TYPE], --output-sync[=TYPE]
>>>>>>> Synchronize output of parallel
>>>>>>> jobs by
>>>>>>> TYPE.
>>>>>>> -p, --print-data-base Print make's internal database.
>>>>>>> -q, --question Run no recipe; exit status says if
>>>>>>> up to
>>>>>>> date.
>>>>>>> -r, --no-builtin-rules Disable the built-in implicit rules.
>>>>>>> -R, --no-builtin-variables Disable the built-in variable
>>>>>>> settings.
>>>>>>> -s, --silent, --quiet Don't echo recipes.
>>>>>>> -S, --no-keep-going, --stop
>>>>>>> Turns off -k.
>>>>>>> -t, --touch Touch targets instead of remaking
>>>>>>> them.
>>>>>>> --trace Print tracing information.
>>>>>>> -v, --version Print the version number of make and
>>>>>>> exit.
>>>>>>> -w, --print-directory Print the current directory.
>>>>>>> --no-print-directory Turn off -w, even if it was turned on
>>>>>>> implicitly.
>>>>>>> -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
>>>>>>> Consider FILE to be infinitely new.
>>>>>>> --warn-undefined-variables Warn when an undefined variable is
>>>>>>> referenced.
>>>>>>>
>>>>>>> This program built for x86_64-unknown-linux-gnu
>>>>>>> Report bugs to <bug-make at gnu.org>
>>>>>>> make[5]: *** [ad_stuff] Error 2
>>>>>>> /home/hjen/ws/tl/hotspot/make/linux/makefiles/top.make:91:
>>>>>>> recipe for
>>>>>>> target 'ad_stuff' failed
>>>>>>> make[4]: *** [product] Error 2
>>>>>>> /home/hjen/ws/tl/hotspot/make/linux/Makefile:289: recipe for target
>>>>>>> 'product' failed
>>>>>>> make[3]: *** [generic_build2] Error 2
>>>>>>> Makefile:216: recipe for target 'generic_build2' failed
>>>>>>> make[2]: *** [product] Error 2
>>>>>>> Makefile:167: recipe for target 'product' failed
>>>>>>> make[1]: ***
>>>>>>> [/home/hjen/ws/tl/build/linux-x86_64-normal-server-release/hotspot/_hotspot.timestamp]
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Error 2
>>>>>>> HotspotWrapper.gmk:44: recipe for target
>>>>>>> '/home/hjen/ws/tl/build/linux-x86_64-normal-server-release/hotspot/_hotspot.timestamp'
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> failed
>>>>>>> /export/home/hjen/ws/tl//common/makefiles/Main.gmk:108: recipe for
>>>>>>> target 'hotspot-only' failed
>>>>>>> make: *** [hotspot-only] Error 2
>>
More information about the build-dev
mailing list