summaryrefslogtreecommitdiff
path: root/dev-build/scons
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-01-17 20:06:58 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-01-17 20:06:58 +0000
commit08c5e4df7a4b66ba8dbb827ca2e3a973d4f19ab0 (patch)
tree347af25df153363454776e1fe95fc4e8100a7e7d /dev-build/scons
parentfc6e577018dec28e18904f9ad5c1417976e3c728 (diff)
gentoo auto-resync : 17:01:2024 - 20:06:58
Diffstat (limited to 'dev-build/scons')
-rw-r--r--dev-build/scons/Manifest13
-rw-r--r--dev-build/scons/files/scons-4.1.0-env-passthrough.patch41
-rw-r--r--dev-build/scons/files/scons-4.2.0-respect-cc-etc.patch96
-rw-r--r--dev-build/scons/metadata.xml20
-rw-r--r--dev-build/scons/scons-4.5.2.ebuild157
-rw-r--r--dev-build/scons/scons-4.6.0-r1.ebuild160
6 files changed, 487 insertions, 0 deletions
diff --git a/dev-build/scons/Manifest b/dev-build/scons/Manifest
new file mode 100644
index 000000000000..e5718cd1d21a
--- /dev/null
+++ b/dev-build/scons/Manifest
@@ -0,0 +1,13 @@
+AUX scons-4.1.0-env-passthrough.patch 1498 BLAKE2B 9aaae51779053518d983c9f028fff58a68a8c3e1213c8a746aad2e6dc6cebf139939dd3fb41a643c5db7e6079e09ad9850e552192e35bc4c8bf75818334b9e0d SHA512 4c5c3364575d95f4922b7c5b3c8f536a34b58136e7a604bc06760d94a8b20c7e8cdfd3100ab8c56e08b885e2e9521f036f4009512b1f1b10aec2785a74119683
+AUX scons-4.2.0-respect-cc-etc.patch 3493 BLAKE2B 3a36a9cced15ef81e671d8a90750afc14650fef564997d250ed63f0d9b1c91361872a8816cab9ba1f0ecae46711414ccac921ded954eff7c51e4161532030e5f SHA512 ce8690a126255047c8efbcad4e75b91fca07b0afac55d818d4f5467a41795394cae8f5d47484519c482bccfdae9c3df1b040689a656098f349629f1f609adbce
+DIST SCons-4.5.2.tar.gz 3194724 BLAKE2B c27d00e4bc319e3b8d5d35d50d5f03df15e2b72256e26000299ac95c5bdaffbe850942df9e3c23a6b0dbf55ea000f768a7938cfedc451cc7bd3e2a521292d49e SHA512 a9675f4b4dbedf8c7375d4d099216cd935c38944d57b0a08de2b9c133bb53184de0d5803edf5cb9f800f205b1252ceca3aaf33a10bf5d8b48eacd58866cf776c
+DIST SCons-4.6.0.tar.gz 3230138 BLAKE2B adef2ad5394404ae48d85e8c2a91b5af29e4f9bfa7455504ac1cb8d22d9a05c9ace823e02c8e7a32b34dee281635987487ad43ca94c6adea8e287b086a0732f0 SHA512 c7dc952117c23ac30b8cf1f70ef0c4ad1c0a86c9865fd255fde1a29ea2fbf9e26573b73430f6adc8c545dab753077f380d29d77ac4eede7fce959c86576d2354
+DIST scons-4.5.2-user.html 1655168 BLAKE2B dab0b29ae7bdadc96b9081d1d9e1d8b29cc62afb39f3161e4b7694b3e58a31e82446319f3efc560fdbe2c3a37b902c79c74d15a790c865ec3c6d27811f0443fe SHA512 6f2c74d15dca903d500bebe33f0af6b90ca1458c3796048077d411b2c269013696036c7e9ae8b1f300f37c05dd6246f8b12d35b503f9018f002b9d01fea22ba9
+DIST scons-4.5.2-user.pdf 3023818 BLAKE2B b67e2ca3326b5e9ec2cdb530b22d347072e9c906678509a21aae1622487054d4aa3446beb599dd52cd93ad769a5b325dd101356ea88baedba907c931e0acc792 SHA512 172f494fd5e73f654adf9c137bd09f74f57bd2ef17dbd0f02c66aea49798a3fb136f176ee85fc7432378af49e28cbb498e830e519df74652533ecb9f3e52ecf9
+DIST scons-4.5.2.gh.tar.gz 5844800 BLAKE2B c0f42994a178bb0fb329cfa05328bdae89b374a33a7806276e7529a81b37a4ea9f52d07fb2afc55adbe3c1e00661ea3c3d53e981be4a8a095079fc35403328f1 SHA512 aa788d9365a8b5119fef404869562f61cb854be7ceadb5f5d47523e262c07f93ea7476166b577edec25339a64dc6a1f4a6f391fa5aeeab3f086a6659fc72e1ce
+DIST scons-4.6.0-user.html 1670870 BLAKE2B 0c84248791bdce093cce4d45b525357aeb3ae69835337000d753b007dc77053d63e70363b3d73c3e7c8157b24d50f0a0216ea9993d90bb298ba2591d6fce4cb4 SHA512 5b8a2626bca361dbce1b0b40f6009752b2dbde7e1f5886b449b9015514951b2e998ede0582876411e7cde56b4ea05546e2db8a8fdcada349c39a126c2e50be1a
+DIST scons-4.6.0-user.pdf 3058220 BLAKE2B 3a04e1c0fab47f2a1327f20d3ee500d7861599dc31b0007dd196173af5b880d9737ff528b419896e905cae5a5744c74ef38c2b29bc7945ef4157a79c1c6dabe9 SHA512 6a5ca9cdede81ec9536bb32d7df157fd1efd4b3e3f5afa386b7ecaa45d1fc212015673ccec5ab3283475ab0ee6ef001c111f51b7d3bb64dda664e61d11cbaec0
+DIST scons-4.6.0.gh.tar.gz 5891032 BLAKE2B 9aeda2ef899dcaf5bc7ca3bc77c0615544f2308f56ef095ad835d5cc748355b467a905ec737eef61a4afd183ff0f041dc244bdd58858ba3abc4f3a4efd9f8dc7 SHA512 d7dd30bbc94ec014b12b37a106aa536dd5c8b16e9f1605b68cad6721cf6e3959add1f75a42693fd8499734ca19eb76f648800d7cc8081fe334282841cd406954
+EBUILD scons-4.5.2.ebuild 4534 BLAKE2B 05926c7da2cabd75c87b904b08c2cc12f18f9f67e09e78c67e674baa67ec62b8bcdbaa7517b9155dd594b1c369686d3796363407149b670c23abf1c3275211c4 SHA512 b6a4ec9877d0ef18ed45aefafb77da71128b941540c3ff9929db07d709c0c019fd7ae2fbf29bf1d5a5c902a23fbfc66fe0cf4ac318da5c53db5d2e640834e0f6
+EBUILD scons-4.6.0-r1.ebuild 4608 BLAKE2B 1145b083da2e3e562d58dd10da6a2ea0f9e8146bd84eecf2f819776131bd29205c542ade92ead5369ceae474933a1fce606c2ba359fecd1484771b17e7ba78be SHA512 c001e31e7f9f97e171d6f9a94378444a65da89bedeaa75bc7e2df69b94eedde996a574f3d2e815a5b3ead85e5cbfda5e792ae88774967e2066dd846cad4ef900
+MISC metadata.xml 803 BLAKE2B 17a1596fb7b6991a9c4732c8e8c1231cd57ba42ae9e0b65a475f4a00503bacba23ae671df112909688574f836962951dcd2fd7a35bc83c34a0eeb72ecb96bbc2 SHA512 c1451442bdf49d7c85cc84831ea3a8a540581680858dc1ac117080b6a8558419d004952ade0410c0b31d9d241ae3d5eef1c81525ecb80c40cdc380b50f49e1ad
diff --git a/dev-build/scons/files/scons-4.1.0-env-passthrough.patch b/dev-build/scons/files/scons-4.1.0-env-passthrough.patch
new file mode 100644
index 000000000000..06ec2f217611
--- /dev/null
+++ b/dev-build/scons/files/scons-4.1.0-env-passthrough.patch
@@ -0,0 +1,41 @@
+From fb07dc4b4fa178b0c424c5f400b18669abd8960e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 9 May 2018 17:04:49 +0200
+Subject: [PATCH] posix: Support GENTOO_SCONS_ENV_PASSTHROUGH=1
+
+Support GENTOO_SCONS_ENV_PASSTHROUGH=1 variable to override the default
+of wiping the environment and resetting PATH to default, and instead
+pass all variables through.
+---
+ SCons/Platform/posix.py | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/SCons/Platform/posix.py b/SCons/Platform/posix.py
+index 4c9f8f9ba..fbc81196d 100644
+--- a/src/SCons/Platform/posix.py
++++ b/src/SCons/Platform/posix.py
+@@ -82,9 +82,18 @@ def generate(env):
+ pspawn = piped_env_spawn
+ # Note that this means that 'escape' is no longer used
+
+- if 'ENV' not in env:
+- env['ENV'] = {}
+- env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin'
++ # Force pass-through of environment variables in Gentoo builds
++ import os
++ if os.environ.get('GENTOO_SCONS_ENV_PASSTHROUGH', False):
++ new_env = os.environ.copy()
++ if 'ENV' in env:
++ new_env.update(env['ENV'])
++ env['ENV'] = new_env
++ else:
++ if 'ENV' not in env:
++ env['ENV'] = {}
++ env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin'
++
+ env['OBJPREFIX'] = ''
+ env['OBJSUFFIX'] = '.o'
+ env['SHOBJPREFIX'] = '$OBJPREFIX'
+--
+2.30.0
+
diff --git a/dev-build/scons/files/scons-4.2.0-respect-cc-etc.patch b/dev-build/scons/files/scons-4.2.0-respect-cc-etc.patch
new file mode 100644
index 000000000000..a075fec91d22
--- /dev/null
+++ b/dev-build/scons/files/scons-4.2.0-respect-cc-etc.patch
@@ -0,0 +1,96 @@
+From b6ba1f2b1feda529eca20fb8980f7c6c52397df6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Thu, 10 May 2018 08:01:08 +0200
+Subject: [PATCH] posix: Also force common toolchain vars for Gentoo
+
+---
+ SCons/Platform/posix.py | 21 +++++++++++++++++++++
+ SCons/Tool/cc.py | 3 ++-
+ SCons/Tool/cxx.py | 3 ++-
+ SCons/Tool/link.py | 3 ++-
+ 4 files changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/src/SCons/Platform/posix.py b/src/SCons/Platform/posix.py
+index 37cd2377f..1246781de 100644
+--- a/src/SCons/Platform/posix.py
++++ b/src/SCons/Platform/posix.py
+@@ -33,6 +33,7 @@ import subprocess
+ from SCons.Platform import TempFileMunge
+ from SCons.Platform.virtualenv import ImportVirtualenv
+ from SCons.Platform.virtualenv import ignore_virtualenv, enable_virtualenv
++import SCons.Util
+
+ exitvalmap = {
+ 2 : 127,
+@@ -86,6 +87,26 @@ def generate(env):
+ if 'ENV' in env:
+ new_env.update(env['ENV'])
+ env['ENV'] = new_env
++
++ # Furthermore, force common compiler/linker variables as well
++ envvar_mapping = {
++ 'AR': 'AR',
++ 'AS': 'AS',
++ 'ASFLAGS': 'ASFLAGS',
++ 'CC': 'CC',
++ 'CXX': 'CXX',
++ 'CFLAGS': 'CFLAGS',
++ 'CXXFLAGS': 'CXXFLAGS',
++ 'CPPFLAGS': 'CPPFLAGS',
++ 'LDFLAGS': 'LINKFLAGS',
++ }
++
++ for envvar, toolvar in envvar_mapping.items():
++ if toolvar not in env and envvar in env['ENV']:
++ val = env['ENV'][envvar]
++ if toolvar.endswith('FLAGS'):
++ val = SCons.Util.CLVar(val)
++ env[toolvar] = val
+ else:
+ if 'ENV' not in env:
+ env['ENV'] = {}
+diff --git a/src/SCons/Tool/cc.py b/src/SCons/Tool/cc.py
+index 590ec5fd3..5f9229a02 100644
+--- a/src/SCons/Tool/cc.py
++++ b/src/SCons/Tool/cc.py
+@@ -80,7 +80,8 @@ def generate(env):
+
+ if 'CC' not in env:
+ env['CC'] = env.Detect(compilers) or compilers[0]
+- env['CFLAGS'] = SCons.Util.CLVar('')
++ if 'CFLAGS' not in env:
++ env['CFLAGS'] = SCons.Util.CLVar('')
+ env['CCCOM'] = '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
+ env['SHCC'] = '$CC'
+ env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS')
+diff --git a/src/SCons/Tool/cxx.py b/src/SCons/Tool/cxx.py
+index 128cdc4f6..1f852b64c 100644
+--- a/src/SCons/Tool/cxx.py
++++ b/src/SCons/Tool/cxx.py
+@@ -69,7 +69,8 @@ def generate(env):
+
+ if 'CXX' not in env:
+ env['CXX'] = env.Detect(compilers) or compilers[0]
+- env['CXXFLAGS'] = SCons.Util.CLVar('')
++ if 'CXXFLAGS' not in env:
++ env['CXXFLAGS'] = SCons.Util.CLVar('')
+ env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
+ env['SHCXX'] = '$CXX'
+ env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
+diff --git a/src/SCons/Tool/link.py b/src/SCons/Tool/link.py
+index 24d17a31f..4ea9917e8 100644
+--- a/src/SCons/Tool/link.py
++++ b/src/SCons/Tool/link.py
+@@ -49,7 +49,8 @@ def generate(env):
+
+ env['SMARTLINK'] = smart_link
+ env['LINK'] = "$SMARTLINK"
+- env['LINKFLAGS'] = SCons.Util.CLVar('')
++ if 'LINKFLAGS' not in env:
++ env['LINKFLAGS'] = SCons.Util.CLVar('')
+
+ # __RPATH is only set to something ($_RPATH typically) on platforms that support it.
+ env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
+--
+2.32.0
+
diff --git a/dev-build/scons/metadata.xml b/dev-build/scons/metadata.xml
new file mode 100644
index 000000000000..aacbf74f7fb9
--- /dev/null
+++ b/dev-build/scons/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mgorny@gentoo.org</email>
+ <name>Michał Górny</name>
+ </maintainer>
+ <longdescription lang="en">
+ SCons is a make replacement providing a range of enhanced
+ features such as automated dependency generation and built in
+ compilation cache support. SCons rule sets are Python scripts so
+ as well as the features it provides itself SCons allows you to use
+ the full power of Python to control compilation.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">SCons/scons</remote-id>
+ <remote-id type="pypi">SCons</remote-id>
+ <remote-id type="sourceforge">scons</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-build/scons/scons-4.5.2.ebuild b/dev-build/scons/scons-4.5.2.ebuild
new file mode 100644
index 000000000000..e62d6e75bd0b
--- /dev/null
+++ b/dev-build/scons/scons-4.5.2.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 multiprocessing
+
+MY_P="SCons-${PV}"
+DESCRIPTION="Extensible Python-based build utility"
+HOMEPAGE="
+ https://www.scons.org/
+ https://github.com/SCons/scons/
+ https://pypi.org/project/SCons/
+"
+SRC_URI="
+ https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/${MY_P}.tar.gz
+ doc? (
+ https://www.scons.org/doc/${PV}/PDF/${PN}-user.pdf
+ -> ${P}-user.pdf
+ https://www.scons.org/doc/${PV}/HTML/${PN}-user.html
+ -> ${P}-user.html
+ )
+ test? (
+ https://github.com/SCons/scons/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+src_unpack() {
+ # use the git directory structure, then unpack the pypi tarball
+ # on top of it to make our life easier
+ if use test; then
+ unpack "${P}.gh.tar.gz"
+ else
+ mkdir -p "${P}" || die
+ fi
+
+ tar -C "${P}" --strip-components=1 --no-same-owner \
+ -xzf "${DISTDIR}/${MY_P}.tar.gz" || die
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # TODO: rebase the patches <4.5.1-r2 is gone
+ # support env passthrough for Gentoo ebuilds
+ eapply -p2 "${FILESDIR}"/scons-4.1.0-env-passthrough.patch
+ # respect CC, CXX, C*FLAGS, LDFLAGS by default
+ eapply -p2 "${FILESDIR}"/scons-4.2.0-respect-cc-etc.patch
+
+ if use test; then
+ local remove_tests=(
+ # TODO: does not respect PATH?
+ test/Clang
+ # broken
+ test/DVIPDF/DVIPDFFLAGS.py
+ test/Java/swig-dependencies.py
+ test/Java/multi-step.py
+ test/TEX/newglossary.py
+ test/TEX/variant_dir_newglossary.py
+ test/Configure/option--config.py
+ # broken by commas in date, sic!
+ test/option/option-v.py
+ test/Interactive/version.py
+ # warnings from new binutils?
+ test/AS/as-live.py
+ test/AS/nasm.py
+ # hangs
+ test/KeyboardInterrupt.py
+ # requires f77 executable
+ test/Fortran/F77PATH.py
+ test/Fortran/FORTRANPATH.py
+ test/Fortran/gfortran.py
+ # TODO, these seem to be caused by our patches
+ test/Repository/include.py
+ test/Repository/multi-dir.py
+ test/Repository/variants.py
+ test/virtualenv/activated/option/ignore-virtualenv.py
+ # broken by CC being set? *facepalm*
+ test/LINK/applelink.py
+ test/ToolSurrogate.py
+ # no clue but why would we care about rpm?
+ test/packaging/option--package-type.py
+ test/packaging/rpm/cleanup.py
+ test/packaging/rpm/internationalization.py
+ test/packaging/rpm/multipackage.py
+ test/packaging/rpm/package.py
+ test/packaging/rpm/tagging.py
+ # apparently fragile to... limits?
+ # https://bugs.gentoo.org/908347#c7
+ test/builderrors.py
+ )
+
+ if ! use amd64 && ! use x86 ; then
+ # These tests are currently broken on arm and other non-amd64/x86 platforms
+ # Work seems to be ongoing in e.g. https://github.com/SCons/scons/pull/4022 to
+ # better plumb up the MSVC tests for alternative arches.
+ # Try again after 4.2.0.
+ # See also: https://pairlist4.pair.net/pipermail/scons-users/2020-November/008452.html
+ # bug #757534
+ remove_tests+=(
+ test/MSVS/vs-7.0-scc-files.py
+ test/MSVS/vs-7.0-scc-legacy-files.py
+ test/MSVS/vs-7.1-scc-files.py
+ test/MSVS/vs-7.1-scc-legacy-files.py
+ test/MSVS/vs-scc-files.py
+ test/MSVS/vs-scc-legacy-files.py
+ )
+ fi
+
+ rm -r "${remove_tests[@]}" || die
+ fi
+}
+
+python_test() {
+ local -x COLUMNS=80
+ # set variable from escons() of scons-util.eclass to make env-passthrough patch work within test env
+ local -x GENTOO_SCONS_ENV_PASSTHROUGH=1
+ # unset some env variables to pass appropriate tests
+ unset AR AS ASFLAGS CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+ cd "${WORKDIR}/${P}" || die
+ "${EPYTHON}" runtest.py -a --passed \
+ -j "$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")"
+
+ # runtest.py script returns "0" if all tests are passed
+ # and returns "2" if there are any tests with "no result"
+ # (i.e. in case if some tools are not installed or it's Windows specific tests)
+ [[ ${?} == [02] ]] || die "Tests fail with ${EPYTHON}"
+
+ # sigh
+ rm "${BUILD_DIR}/install/usr/bin/.sconsign" || die
+}
+
+python_install_all() {
+ rm "${ED}"/usr/*.1 || die
+ distutils-r1_python_install_all
+
+ doman *.1
+ use doc && dodoc "${DISTDIR}/${P}"-user.{pdf,html}
+}
diff --git a/dev-build/scons/scons-4.6.0-r1.ebuild b/dev-build/scons/scons-4.6.0-r1.ebuild
new file mode 100644
index 000000000000..acf4b5429a1a
--- /dev/null
+++ b/dev-build/scons/scons-4.6.0-r1.ebuild
@@ -0,0 +1,160 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 multiprocessing
+
+MY_P="SCons-${PV}"
+DESCRIPTION="Extensible Python-based build utility"
+HOMEPAGE="
+ https://www.scons.org/
+ https://github.com/SCons/scons/
+ https://pypi.org/project/SCons/
+"
+SRC_URI="
+ https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/${MY_P}.tar.gz
+ doc? (
+ https://www.scons.org/doc/${PV}/PDF/${PN}-user.pdf
+ -> ${P}-user.pdf
+ https://www.scons.org/doc/${PV}/HTML/${PN}-user.html
+ -> ${P}-user.html
+ )
+ test? (
+ https://github.com/SCons/scons/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+src_unpack() {
+ # use the git directory structure, then unpack the pypi tarball
+ # on top of it to make our life easier
+ if use test; then
+ unpack "${P}.gh.tar.gz"
+ else
+ mkdir -p "${P}" || die
+ fi
+
+ tar -C "${P}" --strip-components=1 --no-same-owner \
+ -xzf "${DISTDIR}/${MY_P}.tar.gz" || die
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # fixed in .post1 release
+ rm -r SCons/Tool/docbook/__pycache__ || die
+
+ # TODO: rebase the patches <4.5.1-r2 is gone
+ # support env passthrough for Gentoo ebuilds
+ eapply -p2 "${FILESDIR}"/scons-4.1.0-env-passthrough.patch
+ # respect CC, CXX, C*FLAGS, LDFLAGS by default
+ eapply -p2 "${FILESDIR}"/scons-4.2.0-respect-cc-etc.patch
+
+ if use test; then
+ local remove_tests=(
+ # TODO: does not respect PATH?
+ test/Clang
+ # broken
+ test/DVIPDF/DVIPDFFLAGS.py
+ test/Java/swig-dependencies.py
+ test/Java/multi-step.py
+ test/TEX/newglossary.py
+ test/TEX/variant_dir_newglossary.py
+ test/Configure/option--config.py
+ # broken by commas in date, sic!
+ test/option/option-v.py
+ test/Interactive/version.py
+ # warnings from new binutils?
+ test/AS/as-live.py
+ test/AS/nasm.py
+ # hangs
+ test/KeyboardInterrupt.py
+ # requires f77 executable
+ test/Fortran/F77PATH.py
+ test/Fortran/FORTRANPATH.py
+ test/Fortran/gfortran.py
+ # TODO, these seem to be caused by our patches
+ test/Repository/include.py
+ test/Repository/multi-dir.py
+ test/Repository/variants.py
+ test/virtualenv/activated/option/ignore-virtualenv.py
+ # broken by CC being set? *facepalm*
+ test/LINK/applelink.py
+ test/ToolSurrogate.py
+ # no clue but why would we care about rpm?
+ test/packaging/option--package-type.py
+ test/packaging/rpm/cleanup.py
+ test/packaging/rpm/internationalization.py
+ test/packaging/rpm/multipackage.py
+ test/packaging/rpm/package.py
+ test/packaging/rpm/tagging.py
+ # apparently fragile to... limits?
+ # https://bugs.gentoo.org/908347#c7
+ test/builderrors.py
+ )
+
+ if ! use amd64 && ! use x86 ; then
+ # These tests are currently broken on arm and other non-amd64/x86 platforms
+ # Work seems to be ongoing in e.g. https://github.com/SCons/scons/pull/4022 to
+ # better plumb up the MSVC tests for alternative arches.
+ # Try again after 4.2.0.
+ # See also: https://pairlist4.pair.net/pipermail/scons-users/2020-November/008452.html
+ # bug #757534
+ remove_tests+=(
+ test/MSVS/vs-7.0-scc-files.py
+ test/MSVS/vs-7.0-scc-legacy-files.py
+ test/MSVS/vs-7.1-scc-files.py
+ test/MSVS/vs-7.1-scc-legacy-files.py
+ test/MSVS/vs-scc-files.py
+ test/MSVS/vs-scc-legacy-files.py
+ )
+ fi
+
+ rm -r "${remove_tests[@]}" || die
+ fi
+}
+
+python_test() {
+ local -x COLUMNS=80
+ # set variable from escons() of scons-util.eclass to make env-passthrough patch work within test env
+ local -x GENTOO_SCONS_ENV_PASSTHROUGH=1
+ # unset some env variables to pass appropriate tests
+ unset AR AS ASFLAGS CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+ cd "${WORKDIR}/${P}" || die
+ "${EPYTHON}" runtest.py -a --passed \
+ -j "$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")"
+
+ # runtest.py script returns "0" if all tests are passed
+ # and returns "2" if there are any tests with "no result"
+ # (i.e. in case if some tools are not installed or it's Windows specific tests)
+ [[ ${?} == [02] ]] || die "Tests fail with ${EPYTHON}"
+
+ # sigh
+ rm "${BUILD_DIR}/install/usr/bin/.sconsign" || die
+}
+
+python_install_all() {
+ rm "${ED}"/usr/*.1 || die
+ distutils-r1_python_install_all
+
+ doman *.1
+ use doc && dodoc "${DISTDIR}/${P}"-user.{pdf,html}
+}