commit:     95a6dff78a57dde2133dba050d16cae2c5113b23
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 28 09:59:52 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Nov 15 16:34:06 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=95a6dff7

scons-utils.eclass: Reuse makeopts_jobs

Closes: https://github.com/gentoo/gentoo/pull/27999
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/scons-utils.eclass   | 102 ++------------------------------------------
 eclass/tests/scons-utils.sh |  64 ---------------------------
 2 files changed, 4 insertions(+), 162 deletions(-)

diff --git a/eclass/scons-utils.eclass b/eclass/scons-utils.eclass
index cbe92f6fc385..acb51300f348 100644
--- a/eclass/scons-utils.eclass
+++ b/eclass/scons-utils.eclass
@@ -71,8 +71,8 @@
 # @DEFAULT_UNSET
 # @DESCRIPTION:
 # The default set of options to pass to scons. Similar to MAKEOPTS,
-# supposed to be set in make.conf. If unset, escons() will use cleaned
-# up MAKEOPTS instead.
+# supposed to be set in make.conf. If unset, escons() will set -j
+# based on MAKEOPTS.
 
 # @ECLASS_VARIABLE: EXTRA_ESCONS
 # @USER_VARIABLE
@@ -148,11 +148,8 @@ escons() {
                die "EPYTHON unset in escons"
        fi
 
-       # if SCONSOPTS are _unset_, use cleaned MAKEOPTS
-       if [[ ! ${SCONSOPTS+set} ]]; then
-               local SCONSOPTS
-               _scons_clean_makeopts
-       fi
+       # if SCONSOPTS are unset, grab -j from MAKEOPTS
+       : "${SCONSOPTS:=-j$(makeopts_jobs)}"
 
        # pass ebuild environment variables through!
        local -x GENTOO_SCONS_ENV_PASSTHROUGH=1
@@ -161,94 +158,3 @@ escons() {
        echo "${@}" >&2
        "${@}" || die -n "escons failed."
 }
-
-# @FUNCTION: _scons_clean_makeopts
-# @USAGE: [makeflags] [...]
-# @INTERNAL
-# @DESCRIPTION:
-# Strip the supplied makeflags (or ${MAKEOPTS} if called without
-# an argument) of options not supported by SCons and make sure --jobs
-# gets an argument. Output the resulting flag list (suitable
-# for an assignment to SCONSOPTS).
-_scons_clean_makeopts() {
-       local new_makeopts=()
-
-       debug-print-function ${FUNCNAME} "${@}"
-
-       if [[ ${#} -eq 0 ]]; then
-               debug-print "Using MAKEOPTS: [${MAKEOPTS}]"
-               set -- ${MAKEOPTS}
-       else
-               # unquote if necessary
-               set -- ${*}
-       fi
-
-       # empty MAKEOPTS give out empty SCONSOPTS
-       # thus, we do need to worry about the initial setup
-       if [[ ${*} = ${_SCONS_CACHE_MAKEOPTS} ]]; then
-               SCONSOPTS=${_SCONS_CACHE_SCONSOPTS}
-               debug-print "Cache hit: [${SCONSOPTS}]"
-               return
-       fi
-       _SCONS_CACHE_MAKEOPTS=${*}
-
-       while [[ ${#} -gt 0 ]]; do
-               case ${1} in
-                       # clean, simple to check -- we like that
-                       --jobs=*|--keep-going)
-                               new_makeopts+=( ${1} )
-                               ;;
-                       # need to take a look at the next arg and guess
-                       --jobs)
-                               if [[ ${#} -gt 1 && ${2} =~ ^[0-9]+$ ]]; then
-                                       new_makeopts+=( ${1} ${2} )
-                                       shift
-                               else
-                                       # no value means no limit, let's pass a 
default instead
-                                       new_makeopts+=( ${1}=$(( $(get_nproc) + 
1 )) )
-                               fi
-                               ;;
-                       # strip other long options
-                       --*)
-                               ;;
-                       # short option hell
-                       -*)
-                               local str new_optstr
-                               new_optstr=
-                               str=${1#-}
-
-                               while [[ -n ${str} ]]; do
-                                       case ${str} in
-                                               k*)
-                                                       new_optstr+=k
-                                                       ;;
-                                               # -j needs to come last
-                                               j)
-                                                       if [[ ${#} -gt 1 && 
${2} =~ ^[0-9]+$ ]]; then
-                                                               new_optstr+="j 
${2}"
-                                                               shift
-                                                       else
-                                                               new_optstr+="j 
$(( $(get_nproc) + 1 ))"
-                                                       fi
-                                                       ;;
-                                               # otherwise, everything after 
-j is treated as an arg
-                                               j*)
-                                                       new_optstr+=${str}
-                                                       break
-                                                       ;;
-                                       esac
-                                       str=${str#?}
-                               done
-
-                               if [[ -n ${new_optstr} ]]; then
-                                       new_makeopts+=( -${new_optstr} )
-                               fi
-                               ;;
-               esac
-               shift
-       done
-
-       SCONSOPTS=${new_makeopts[*]}
-       _SCONS_CACHE_SCONSOPTS=${SCONSOPTS}
-       debug-print "New SCONSOPTS: [${SCONSOPTS}]"
-}

diff --git a/eclass/tests/scons-utils.sh b/eclass/tests/scons-utils.sh
deleted file mode 100755
index 5f1cd2036047..000000000000
--- a/eclass/tests/scons-utils.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/bash
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-_PYTHON_R1=1
-source tests-common.sh || exit
-
-inherit scons-utils
-
-test-scons_clean_makeopts() {
-       tbegin "scons_clean_makeopts() for ${1}"
-
-       local SCONSOPTS ret=0
-       _scons_clean_makeopts ${1}
-
-       if [[ ${SCONSOPTS} != ${2-${1}} ]]; then
-               eerror "Self-test failed:"
-               eindent
-               eerror "MAKEOPTS: ${1}"
-               eerror "Expected: ${2-${1}}"
-               eerror "Actual: ${SCONSOPTS}"
-               eoutdent
-               ret=1
-       fi
-
-       tend ${ret}
-       return ${ret}
-}
-
-# jobcount expected for non-specified state
-jc=$(( $(get_nproc) + 1 ))
-# failed test counter
-failed=0
-
-# sane MAKEOPTS
-test-scons_clean_makeopts '--jobs=14 -k'
-test-scons_clean_makeopts '--jobs=14 -k'
-test-scons_clean_makeopts '--jobs 15 -k'
-test-scons_clean_makeopts '--jobs=16 --keep-going'
-test-scons_clean_makeopts '-j17 --keep-going'
-test-scons_clean_makeopts '-j 18 --keep-going'
-
-# needing cleaning
-test-scons_clean_makeopts '--jobs -k' "--jobs=${jc} -k"
-test-scons_clean_makeopts '--jobs --keep-going' "--jobs=${jc} --keep-going"
-test-scons_clean_makeopts '-kj' "-kj ${jc}"
-
-# broken by definition (but passed as it breaks make as well)
-test-scons_clean_makeopts '-jk'
-test-scons_clean_makeopts '--jobs=randum'
-test-scons_clean_makeopts '-kjrandum'
-
-# needing stripping
-test-scons_clean_makeopts '--load-average=25 -kj16' '-kj16'
-test-scons_clean_makeopts '--load-average 25 -k -j17' '-k -j17'
-test-scons_clean_makeopts '-j2 HOME=/tmp' '-j2'
-test-scons_clean_makeopts '--jobs funnystuff -k' "--jobs=${jc} -k"
-
-# bug #388961
-test-scons_clean_makeopts '--jobs -l3' "--jobs=${jc}"
-test-scons_clean_makeopts '-j -l3' "-j ${jc}"
-
-texit

Reply via email to