Build failure with gnu make 4.0 on Arch Linux

Henry Jen henry.jen at oracle.com
Tue Nov 5 16:13:09 UTC 2013


+1, that would work.

I just wondering if it’s better to have I in both bracket to be tolerant to case like -RsI<path>, although it’s not a problem now, but that seems legal options to me.

Cheers,
Henry

On Nov 5, 2013, at 4:27 AM, Erik Joelsson <erik.joelsson at oracle.com> wrote:

> 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