commit:     9d03d59175075c4acac3be7e5ba5a7ded1abf17a
Author:     Aaron W. Swenson <titanofold <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 10 01:55:17 2017 +0000
Commit:     Aaron Swenson <titanofold <AT> gentoo <DOT> org>
CommitDate: Mon Jul 10 02:03:55 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9d03d591

Initial commit postgres{,-multi}.eclass

postgres.eclass provides convenience functions that are commonly
performed in most packages that require PostgreSQL.

postgres-multi.eclass enables packages to build against all selected
PostgreSQL slots.

Added POSTGRES_TARGETS as a new USE_EXPAND variable to select which
slots are depended upon and built against.

 eclass/postgres-multi.eclass        | 178 ++++++++++++++++++++++++++++++++++++
 eclass/postgres.eclass              | 159 ++++++++++++++++++++++++++++++++
 profiles/base/make.defaults         |   6 +-
 profiles/desc/postgres_targets.desc |  12 +++
 profiles/embedded/make.defaults     |   2 +-
 5 files changed, 355 insertions(+), 2 deletions(-)

diff --git a/eclass/postgres-multi.eclass b/eclass/postgres-multi.eclass
new file mode 100644
index 00000000000..f490eccb3d1
--- /dev/null
+++ b/eclass/postgres-multi.eclass
@@ -0,0 +1,178 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit multibuild postgres
+EXPORT_FUNCTIONS pkg_setup src_prepare src_compile src_install src_test
+
+
+# @ECLASS: postgres-multi
+# @MAINTAINER:
+# PostgreSQL <pgsql-b...@gentoo.org>
+# @AUTHOR: Aaron W. Swenson <titanof...@gentoo.org>
+# @BLURB: An eclass to build PostgreSQL-related packages against multiple slots
+# @DESCRIPTION:
+# postgres-multi enables ebuilds, particularly PostgreSQL extensions, to
+# build and install for one or more PostgreSQL slots as specified by
+# POSTGRES_TARGETS use flags.
+
+
+case ${EAPI:-0} in
+       5|6) ;;
+       *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
+esac
+
+
+# @ECLASS-VARIABLE: POSTGRES_COMPAT
+# @REQUIRED
+# @DESCRIPTION:
+# A Bash array containing a list of compatible PostgreSQL slots as
+# defined by the developer. Must be declared before inheriting this
+# eclass. Example: POSTGRES_COMPAT=( 9.4 9.{5,6} )
+if ! declare -p POSTGRES_COMPAT &>/dev/null; then
+       die 'Required variable POSTGRES_COMPAT not declared.'
+fi
+
+# @ECLASS-VARIABLE: _POSTGRES_INTERSECT_SLOTS
+# @INTERNAL
+# @DESCRIPTION:
+# A Bash array containing the intersect of POSTGRES_TARGETS and
+# POSTGRES_COMPAT.
+export _POSTGRES_INTERSECT_SLOTS=( )
+
+# @FUNCTION _postgres-multi_multibuild_wrapper
+# @INTERNAL
+# @USAGE: _postgres-multi_multibuild_wrapper <command> [<arg> ...]
+# @DESCRIPTION:
+# For the given variant, set the values of the PG_SLOT, PG_CONFIG, and
+# PKG_CONFIG_PATH environment variables accordingly and replace any
+# appearance of @PG_SLOT@ in the command and arguments with value of
+# ${PG_SLOT}.
+_postgres-multi_multibuild_wrapper() {
+       debug-print-function ${FUNCNAME} "${@}"
+       export PG_SLOT=${MULTIBUILD_VARIANT}
+       export PG_CONFIG=$(which pg_config${MULTIBUILD_VARIANT//./})
+       if [[ -n ${PKG_CONFIG_PATH} ]] ; then
+               PKG_CONFIG_PATH="$(${PG_CONFIG} 
--libdir)/pkgconfig:${PKG_CONFIG_PATH}"
+       else
+               PKG_CONFIG_PATH="$(${PG_CONFIG} --libdir)/pkgconfig"
+       fi
+       export PKG_CONFIG_PATH
+
+       $(echo "${@}" | sed "s/@PG_SLOT@/${PG_SLOT}/g")
+}
+
+# @FUNCTION: postgres-multi_foreach
+# @USAGE: postgres-multi_foreach <command> <arg> [<arg> ...]
+# @DESCRIPTION:
+# Run the given command in the package's build directory for each
+# PostgreSQL slot in the intersect of POSTGRES_TARGETS and
+# POSTGRES_COMPAT and user-enabled slots. The PG_CONFIG and
+# PKG_CONFIG_PATH environment variables are updated on each iteration to
+# point to the matching pg_config command and pkg-config metadata files,
+# respectively, for the current slot. Any appearance of @PG_SLOT@ in the
+# command or arguments will be substituted with the slot (e.g., 9.5) of
+# the current iteration.
+postgres-multi_foreach() {
+       local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[@]}")
+
+       multibuild_foreach_variant \
+               _postgres-multi_multibuild_wrapper run_in_build_dir ${@}
+}
+
+# @FUNCTION: postgres-multi_forbest
+# @USAGE: postgres-multi_forbest <command> <arg> [<arg> ...]
+# @DESCRIPTION:
+# Run the given command in the package's build directory for the highest
+# slot in the intersect of POSTGRES_COMPAT and POSTGRES_TARGETS. The
+# PG_CONFIG and PKG_CONFIG_PATH environment variables are set to the
+# matching pg_config command and pkg-config metadata files,
+# respectively. Any appearance of @PG_SLOT@ in the command or arguments
+# will be substituted with the matching slot (e.g., 9.5).
+postgres-multi_forbest() {
+       # POSTGRES_COMPAT is reverse sorted once in postgres.eclass so
+       # element 0 has the highest slot version.
+       local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[0]}")
+
+       multibuild_foreach_variant \
+               _postgres-multi_multibuild_wrapper run_in_build_dir ${@}
+}
+
+# @FUNCTION: postgres-multi_pkg_setup
+# @REQUIRED
+# @USAGE: postgres-multi_pkg_setup
+# @DESCRIPTION:
+# Initialize internal environment variable(s). This is required if
+# pkg_setup() is declared in the ebuild.
+postgres-multi_pkg_setup() {
+       local user_slot
+
+       for user_slot in "${POSTGRES_COMPAT[@]}"; do
+               use "postgres_targets_postgres${user_slot/\./_}" && \
+                       _POSTGRES_INTERSECT_SLOTS+=( "${user_slot}" )
+       done
+
+       if [[ "${#_POSTGRES_INTERSECT_SLOTS[@]}" -eq "0" ]]; then
+               die "One of the postgres_targets_postgresSL_OT use flags must 
be enabled"
+       fi
+
+       einfo "Multibuild variants: ${_POSTGRES_INTERSECT_SLOTS[@]}"
+}
+
+# @FUNCTION: postgres-multi_src_prepare
+# @REQUIRED
+# @USAGE: postgres-multi_src_prepare
+# @DESCRIPTION:
+# Calls eapply_user then copies ${S} into a build directory for each
+# intersect of POSTGRES_TARGETS and POSTGRES_COMPAT.
+postgres-multi_src_prepare() {
+       if [[ "${#_POSTGRES_INTERSECT_SLOTS[@]}" -eq "0" ]]; then
+               eerror "Internal array _POSTGRES_INTERSECT_SLOTS is empty."
+               die "Did you forget to call postgres-multi_pkg_setup?"
+       fi
+
+       # Check that the slot has been emerged (Should be prevented by
+       # Portage, but won't be caught by /usr/bin/ebuild)
+       local slot
+       for slot in ${_POSTGRES_INTERSECT_SLOTS[@]} ; do
+               if [[ -z $(which pg_config${slot/.} 2> /dev/null) ]] ; then
+                       eerror
+                       eerror "postgres_targets_postgres${slot/.} use flag is 
enabled, but hasn't been emerged."
+                       eerror
+                       die "a postgres_targets use flag is enabled, but not 
emerged"
+               fi
+       done
+
+       case ${EAPI:-0} in
+               0|1|2|3|4|5) epatch_user ;;
+               6) eapply_user ;;
+       esac
+
+       local MULTIBUILD_VARIANT
+       local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[@]}")
+       multibuild_copy_sources
+}
+
+# @FUNCTION: postgres-multi_src_compile
+# @USAGE: postgres-multi_src_compile
+# @DESCRIPTION:
+# Runs `emake' in each build directory
+postgres-multi_src_compile() {
+       postgres-multi_foreach emake
+}
+
+# @FUNCTION: postgres-multi_src_install
+# @USAGE: postgres-multi_src_install
+# @DESCRIPTION:
+# Runs `emake install DESTDIR="${D}"' in each build directory.
+postgres-multi_src_install() {
+       postgres-multi_foreach emake install DESTDIR="${D}"
+}
+
+# @FUNCTION: postgres-multi_src_test
+# @USAGE: postgres-multi_src_test
+# @DESCRIPTION:
+# Runs `emake installcheck' in each build directory.
+postgres-multi_src_test() {
+       postgres-multi_foreach emake installcheck
+}

