Build failure with gnu make 4.0 on Arch Linux

Henry Jen henry.jen at oracle.com
Thu Nov 14 23:40:40 UTC 2013


I filed JDK-8028407 with this proposed patch attached, not sure which repo is proper channel to review/commit.

Cheers,
Henry


On November 5, 2013 at 8:31:57 AM, Erik Joelsson (erik.joelsson at oracle.com) wrote:

You are right, that would be more correct.  

/Erik  

On 2013-11-05 17:13, Henry Jen wrote:  
> +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