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 <flow@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 \
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 <flow@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.
[[PGP Signed Part:Undecided]]
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:Also, shouldn't you handle MAKEFLAGS then as well? If we're to
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 <flow@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.
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.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 475 |
Nodes: | 16 (2 / 14) |
Uptime: | 16:49:10 |
Calls: | 9,487 |
Calls today: | 6 |
Files: | 13,615 |
Messages: | 6,121,086 |