On 25/07/2023 10.32, Michał Górny wrote:
On Tue, 2023-07-25 at 08:26 +0200, Florian Schmaus wrote:
On 25/07/2023 06.50, Michał Górny wrote:
On Mon, 2023-07-24 at 20:57 +0200, Florian Schmaus wrote:
Since --load-average may not be found in other Make implementations
besides GNU MAKE, it is potentially found in GNUMAKEFLAGS and not in
MAKEOPTS.

Signed-off-by: Florian Schmaus <f...@gentoo.org>
---
   eclass/multiprocessing.eclass | 6 +++---
   1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/eclass/multiprocessing.eclass b/eclass/multiprocessing.eclass
index e55be636a02c..6489ecbb44a6 100644
--- a/eclass/multiprocessing.eclass
+++ b/eclass/multiprocessing.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
   # Distributed under the terms of the GNU General Public License v2
# @ECLASS: multiprocessing.eclass
@@ -86,7 +86,7 @@ makeopts_jobs() {
   # @FUNCTION: makeopts_loadavg
   # @USAGE: [${MAKEOPTS}] [${inf:-999}]
   # @DESCRIPTION:
-# Searches the arguments (defaults to ${MAKEOPTS}) and extracts the value set
+# Searches the arguments (defaults to ${MAKEOPTS} ${GNUMAKEFLAGS}) and 
extracts the value set
   # for load-average. For make and ninja based builds this will mean new jobs 
are
   # not only limited by the jobs-value, but also by the current load - which 
might
   # get excessive due to I/O and not just due to CPU load.
@@ -95,7 +95,7 @@ makeopts_jobs() {
   # If no limit is specified or --load-average is used without a number, ${inf}
   # (defaults to 999) is returned.
   makeopts_loadavg() {
-       [[ $# -eq 0 ]] && set -- "${MAKEOPTS}"
+       [[ $# -eq 0 ]] && set -- "${MAKEOPTS} ${GNUMAKEFLAGS}"
        # This assumes the first .* will be more greedy than the second .*
        # since POSIX doesn't specify a non-greedy match (i.e. ".*?").
        local lavg=$(echo " $* " | sed -r -n \

I'm pretty sure [GNU]MAKEFLAGS has incompatible format, in particular it
makes hyphens optional.

Yes, hyphens are optional in GNUMAKEFLAGS.

However, makeopts_loadavg() would still be able to extract the
hyphen-prefixed short (-l) and long (--load-average) options from
GNUMAKEFLAGS. Hence having makeopts_loadavg() also inspect GNUMAKEFLAGS
seems like an improvement over the current situation.


Also, shouldn't you handle MAKEFLAGS then as well?  If we're to support
arbitrary variables used by build systems.

We could.

But GNUMAKEFLAGS was not arbitrary chosen. The idea is that portage may set --load-average via GNUMAKEFLAGS if the user did not set MAKEOPTS and GNUMAKEFLAGS.

See https://github.com/gentoo/portage/pull/1072

I first put --load-average into MAKEOPTS, but --load-average is not a portable make option, that is, some Make implementation do not support it. Adding it to GNUMAKEFLAGS, a variable already set by portage, we avoid passing this option to a make implementation that does not support it.

Hence, just adding GNUMAKEFLAGS is sufficient for the purpose of propagating portage's potential new default into multiprocessing.eclass & Co.

- Flow

Attachment: OpenPGP_0x8CAC2A9678548E35.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to