diff options
Diffstat (limited to 'eclass/eutils.eclass')
-rw-r--r-- | eclass/eutils.eclass | 152 |
1 files changed, 12 insertions, 140 deletions
diff --git a/eclass/eutils.eclass b/eclass/eutils.eclass index 207d05e7f975..e7fae2c656c6 100644 --- a/eclass/eutils.eclass +++ b/eclass/eutils.eclass @@ -1,10 +1,10 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: eutils.eclass # @MAINTAINER: # base-system@gentoo.org -# @SUPPORTED_EAPIS: 5 6 7 +# @SUPPORTED_EAPIS: 6 7 # @BLURB: many extra (but common) functions that are used in ebuilds # @DESCRIPTION: # The eutils eclass contains a suite of functions that complement @@ -24,49 +24,16 @@ _EUTILS_ECLASS=1 # implicitly inherited (now split) eclasses case ${EAPI} in - 5|6) - inherit desktop edos2unix epatch estack ltprune multilib \ - preserve-libs strip-linguas toolchain-funcs vcs-clean wrapper - ;; + 6) inherit desktop edos2unix epatch estack ltprune multilib \ + preserve-libs strip-linguas toolchain-funcs vcs-clean wrapper ;; 7) inherit edos2unix strip-linguas wrapper ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac -# @FUNCTION: emktemp -# @USAGE: [temp dir] -# @DESCRIPTION: -# Cheap replacement for when coreutils (and thus mktemp) does not exist -# on the user's system. emktemp() { - eqawarn "emktemp is deprecated. Create a temporary file in \${T} instead." - - local exe="touch" - [[ $1 == -d ]] && exe="mkdir" && shift - local topdir=$1 - - if [[ -z ${topdir} ]] ; then - [[ -z ${T} ]] \ - && topdir="/tmp" \ - || topdir=${T} - fi - - if ! type -P mktemp > /dev/null ; then - # system lacks `mktemp` so we have to fake it - local tmp=/ - while [[ -e ${tmp} ]] ; do - tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM} - done - ${exe} "${tmp}" || ${exe} -p "${tmp}" - echo "${tmp}" - else - # the args here will give slightly wierd names on BSD, - # but should produce a usable file on all userlands - if [[ ${exe} == "touch" ]] ; then - TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX - else - TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX - fi - fi + eerror "emktemp has been removed." + eerror "Create a temporary file in \${T} instead." + die "emktemp is banned" } path_exists() { @@ -76,119 +43,24 @@ path_exists() { die "path_exists is banned" } -# @FUNCTION: use_if_iuse -# @USAGE: <flag> -# @DESCRIPTION: -# Return true if the given flag is in USE and IUSE. -# -# Note that this function should not be used in the global scope. use_if_iuse() { - eqawarn "use_if_iuse is deprecated." - eqawarn "Define it as a local function, or inline it:" - eqawarn " in_iuse foo && use foo" - in_iuse $1 || return 1 - use $1 -} - -if [[ ${EAPI} == 5 ]] ; then - -# @FUNCTION: einstalldocs -# @DESCRIPTION: -# Install documentation using DOCS and HTML_DOCS, in EAPIs that do not -# provide this function. When available (i.e., in EAPI 6 or later), -# the package manager implementation should be used instead. -# -# If DOCS is declared and non-empty, all files listed in it are -# installed. The files must exist, otherwise the function will fail. -# In EAPI 4 and 5, DOCS may specify directories as well; in earlier -# EAPIs using directories is unsupported. -# -# If DOCS is not declared, the files matching patterns given -# in the default EAPI implementation of src_install will be installed. -# If this is undesired, DOCS can be set to empty value to prevent any -# documentation from being installed. -# -# If HTML_DOCS is declared and non-empty, all files and/or directories -# listed in it are installed as HTML docs (using dohtml). -# -# Both DOCS and HTML_DOCS can either be an array or a whitespace- -# separated list. Whenever directories are allowed, '<directory>/.' may -# be specified in order to install all files within the directory -# without creating a sub-directory in docdir. -# -# Passing additional options to dodoc and dohtml is not supported. -# If you needed such a thing, you need to call those helpers explicitly. -einstalldocs() { - debug-print-function ${FUNCNAME} "${@}" - - local dodoc_opts=-r - - if ! declare -p DOCS &>/dev/null ; then - local d - for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ - THANKS BUGS FAQ CREDITS CHANGELOG ; do - if [[ -s ${d} ]] ; then - dodoc "${d}" || die - fi - done - elif [[ $(declare -p DOCS) == "declare -a"* ]] ; then - if [[ ${DOCS[@]} ]] ; then - dodoc ${dodoc_opts} "${DOCS[@]}" || die - fi - else - if [[ ${DOCS} ]] ; then - dodoc ${dodoc_opts} ${DOCS} || die - fi - fi - - if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]] ; then - if [[ ${HTML_DOCS[@]} ]] ; then - dohtml -r "${HTML_DOCS[@]}" || die - fi - else - if [[ ${HTML_DOCS} ]] ; then - dohtml -r ${HTML_DOCS} || die - fi - fi - - return 0 -} - -# @FUNCTION: in_iuse -# @USAGE: <flag> -# @DESCRIPTION: -# Determines whether the given flag is in IUSE. Strips IUSE default -# prefixes as necessary. In EAPIs where it is available (i.e., EAPI 6 -# or later), the package manager implementation should be used instead. -# -# Note that this function must not be used in the global scope. -in_iuse() { - debug-print-function ${FUNCNAME} "${@}" - [[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()" - - local flag=${1} - local liuse=( ${IUSE} ) - - has "${flag}" "${liuse[@]#[+-]}" + eerror "use_if_iuse has been removed." + eerror "Define it as a local function, or inline it:" + eerror " in_iuse foo && use foo" + die "use_if_iuse is banned" } -fi # EAPI 5 - -if [[ ${EAPI} == [56] ]] ; then - # @FUNCTION: eqawarn # @USAGE: [message] # @DESCRIPTION: # Proxy to ewarn for package managers that don't provide eqawarn and use the PM # implementation if available. Reuses PORTAGE_ELOG_CLASSES as set by the dev # profile. -if ! declare -F eqawarn >/dev/null ; then +if [[ ${EAPI} == 6 ]] && ! declare -F eqawarn >/dev/null ; then eqawarn() { has qa ${PORTAGE_ELOG_CLASSES} && ewarn "$@" : } fi -fi # EAPI [56] - fi |