Gentoo Archives: gentoo-commits

From: Aaron Swenson <titanofold@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: profiles/base/, profiles/desc/, eclass/, profiles/embedded/
Date: Mon, 10 Jul 2017 02:27:40
Message-Id: 1499652235.9d03d59175075c4acac3be7e5ba5a7ded1abf17a.titanofold@gentoo
1 commit: 9d03d59175075c4acac3be7e5ba5a7ded1abf17a
2 Author: Aaron W. Swenson <titanofold <AT> gentoo <DOT> org>
3 AuthorDate: Mon Jul 10 01:55:17 2017 +0000
4 Commit: Aaron Swenson <titanofold <AT> gentoo <DOT> org>
5 CommitDate: Mon Jul 10 02:03:55 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9d03d591
7
8 Initial commit postgres{,-multi}.eclass
9
10 postgres.eclass provides convenience functions that are commonly
11 performed in most packages that require PostgreSQL.
12
13 postgres-multi.eclass enables packages to build against all selected
14 PostgreSQL slots.
15
16 Added POSTGRES_TARGETS as a new USE_EXPAND variable to select which
17 slots are depended upon and built against.
18
19 eclass/postgres-multi.eclass | 178 ++++++++++++++++++++++++++++++++++++
20 eclass/postgres.eclass | 159 ++++++++++++++++++++++++++++++++
21 profiles/base/make.defaults | 6 +-
22 profiles/desc/postgres_targets.desc | 12 +++
23 profiles/embedded/make.defaults | 2 +-
24 5 files changed, 355 insertions(+), 2 deletions(-)
25
26 diff --git a/eclass/postgres-multi.eclass b/eclass/postgres-multi.eclass
27 new file mode 100644
28 index 00000000000..f490eccb3d1
29 --- /dev/null
30 +++ b/eclass/postgres-multi.eclass
31 @@ -0,0 +1,178 @@
32 +# Copyright 1999-2016 Gentoo Foundation
33 +# Distributed under the terms of the GNU General Public License v2
34 +# $Id$
35 +
36 +inherit multibuild postgres
37 +EXPORT_FUNCTIONS pkg_setup src_prepare src_compile src_install src_test
38 +
39 +
40 +# @ECLASS: postgres-multi
41 +# @MAINTAINER:
42 +# PostgreSQL <pgsql-bugs@g.o>
43 +# @AUTHOR: Aaron W. Swenson <titanofold@g.o>
44 +# @BLURB: An eclass to build PostgreSQL-related packages against multiple slots
45 +# @DESCRIPTION:
46 +# postgres-multi enables ebuilds, particularly PostgreSQL extensions, to
47 +# build and install for one or more PostgreSQL slots as specified by
48 +# POSTGRES_TARGETS use flags.
49 +
50 +
51 +case ${EAPI:-0} in
52 + 5|6) ;;
53 + *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
54 +esac
55 +
56 +
57 +# @ECLASS-VARIABLE: POSTGRES_COMPAT
58 +# @REQUIRED
59 +# @DESCRIPTION:
60 +# A Bash array containing a list of compatible PostgreSQL slots as
61 +# defined by the developer. Must be declared before inheriting this
62 +# eclass. Example: POSTGRES_COMPAT=( 9.4 9.{5,6} )
63 +if ! declare -p POSTGRES_COMPAT &>/dev/null; then
64 + die 'Required variable POSTGRES_COMPAT not declared.'
65 +fi
66 +
67 +# @ECLASS-VARIABLE: _POSTGRES_INTERSECT_SLOTS
68 +# @INTERNAL
69 +# @DESCRIPTION:
70 +# A Bash array containing the intersect of POSTGRES_TARGETS and
71 +# POSTGRES_COMPAT.
72 +export _POSTGRES_INTERSECT_SLOTS=( )
73 +
74 +# @FUNCTION _postgres-multi_multibuild_wrapper
75 +# @INTERNAL
76 +# @USAGE: _postgres-multi_multibuild_wrapper <command> [<arg> ...]
77 +# @DESCRIPTION:
78 +# For the given variant, set the values of the PG_SLOT, PG_CONFIG, and
79 +# PKG_CONFIG_PATH environment variables accordingly and replace any
80 +# appearance of @PG_SLOT@ in the command and arguments with value of
81 +# ${PG_SLOT}.
82 +_postgres-multi_multibuild_wrapper() {
83 + debug-print-function ${FUNCNAME} "${@}"
84 + export PG_SLOT=${MULTIBUILD_VARIANT}
85 + export PG_CONFIG=$(which pg_config${MULTIBUILD_VARIANT//./})
86 + if [[ -n ${PKG_CONFIG_PATH} ]] ; then
87 + PKG_CONFIG_PATH="$(${PG_CONFIG} --libdir)/pkgconfig:${PKG_CONFIG_PATH}"
88 + else
89 + PKG_CONFIG_PATH="$(${PG_CONFIG} --libdir)/pkgconfig"
90 + fi
91 + export PKG_CONFIG_PATH
92 +
93 + $(echo "${@}" | sed "s/@PG_SLOT@/${PG_SLOT}/g")
94 +}
95 +
96 +# @FUNCTION: postgres-multi_foreach
97 +# @USAGE: postgres-multi_foreach <command> <arg> [<arg> ...]
98 +# @DESCRIPTION:
99 +# Run the given command in the package's build directory for each
100 +# PostgreSQL slot in the intersect of POSTGRES_TARGETS and
101 +# POSTGRES_COMPAT and user-enabled slots. The PG_CONFIG and
102 +# PKG_CONFIG_PATH environment variables are updated on each iteration to
103 +# point to the matching pg_config command and pkg-config metadata files,
104 +# respectively, for the current slot. Any appearance of @PG_SLOT@ in the
105 +# command or arguments will be substituted with the slot (e.g., 9.5) of
106 +# the current iteration.
107 +postgres-multi_foreach() {
108 + local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[@]}")
109 +
110 + multibuild_foreach_variant \
111 + _postgres-multi_multibuild_wrapper run_in_build_dir ${@}
112 +}
113 +
114 +# @FUNCTION: postgres-multi_forbest
115 +# @USAGE: postgres-multi_forbest <command> <arg> [<arg> ...]
116 +# @DESCRIPTION:
117 +# Run the given command in the package's build directory for the highest
118 +# slot in the intersect of POSTGRES_COMPAT and POSTGRES_TARGETS. The
119 +# PG_CONFIG and PKG_CONFIG_PATH environment variables are set to the
120 +# matching pg_config command and pkg-config metadata files,
121 +# respectively. Any appearance of @PG_SLOT@ in the command or arguments
122 +# will be substituted with the matching slot (e.g., 9.5).
123 +postgres-multi_forbest() {
124 + # POSTGRES_COMPAT is reverse sorted once in postgres.eclass so
125 + # element 0 has the highest slot version.
126 + local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[0]}")
127 +
128 + multibuild_foreach_variant \
129 + _postgres-multi_multibuild_wrapper run_in_build_dir ${@}
130 +}
131 +
132 +# @FUNCTION: postgres-multi_pkg_setup
133 +# @REQUIRED
134 +# @USAGE: postgres-multi_pkg_setup
135 +# @DESCRIPTION:
136 +# Initialize internal environment variable(s). This is required if
137 +# pkg_setup() is declared in the ebuild.
138 +postgres-multi_pkg_setup() {
139 + local user_slot
140 +
141 + for user_slot in "${POSTGRES_COMPAT[@]}"; do
142 + use "postgres_targets_postgres${user_slot/\./_}" && \
143 + _POSTGRES_INTERSECT_SLOTS+=( "${user_slot}" )
144 + done
145 +
146 + if [[ "${#_POSTGRES_INTERSECT_SLOTS[@]}" -eq "0" ]]; then
147 + die "One of the postgres_targets_postgresSL_OT use flags must be enabled"
148 + fi
149 +
150 + einfo "Multibuild variants: ${_POSTGRES_INTERSECT_SLOTS[@]}"
151 +}
152 +
153 +# @FUNCTION: postgres-multi_src_prepare
154 +# @REQUIRED
155 +# @USAGE: postgres-multi_src_prepare
156 +# @DESCRIPTION:
157 +# Calls eapply_user then copies ${S} into a build directory for each
158 +# intersect of POSTGRES_TARGETS and POSTGRES_COMPAT.
159 +postgres-multi_src_prepare() {
160 + if [[ "${#_POSTGRES_INTERSECT_SLOTS[@]}" -eq "0" ]]; then
161 + eerror "Internal array _POSTGRES_INTERSECT_SLOTS is empty."
162 + die "Did you forget to call postgres-multi_pkg_setup?"
163 + fi
164 +
165 + # Check that the slot has been emerged (Should be prevented by
166 + # Portage, but won't be caught by /usr/bin/ebuild)
167 + local slot
168 + for slot in ${_POSTGRES_INTERSECT_SLOTS[@]} ; do
169 + if [[ -z $(which pg_config${slot/.} 2> /dev/null) ]] ; then
170 + eerror
171 + eerror "postgres_targets_postgres${slot/.} use flag is enabled, but hasn't been emerged."
172 + eerror
173 + die "a postgres_targets use flag is enabled, but not emerged"
174 + fi
175 + done
176 +
177 + case ${EAPI:-0} in
178 + 0|1|2|3|4|5) epatch_user ;;
179 + 6) eapply_user ;;
180 + esac
181 +
182 + local MULTIBUILD_VARIANT
183 + local MULTIBUILD_VARIANTS=("${_POSTGRES_INTERSECT_SLOTS[@]}")
184 + multibuild_copy_sources
185 +}
186 +
187 +# @FUNCTION: postgres-multi_src_compile
188 +# @USAGE: postgres-multi_src_compile
189 +# @DESCRIPTION:
190 +# Runs `emake' in each build directory
191 +postgres-multi_src_compile() {
192 + postgres-multi_foreach emake
193 +}
194 +
195 +# @FUNCTION: postgres-multi_src_install
196 +# @USAGE: postgres-multi_src_install
197 +# @DESCRIPTION:
198 +# Runs `emake install DESTDIR="${D}"' in each build directory.
199 +postgres-multi_src_install() {
200 + postgres-multi_foreach emake install DESTDIR="${D}"
201 +}
202 +
203 +# @FUNCTION: postgres-multi_src_test
204 +# @USAGE: postgres-multi_src_test
205 +# @DESCRIPTION:
206 +# Runs `emake installcheck' in each build directory.
207 +postgres-multi_src_test() {
208 + postgres-multi_foreach emake installcheck
209 +}
210
211 diff --git a/eclass/postgres.eclass b/eclass/postgres.eclass
212 new file mode 100644
213 index 00000000000..6df81c19b3a
214 --- /dev/null
215 +++ b/eclass/postgres.eclass
216 @@ -0,0 +1,159 @@
217 +# Copyright 1999-2016 Gentoo Foundation
218 +# Distributed under the terms of the GNU General Public License v2
219 +# $Id$
220 +
221 +inherit user
222 +EXPORT_FUNCTIONS pkg_setup
223 +
224 +# @ECLASS: postgres
225 +# @MAINTAINER:
226 +# PostgreSQL <pgsql-bugs@g.o>
227 +# @AUTHOR: Aaron W. Swenson <titanofold@g.o>
228 +# @BLURB: An eclass for PostgreSQL-related packages
229 +# @DESCRIPTION:
230 +# This eclass provides common utility functions that many
231 +# PostgreSQL-related packages perform, such as checking that the
232 +# currently selected PostgreSQL slot is within a range, adding a system
233 +# user to the postgres system group, and generating dependencies.
234 +
235 +
236 +case ${EAPI:-0} in
237 + 5|6) ;;
238 + *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
239 +esac
240 +
241 +
242 +# @ECLASS-VARIABLE: POSTGRES_COMPAT
243 +# @DESCRIPTION:
244 +# A Bash array containing a list of compatible PostgreSQL slots as
245 +# defined by the developer. If declared, must be declared before
246 +# inheriting this eclass. Example: POSTGRES_COMPAT=( 9.4 9.{5,6} )
247 +
248 +# @ECLASS-VARIABLE: POSTGRES_USEDEP
249 +# @DESCRIPTION:
250 +# Add the 2-Style and/or 4-Style use dependencies without brackets to be used
251 +# for POSTGRES_DEP. If declared, must be done before inheriting this eclass.
252 +
253 +# @ECLASS-VARIABLE: POSTGRES_DEP
254 +# @DESCRIPTION:
255 +# An automatically generated dependency string suitable for use in
256 +# DEPEND and RDEPEND declarations.
257 +
258 +# @ECLASS-VARIABLE: POSTGRES_REQ_USE
259 +# @DESCRIPTION:
260 +# An automatically generated REQUIRED_USE-compatible string built upon
261 +# POSTGRES_COMPAT. REQUIRED_USE="... ${POSTGRES_REQ_USE}" is only
262 +# required if the package must build against one of the PostgreSQL slots
263 +# declared in POSTGRES_COMPAT.
264 +
265 +if declare -p POSTGRES_COMPAT &> /dev/null ; then
266 + # Reverse sort the given POSTGRES_COMPAT so that the most recent
267 + # slot is preferred over an older slot.
268 + # -- do we care if dependencies are deterministic by USE flags?
269 + readarray -t POSTGRES_COMPAT < <(printf '%s\n' "${POSTGRES_COMPAT[@]}" | sort -nr)
270 +
271 + POSTGRES_DEP=""
272 + POSTGRES_REQ_USE=" || ("
273 + for slot in "${POSTGRES_COMPAT[@]}" ; do
274 + POSTGRES_DEP+=" postgres_targets_postgres${slot/\./_}? ( dev-db/postgresql:${slot}="
275 + declare -p POSTGRES_USEDEP &>/dev/null && \
276 + POSTGRES_DEP+="[${POSTGRES_USEDEP}]"
277 + POSTGRES_DEP+=" )"
278 +
279 + IUSE+=" postgres_targets_postgres${slot/\./_}"
280 + POSTGRES_REQ_USE+=" postgres_targets_postgres${slot/\./_}"
281 + done
282 + POSTGRES_REQ_USE+=" )"
283 +else
284 + POSTGRES_DEP="dev-db/postgresql:="
285 + declare -p POSTGRES_USEDEP &>/dev/null && \
286 + POSTGRES_DEP+="[${POSTGRES_USEDEP}]"
287 +fi
288 +
289 +
290 +# @FUNCTION: postgres_check_slot
291 +# @DESCRIPTION:
292 +# Verify that the currently selected PostgreSQL slot is set to one of
293 +# the slots defined in POSTGRES_COMPAT. Automatically dies unless a
294 +# POSTGRES_COMPAT slot is selected. Should be called in pkg_pretend().
295 +postgres_check_slot() {
296 + if ! declare -p POSTGRES_COMPAT &>/dev/null; then
297 + die 'POSTGRES_COMPAT not declared.'
298 + fi
299 +
300 + # Don't die because we can't run postgresql-config during pretend.
301 + [[ "$EBUILD_PHASE" = "pretend" && -z "$(which postgresql-config 2> /dev/null)" ]] \
302 + && return 0
303 +
304 + if has $(postgresql-config show 2> /dev/null) "${POSTGRES_COMPAT[@]}"; then
305 + return 0
306 + else
307 + eerror "PostgreSQL slot must be set to one of: "
308 + eerror " ${POSTGRES_COMPAT[@]}"
309 + die "Incompatible PostgreSQL slot eselected"
310 + fi
311 +}
312 +
313 +# @FUNCTION: postgres_new_user
314 +# @DESCRIPTION:
315 +# Creates the "postgres" system group and user -- which is separate from
316 +# the database user -- in addition to the developer defined user. Takes
317 +# the same arguments as "enewuser".
318 +postgres_new_user() {
319 + enewgroup postgres 70
320 + enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
321 +
322 + if [[ $# -gt 0 ]] ; then
323 + if [[ "$1" = "postgres" ]] ; then
324 + ewarn "Username 'postgres' implied, skipping"
325 + else
326 + local groups=$5
327 + [[ -n "${groups}" ]] && groups+=",postgres" || groups="postgres"
328 + enewuser "$1" "${2:--1}" "${3:--1}" "${4:--1}" "${groups}"
329 + fi
330 + fi
331 +}
332 +
333 +# @FUNCTION: postgres_pkg_setup
334 +# @REQUIRED
335 +# @USAGE: postgres_pkg_setup
336 +# @DESCRIPTION:
337 +# Initialize environment variable(s) according to the best
338 +# installed version of PostgreSQL that is also in POSTGRES_COMPAT. This
339 +# is required if pkg_setup() is declared in the ebuild.
340 +# Exports PG_SLOT, PG_CONFIG, and PKG_CONFIG_PATH.
341 +postgres_pkg_setup() {
342 + debug-print-function ${FUNCNAME} "${@}"
343 +
344 + local compat_slot
345 + local best_slot
346 + for compat_slot in "${POSTGRES_COMPAT[@]}"; do
347 + if use "postgres_targets_postgres${compat_slot/\./_}"; then
348 + best_slot="${compat_slot}"
349 + break
350 + fi
351 + done
352 +
353 + if [[ -z "${best_slot}" ]]; then
354 + local flags f
355 + for f in "${POSTGRES_COMPAT[@]}"; do
356 + flags+=" postgres${f/./_}"
357 + done
358 +
359 + eerror "POSTGRES_TARGETS must contain at least one of:"
360 + eerror " ${flags}"
361 + die "No suitable POSTGRES_TARGETS enabled."
362 + fi
363 +
364 + export PG_SLOT=${best_slot}
365 + export PG_CONFIG=$(which pg_config${best_slot//./})
366 +
367 + local pg_pkg_config_path="$(${PG_CONFIG} --libdir)/pkgconfig"
368 + if [[ -n "${PKG_CONFIG_PATH}" ]]; then
369 + export PKG_CONFIG_PATH="${pg_pkg_config_path}:${PKG_CONFIG_PATH}"
370 + else
371 + export PKG_CONFIG_PATH="${pg_pkg_config_path}"
372 + fi
373 +
374 + elog "PostgreSQL Target: ${best_slot}"
375 +}
376
377 diff --git a/profiles/base/make.defaults b/profiles/base/make.defaults
378 index b090eab54c8..7e593196de0 100644
379 --- a/profiles/base/make.defaults
380 +++ b/profiles/base/make.defaults
381 @@ -13,7 +13,7 @@ USE_EXPAND_VALUES_USERLAND="BSD GNU"
382
383 # Env vars to expand into USE vars. Modifying this requires prior
384 # discussion on gentoo-dev@l.g.o.
385 -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"
386 +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"
387
388 # USE_EXPAND variables whose contents are not shown in package manager
389 # output. Changes need discussion on gentoo-dev.
390 @@ -141,3 +141,7 @@ LC_MESSAGES="C"
391 # disable twisted's plugin cache update to prevent access violations
392 # call /usr/bin/twisted-regen-cache in pkg_postinst()
393 TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
394 +
395 +# Aaron W. Swenson <titanofold@g.o> (9 Jul 2017)
396 +# Default target(s) for postgres{,-multi}.eclass
397 +POSTGRES_TARGETS="postgres9_5"
398
399 diff --git a/profiles/desc/postgres_targets.desc b/profiles/desc/postgres_targets.desc
400 new file mode 100644
401 index 00000000000..284f4bc0092
402 --- /dev/null
403 +++ b/profiles/desc/postgres_targets.desc
404 @@ -0,0 +1,12 @@
405 +# Copyright 1999-2017 Gentoo Foundation
406 +# Distributed under the terms of the GNU General Public License v2
407 +
408 +# This file contains descriptions of POSTGRES_TARGETS USE_EXPAND flags.
409 +
410 +postgres9_2 - Build against PostgreSQL 9.2
411 +postgres9_3 - Build against PostgreSQL 9.3
412 +postgres9_4 - Build against PostgreSQL 9.4
413 +postgres9_5 - Build against PostgreSQL 9.5
414 +postgres9_6 - Build against PostgreSQL 9.6
415 +postgres10 - Build against PostgreSQL 10
416 +postgres11 - Build against PostgreSQL 11
417
418 diff --git a/profiles/embedded/make.defaults b/profiles/embedded/make.defaults
419 index 0a6f3ed3cd7..1145142fe4a 100644
420 --- a/profiles/embedded/make.defaults
421 +++ b/profiles/embedded/make.defaults
422 @@ -27,7 +27,7 @@ USE_EXPAND_VALUES_USERLAND="BSD GNU"
423
424 # Env vars to expand into USE vars. Modifying this requires prior
425 # discussion on gentoo-dev@l.g.o.
426 -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"
427 +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"
428
429 # USE_EXPAND variables whose contents are not shown in package manager
430 # output. Changes need discussion on gentoo-dev.