From patchwork Fri Aug 8 05:50:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Marko X-Patchwork-Id: 68210 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 68ACBC87FCB for ; Fri, 8 Aug 2025 05:51:46 +0000 (UTC) Received: from mta-65-226.siemens.flowmailer.net (mta-65-226.siemens.flowmailer.net [185.136.65.226]) by mx.groups.io with SMTP id smtpd.web11.15333.1754632302776873059 for ; Thu, 07 Aug 2025 22:51:43 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=peter.marko@siemens.com header.s=fm2 header.b=An8UtTMZ; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.65.226, mailfrom: fm-256628-202508080551400c1e9acdc80883c411-w2luhx@rts-flowmailer.siemens.com) Received: by mta-65-226.siemens.flowmailer.net with ESMTPSA id 202508080551400c1e9acdc80883c411 for ; Fri, 08 Aug 2025 07:51:40 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=peter.marko@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=ced5+T2bqmp2+LTGj2sXLnySG/Rd/jjNHgRlUlBaAw0=; b=An8UtTMZpO/aYOmkhWRMf9qMnr5j0uJZk7tmUs7xamb/cvzF2IiTETmW5A742gLVab7+yl JFcZhDpYQg/b96rHnIbTx8NeFzsr5XLUhljHvtHH8WYJJ39XFMSY/WSi9C9G/ttClE0o+gYO u+kt4swrKQrurvVQ09Cxd6GBfd7VK+ixDzSbfrvku/XSvRle1nuCU6fqMR+KSGdGqWmt5GSw sBSeuYuCDLH0K0d/rtm3XeSxx/7MCzErZy94pHk1fHCcODAUk5CGgqjQpuDHsRsnED9Jyha6 g1nIoRscXuRTg5sfEPUbhVmSK4fiTxCIr6D7bbss5mPZSUqrstuLmDaQ==; From: Peter Marko To: openembedded-core@lists.openembedded.org Cc: Peter Marko Subject: [OE-core][PATCH 1/3] oe/utils: extract method for parallel_make without d context Date: Fri, 8 Aug 2025 07:50:57 +0200 Message-Id: <20250808055059.8851-1-peter.marko@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-256628:519-21489:flowmailer List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 08 Aug 2025 05:51:46 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/221591 From: Peter Marko oeqa does not have general access to d variable context and needs to determine parallel make settings. Extract the code from parallel_make into reusable parallel_make_value. Also correct function description of return value from None to empty string. Signed-off-by: Peter Marko --- meta/lib/oe/utils.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 779c5e593f..8aa15373f1 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -174,18 +174,14 @@ def any_distro_features(d, features, truevalue="1", falsevalue=""): """ return bb.utils.contains_any("DISTRO_FEATURES", features, truevalue, falsevalue, d) -def parallel_make(d, makeinst=False): +def parallel_make_value(pm): """ Return the integer value for the number of parallel threads to use when - building, scraped out of PARALLEL_MAKE. If no parallelization option is - found, returns None + building, scraped out of given string. If no parallelization option is + found, returns empty string - e.g. if PARALLEL_MAKE = "-j 10", this will return 10 as an integer. + e.g. if string is "-j 10", this will return 10 as an integer. """ - if makeinst: - pm = (d.getVar('PARALLEL_MAKEINST') or '').split() - else: - pm = (d.getVar('PARALLEL_MAKE') or '').split() # look for '-j' and throw other options (e.g. '-l') away while pm: opt = pm.pop(0) @@ -200,6 +196,20 @@ def parallel_make(d, makeinst=False): return '' +def parallel_make(d, makeinst=False): + """ + Return the integer value for the number of parallel threads to use when + building, scraped out of PARALLEL_MAKE. If no parallelization option is + found, returns empty string + + e.g. if PARALLEL_MAKE = "-j 10", this will return 10 as an integer. + """ + if makeinst: + pm = (d.getVar('PARALLEL_MAKEINST') or '').split() + else: + pm = (d.getVar('PARALLEL_MAKE') or '').split() + return parallel_make_value(pm) + def parallel_make_argument(d, fmt, limit=None, makeinst=False): """ Helper utility to construct a parallel make argument from the number of From patchwork Fri Aug 8 05:50:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Marko X-Patchwork-Id: 68211 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48930C87FD3 for ; Fri, 8 Aug 2025 05:52:06 +0000 (UTC) Received: from mta-65-225.siemens.flowmailer.net (mta-65-225.siemens.flowmailer.net [185.136.65.225]) by mx.groups.io with SMTP id smtpd.web10.15091.1754632323117148134 for ; Thu, 07 Aug 2025 22:52:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=peter.marko@siemens.com header.s=fm2 header.b=aTJKR/hp; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.65.225, mailfrom: fm-256628-2025080805520097772ec68d15a37814-jb6tbu@rts-flowmailer.siemens.com) Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 2025080805520097772ec68d15a37814 for ; Fri, 08 Aug 2025 07:52:00 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=peter.marko@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=jLjtK3zBj2WwCFmzSrCE3BfudIQC84vy0eyozRxZkE8=; b=aTJKR/hprRYLlGUt5euJLWVaVCu7vcJPJuysVdkk/tXoeDyndmoaRHFOeov/FUZswA5COH xFvOxDfPEr9qJ4DzP8KFLCWLukHqNm7nJOWopeP51EQqoIRGH9f8dluV594KhmH5RoJ0JeaI kqHGNeGx2bjmqAmLtEdAx7VF36eyHah1pekZOnVtkum881AbIOMX7qqMV9d/GOoXWEjSLuOQ vknaD6jGN4TK1XZsrxf/DLnmMcaJ7oeF/dEpSpcKRONMmimNIRhHZwXm3ojpx1TzDdOpH8kA nD5Dnk2+S2I/HPCYWCy4dRIihZFrPV1At0qQ8TcGRJhVhBNufESz6pAA==; From: Peter Marko To: openembedded-core@lists.openembedded.org Cc: Peter Marko Subject: [OE-core][PATCH 2/3] oeqa: rename variable dirs to opts is cases with parallel make Date: Fri, 8 Aug 2025 07:50:58 +0200 Message-Id: <20250808055059.8851-2-peter.marko@siemens.com> In-Reply-To: <20250808055059.8851-1-peter.marko@siemens.com> References: <20250808055059.8851-1-peter.marko@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-256628:519-21489:flowmailer List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 08 Aug 2025 05:52:06 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/221592 From: Peter Marko This is a refactoring commit so that next commit which is fixing parallel make settings is readable. Rename makes sense as the variable will contain not only directories but also parallel make settings afterwards. Signed-off-by: Peter Marko --- meta/lib/oeqa/sdk/cases/autotools.py | 22 +++++++++++----------- meta/lib/oeqa/sdk/cases/cmake.py | 22 +++++++++++----------- meta/lib/oeqa/sdk/cases/makefile.py | 20 ++++++++++---------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/meta/lib/oeqa/sdk/cases/autotools.py b/meta/lib/oeqa/sdk/cases/autotools.py index ee6c522551..f641d66015 100644 --- a/meta/lib/oeqa/sdk/cases/autotools.py +++ b/meta/lib/oeqa/sdk/cases/autotools.py @@ -26,23 +26,23 @@ class AutotoolsTest(OESDKTestCase): with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.gz") - dirs = {} - dirs["source"] = os.path.join(testdir, "cpio-2.15") - dirs["build"] = os.path.join(testdir, "build") - dirs["install"] = os.path.join(testdir, "install") + opts = {} + opts["source"] = os.path.join(testdir, "cpio-2.15") + opts["build"] = os.path.join(testdir, "build") + opts["install"] = os.path.join(testdir, "install") subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) - self.assertTrue(os.path.isdir(dirs["source"])) - os.makedirs(dirs["build"]) + self.assertTrue(os.path.isdir(opts["source"])) + os.makedirs(opts["build"]) - self._run("cd {build} && {source}/configure CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' $CONFIGURE_FLAGS".format(**dirs)) + self._run("cd {build} && {source}/configure CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' $CONFIGURE_FLAGS".format(**opts)) # Check that configure detected the target correctly - with open(os.path.join(dirs["build"], "config.log")) as f: + with open(os.path.join(opts["build"], "config.log")) as f: host_sys = self.td["HOST_SYS"] self.assertIn(f"host_alias='{host_sys}'\n", f.readlines()) - self._run("cd {build} && make CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' -j".format(**dirs)) - self._run("cd {build} && make install DESTDIR={install}".format(**dirs)) + self._run("cd {build} && make CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' -j".format(**opts)) + self._run("cd {build} && make install DESTDIR={install}".format(**opts)) - self.check_elf(os.path.join(dirs["install"], "usr", "local", "bin", "cpio")) + self.check_elf(os.path.join(opts["install"], "usr", "local", "bin", "cpio")) diff --git a/meta/lib/oeqa/sdk/cases/cmake.py b/meta/lib/oeqa/sdk/cases/cmake.py index 070682ef08..32b951c0f8 100644 --- a/meta/lib/oeqa/sdk/cases/cmake.py +++ b/meta/lib/oeqa/sdk/cases/cmake.py @@ -29,19 +29,19 @@ class CMakeTest(OESDKTestCase): with tempfile.TemporaryDirectory(prefix="assimp", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "https://github.com/assimp/assimp/archive/v5.4.1.tar.gz") - dirs = {} - dirs["source"] = os.path.join(testdir, "assimp-5.4.1") - dirs["build"] = os.path.join(testdir, "build") - dirs["install"] = os.path.join(testdir, "install") + opts = {} + opts["source"] = os.path.join(testdir, "assimp-5.4.1") + opts["build"] = os.path.join(testdir, "build") + opts["install"] = os.path.join(testdir, "install") subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) - self.assertTrue(os.path.isdir(dirs["source"])) + self.assertTrue(os.path.isdir(opts["source"])) # Apply the zlib patch https://github.com/madler/zlib/commit/a566e156b3fa07b566ddbf6801b517a9dba04fa3 # this sed wont be needed once assimp moves its zlib copy to v1.3.1+ - self._run("sed -i '/# ifdef _FILE_OFFSET_BITS/I,+2 d' {source}/contrib/zlib/gzguts.h".format(**dirs)) - os.makedirs(dirs["build"]) + self._run("sed -i '/# ifdef _FILE_OFFSET_BITS/I,+2 d' {source}/contrib/zlib/gzguts.h".format(**opts)) + os.makedirs(opts["build"]) - self._run("cd {build} && cmake -DASSIMP_WARNINGS_AS_ERRORS=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DASSIMP_BUILD_ZLIB=ON {source}".format(**dirs)) - self._run("cmake --build {build} -- -j".format(**dirs)) - self._run("cmake --build {build} --target install -- DESTDIR={install}".format(**dirs)) - self.check_elf(os.path.join(dirs["install"], "usr", "local", "lib", "libassimp.so.5.4.1")) + self._run("cd {build} && cmake -DASSIMP_WARNINGS_AS_ERRORS=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DASSIMP_BUILD_ZLIB=ON {source}".format(**opts)) + self._run("cmake --build {build} -- -j".format(**opts)) + self._run("cmake --build {build} --target install -- DESTDIR={install}".format(**opts)) + self.check_elf(os.path.join(opts["install"], "usr", "local", "lib", "libassimp.so.5.4.1")) diff --git a/meta/lib/oeqa/sdk/cases/makefile.py b/meta/lib/oeqa/sdk/cases/makefile.py index e1e2484820..0dcf94c6d7 100644 --- a/meta/lib/oeqa/sdk/cases/makefile.py +++ b/meta/lib/oeqa/sdk/cases/makefile.py @@ -23,14 +23,14 @@ class MakefileTest(OESDKTestCase): with tempfile.TemporaryDirectory(prefix="lzip", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "http://downloads.yoctoproject.org/mirror/sources/lzip-1.19.tar.gz") - dirs = {} - dirs["source"] = os.path.join(testdir, "lzip-1.19") - dirs["build"] = os.path.join(testdir, "build") - dirs["install"] = os.path.join(testdir, "install") + opts = {} + opts["source"] = os.path.join(testdir, "lzip-1.19") + opts["build"] = os.path.join(testdir, "build") + opts["install"] = os.path.join(testdir, "install") subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) - self.assertTrue(os.path.isdir(dirs["source"])) - os.makedirs(dirs["build"]) + self.assertTrue(os.path.isdir(opts["source"])) + os.makedirs(opts["build"]) cmd = """cd {build} && \ {source}/configure --srcdir {source} \ @@ -39,7 +39,7 @@ class MakefileTest(OESDKTestCase): CXXFLAGS="$CXXFLAGS" \ LDFLAGS="$LDFLAGS" \ """ - self._run(cmd.format(**dirs)) - self._run("cd {build} && make -j".format(**dirs)) - self._run("cd {build} && make install DESTDIR={install}".format(**dirs)) - self.check_elf(os.path.join(dirs["install"], "usr", "local", "bin", "lzip")) + self._run(cmd.format(**opts)) + self._run("cd {build} && make -j".format(**opts)) + self._run("cd {build} && make install DESTDIR={install}".format(**opts)) + self.check_elf(os.path.join(opts["install"], "usr", "local", "bin", "lzip")) From patchwork Fri Aug 8 05:50:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Marko X-Patchwork-Id: 68212 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AE5CC87FD3 for ; Fri, 8 Aug 2025 05:52:26 +0000 (UTC) Received: from mta-64-226.siemens.flowmailer.net (mta-64-226.siemens.flowmailer.net [185.136.64.226]) by mx.groups.io with SMTP id smtpd.web10.15092.1754632336056881864 for ; Thu, 07 Aug 2025 22:52:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=peter.marko@siemens.com header.s=fm2 header.b=abDPB2fT; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.64.226, mailfrom: fm-256628-20250808055213af8171fc18f5b57359-gtnezx@rts-flowmailer.siemens.com) Received: by mta-64-226.siemens.flowmailer.net with ESMTPSA id 20250808055213af8171fc18f5b57359 for ; Fri, 08 Aug 2025 07:52:13 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=peter.marko@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=MN34qtDzCOopankh1T5UGSQGbr5t6x2H4YOrX4gejyE=; b=abDPB2fThVBQtTYiKBd+qEEDCZaJesi2WsdFu3KBsJWKrDiv7SFggV9wn4qgWOBYxwM0uU DEnodnliBx0H/LEq9taQDNbFiD4RZe4u5BTrSOn/QkZzfoDCDP/GdB7/CJq95OuAW1+buf1u PylCzLc5y62EzfBYvJk+0S7Fy6HfcviuTY0Rdzd08ST0Ypcneu+buu8xNJQdGPDLPxjt/ckr ECGBEp4vyYEGaV13AJO2wMHrRpqBA/hXybicpPqKnDC63IzoMuj46pyKUMmm1AAx6RcCPeHP 8t0phLPHjJDqaNT8+/M/z8Tx0CiJ6nRYbvyb5AmWJVdZ81keM18N4QNA==; From: Peter Marko To: openembedded-core@lists.openembedded.org Cc: Peter Marko Subject: [OE-core][PATCH 3/3] oeqa: fix parallel make setting for sdk cmake case Date: Fri, 8 Aug 2025 07:50:59 +0200 Message-Id: <20250808055059.8851-3-peter.marko@siemens.com> In-Reply-To: <20250808055059.8851-1-peter.marko@siemens.com> References: <20250808055059.8851-1-peter.marko@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-256628:519-21489:flowmailer List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 08 Aug 2025 05:52:26 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/221593 From: Peter Marko These testcases are running with make or cmake "-j" without number, which means that the build will spawn unlimited number of compiler processes which may lead to oomkills and general build machine cpu overload. Signed-off-by: Peter Marko --- meta/lib/oeqa/runtime/cases/stap.py | 6 +++++- meta/lib/oeqa/sdk/cases/autotools.py | 5 ++++- meta/lib/oeqa/sdk/cases/cmake.py | 5 ++++- meta/lib/oeqa/sdk/cases/kmod.py | 5 ++++- meta/lib/oeqa/sdk/cases/makefile.py | 5 ++++- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py index 6b55e7de50..d6f225580c 100644 --- a/meta/lib/oeqa/runtime/cases/stap.py +++ b/meta/lib/oeqa/runtime/cases/stap.py @@ -16,8 +16,12 @@ class StapTest(OERuntimeTestCase): @OEHasPackage(['gcc-symlinks']) @OEHasPackage(['kernel-devsrc']) def test_stap(self): + from oe.utils import parallel_make_value + + parallel_make = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) + try: - cmd = 'make -j -C /usr/src/kernel scripts prepare' + cmd = 'make %s -C /usr/src/kernel scripts prepare' % (parallel_make) status, output = self.target.run(cmd, 900) self.assertEqual(status, 0, msg='\n'.join([cmd, output])) diff --git a/meta/lib/oeqa/sdk/cases/autotools.py b/meta/lib/oeqa/sdk/cases/autotools.py index f641d66015..042efc9f25 100644 --- a/meta/lib/oeqa/sdk/cases/autotools.py +++ b/meta/lib/oeqa/sdk/cases/autotools.py @@ -23,6 +23,8 @@ class AutotoolsTest(OESDKTestCase): raise unittest.SkipTest("AutotoolsTest class: SDK doesn't contain a supported C library") def test_cpio(self): + from oe.utils import parallel_make_value + with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.gz") @@ -30,6 +32,7 @@ class AutotoolsTest(OESDKTestCase): opts["source"] = os.path.join(testdir, "cpio-2.15") opts["build"] = os.path.join(testdir, "build") opts["install"] = os.path.join(testdir, "install") + opts["parallel_make"] = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) self.assertTrue(os.path.isdir(opts["source"])) @@ -42,7 +45,7 @@ class AutotoolsTest(OESDKTestCase): host_sys = self.td["HOST_SYS"] self.assertIn(f"host_alias='{host_sys}'\n", f.readlines()) - self._run("cd {build} && make CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' -j".format(**opts)) + self._run("cd {build} && make CFLAGS='-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration' {parallel_make}".format(**opts)) self._run("cd {build} && make install DESTDIR={install}".format(**opts)) self.check_elf(os.path.join(opts["install"], "usr", "local", "bin", "cpio")) diff --git a/meta/lib/oeqa/sdk/cases/cmake.py b/meta/lib/oeqa/sdk/cases/cmake.py index 32b951c0f8..8eea55342f 100644 --- a/meta/lib/oeqa/sdk/cases/cmake.py +++ b/meta/lib/oeqa/sdk/cases/cmake.py @@ -26,6 +26,8 @@ class CMakeTest(OESDKTestCase): self.ensure_host_package("cmake") def test_assimp(self): + from oe.utils import parallel_make_value + with tempfile.TemporaryDirectory(prefix="assimp", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "https://github.com/assimp/assimp/archive/v5.4.1.tar.gz") @@ -33,6 +35,7 @@ class CMakeTest(OESDKTestCase): opts["source"] = os.path.join(testdir, "assimp-5.4.1") opts["build"] = os.path.join(testdir, "build") opts["install"] = os.path.join(testdir, "install") + opts["parallel_make"] = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) self.assertTrue(os.path.isdir(opts["source"])) @@ -42,6 +45,6 @@ class CMakeTest(OESDKTestCase): os.makedirs(opts["build"]) self._run("cd {build} && cmake -DASSIMP_WARNINGS_AS_ERRORS=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DASSIMP_BUILD_ZLIB=ON {source}".format(**opts)) - self._run("cmake --build {build} -- -j".format(**opts)) + self._run("cmake --build {build} -- {parallel_make}".format(**opts)) self._run("cmake --build {build} --target install -- DESTDIR={install}".format(**opts)) self.check_elf(os.path.join(opts["install"], "usr", "local", "lib", "libassimp.so.5.4.1")) diff --git a/meta/lib/oeqa/sdk/cases/kmod.py b/meta/lib/oeqa/sdk/cases/kmod.py index 0aa6f702e4..adbee2c6ed 100644 --- a/meta/lib/oeqa/sdk/cases/kmod.py +++ b/meta/lib/oeqa/sdk/cases/kmod.py @@ -21,9 +21,12 @@ class KernelModuleTest(OESDKTestCase): if isinstance(self.tc, OESDKExtTestContext): self.skipTest(f"{self.id()} does not support eSDK (https://bugzilla.yoctoproject.org/show_bug.cgi?id=15850)") + from oe.utils import parallel_make_value + parallel_make = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) + self.ensure_target_package("kernel-devsrc") # These targets need to be built before kernel modules can be built. - self._run("make -j -C $OECORE_TARGET_SYSROOT/usr/src/kernel prepare scripts") + self._run("make %s -C $OECORE_TARGET_SYSROOT/usr/src/kernel prepare scripts" % (parallel_make)) with tempfile.TemporaryDirectory(prefix="cryptodev", dir=self.tc.sdk_dir) as testdir: git_url = "https://github.com/cryptodev-linux/cryptodev-linux" diff --git a/meta/lib/oeqa/sdk/cases/makefile.py b/meta/lib/oeqa/sdk/cases/makefile.py index 0dcf94c6d7..f3c342d09f 100644 --- a/meta/lib/oeqa/sdk/cases/makefile.py +++ b/meta/lib/oeqa/sdk/cases/makefile.py @@ -20,6 +20,8 @@ class MakefileTest(OESDKTestCase): raise unittest.SkipTest("MakefileTest class: SDK doesn't contain a supported C library") def test_lzip(self): + from oe.utils import parallel_make_value + with tempfile.TemporaryDirectory(prefix="lzip", dir=self.tc.sdk_dir) as testdir: tarball = self.fetch(testdir, self.td["DL_DIR"], "http://downloads.yoctoproject.org/mirror/sources/lzip-1.19.tar.gz") @@ -27,6 +29,7 @@ class MakefileTest(OESDKTestCase): opts["source"] = os.path.join(testdir, "lzip-1.19") opts["build"] = os.path.join(testdir, "build") opts["install"] = os.path.join(testdir, "install") + opts["parallel_make"] = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) subprocess.check_output(["tar", "xf", tarball, "-C", testdir], stderr=subprocess.STDOUT) self.assertTrue(os.path.isdir(opts["source"])) @@ -40,6 +43,6 @@ class MakefileTest(OESDKTestCase): LDFLAGS="$LDFLAGS" \ """ self._run(cmd.format(**opts)) - self._run("cd {build} && make -j".format(**opts)) + self._run("cd {build} && make {parallel_make}".format(**opts)) self._run("cd {build} && make install DESTDIR={install}".format(**opts)) self.check_elf(os.path.join(opts["install"], "usr", "local", "bin", "lzip"))