Re: [gentoo-dev] [PATCH 1/2] optfeature.eclass: New eclass with definition from eutils

2020-09-06 Thread David Seifert
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

2020-09-06 Thread Joonas Niilola

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

2020-09-06 Thread David Seifert
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