Re: [gentoo-dev] [PATCH 1/2] optfeature.eclass: New eclass with definition from eutils
On Sun, 2020-09-06 at 18:51 +0300, Joonas Niilola wrote: > On 9/6/20 6:47 PM, David Seifert wrote: > > --- > > eclass/optfeature.eclass | 63 > > > > 1 file changed, 63 insertions(+) > > create mode 100644 eclass/optfeature.eclass > > > Can we have the "why" answered? Wasn't this supposed to be part of > future EAPI? > > -- juippis > > It's one of those features that comes up once a year, everyone agrees that it would be great to have, noone wants to provide a proof-of- concept because portage, and then it gets deferred for another round of EAPI. Unless I can be convinced that it will be in EAPI 8, this function will likely stick around.
Re: [gentoo-dev] [PATCH 1/2] optfeature.eclass: New eclass with definition from eutils
On 9/6/20 6:47 PM, David Seifert wrote: > --- > eclass/optfeature.eclass | 63 > 1 file changed, 63 insertions(+) > create mode 100644 eclass/optfeature.eclass > Can we have the "why" answered? Wasn't this supposed to be part of future EAPI? -- juippis signature.asc Description: OpenPGP digital signature
[gentoo-dev] [PATCH 1/2] optfeature.eclass: New eclass with definition from eutils
Signed-off-by: David Seifert --- eclass/optfeature.eclass | 63 1 file changed, 63 insertions(+) create mode 100644 eclass/optfeature.eclass diff --git a/eclass/optfeature.eclass b/eclass/optfeature.eclass new file mode 100644 index 000..b0082606cd6 --- /dev/null +++ b/eclass/optfeature.eclass @@ -0,0 +1,63 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: optfeature.eclass +# @MAINTAINER: +# base-sys...@gentoo.org +# @BLURB: Advertise optional functionality that might be useful to users + +case "${EAPI:-0}" in + [0-7]) ;; + *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;; +esac + +if [[ -z ${_OPTFEATURE_ECLASS} ]]; then +_OPTFEATURE_ECLASS=1 + +# @FUNCTION: optfeature +# @USAGE: [other atoms] +# @DESCRIPTION: +# Print out a message suggesting an optional package (or packages) +# not currently installed which provides the described functionality. +# +# The following snippet would suggest app-misc/foo for optional foo support, +# app-misc/bar or app-misc/baz[bar] for optional bar support +# and either both app-misc/a and app-misc/b or app-misc/c for alphabet support. +# @CODE +# optfeature "foo support" app-misc/foo +# optfeature "bar support" app-misc/bar app-misc/baz[bar] +# optfeature "alphabet support" "app-misc/a app-misc/b" app-misc/c +# @CODE +optfeature() { + debug-print-function ${FUNCNAME} "$@" + + local i j msg + local desc=$1 + local flag=0 + shift + for i; do + for j in ${i}; do + if has_version "${j}"; then + flag=1 + else + flag=0 + break + fi + done + if [[ ${flag} -eq 1 ]]; then + break + fi + done + if [[ ${flag} -eq 0 ]]; then + for i; do + msg=" " + for j in ${i}; do + msg+=" ${j} and" + done + msg="${msg:0: -4} for ${desc}" + elog "${msg}" + done + fi +} + +fi -- 2.28.0