From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1456844-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id B7948158020
	for <garchives@archives.gentoo.org>; Tue, 15 Nov 2022 16:34:59 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id F2875E0A6F;
	Tue, 15 Nov 2022 16:34:58 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id DBF44E0A6F
	for <gentoo-commits@lists.gentoo.org>; Tue, 15 Nov 2022 16:34:58 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 210B1340ECD
	for <gentoo-commits@lists.gentoo.org>; Tue, 15 Nov 2022 16:34:58 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 20B3D755
	for <gentoo-commits@lists.gentoo.org>; Tue, 15 Nov 2022 16:34:55 +0000 (UTC)
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" <mgorny@gentoo.org>
Message-ID: <1668530046.95a6dff78a57dde2133dba050d16cae2c5113b23.mgorny@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/tests/, eclass/
X-VCS-Repository: repo/gentoo
X-VCS-Files: eclass/scons-utils.eclass eclass/tests/scons-utils.sh
X-VCS-Directories: eclass/tests/ eclass/
X-VCS-Committer: mgorny
X-VCS-Committer-Name: Michał Górny
X-VCS-Revision: 95a6dff78a57dde2133dba050d16cae2c5113b23
X-VCS-Branch: master
Date: Tue, 15 Nov 2022 16:34:55 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 4c508958-c2de-4629-8de8-c206fd364ee8
X-Archives-Hash: d5ef05777128a6b8ad07efd943452f4f

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