diff --git a/eclass/postgres.eclass b/eclass/postgres.eclass
new file mode 100644
index 00000000000..6df81c19b3a
--- /dev/null
+++ b/eclass/postgres.eclass
@@ -0,0 +1,159 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit user
+EXPORT_FUNCTIONS pkg_setup
+
+# @ECLASS: postgres
+# @MAINTAINER:
+# PostgreSQL <pgsql-b...@gentoo.org>
+# @AUTHOR: Aaron W. Swenson <titanof...@gentoo.org>
+# @BLURB: An eclass for PostgreSQL-related packages
+# @DESCRIPTION:
+# This eclass provides common utility functions that many
+# PostgreSQL-related packages perform, such as checking that the
+# currently selected PostgreSQL slot is within a range, adding a system
+# user to the postgres system group, and generating dependencies.
+
+
+case ${EAPI:-0} in
+       5|6) ;;
+       *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
+esac
+
+
+# @ECLASS-VARIABLE: POSTGRES_COMPAT
+# @DESCRIPTION:
+# A Bash array containing a list of compatible PostgreSQL slots as
+# defined by the developer. If declared, must be declared before
+# inheriting this eclass. Example: POSTGRES_COMPAT=( 9.4 9.{5,6} )
+
+# @ECLASS-VARIABLE: POSTGRES_USEDEP
+# @DESCRIPTION:
+# Add the 2-Style and/or 4-Style use dependencies without brackets to be used
+# for POSTGRES_DEP. If declared, must be done before inheriting this eclass.
+
+# @ECLASS-VARIABLE: POSTGRES_DEP
+# @DESCRIPTION:
+# An automatically generated dependency string suitable for use in
+# DEPEND and RDEPEND declarations.
+
+# @ECLASS-VARIABLE: POSTGRES_REQ_USE
+# @DESCRIPTION:
+# An automatically generated REQUIRED_USE-compatible string built upon
+# POSTGRES_COMPAT. REQUIRED_USE="... ${POSTGRES_REQ_USE}" is only
+# required if the package must build against one of the PostgreSQL slots
+# declared in POSTGRES_COMPAT.
+
+if declare -p POSTGRES_COMPAT &> /dev/null ; then
+       # Reverse sort the given POSTGRES_COMPAT so that the most recent
+       # slot is preferred over an older slot.
+       # -- do we care if dependencies are deterministic by USE flags?
+       readarray -t POSTGRES_COMPAT < <(printf '%s\n' "${POSTGRES_COMPAT[@]}" 
| sort -nr)
+
+       POSTGRES_DEP=""
+       POSTGRES_REQ_USE=" || ("
+       for slot in "${POSTGRES_COMPAT[@]}" ; do
+               POSTGRES_DEP+=" postgres_targets_postgres${slot/\./_}? ( 
dev-db/postgresql:${slot}="
+               declare -p POSTGRES_USEDEP &>/dev/null && \
+                       POSTGRES_DEP+="[${POSTGRES_USEDEP}]"
+               POSTGRES_DEP+=" )"
+
+               IUSE+=" postgres_targets_postgres${slot/\./_}"
+               POSTGRES_REQ_USE+=" postgres_targets_postgres${slot/\./_}"
+       done
+       POSTGRES_REQ_USE+=" )"
+else
+       POSTGRES_DEP="dev-db/postgresql:="
+       declare -p POSTGRES_USEDEP &>/dev/null && \
+               POSTGRES_DEP+="[${POSTGRES_USEDEP}]"
+fi
+
+
+# @FUNCTION: postgres_check_slot
+# @DESCRIPTION:
+# Verify that the currently selected PostgreSQL slot is set to one of
+# the slots defined in POSTGRES_COMPAT. Automatically dies unless a
+# POSTGRES_COMPAT slot is selected. Should be called in pkg_pretend().
+postgres_check_slot() {
+       if ! declare -p POSTGRES_COMPAT &>/dev/null; then
+               die 'POSTGRES_COMPAT not declared.'
+       fi
+
+       # Don't die because we can't run postgresql-config during pretend.
+       [[ "$EBUILD_PHASE" = "pretend" && -z "$(which postgresql-config 2> 
/dev/null)" ]] \
+               && return 0
+
+       if has $(postgresql-config show 2> /dev/null) "${POSTGRES_COMPAT[@]}"; 
then
+               return 0
+       else
+               eerror "PostgreSQL slot must be set to one of: "
+               eerror "    ${POSTGRES_COMPAT[@]}"
+               die "Incompatible PostgreSQL slot eselected"
+       fi
+}
+
+# @FUNCTION: postgres_new_user
+# @DESCRIPTION:
+# Creates the "postgres" system group and user -- which is separate from
+# the database user -- in addition to the developer defined user. Takes
+# the same arguments as "enewuser".
+postgres_new_user() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+
+       if [[ $# -gt 0 ]] ; then
+               if [[ "$1" = "postgres" ]] ; then
+                       ewarn "Username 'postgres' implied, skipping"
+               else
+                       local groups=$5
+                       [[ -n "${groups}" ]] && groups+=",postgres" || 
groups="postgres"
+                       enewuser "$1" "${2:--1}" "${3:--1}" "${4:--1}" 
"${groups}"
+               fi
+       fi
+}
+
+# @FUNCTION: postgres_pkg_setup
+# @REQUIRED
+# @USAGE: postgres_pkg_setup
+# @DESCRIPTION:
+# Initialize environment variable(s) according to the best
+# installed version of PostgreSQL that is also in POSTGRES_COMPAT. This
+# is required if pkg_setup() is declared in the ebuild.
+# Exports PG_SLOT, PG_CONFIG, and PKG_CONFIG_PATH.
+postgres_pkg_setup() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       local compat_slot
+       local best_slot
+       for compat_slot in "${POSTGRES_COMPAT[@]}"; do
+               if use "postgres_targets_postgres${compat_slot/\./_}"; then
+                       best_slot="${compat_slot}"
+                       break
+               fi
+       done
+
+       if [[ -z "${best_slot}" ]]; then
+               local flags f
+               for f in "${POSTGRES_COMPAT[@]}"; do
+                       flags+=" postgres${f/./_}"
+               done
+
+               eerror "POSTGRES_TARGETS must contain at least one of:"
+               eerror "    ${flags}"
+               die "No suitable POSTGRES_TARGETS enabled."
+       fi
+
+       export PG_SLOT=${best_slot}
+       export PG_CONFIG=$(which pg_config${best_slot//./})
+
+       local pg_pkg_config_path="$(${PG_CONFIG} --libdir)/pkgconfig"
+       if [[ -n "${PKG_CONFIG_PATH}" ]]; then
+               export 
PKG_CONFIG_PATH="${pg_pkg_config_path}:${PKG_CONFIG_PATH}"
+       else
+               export PKG_CONFIG_PATH="${pg_pkg_config_path}"
+       fi
+
+       elog "PostgreSQL Target: ${best_slot}"
+}

diff --git a/profiles/base/make.defaults b/profiles/base/make.defaults
index b090eab54c8..7e593196de0 100644
--- a/profiles/base/make.defaults
+++ b/profiles/base/make.defaults
@@ -13,7 +13,7 @@ USE_EXPAND_VALUES_USERLAND="BSD GNU"
 
 # Env vars to expand into USE vars.  Modifying this requires prior
 # discussion on gentoo-...@lists.gentoo.org.
-USE_EXPAND="ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES 
APACHE2_MPMS CALLIGRA_FEATURES CALLIGRA_EXPERIMENTAL_FEATURES CAMERAS 
COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CURL_SSL ELIBC 
ENLIGHTENMENT_MODULES FFTOOLS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES 
KERNEL L10N LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES 
LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP 
NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION 
OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM PHP_TARGETS 
PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS 
ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS USERLAND UWSGI_PLUGINS VIDEO_CARDS 
VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS"
+USE_EXPAND="ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES 
APACHE2_MPMS CALLIGRA_FEATURES CALLIGRA_EXPERIMENTAL_FEATURES CAMERAS 
COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CURL_SSL ELIBC 
ENLIGHTENMENT_MODULES FFTOOLS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES 
KERNEL L10N LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES 
LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP 
NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION 
OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM PHP_TARGETS POSTGRES_TARGETS 
PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS 
ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS USERLAND UWSGI_PLUGINS VIDEO_CARDS 
VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS"
 
 # USE_EXPAND variables whose contents are not shown in package manager
 # output. Changes need discussion on gentoo-dev.
@@ -141,3 +141,7 @@ LC_MESSAGES="C"
 # disable twisted's plugin cache update to prevent access violations
 # call /usr/bin/twisted-regen-cache in pkg_postinst()
 TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
+
+# Aaron W. Swenson <titanof...@gentoo.org> (9 Jul 2017)
+# Default target(s) for postgres{,-multi}.eclass
+POSTGRES_TARGETS="postgres9_5"

diff --git a/profiles/desc/postgres_targets.desc 
b/profiles/desc/postgres_targets.desc
new file mode 100644
index 00000000000..284f4bc0092
--- /dev/null
+++ b/profiles/desc/postgres_targets.desc
@@ -0,0 +1,12 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# This file contains descriptions of POSTGRES_TARGETS USE_EXPAND flags.
+
+postgres9_2 - Build against PostgreSQL 9.2
+postgres9_3 - Build against PostgreSQL 9.3
+postgres9_4 - Build against PostgreSQL 9.4
+postgres9_5 - Build against PostgreSQL 9.5
+postgres9_6 - Build against PostgreSQL 9.6
+postgres10 - Build against PostgreSQL 10
+postgres11 - Build against PostgreSQL 11

diff --git a/profiles/embedded/make.defaults b/profiles/embedded/make.defaults
index 0a6f3ed3cd7..1145142fe4a 100644
--- a/profiles/embedded/make.defaults
+++ b/profiles/embedded/make.defaults
@@ -27,7 +27,7 @@ USE_EXPAND_VALUES_USERLAND="BSD GNU"
 
 # Env vars to expand into USE vars.  Modifying this requires prior
 # discussion on gentoo-...@lists.gentoo.org.
-USE_EXPAND="ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES 
APACHE2_MPMS CALLIGRA_FEATURES CAMERAS COLLECTD_PLUGINS CPU_FLAGS_ARM 
CPU_FLAGS_X86 CROSSCOMPILE_OPTS CURL_SSL ELIBC ENLIGHTENMENT_MODULES FFTOOLS 
GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL L10N LCD_DEVICES 
LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS 
NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM 
OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES 
OPENMPI_RM PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS 
QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS USERLAND 
UWSGI_PLUGINS VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS"
+USE_EXPAND="ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES 
APACHE2_MPMS CALLIGRA_FEATURES CAMERAS COLLECTD_PLUGINS CPU_FLAGS_ARM 
CPU_FLAGS_X86 CROSSCOMPILE_OPTS CURL_SSL ELIBC ENLIGHTENMENT_MODULES FFTOOLS 
GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL L10N LCD_DEVICES 
LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS 
NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM 
OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES 
OPENMPI_RM PHP_TARGETS POSTGRES_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS 
QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS 
USERLAND UWSGI_PLUGINS VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS 
XTABLES_ADDONS"
 
 # USE_EXPAND variables whose contents are not shown in package manager
 # output. Changes need discussion on gentoo-dev.

Reply via email to