From: Mark Hatle <mark.hatle@windriver.com>
To: Martin Jansa <martin.jansa@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/3] sanity.bbclass: Check for the known broken version of make
Date: Tue, 25 Jun 2013 09:12:24 -0500 [thread overview]
Message-ID: <51C9A548.8050800@windriver.com> (raw)
In-Reply-To: <20130625112006.GO14021@jama>
On 6/25/13 6:20 AM, Martin Jansa wrote:
> On Mon, Jun 24, 2013 at 09:06:11PM -0500, Mark Hatle wrote:
>> On 6/24/13 5:09 PM, Saul Wold wrote:
>>> On 06/24/2013 07:45 AM, Mark Hatle wrote:
>>>> See GNU Savannah bug 30612 -- make 3.82 is known to be broken.
>>>>
>>>> A number of vendors are providing a modified version, so checking
>>>> for just the version string is not enough. We also need to check
>>>> if the patch for the issue has been applied. We use a modified
>>>> version of the reproduced to check for the issue.
>>>>
>>>> Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
>>>> ---
>>>> meta/classes/sanity.bbclass | 39 +++++++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 39 insertions(+)
>>>>
>>>
>>> Seems this needs a rebase since RP also changed sanity.bbclass recently.
>>
>> This is from Friday morning. I'll start a rebase and send new code when I have
>> it ready.
>
> There is another issues with unpatched make-3.82, webkit and newer
> nodejs are failing for some people.
> https://savannah.gnu.org/bugs/?36451
>
> What about for cycle which generates some very long "ls" or something
> like that?
>
> On other hand so long commands arn't so common, so many people
> could be using "broken" make without seeing issues with their images.
If you can point me to a reproducer, I'm happy to add it to the sanity check as
part of the rebase work.
The current reproducer covers two cases (see the patch for the savannah bug
number). These were the two cases that I knew had caused problems for others in
the past.
--Mark
>>
>> --Mark
>>
>>> Sau!
>>>
>>>> diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
>>>> index 7f95f31..dc251a1 100644
>>>> --- a/meta/classes/sanity.bbclass
>>>> +++ b/meta/classes/sanity.bbclass
>>>> @@ -336,6 +336,41 @@ def check_gcc_march(sanity_data):
>>>>
>>>> return result
>>>>
>>>> +# Unpatched versions of make 3.82 are known to be broken. See GNU Savannah Bug 30612.
>>>> +# Use a modified reproducer from http://savannah.gnu.org/bugs/?30612 to validate.
>>>> +def check_make_version(sanity_data, loosever):
>>>> + status, result = oe.utils.getstatusoutput("make --version")
>>>> + if status != 0:
>>>> + return "Unable to execute make --version, exit code %s\n" % status
>>>> + version = result.split()[2]
>>>> + if loosever(version) == loosever("3.82"):
>>>> + # Construct a test file
>>>> + f = open("makefile_test", "w")
>>>> + f.write("makefile_test.a: makefile_test_a.c makefile_test_b.c makefile_test.a( makefile_test_a.c makefile_test_b.c)\n")
>>>> + f.write("\n")
>>>> + f.write("makefile_test_a.c:\n")
>>>> + f.write(" touch $@\n")
>>>> + f.write("\n")
>>>> + f.write("makefile_test_b.c:\n")
>>>> + f.write(" touch $@\n")
>>>> + f.close()
>>>> +
>>>> + # Check if make 3.82 has been patched
>>>> + status,result = oe.utils.getstatusoutput("make -f makefile_test")
>>>> +
>>>> + os.remove("makefile_test")
>>>> + if os.path.exists("makefile_test_a.c"):
>>>> + os.remove("makefile_test_a.c")
>>>> + if os.path.exists("makefile_test_b.c"):
>>>> + os.remove("makefile_test_b.c")
>>>> + if os.path.exists("makefile_test.a"):
>>>> + os.remove("makefile_test.a")
>>>> +
>>>> + if status != 0:
>>>> + return "Your version of make 3.82 is broken. Please revert to 3.81 or install a patched version.\n"
>>>> + return None
>>>> +
>>>> +
>>>> # Tar version 1.24 and onwards handle overwriting symlinks correctly
>>>> # but earlier versions do not; this needs to work properly for sstate
>>>> def check_tar_version(sanity_data, loosever):
>>>> @@ -407,6 +442,10 @@ def check_sanity(sanity_data):
>>>> messages = messages + 'Please set a MACHINE in your local.conf or environment\n'
>>>> machinevalid = False
>>>>
>>>> + makemsg = check_make_version(sanity_data, LooseVersion)
>>>> + if makemsg:
>>>> + messages = messages + makemsg
>>>> +
>>>> tarmsg = check_tar_version(sanity_data, LooseVersion)
>>>> if tarmsg:
>>>> messages = messages + tarmsg
>>>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
next prev parent reply other threads:[~2013-06-25 14:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-24 14:45 [PATCH 0/3] Update the sanity check and make Mark Hatle
2013-06-24 14:45 ` [PATCH 1/3] sanity.bbclass: Check for the known broken version of make Mark Hatle
2013-06-24 22:09 ` Saul Wold
2013-06-25 2:06 ` Mark Hatle
2013-06-25 11:20 ` Martin Jansa
2013-06-25 14:12 ` Mark Hatle [this message]
2013-06-25 14:26 ` Martin Jansa
2013-06-24 14:45 ` [PATCH 2/3] make: Fix second part of bug Savannah 30612 Mark Hatle
2013-06-24 14:45 ` [PATCH 3/3] buildtools-tarball: Add nativesdk-make Mark Hatle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51C9A548.8050800@windriver.com \
--to=mark.hatle@windriver.com \
--cc=martin.jansa@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox