From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mail.openembedded.org (Postfix) with ESMTP id F086E61663 for ; Mon, 24 Jun 2013 22:09:27 +0000 (UTC) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 24 Jun 2013 15:09:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.87,931,1363158000"; d="scan'208";a="359777608" Received: from unknown (HELO [10.255.13.89]) ([10.255.13.89]) by fmsmga002.fm.intel.com with ESMTP; 24 Jun 2013 15:09:27 -0700 Message-ID: <51C8C398.1070908@linux.intel.com> Date: Mon, 24 Jun 2013 15:09:28 -0700 From: Saul Wold User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 MIME-Version: 1.0 To: Mark Hatle References: <1372085149-30510-1-git-send-email-mark.hatle@windriver.com> <1372085149-30510-2-git-send-email-mark.hatle@windriver.com> In-Reply-To: <1372085149-30510-2-git-send-email-mark.hatle@windriver.com> Cc: openembedded-core@lists.openembedded.org Subject: Re: [PATCH 1/3] sanity.bbclass: Check for the known broken version of make X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Jun 2013 22:09:28 -0000 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 > --- > meta/classes/sanity.bbclass | 39 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > Seems this needs a rebase since RP also changed sanity.bbclass recently. 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 >