summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-02-02 01:39:05 +0000
committerV3n3RiX <venerix@koprulu.sector>2022-02-02 01:39:05 +0000
commitfcc5224904648a8e6eb528d7603154160a20022f (patch)
tree3bfce096b38a9cea8eed13fc70c1526c456e9abd /eclass
parent2fd57282f0262ca084e05b0f2c63fbada395d02b (diff)
gentoo resync : 02.02.2022
Diffstat (limited to 'eclass')
-rw-r--r--eclass/Manifest.gzbin36216 -> 36171 bytes
-rw-r--r--eclass/autotools.eclass34
-rw-r--r--eclass/bazel.eclass8
-rw-r--r--eclass/common-lisp-3.eclass8
-rw-r--r--eclass/dist-kernel-utils.eclass4
-rw-r--r--eclass/distutils-r1.eclass221
-rw-r--r--eclass/flag-o-matic.eclass52
-rw-r--r--eclass/go-module.eclass2
-rw-r--r--eclass/java-utils-2.eclass3
-rw-r--r--eclass/java-virtuals-2.eclass6
-rw-r--r--eclass/java-vm-2.eclass6
-rw-r--r--eclass/llvm.org.eclass10
-rw-r--r--eclass/out-of-source.eclass12
-rw-r--r--eclass/python-any-r1.eclass4
-rw-r--r--eclass/python-r1.eclass2
-rw-r--r--eclass/python-single-r1.eclass2
-rw-r--r--eclass/python-utils-r1.eclass13
-rw-r--r--eclass/sgml-catalog-r1.eclass18
-rw-r--r--eclass/texlive-common.eclass6
-rw-r--r--eclass/toolchain.eclass133
-rw-r--r--eclass/user-info.eclass8
-rw-r--r--eclass/user.eclass14
-rw-r--r--eclass/usr-ldscript.eclass12
-rw-r--r--eclass/vcs-clean.eclass20
-rw-r--r--eclass/vcs-snapshot.eclass19
25 files changed, 377 insertions, 240 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz
index 27cc36b531a2..59246ceb6c5b 100644
--- a/eclass/Manifest.gz
+++ b/eclass/Manifest.gz
Binary files differ
diff --git a/eclass/autotools.eclass b/eclass/autotools.eclass
index 95c92cc6df8c..85be205c1032 100644
--- a/eclass/autotools.eclass
+++ b/eclass/autotools.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: autotools.eclass
@@ -74,7 +74,7 @@ inherit gnuconfig libtool
# Do NOT change this variable in your ebuilds!
# If you want to force a newer minor version, you can specify the correct
# WANT value by using a colon: <PV>:<WANT_AUTOMAKE>
-_LATEST_AUTOMAKE=( 1.16.2-r1:1.16 )
+_LATEST_AUTOMAKE=( 1.16.4:1.16 )
_automake_atom="sys-devel/automake"
_autoconf_atom="sys-devel/autoconf"
@@ -95,7 +95,7 @@ if [[ -n ${WANT_AUTOCONF} ]] ; then
none) _autoconf_atom="" ;; # some packages don't require autoconf at all
2.1) _autoconf_atom="~sys-devel/autoconf-2.13" ;;
# if you change the "latest" version here, change also autotools_env_setup
- latest|2.5) _autoconf_atom=">=sys-devel/autoconf-2.69" ;;
+ latest|2.5) _autoconf_atom=">=sys-devel/autoconf-2.71" ;;
*) die "Invalid WANT_AUTOCONF value '${WANT_AUTOCONF}'" ;;
esac
export WANT_AUTOCONF
@@ -332,8 +332,26 @@ eaclocal_amflags() {
# They also force installing the support files for safety.
# Respects AT_M4DIR for additional directories to search for macros.
eaclocal() {
+ # Feed in a list of paths:
+ # - ${BROOT}/usr/share/aclocal
+ # - ${ESYSROOT}/usr/share/aclocal
+ # See bug #677002
+ if [[ ${EAPI} != [56] ]] ; then
+ if [[ ! -f "${T}"/aclocal/dirlist ]] ; then
+ mkdir "${T}"/aclocal || die
+ cat <<- EOF > "${T}"/aclocal/dirlist || die
+ ${BROOT}/usr/share/aclocal
+ ${ESYSROOT}/usr/share/aclocal
+ EOF
+ fi
+
+ local system_acdir=" --system-acdir=${T}/aclocal"
+ else
+ local system_acdir=""
+ fi
+
[[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && \
- autotools_run_tool --at-m4flags aclocal "$@" $(eaclocal_amflags)
+ autotools_run_tool --at-m4flags aclocal "$@" $(eaclocal_amflags) ${system_acdir}
}
# @FUNCTION: _elibtoolize
@@ -510,7 +528,7 @@ autotools_env_setup() {
[[ ${WANT_AUTOMAKE} == "latest" ]] && \
die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE[*]}"
fi
- [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5
+ [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.71
}
# @FUNCTION: autotools_run_tool
@@ -666,12 +684,6 @@ autotools_m4sysdir_include() {
# First try to use the paths the system integrator has set up.
local paths=( $(eval echo ${AT_SYS_M4DIR}) )
- if [[ ${#paths[@]} -eq 0 && -n ${SYSROOT} ]] ; then
- # If they didn't give us anything, then default to the SYSROOT.
- # This helps when cross-compiling.
- local path="${SYSROOT}/usr/share/aclocal"
- [[ -d ${path} ]] && paths+=( "${path}" )
- fi
_autotools_m4dir_include "${paths[@]}"
}
diff --git a/eclass/bazel.eclass b/eclass/bazel.eclass
index 9e09255fd66f..8ae405c6941c 100644
--- a/eclass/bazel.eclass
+++ b/eclass/bazel.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: bazel.eclass
@@ -17,7 +17,7 @@ case "${EAPI:-0}" in
0|1|2|3|4|5|6)
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
- 7)
+ 7|8)
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
@@ -28,7 +28,9 @@ if [[ ! ${_BAZEL_ECLASS} ]]; then
inherit multiprocessing toolchain-funcs
-BDEPEND=">=dev-util/bazel-0.20"
+if [[ ${CATEGORY}/${PN} != "dev-util/bazel" ]]; then
+ BDEPEND=">=dev-util/bazel-0.20"
+fi
# @FUNCTION: bazel_get_flags
# @DESCRIPTION:
diff --git a/eclass/common-lisp-3.eclass b/eclass/common-lisp-3.eclass
index 91752dcacc9b..78f18f5231fa 100644
--- a/eclass/common-lisp-3.eclass
+++ b/eclass/common-lisp-3.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: common-lisp-3.eclass
@@ -167,13 +167,11 @@ common-lisp-install-asdf() {
# @FUNCTION: common-lisp-3_src_install
# @DESCRIPTION:
-# Recursively install Lisp sources, asdf files and most common doc files.
+# Recursively install Lisp sources, asdf files and doc files.
common-lisp-3_src_install() {
common-lisp-install-sources .
common-lisp-install-asdf
- for i in AUTHORS README* HEADER TODO* CHANGELOG Change[lL]og CHANGES BUGS CONTRIBUTORS *NEWS* ; do
- [[ -f ${i} ]] && dodoc ${i}
- done
+ einstalldocs
}
# @FUNCTION: common-lisp-find-lisp-impl
diff --git a/eclass/dist-kernel-utils.eclass b/eclass/dist-kernel-utils.eclass
index f514a3da65a9..71c96a37e642 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -1,4 +1,4 @@
-# Copyright 2020-2021 Gentoo Authors
+# Copyright 2020-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: dist-kernel-utils.eclass
@@ -72,7 +72,7 @@ dist-kernel_get_image_path() {
arm)
echo arch/arm/boot/zImage
;;
- ppc|ppc64)
+ hppa|ppc|ppc64)
# https://www.kernel.org/doc/html/latest/powerpc/bootwrapper.html
# ./ is required because of ${image_path%/*}
# substitutions in the code
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 200360510f80..2b5acb09d926 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -42,7 +42,7 @@
# relevant to the packages using distutils-r1.
#
# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# https://projects.gentoo.org/python/guide/
case "${EAPI:-0}" in
[0-5])
@@ -128,6 +128,24 @@ esac
# It is available only in non-PEP517 mode. It needs to be set before
# the inherit line.
+# @ECLASS-VARIABLE: DISTUTILS_DEPS
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# This is an eclass-generated build-time dependency string for the build
+# system packages. This string is automatically appended to BDEPEND
+# unless DISTUTILS_OPTIONAL is used. This variable is available only
+# in PEP 517 mode.
+#
+# Example use:
+# @CODE
+# DISTUTILS_OPTIONAL=1
+# # ...
+# RDEPEND="${PYTHON_DEPS}"
+# BDEPEND="
+# ${PYTHON_DEPS}
+# ${DISTUTILS_DEPS}"
+# @CODE
+
if [[ ! ${_DISTUTILS_R1} ]]; then
[[ ${EAPI} == 6 ]] && inherit eutils xdg-utils
@@ -156,8 +174,8 @@ _distutils_set_globals() {
# installer is used to install the wheel
# tomli is used to read build-backend from pyproject.toml
- bdep+='
- >=dev-python/installer-0.4.0_p20220115[${PYTHON_USEDEP}]
+ bdep='
+ >=dev-python/installer-0.4.0_p20220124[${PYTHON_USEDEP}]
dev-python/tomli[${PYTHON_USEDEP}]'
case ${DISTUTILS_USE_PEP517} in
flit)
@@ -183,6 +201,11 @@ _distutils_set_globals() {
die "Unknown DISTUTILS_USE_PEP517=${DISTUTILS_USE_PEP517}"
;;
esac
+ elif [[ ${DISTUTILS_OPTIONAL} ]]; then
+ if [[ ${DISTUTILS_USE_SETUPTOOLS} ]]; then
+ eqawarn "QA Notice: DISTUTILS_USE_SETUPTOOLS is not used when DISTUTILS_OPTIONAL"
+ eqawarn "is enabled."
+ fi
else
local setuptools_dep='>=dev-python/setuptools-42.0.2[${PYTHON_USEDEP}]'
@@ -213,15 +236,31 @@ _distutils_set_globals() {
[[ -n ${rdep} ]] && rdep="$(python_gen_cond_dep "${rdep}")"
fi
- RDEPEND="${PYTHON_DEPS} ${rdep}"
- if [[ ${EAPI} != 6 ]]; then
- BDEPEND="${PYTHON_DEPS} ${bdep}"
- else
- DEPEND="${PYTHON_DEPS} ${bdep}"
+ if [[ ${DISTUTILS_USE_PEP517} ]]; then
+ if [[ ${DISTUTILS_DEPS+1} ]]; then
+ if [[ ${DISTUTILS_DEPS} != "${bdep}" ]]; then
+ eerror "DISTUTILS_DEPS have changed between inherits!"
+ eerror "Before: ${DISTUTILS_DEPS}"
+ eerror "Now : ${bdep}"
+ die "DISTUTILS_DEPS integrity check failed"
+ fi
+ else
+ DISTUTILS_DEPS=${bdep}
+ readonly DISTUTILS_DEPS
+ fi
+ fi
+
+ if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
+ RDEPEND="${PYTHON_DEPS} ${rdep}"
+ if [[ ${EAPI} != 6 ]]; then
+ BDEPEND="${PYTHON_DEPS} ${bdep}"
+ else
+ DEPEND="${PYTHON_DEPS} ${bdep}"
+ fi
+ REQUIRED_USE=${PYTHON_REQUIRED_USE}
fi
- REQUIRED_USE=${PYTHON_REQUIRED_USE}
}
-[[ ! ${DISTUTILS_OPTIONAL} ]] && _distutils_set_globals
+_distutils_set_globals
unset -f _distutils_set_globals
# @ECLASS-VARIABLE: PATCHES
@@ -544,6 +583,9 @@ esetup.py() {
if [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]]; then
setup_py=( -m pyproject2setuppy )
elif [[ ! -f setup.py ]]; then
+ if [[ ! -f setup.cfg ]]; then
+ die "${FUNCNAME}: setup.py nor setup.cfg not found"
+ fi
setup_py=( -c "from setuptools import setup; setup()" )
fi
@@ -862,13 +904,13 @@ _distutils-r1_backend_to_key() {
local backend=${1}
case ${backend} in
- flit_core.buildapi)
+ flit_core.buildapi|flit.buildapi)
echo flit
;;
pdm.pep517.api)
echo pdm
;;
- poetry.core.masonry.api)
+ poetry.core.masonry.api|poetry.masonry.api)
echo poetry
;;
setuptools.build_meta|setuptools.build_meta:__legacy__)
@@ -950,9 +992,30 @@ distutils-r1_python_compile() {
eerror "(backend: ${build_backend})"
die "DISTUTILS_USE_PEP517 value incorrect"
fi
+
+ # fix deprecated backends up
+ local new_backend=
+ case ${build_backend} in
+ flit.buildapi)
+ new_backend=flit_core.buildapi
+ ;;
+ poetry.masonry.api)
+ new_backend=poetry.core.masonry.api
+ ;;
+ esac
+
+ if [[ -n ${new_backend} ]]; then
+ if [[ ! ${_DISTUTILS_DEPRECATED_BACKEND_WARNED} ]]; then
+ eqawarn "${build_backend} backend is deprecated. Please see:"
+ eqawarn "https://projects.gentoo.org/python/guide/distutils.html#deprecated-pep-517-backends"
+ eqawarn "The eclass will be using ${new_backend} instead."
+ _DISTUTILS_DEPRECATED_BACKEND_WARNED=1
+ fi
+ build_backend=${new_backend}
+ fi
fi
- einfo "Building a wheel via ${build_backend}"
+ einfo " Building the wheel via ${build_backend}"
"${EPYTHON}" -c "import ${build_backend%:*}; \
import os; \
${build_backend/:/.}.build_wheel(os.environ['WHEEL_BUILD_DIR'])" ||
@@ -964,6 +1027,7 @@ distutils-r1_python_compile() {
fi
local root=${BUILD_DIR}/install
+ einfo " Installing the wheel to ${root}"
# NB: --compile-bytecode does not produce the correct paths,
# and python_optimize doesn't handle being called outside D,
# so we just defer compiling until the final merge
@@ -971,14 +1035,41 @@ distutils-r1_python_compile() {
--no-compile-bytecode ||
die "installer failed"
+ # remove installed licenses
+ find "${root}$(python_get_sitedir)" \
+ '(' -path '*.dist-info/COPYING*' -o \
+ -path '*.dist-info/LICENSE*' ')' -delete || die
+
+ # clean the build tree; otherwise we may end up with PyPy3
+ # extensions duplicated into CPython dists
+ if [[ ${DISTUTILS_USE_PEP517:-setuptools} == setuptools ]]; then
+ esetup.py clean -a
+ fi
+
+ # copy executables to python-exec directory
+ # we do it early so that we can alter bindir recklessly
+ local bindir=${root}${EPREFIX}/usr/bin
+ local rscriptdir=${root}$(python_get_scriptdir)
+ [[ -d ${rscriptdir} ]] &&
+ die "${rscriptdir} should not exist!"
+ if [[ -d ${bindir} ]]; then
+ mkdir -p "${rscriptdir}" || die
+ cp -a --reflink=auto "${bindir}"/. "${rscriptdir}"/ || die
+ fi
+
# enable venv magic inside the install tree
- mkdir -p "${root}"/usr/bin || die
- ln -s "${PYTHON}" "${root}/usr/bin/${EPYTHON}" || die
- ln -s "${EPYTHON}" "${root}/usr/bin/python3" || die
- ln -s "${EPYTHON}" "${root}/usr/bin/python" || die
- cat > "${root}"/usr/pyvenv.cfg <<-EOF || die
+ mkdir -p "${bindir}" || die
+ ln -s "${PYTHON}" "${bindir}/${EPYTHON}" || die
+ ln -s "${EPYTHON}" "${bindir}/python3" || die
+ ln -s "${EPYTHON}" "${bindir}/python" || die
+ cat > "${bindir}"/pyvenv.cfg <<-EOF || die
include-system-site-packages = true
EOF
+
+ # we need to change shebangs to point to the venv-python
+ find "${bindir}" -type f -exec sed -i \
+ -e "1s@^#!\(${EPREFIX}/usr/bin/\(python\|pypy\)\)@#!${root}\1@" \
+ {} + || die
fi
}
@@ -1056,7 +1147,7 @@ distutils-r1_python_test() {
case ${_DISTUTILS_TEST_RUNNER} in
nose)
- nosetests -v "${@}"
+ "${EPYTHON}" -m nose -v "${@}"
;;
pytest)
epytest
@@ -1094,15 +1185,11 @@ distutils-r1_python_install() {
local scriptdir=${EPREFIX}/usr/bin
if [[ ${DISTUTILS_USE_PEP517} ]]; then
local root=${BUILD_DIR}/install
- local rscriptdir=${root}$(python_get_scriptdir)
- [[ -d ${rscriptdir} ]] &&
- die "${rscriptdir} should not exist!"
- # remove venv magic
- rm "${root}"/usr/{pyvenv.cfg,bin/{python,python3,${EPYTHON}}} || die
- find "${root}"/usr/bin -empty -delete || die
- if [[ ! ${DISTUTILS_SINGLE_IMPL} && -d ${root}/usr/bin ]]; then
- mkdir -p "${rscriptdir%/*}" || die
- mv "${root}/usr/bin" "${rscriptdir}" || die
+ # remove the altered bindir, executables from the package
+ # are already in scriptdir
+ rm -r "${root}${scriptdir}" || die
+ if [[ ${DISTUTILS_SINGLE_IMPL} ]]; then
+ mv "${root}$(python_get_scriptdir)" "${root}${scriptdir}" || die
fi
else
local root=${D%/}/_${EPYTHON}
@@ -1172,8 +1259,8 @@ distutils-r1_python_install() {
local shopt_save=$(shopt -p nullglob)
shopt -s nullglob
local pypy_dirs=(
- "${root}/usr/$(get_libdir)"/pypy*/share
- "${root}/usr/lib"/pypy*/share
+ "${root}${EPREFIX}/usr/$(get_libdir)"/pypy*/share
+ "${root}${EPREFIX}/usr/lib"/pypy*/share
)
${shopt_save}
@@ -1232,7 +1319,7 @@ distutils-r1_run_phase() {
fi
if [[ ${DISTUTILS_USE_PEP517} ]]; then
- local -x PATH=${BUILD_DIR}/install/usr/bin:${PATH}
+ local -x PATH=${BUILD_DIR}/install${EPREFIX}/usr/bin:${PATH}
else
local -x PYTHONPATH="${BUILD_DIR}/lib:${PYTHONPATH}"
@@ -1244,15 +1331,15 @@ distutils-r1_run_phase() {
# Undo the default switch in setuptools-60+ for the time being,
# to avoid replacing .egg-info file with directory in-place.
local -x SETUPTOOLS_USE_DISTUTILS="${SETUPTOOLS_USE_DISTUTILS:-stdlib}"
- fi
- # Bug 559644
- # using PYTHONPATH when the ${BUILD_DIR}/lib is not created yet might lead to
- # problems in setup.py scripts that try to import modules/packages from that path
- # during the build process (Python at startup evaluates PYTHONPATH, if the dir is
- # not valid then associates a NullImporter object to ${BUILD_DIR}/lib storing it
- # in the sys.path_importer_cache)
- mkdir -p "${BUILD_DIR}/lib" || die
+ # Bug 559644
+ # using PYTHONPATH when the ${BUILD_DIR}/lib is not created yet might lead to
+ # problems in setup.py scripts that try to import modules/packages from that path
+ # during the build process (Python at startup evaluates PYTHONPATH, if the dir is
+ # not valid then associates a NullImporter object to ${BUILD_DIR}/lib storing it
+ # in the sys.path_importer_cache)
+ mkdir -p "${BUILD_DIR}/lib" || die
+ fi
# Set up build environment, bug #513664.
local -x AR=${AR} CC=${CC} CPP=${CPP} CXX=${CXX}
@@ -1271,8 +1358,10 @@ distutils-r1_run_phase() {
local -x LDSHARED="${CC} ${ldopts}" LDCXXSHARED="${CXX} ${ldopts}"
"${@}"
+ local ret=${?}
cd "${_DISTUTILS_INITIAL_CWD}" || die
+ return "${ret}"
}
# @FUNCTION: _distutils-r1_run_common_phase
@@ -1330,14 +1419,14 @@ _distutils-r1_run_foreach_impl() {
distutils-r1_src_prepare() {
debug-print-function ${FUNCNAME} "${@}"
-
+ local ret=0
local _DISTUTILS_DEFAULT_CALLED
# common preparations
if declare -f python_prepare_all >/dev/null; then
- python_prepare_all
+ python_prepare_all || ret=${?}
else
- distutils-r1_python_prepare_all
+ distutils-r1_python_prepare_all || ret=${?}
fi
if [[ ! ${_DISTUTILS_DEFAULT_CALLED} ]]; then
@@ -1345,35 +1434,45 @@ distutils-r1_src_prepare() {
fi
if declare -f python_prepare >/dev/null; then
- _distutils-r1_run_foreach_impl python_prepare
+ _distutils-r1_run_foreach_impl python_prepare || ret=${?}
fi
+
+ return ${ret}
}
distutils-r1_src_configure() {
+ debug-print-function ${FUNCNAME} "${@}"
+ local ret=0
+
python_export_utf8_locale
[[ ${EAPI} == 6 ]] && xdg_environment_reset # Bug 577704
if declare -f python_configure >/dev/null; then
- _distutils-r1_run_foreach_impl python_configure
+ _distutils-r1_run_foreach_impl python_configure || ret=${?}
fi
if declare -f python_configure_all >/dev/null; then
- _distutils-r1_run_common_phase python_configure_all
+ _distutils-r1_run_common_phase python_configure_all || ret=${?}
fi
+
+ return ${ret}
}
distutils-r1_src_compile() {
debug-print-function ${FUNCNAME} "${@}"
+ local ret=0
if declare -f python_compile >/dev/null; then
- _distutils-r1_run_foreach_impl python_compile
+ _distutils-r1_run_foreach_impl python_compile || ret=${?}
else
- _distutils-r1_run_foreach_impl distutils-r1_python_compile
+ _distutils-r1_run_foreach_impl distutils-r1_python_compile || ret=${?}
fi
if declare -f python_compile_all >/dev/null; then
- _distutils-r1_run_common_phase python_compile_all
+ _distutils-r1_run_common_phase python_compile_all || ret=${?}
fi
+
+ return ${ret}
}
# @FUNCTION: _distutils-r1_clean_egg_info
@@ -1383,20 +1482,29 @@ distutils-r1_src_compile() {
# Those files ended up being unversioned, and caused issues:
# https://bugs.gentoo.org/534058
_distutils-r1_clean_egg_info() {
+ if [[ ${DISTUTILS_USE_PEP517} ]]; then
+ die "${FUNCNAME} is not implemented in PEP517 mode"
+ fi
+
rm -rf "${BUILD_DIR}"/lib/*.egg-info || die
}
distutils-r1_src_test() {
debug-print-function ${FUNCNAME} "${@}"
+ local ret=0
if declare -f python_test >/dev/null; then
- _distutils-r1_run_foreach_impl python_test
- _distutils-r1_run_foreach_impl _distutils-r1_clean_egg_info
+ _distutils-r1_run_foreach_impl python_test || ret=${?}
+ if [[ ! ${DISTUTILS_USE_PEP517} ]]; then
+ _distutils-r1_run_foreach_impl _distutils-r1_clean_egg_info
+ fi
fi
if declare -f python_test_all >/dev/null; then
- _distutils-r1_run_common_phase python_test_all
+ _distutils-r1_run_common_phase python_test_all || ret=${?}
fi
+
+ return ${ret}
}
# @FUNCTION: _distutils-r1_check_namespace_pth
@@ -1428,20 +1536,23 @@ _distutils-r1_check_namespace_pth() {
distutils-r1_src_install() {
debug-print-function ${FUNCNAME} "${@}"
+ local ret=0
if declare -f python_install >/dev/null; then
- _distutils-r1_run_foreach_impl python_install
+ _distutils-r1_run_foreach_impl python_install || ret=${?}
else
- _distutils-r1_run_foreach_impl distutils-r1_python_install
+ _distutils-r1_run_foreach_impl distutils-r1_python_install || ret=${?}
fi
if declare -f python_install_all >/dev/null; then
- _distutils-r1_run_common_phase python_install_all
+ _distutils-r1_run_common_phase python_install_all || ret=${?}
else
- _distutils-r1_run_common_phase distutils-r1_python_install_all
+ _distutils-r1_run_common_phase distutils-r1_python_install_all || ret=${?}
fi
_distutils-r1_check_namespace_pth
+
+ return ${ret}
}
_DISTUTILS_R1=1
diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 32119cb9a526..50caa401bacf 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: flag-o-matic.eclass
@@ -48,21 +48,39 @@ setup-allowed-flags() {
# Note: shell globs and character lists are allowed
_setup-allowed-flags() {
ALLOWED_FLAGS=(
- -pipe -O '-O[12sg]' -mcpu -march -mtune
+ -pipe -O '-O[12sg]' '-mcpu=*' '-march=*' '-mtune=*'
+
+ # Hardening flags
'-fstack-protector*'
- '-fsanitize*' '-fno-sanitize*'
'-fstack-check*' -fno-stack-check
- -fbounds-check -fbounds-checking -fno-strict-overflow
- -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time
+ -fstack-clash-protection
+ '-fcf-protection=*'
+ -fbounds-check -fbounds-checking
+ -fno-PIE -fno-pie -nopie -no-pie
+ # Spectre mitigations, bug #646076
+ '-mindirect-branch=*'
+ -mindirect-branch-register
+ '-mfunction-return=*'
+ -mretpoline
+
+ # Misc
+ -fno-unit-at-a-time -fno-strict-overflow
+
+ # Sanitizers
+ '-fsanitize*' '-fno-sanitize*'
- # debugging symbols should generally be very safe to add
+ # Debugging symbols should generally be very safe to add
-g '-g[0-9]'
-ggdb '-ggdb[0-9]'
-gdwarf '-gdwarf-*'
-gstabs -gstabs+
-gz
+ -glldb
+ # Cosmetic/output related, see e.g. bug #830534
+ -fno-diagnostics-color '-fmessage-length=*'
-fno-ident -fpermissive -frecord-gcc-switches
+ -frecord-command-line
'-fdiagnostics*' '-fplugin*'
'-W*' -w
@@ -70,7 +88,7 @@ _setup-allowed-flags() {
'-[DUILR]*' '-Wl,*'
# Linker choice flag
- '-fuse-ld'
+ '-fuse-ld=*'
)
# allow a bunch of flags that negate features / control ABI
@@ -80,19 +98,22 @@ _setup-allowed-flags() {
-fno-omit-frame-pointer '-fno-builtin*'
)
ALLOWED_FLAGS+=(
- -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse
+ '-mregparm=*' -mno-app-regs -mapp-regs -mno-mmx -mno-sse
-mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2
-mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt
-mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt
- -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu
- -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe
+ -msoft-float -mno-soft-float -mhard-float -mno-hard-float '-mfpu=*'
+ -mieee -mieee-with-inexact '-mschedule=*' -mfloat-gprs -mspe -mno-spe
-mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat
- -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi
- -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel
- -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi
+ -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 '-mabi=*'
+ -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 '-mcmodel=*'
+ -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' '-mfloat-abi=*'
-mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400
-mfix-rm7000 -mno-fix-rm7000 -mfix-r10000 -mno-fix-r10000
- -mr10k-cache-barrier -mthumb -marm
+ '-mr10k-cache-barrier=*' -mthumb -marm
+
+ # needed for arm64 (and in particular SCS)
+ -ffixed-x18
# gcc 4.5
-mno-fma4 -mno-movbe -mno-xop -mno-lwp
@@ -452,9 +473,8 @@ strip-flags() {
local new=()
for x in ${!var} ; do
- local flag=${x%%=*}
for y in "${ALLOWED_FLAGS[@]}" ; do
- if [[ -z ${flag%%${y}} ]] ; then
+ if [[ ${x} == ${y} ]] ; then
new+=( "${x}" )
break
fi
diff --git a/eclass/go-module.eclass b/eclass/go-module.eclass
index c9eb90ac62ea..984698bfbafa 100644
--- a/eclass/go-module.eclass
+++ b/eclass/go-module.eclass
@@ -25,7 +25,7 @@
# Since Go programs are statically linked, it is important that your ebuild's
# LICENSE= setting includes the licenses of all statically linked
# dependencies. So please make sure it is accurate.
-# You can use a utility like dev-util/golicense (network connectivity is
+# You can use a utility like dev-go/golicense (network connectivity is
# required) to extract this information from the compiled binary.
#
# @EXAMPLE:
diff --git a/eclass/java-utils-2.eclass b/eclass/java-utils-2.eclass
index d3d462aa9442..a79e865e66e2 100644
--- a/eclass/java-utils-2.eclass
+++ b/eclass/java-utils-2.eclass
@@ -2194,8 +2194,7 @@ java-pkg_init() {
java-config --help >/dev/null || {
eerror ""
eerror "Can't run java-config --help"
- eerror "Have you upgraded python recently but haven't"
- eerror "run python-updater yet?"
+ eerror "Have you upgraded Python recently but not completed a world upgrade yet?"
die "Can't run java-config --help"
}
diff --git a/eclass/java-virtuals-2.eclass b/eclass/java-virtuals-2.eclass
index e929a7e1ceeb..d827342e9ba2 100644
--- a/eclass/java-virtuals-2.eclass
+++ b/eclass/java-virtuals-2.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: java-virtuals-2.eclass
@@ -6,14 +6,14 @@
# java@gentoo.org
# @AUTHOR:
# Original Author: Alistair John Bush <ali_bush@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 8
+# @SUPPORTED_EAPIS: 5 6 7 8
# @BLURB: Java virtuals eclass
# @DESCRIPTION:
# To provide a default (and only) src_install function for ebuilds in the
# java-virtuals category.
case ${EAPI:-0} in
- [568]) ;;
+ [5678]) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
diff --git a/eclass/java-vm-2.eclass b/eclass/java-vm-2.eclass
index d24339200ce0..0d1eb2dc938f 100644
--- a/eclass/java-vm-2.eclass
+++ b/eclass/java-vm-2.eclass
@@ -1,17 +1,17 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: java-vm-2.eclass
# @MAINTAINER:
# java@gentoo.org
-# @SUPPORTED_EAPIS: 6 8
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: Java Virtual Machine eclass
# @DESCRIPTION:
# This eclass provides functionality which assists with installing
# virtual machines, and ensures that they are recognized by java-config.
case ${EAPI:-0} in
- [68]) ;;
+ [678]) ;;
*) die "EAPI=${EAPI} is not supported" ;;
esac
diff --git a/eclass/llvm.org.eclass b/eclass/llvm.org.eclass
index 7ad6d1efe94e..72e6a3ef25a6 100644
--- a/eclass/llvm.org.eclass
+++ b/eclass/llvm.org.eclass
@@ -1,4 +1,4 @@
-# Copyright 2019-2021 Gentoo Authors
+# Copyright 2019-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: llvm.org.eclass
@@ -294,6 +294,14 @@ llvm.org_src_unpack() {
"${WORKDIR}/llvm-gentoo-patchset-${LLVM_PATCHSET}" |
xargs rm
assert
+
+ if ver_test -ge 13.0.1_rc3; then
+ # fail if no patches remain
+ if [[ ! -s ${WORKDIR}/llvm-gentoo-patchset-${LLVM_PATCHSET} ]]
+ then
+ die "No patches in the patchset apply to the package"
+ fi
+ fi
fi
}
diff --git a/eclass/out-of-source.eclass b/eclass/out-of-source.eclass
index bbac555a7f88..81e03f3894db 100644
--- a/eclass/out-of-source.eclass
+++ b/eclass/out-of-source.eclass
@@ -1,10 +1,10 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: out-of-source.eclass
# @MAINTAINER:
# Michał Górny <mgorny@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 7 8
# @BLURB: convenient wrapper to build autotools packages out-of-source
# @DESCRIPTION:
# This eclass provides a minimalistic wrapper interface to easily
@@ -33,13 +33,12 @@
# @CODE
case ${EAPI} in
- 6|7);;
+ 7|8);;
*) die "EAPI ${EAPI:-0} unsupported (too old)";;
esac
-EXPORT_FUNCTIONS src_configure src_compile src_test src_install
-
if [[ ! ${_OUT_OF_SOURCE_ECLASS} ]]; then
+_OUT_OF_SOURCE_ECLASS=1
# @FUNCTION: out-of-source_src_configure
# @DESCRIPTION:
@@ -121,5 +120,6 @@ out-of-source_src_install() {
fi
}
-_OUT_OF_SOURCE_ECLASS=1
fi
+
+EXPORT_FUNCTIONS src_configure src_compile src_test src_install
diff --git a/eclass/python-any-r1.eclass b/eclass/python-any-r1.eclass
index 7af9474d9a1f..282c449f2a03 100644
--- a/eclass/python-any-r1.eclass
+++ b/eclass/python-any-r1.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: python-any-r1.eclass
@@ -36,7 +36,7 @@
# both.
#
# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# https://projects.gentoo.org/python/guide/
case "${EAPI:-0}" in
[0-5]) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;;
diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass
index 4b51cc18b959..40ad4ef4bbf8 100644
--- a/eclass/python-r1.eclass
+++ b/eclass/python-r1.eclass
@@ -28,7 +28,7 @@
# both.
#
# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# https://projects.gentoo.org/python/guide/
case "${EAPI:-0}" in
[0-5])
diff --git a/eclass/python-single-r1.eclass b/eclass/python-single-r1.eclass
index 5a4bcea55da4..574ee9cfc04e 100644
--- a/eclass/python-single-r1.eclass
+++ b/eclass/python-single-r1.eclass
@@ -35,7 +35,7 @@
# to inherit both.
#
# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# https://projects.gentoo.org/python/guide/
case "${EAPI:-0}" in
[0-5])
diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index aece257e8cba..c8367f8065f4 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -17,7 +17,7 @@
# functions. It can be inherited safely.
#
# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# https://projects.gentoo.org/python/guide/
# NOTE: When dropping support for EAPIs here, we need to update
# metadata/install-qa-check.d/60python-pyc
@@ -1250,7 +1250,8 @@ build_sphinx() {
sed -i -e 's:^intersphinx_mapping:disabled_&:' \
"${dir}"/conf.py || die
# not all packages include the Makefile in pypi tarball
- sphinx-build -b html -d "${dir}"/_build/doctrees "${dir}" \
+ "${EPYTHON}" -m sphinx.cmd.build \
+ -b html -d "${dir}"/_build/doctrees "${dir}" \
"${dir}"/_build/html || die
HTML_DOCS+=( "${dir}/_build/html/." )
@@ -1320,6 +1321,14 @@ epytest() {
-Wdefault
# override color output
"--color=${color}"
+ # disable the undesirable-dependency plugins by default to
+ # trigger missing argument strips. strip options that require
+ # them from config files. enable them explicitly via "-p ..."
+ # if you *really* need them.
+ -p no:cov
+ -p no:flake8
+ -p no:flakes
+ -p no:pylint
)
local x
for x in "${EPYTEST_DESELECT[@]}"; do
diff --git a/eclass/sgml-catalog-r1.eclass b/eclass/sgml-catalog-r1.eclass
index 1e1f17815ac4..9f8bb13d6095 100644
--- a/eclass/sgml-catalog-r1.eclass
+++ b/eclass/sgml-catalog-r1.eclass
@@ -1,4 +1,4 @@
-# Copyright 2019 Gentoo Authors
+# Copyright 2019-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: sgml-catalog-r1.eclass
@@ -9,9 +9,8 @@
# @SUPPORTED_EAPIS: 7
# @BLURB: Functions for installing SGML catalogs
# @DESCRIPTION:
-# This eclass regenerates /etc/sgml/catalog, /etc/sgml.{,c}env
-# and /etc/env.d/93sgmltools-lite as necessary for the DocBook tooling.
-# This is done via exported pkg_postinst and pkg_postrm phases.
+# This eclass regenerates /etc/sgml/catalog as necessary for the DocBook
+# tooling. This is done via exported pkg_postinst and pkg_postrm phases.
case ${EAPI:-0} in
7) ;;
@@ -50,16 +49,9 @@ sgml-catalog-r1_update_catalog() {
# @FUNCTION: sgml-catalog-r1_update_env
# @DESCRIPTION:
-# Regenerate environment variables and copy them to env.d.
+# Remove obsolete environment files. They can break tools such as asciidoc.
sgml-catalog-r1_update_env() {
- # gensgmlenv doesn't support overriding root
- if [[ -z ${ROOT} && -x "${EPREFIX}/usr/bin/gensgmlenv" ]]; then
- ebegin "Regenerating SGML environment variables"
- gensgmlenv &&
- grep -v export "${EPREFIX}/etc/sgml/sgml.env" > "${T}"/93sgmltools-lite &&
- mv "${T}"/93sgmltools-lite "${EPREFIX}/etc/env.d/93sgmltools-lite"
- eend "${?}"
- fi
+ rm -f "${EROOT}"/etc/env.d/93sgmltools-lite "${EROOT}"/etc/sgml/sgml.{,c}env
}
sgml-catalog-r1_pkg_postinst() {
diff --git a/eclass/texlive-common.eclass b/eclass/texlive-common.eclass
index 1fe33444f1e5..40e2c3530510 100644
--- a/eclass/texlive-common.eclass
+++ b/eclass/texlive-common.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: texlive-common.eclass
@@ -19,7 +19,7 @@ _TEXLIVE_COMMON_ECLASS=1
case ${EAPI:-0} in
[0-6]) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;;
- 7) ;;
+ 7) inherit eapi8-dosym ;;
*) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
esac
@@ -46,7 +46,7 @@ texlive-common_handle_config_files() {
dodir /etc/texmf/$(dirname ${f}).d
einfo "Moving (and symlinking) ${EPREFIX}${TEXMF_PATH}/${f} to ${EPREFIX}/etc/texmf/$(dirname ${f}).d"
mv "${ED}/${TEXMF_PATH}/${f}" "${ED}/etc/texmf/$(dirname ${f}).d" || die "mv ${f} failed."
- dosym /etc/texmf/$(dirname ${f}).d/$(basename ${f}) ${TEXMF_PATH}/${f}
+ dosym8 -r /etc/texmf/$(dirname ${f}).d/$(basename ${f}) ${TEXMF_PATH}/${f}
done < <(find -name '*.cnf' -type f -o -name '*.cfg' -type f | sed -e "s:\./::g")
}
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 61718f0d9a01..495a305ed83e 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -4,9 +4,18 @@
# @ECLASS: toolchain.eclass
# @MAINTAINER:
# Toolchain Ninjas <toolchain@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 7 8
+# @SUPPORTED_EAPIS: 7 8
# @BLURB: Common code for sys-devel/gcc ebuilds
+case ${EAPI} in
+ 7) inherit eutils ;;
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ ! ${_TOOLCHAIN_ECLASS} ]]; then
+_TOOLCHAIN_ECLASS=1
+
DESCRIPTION="The GNU Compiler Collection"
HOMEPAGE="https://gcc.gnu.org/"
@@ -30,16 +39,6 @@ fi
FEATURES=${FEATURES/multilib-strict/}
-case ${EAPI} in
- 5|6) inherit eapi7-ver eutils ;;
- 7) inherit eutils ;;
- 8) ;;
- *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
-esac
-
-EXPORT_FUNCTIONS pkg_pretend pkg_setup src_unpack src_prepare src_configure \
- src_compile src_test src_install pkg_postinst pkg_postrm
-
#---->> globals <<----
export CTARGET=${CTARGET:-${CHOST}}
@@ -129,16 +128,6 @@ LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-excepti
IUSE="test vanilla +nls"
RESTRICT="!test? ( test )"
-tc_supports_dostrip() {
- case ${EAPI} in
- 5|6) return 1 ;;
- 7|8) return 0 ;;
- *) die "Update apply_patches() for ${EAPI}." ;;
- esac
-}
-
-tc_supports_dostrip || RESTRICT+=" strip" # cross-compilers need controlled stripping
-
TC_FEATURES=()
tc_has_feature() {
@@ -146,21 +135,21 @@ tc_has_feature() {
}
if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
- IUSE+=" debug +cxx +nptl" TC_FEATURES+=(nptl)
+ IUSE+=" debug +cxx +nptl" TC_FEATURES+=( nptl )
[[ -n ${PIE_VER} ]] && IUSE+=" nopie"
[[ -n ${SPECS_VER} ]] && IUSE+=" nossp"
- IUSE+=" +fortran" TC_FEATURES+=(fortran)
+ IUSE+=" +fortran" TC_FEATURES+=( fortran )
IUSE+=" doc hardened multilib objc"
- tc_version_is_between 3 7 && IUSE+=" awt gcj" TC_FEATURES+=(gcj)
+ tc_version_is_between 3 7 && IUSE+=" awt gcj" TC_FEATURES+=( gcj )
IUSE+=" pgo"
- IUSE+=" objc-gc" TC_FEATURES+=(objc-gc)
+ IUSE+=" objc-gc" TC_FEATURES+=( objc-gc )
IUSE+=" libssp objc++"
IUSE+=" +openmp"
tc_version_is_at_least 4.3 && IUSE+=" fixed-point"
tc_version_is_at_least 4.7 && IUSE+=" go"
# sanitizer support appeared in gcc-4.8, but <gcc-5 does not
# support modern glibc.
- tc_version_is_at_least 5 && IUSE+=" +sanitize" TC_FEATURES+=(sanitize)
+ tc_version_is_at_least 5 && IUSE+=" +sanitize" TC_FEATURES+=( sanitize )
# Note:
# <gcc-4.8 supported graphite, it required forked ppl
# versions which we dropped. Since graphite was also experimental in
@@ -168,7 +157,7 @@ if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
# <gcc-5 supported graphite, it required cloog
# <gcc-6.5 supported graphite, it required old incompatible isl
tc_version_is_at_least 6.5 &&
- IUSE+=" graphite" TC_FEATURES+=(graphite)
+ IUSE+=" graphite" TC_FEATURES+=( graphite )
tc_version_is_between 4.9 8 && IUSE+=" cilk"
tc_version_is_at_least 4.9 && IUSE+=" ada"
tc_version_is_at_least 4.9 && IUSE+=" vtv"
@@ -177,12 +166,12 @@ if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
tc_version_is_at_least 6.0 && IUSE+=" +pie +ssp +pch"
# systemtap is a gentoo-specific switch: bug #654748
tc_version_is_at_least 8.0 &&
- IUSE+=" systemtap" TC_FEATURES+=(systemtap)
+ IUSE+=" systemtap" TC_FEATURES+=( systemtap )
tc_version_is_at_least 9.0 && IUSE+=" d"
tc_version_is_at_least 9.1 && IUSE+=" lto"
tc_version_is_at_least 10 && IUSE+=" cet"
- tc_version_is_at_least 10 && IUSE+=" zstd" TC_FEATURES+=(zstd)
- tc_version_is_at_least 11 && IUSE+=" valgrind" TC_FEATURES+=(valgrind)
+ tc_version_is_at_least 10 && IUSE+=" zstd" TC_FEATURES+=( zstd )
+ tc_version_is_at_least 11 && IUSE+=" valgrind" TC_FEATURES+=( valgrind )
tc_version_is_at_least 11 && IUSE+=" custom-cflags"
fi
@@ -269,10 +258,6 @@ if tc_has_feature valgrind; then
BDEPEND+=" valgrind? ( dev-util/valgrind )"
fi
-case ${EAPI} in
- 5|6) DEPEND+=" ${BDEPEND}" ;;
-esac
-
PDEPEND=">=sys-devel/gcc-config-2.3"
#---->> S + SRC_URI essentials <<----
@@ -447,25 +432,9 @@ toolchain_src_unpack() {
#---->> src_prepare <<----
-# 'epatch' is not available in EAPI=7. Abstract away patchset application
-# until we eventually get all gcc ebuilds on EAPI=7 or later.
-tc_apply_patches() {
- [[ ${#@} -lt 2 ]] && die "usage: tc_apply_patches <message> <patches...>"
-
- einfo "$1"; shift
-
- case ${EAPI} in
- # Note: even for EAPI=6 we used 'epatch' semantics. To avoid
- # breaking existing ebuilds use 'eapply' only in EAPI=7 or later.
- 5|6) epatch "$@" ;;
- 7|8) eapply "$@" ;;
- *) die "Update apply_patches() for ${EAPI}." ;;
- esac
-}
-
toolchain_src_prepare() {
export BRANDING_GCC_PKGVERSION="Gentoo ${GCC_PVR}"
- cd "${S}"
+ cd "${S}" || die
do_gcc_gentoo_patches
do_gcc_PIE_patches
@@ -475,11 +444,7 @@ toolchain_src_prepare() {
BRANDING_GCC_PKGVERSION="${BRANDING_GCC_PKGVERSION}, commit ${EGIT_VERSION}"
fi
- case ${EAPI} in
- 5) epatch_user;;
- 6|7|8) eapply_user ;;
- *) die "Update toolchain_src_prepare() for ${EAPI}." ;;
- esac
+ eapply_user
if ( tc_version_is_at_least 4.8.2 || _tc_use_if_iuse hardened ) \
&& ! use vanilla ; then
@@ -490,7 +455,7 @@ toolchain_src_prepare() {
# since we configure with just one --libdir, we can't use that
# (as gcc itself takes care of building multilibs). #435728
find "${S}" -name Makefile.in \
- -exec sed -i '/^pkgconfigdir/s:=.*:=$(toolexeclibdir)/pkgconfig:' {} +
+ -exec sed -i '/^pkgconfigdir/s:=.*:=$(toolexeclibdir)/pkgconfig:' {} + || die
setup_multilib_osdirnames
gcc_version_patch
@@ -532,10 +497,11 @@ toolchain_src_prepare() {
|| eerror "Please file a bug about this"
eend $?
done
- sed -i 's|A-Za-z0-9|[:alnum:]|g' "${S}"/gcc/*.awk #215828
+ sed -i 's|A-Za-z0-9|[:alnum:]|g' "${S}"/gcc/*.awk || die #215828
# Prevent new texinfo from breaking old versions (see #198182, #464008)
- tc_apply_patches "Remove texinfo (bug #198182, bug #464008)" "${FILESDIR}"/gcc-configure-texinfo.patch
+ einfo "Remove texinfo (bug #198182, bug #464008)"
+ eapply "${FILESDIR}"/gcc-configure-texinfo.patch
# >=gcc-4
if [[ -x contrib/gcc_update ]] ; then
@@ -550,7 +516,8 @@ toolchain_src_prepare() {
do_gcc_gentoo_patches() {
if ! use vanilla ; then
if [[ -n ${PATCH_VER} ]] ; then
- tc_apply_patches "Applying Gentoo patches ..." "${WORKDIR}"/patch/*.patch
+ einfo "Applying Gentoo patches ..."
+ eapply "${WORKDIR}"/patch/*.patch
BRANDING_GCC_PKGVERSION="${BRANDING_GCC_PKGVERSION} p${PATCH_VER}"
fi
@@ -567,7 +534,8 @@ do_gcc_gentoo_patches() {
local shopt_save=$(shopt -p nullglob)
shopt -s nullglob
- tc_apply_patches "Applying musl patches ..." "${WORKDIR}"/musl/{,nocross/}*.patch
+ einfo "Applying musl patches ..."
+ eapply "${WORKDIR}"/musl/{,nocross/}*.patch
${shopt_save}
fi
fi
@@ -577,7 +545,8 @@ do_gcc_PIE_patches() {
want_pie || return 0
use vanilla && return 0
- tc_apply_patches "Applying pie patches ..." "${WORKDIR}"/piepatch/*.patch
+ einfo "Applying pie patches ..."
+ eapply "${WORKDIR}"/piepatch/*.patch
BRANDING_GCC_PKGVERSION="${BRANDING_GCC_PKGVERSION}, pie-${PIE_VER}"
}
@@ -595,7 +564,8 @@ do_gcc_CYGWINPORTS_patches() {
echo "${d}/${p}"
done
) )
- tc_apply_patches "Applying cygwin port patches ..." ${patches[*]}
+ einfo "Applying cygwin port patches ..."
+ eapply -- "${patches[@]}"
}
# configure to build with the hardened GCC specs as the default
@@ -663,12 +633,12 @@ make_gcc_hard() {
# than ALL_CFLAGS...
sed -e '/^ALL_CFLAGS/iHARD_CFLAGS = ' \
-e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' \
- -i "${S}"/gcc/Makefile.in
+ -i "${S}"/gcc/Makefile.in || die
# Need to add HARD_CFLAGS to ALL_CXXFLAGS on >= 4.7
if tc_version_is_at_least 4.7 ; then
sed -e '/^ALL_CXXFLAGS/iHARD_CFLAGS = ' \
-e 's|^ALL_CXXFLAGS = |ALL_CXXFLAGS = $(HARD_CFLAGS) |' \
- -i "${S}"/gcc/Makefile.in
+ -i "${S}"/gcc/Makefile.in || die
fi
sed -i \
@@ -1744,9 +1714,9 @@ toolchain_src_install() {
# - "${D}${LIBPATH}"
# As dostrip does not specify host to override ${CHOST} tools just skip
# non-native binary stripping.
- is_crosscompile && tc_supports_dostrip && dostrip -x "${LIBPATH}"
+ is_crosscompile && dostrip -x "${LIBPATH}"
- cd "${S}"
+ cd "${S}" || die
if is_crosscompile; then
rm -rf "${ED}"/usr/share/{man,info}
rm -rf "${D}"${DATAPATH}/{man,info}
@@ -2061,40 +2031,40 @@ gcc_slot_java() {
toolchain_pkg_postinst() {
do_gcc_config
- if [[ ! ${ROOT%/} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+ if [[ ! ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
eselect compiler-shadow update all
fi
if ! is_crosscompile && [[ ${PN} != "kgcc64" ]] ; then
# gcc stopped installing .la files fixer in June 2020.
# Cleaning can be removed in June 2022.
- rm -f "${EROOT%/}"/sbin/fix_libtool_files.sh
- rm -f "${EROOT%/}"/usr/sbin/fix_libtool_files.sh
- rm -f "${EROOT%/}"/usr/share/gcc-data/fixlafiles.awk
+ rm -f "${EROOT}"/sbin/fix_libtool_files.sh
+ rm -f "${EROOT}"/usr/sbin/fix_libtool_files.sh
+ rm -f "${EROOT}"/usr/share/gcc-data/fixlafiles.awk
fi
}
toolchain_pkg_postrm() {
do_gcc_config
- if [[ ! ${ROOT%/} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+ if [[ ! ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
eselect compiler-shadow clean all
fi
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
- if [[ -z $(ls "${EROOT%/}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
+ if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
einfo "Removing last cross-compiler instance. Deleting dangling symlinks."
- rm -f "${EROOT%/}"/etc/env.d/gcc/config-${CTARGET}
- rm -f "${EROOT%/}"/etc/env.d/??gcc-${CTARGET}
- rm -f "${EROOT%/}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
+ rm -f "${EROOT}"/etc/env.d/gcc/config-${CTARGET}
+ rm -f "${EROOT}"/etc/env.d/??gcc-${CTARGET}
+ rm -f "${EROOT}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
fi
return 0
fi
# gcc stopped installing .la files fixer in June 2020.
# Cleaning can be removed in June 2022.
- rm -f "${EROOT%/}"/sbin/fix_libtool_files.sh
- rm -f "${EROOT%/}"/usr/share/gcc-data/fixlafiles.awk
+ rm -f "${EROOT}"/sbin/fix_libtool_files.sh
+ rm -f "${EROOT}"/usr/share/gcc-data/fixlafiles.awk
}
do_gcc_config() {
@@ -2113,7 +2083,7 @@ do_gcc_config() {
[[ -n ${current_specs} ]] && use_specs=-${current_specs}
if [[ -n ${use_specs} ]] && \
- [[ ! -e ${EROOT%/}/etc/env.d/gcc/${CTARGET}-${GCC_CONFIG_VER}${use_specs} ]]
+ [[ ! -e ${EROOT}/etc/env.d/gcc/${CTARGET}-${GCC_CONFIG_VER}${use_specs} ]]
then
ewarn "The currently selected specs-specific gcc config,"
ewarn "${current_specs}, doesn't exist anymore. This is usually"
@@ -2352,6 +2322,11 @@ toolchain_death_notice() {
fi
}
+fi
+
+EXPORT_FUNCTIONS pkg_pretend pkg_setup src_unpack src_prepare src_configure \
+ src_compile src_test src_install pkg_postinst pkg_postrm
+
# Note [implicitly enabled flags]
# -------------------------------
# Usually configure-based packages handle explicit feature requests
diff --git a/eclass/user-info.eclass b/eclass/user-info.eclass
index 8b8538bf843a..3838585ab6c1 100644
--- a/eclass/user-info.eclass
+++ b/eclass/user-info.eclass
@@ -1,15 +1,15 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: user-info.eclass
# @MAINTAINER:
# base-system@gentoo.org (Linux)
# Michał Górny <mgorny@gentoo.org> (NetBSD)
-# @SUPPORTED_EAPIS: 5 6 7 8
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: Read-only access to user and group information
-case ${EAPI:-0} in
- [5678]) ;;
+case ${EAPI} in
+ 6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
diff --git a/eclass/user.eclass b/eclass/user.eclass
index d03d31819fcc..581704eae815 100644
--- a/eclass/user.eclass
+++ b/eclass/user.eclass
@@ -1,22 +1,19 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: user.eclass
# @MAINTAINER:
# base-system@gentoo.org (Linux)
# Michał Górny <mgorny@gentoo.org> (NetBSD)
-# @SUPPORTED_EAPIS: 5 6 7 8
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: user management in ebuilds
# @DEPRECATED: acct-user/acct-group packages
# @DESCRIPTION:
# The user eclass contains a suite of functions that allow ebuilds
# to quickly make sure users in the installed system are sane.
-if [[ -z ${_USER_ECLASS} ]]; then
-_USER_ECLASS=1
-
-case ${EAPI:-0} in
- 5|6|7) ;;
+case ${EAPI} in
+ 6|7) ;;
8)
if [[ ${CATEGORY} != acct-* ]]; then
eerror "In EAPI ${EAPI}, packages must not inherit user.eclass"
@@ -29,6 +26,9 @@ case ${EAPI:-0} in
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
+if [[ -z ${_USER_ECLASS} ]]; then
+_USER_ECLASS=1
+
inherit user-info
# @FUNCTION: _assert_pkg_ebuild_phase
diff --git a/eclass/usr-ldscript.eclass b/eclass/usr-ldscript.eclass
index 2bf725abdd02..a8229ed2ac2e 100644
--- a/eclass/usr-ldscript.eclass
+++ b/eclass/usr-ldscript.eclass
@@ -1,20 +1,20 @@
-# Copyright 2019-2021 Gentoo Authors
+# Copyright 2019-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: usr-ldscript.eclass
# @MAINTAINER:
# Toolchain Ninjas <toolchain@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 7 8
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: Defines the gen_usr_ldscript function.
-if [[ -z ${_USR_LDSCRIPT_ECLASS} ]]; then
-_USR_LDSCRIPT_ECLASS=1
-
case ${EAPI} in
- 5|6|7|8) ;;
+ 6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
+if [[ -z ${_USR_LDSCRIPT_ECLASS} ]]; then
+_USR_LDSCRIPT_ECLASS=1
+
inherit multilib toolchain-funcs
IUSE="split-usr"
diff --git a/eclass/vcs-clean.eclass b/eclass/vcs-clean.eclass
index 89f6b7321879..e4c61ac7164a 100644
--- a/eclass/vcs-clean.eclass
+++ b/eclass/vcs-clean.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: vcs-clean.eclass
@@ -6,11 +6,11 @@
# base-system@gentoo.org
# @AUTHOR:
# Benedikt Böhm <hollow@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 7
+# @SUPPORTED_EAPIS: 5 6 7 8
# @BLURB: helper functions to remove VCS directories
-case ${EAPI:-0} in
- [567]) ;;
+case ${EAPI} in
+ 5|6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
@@ -23,9 +23,11 @@ _VCS_CLEAN_ECLASS=1
# Remove CVS directories and .cvs* files recursively. Useful when a
# source tarball contains internal CVS directories. Defaults to ${PWD}.
ecvs_clean() {
+ debug-print-function ${FUNCNAME} "${@}"
+
[[ $# -eq 0 ]] && set -- .
find "$@" '(' -type d -name 'CVS' -prune -o -type f -name '.cvs*' ')' \
- -exec rm -rf '{}' +
+ -exec rm -rf '{}' + || die
}
# @FUNCTION: esvn_clean
@@ -34,8 +36,10 @@ ecvs_clean() {
# Remove .svn directories recursively. Useful when a source tarball
# contains internal Subversion directories. Defaults to ${PWD}.
esvn_clean() {
+ debug-print-function ${FUNCNAME} "${@}"
+
[[ $# -eq 0 ]] && set -- .
- find "$@" -type d -name '.svn' -prune -exec rm -rf '{}' +
+ find "$@" -type d -name '.svn' -prune -exec rm -rf '{}' + || die
}
# @FUNCTION: egit_clean
@@ -44,8 +48,10 @@ esvn_clean() {
# Remove .git* directories recursively. Useful when a source tarball
# contains internal Git directories. Defaults to ${PWD}.
egit_clean() {
+ debug-print-function ${FUNCNAME} "${@}"
+
[[ $# -eq 0 ]] && set -- .
- find "$@" -type d -name '.git*' -prune -exec rm -rf '{}' +
+ find "$@" -type d -name '.git*' -prune -exec rm -rf '{}' + || die
}
fi
diff --git a/eclass/vcs-snapshot.eclass b/eclass/vcs-snapshot.eclass
index 05d963917e25..64bc1da040f4 100644
--- a/eclass/vcs-snapshot.eclass
+++ b/eclass/vcs-snapshot.eclass
@@ -1,10 +1,10 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: vcs-snapshot.eclass
# @MAINTAINER:
# mgorny@gentoo.org
-# @SUPPORTED_EAPIS: 0 1 2 3 4 5 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: support eclass for unpacking VCS snapshot tarballs
# @DESCRIPTION:
# THIS ECLASS IS NOT NECESSARY FOR MODERN GITHUB AND GITLAB SNAPSHOTS.
@@ -42,12 +42,13 @@
# and however the tarballs were originally packed, all files will appear
# in ${WORKDIR}/${P} and ${WORKDIR}/${P}-otherstuff respectively.
-case ${EAPI:-0} in
- 0|1|2|3|4|5|6|7) ;;
- *) die "vcs-snapshot.eclass API in EAPI ${EAPI} not yet established."
+case ${EAPI} in
+ 6|7|8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
-EXPORT_FUNCTIONS src_unpack
+if [[ ! ${_VCS_SNAPSHOT_ECLASS} ]]; then
+_VCS_SNAPSHOT_ECLASS=1
# @FUNCTION: vcs-snapshot_src_unpack
# @DESCRIPTION:
@@ -102,7 +103,7 @@ vcs-snapshot_src_unpack() {
if [[ ! ${renamed_any} ]]; then
local w=eerror
- [[ ${EAPI} == [0123456] ]] && w=eqawarn
+ [[ ${EAPI} == 6 ]] && w=eqawarn
"${w}" "${FUNCNAME} did not find any archives that needed renaming."
"${w}" "Please verify that its usage is really necessary, and remove"
"${w}" "the inherit if it is not."
@@ -110,3 +111,7 @@ vcs-snapshot_src_unpack() {
[[ ${w} == eerror ]] && die "${FUNCNAME}: Unnecessary usage detected"
fi
}
+
+fi
+
+EXPORT_FUNCTIONS src_unpack