summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Herbert <stuart@gentoo.org>2004-06-27 16:05:26 +0000
committerStuart Herbert <stuart@gentoo.org>2004-06-27 16:05:26 +0000
commitff801e2825585283edc65c67c7468eca5e74845a (patch)
tree5165103e08c92be1f20aeae1ed2e18e9bc77cc1b /eclass/confutils.eclass
parentfreewrl ebuild (Manifest recommit) (diff)
downloadgentoo-2-ff801e2825585283edc65c67c7468eca5e74845a.tar.gz
gentoo-2-ff801e2825585283edc65c67c7468eca5e74845a.tar.bz2
gentoo-2-ff801e2825585283edc65c67c7468eca5e74845a.zip
Initial import
Diffstat (limited to 'eclass/confutils.eclass')
-rw-r--r--eclass/confutils.eclass251
1 files changed, 251 insertions, 0 deletions
diff --git a/eclass/confutils.eclass b/eclass/confutils.eclass
new file mode 100644
index 000000000000..79ea47041340
--- /dev/null
+++ b/eclass/confutils.eclass
@@ -0,0 +1,251 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/confutils.eclass,v 1.1 2004/06/27 16:05:26 stuart Exp $
+#
+# eclass/confutils.eclass
+# Utility functions to help with configuring a package
+#
+# Based on Stuart's work for the PHP 5 eclass
+#
+# Author(s) Stuart Herbert
+# <stuart@gentoo.org>
+#
+# ========================================================================
+
+IUSE="$IUSE shared"
+
+# ========================================================================
+# confutils_init ()
+#
+# Call this function from your src_compile() function to initialise
+# this eclass first
+
+confutils_init () {
+ if useq shared ; then
+ shared="=shared"
+ else
+ shared=
+ fi
+}
+
+# ========================================================================
+# confutils_use_conflict ()
+#
+# Use this function to automatically complain to the user if conflicting
+# USE flags have been enabled
+#
+# $1 - flag that depends on other flags
+# $2 .. - flags that conflict
+
+confutils_use_conflict () {
+ if ! useq $1 ; then
+ return
+ fi
+
+ local my_flag="$1"
+ shift
+
+ local my_present=
+ local my_remove=
+
+ while [ "$1+" != "+" ]; do
+ if useq $1 ; then
+ my_present="${my_present} $1"
+ my_remove="${my_remove} -$1"
+ fi
+ shift
+ done
+
+ if [ -n "$my_present" ]; then
+ echo
+ eerror "USE flag '$my_flag' conflicts with these USE flag(s):"
+ eerror " $my_present"
+ eerror
+ eerror "You must disable these conflicting flags before you can emerge this package."
+ eerror "You can do this by disabling these flags in /etc/portage/package.use:"
+ eerror " =$CATEGORY/$PN-$PVR: $my_remove"
+ eerror
+ die "Conflicting USE flags"
+ fi
+}
+
+# ========================================================================
+# confutils_use_depend_all ()
+#
+# Use this function to automatically complain to the user if a USE flag
+# depends on another USE flag that hasn't been enabled
+#
+# $1 - flag that depends on other flags
+# $2 - error message to show
+# $3 .. -
+
+confutils_use_depend_all () {
+ if ! useq $1 ; then
+ return
+ fi
+
+ local my_flag="$1"
+ shift
+
+ local my_missing=
+
+ while [ "$1+" != "+" ]; do
+ if ! useq $1 ; then
+ my_missing="${my_missing} $1"
+ fi
+ shift
+ done
+
+ if [ -n "$my_missing" ]; then
+ echo
+ eerror "USE flag '$my_flag' needs these additional flag(s) set:"
+ eerror " $my_missing"
+ eerror
+ eerror "You can do this by enabling these flags in /etc/portage/package.use:"
+ eerror " =$CATEGORY/$PN-$PVR: $my_missing"
+ eerror
+ eerror "You could disable this flag instead in /etc/portage/package.use:"
+ eerror " =$CATEGORY/$PN-$PVR: -$my_flag"
+ echo
+
+ die "Need missing USE flags"
+ fi
+}
+
+# ========================================================================
+# confutils_use_depend_any ()
+#
+# Use this function to automatically complain to the user if a USE flag
+# depends on another USE flag that hasn't been enabled
+#
+# $1 - flag that depends on other flags
+# $2 - error message to show
+# $3 .. -
+
+confutils_use_depend_any () {
+ if ! useq $1 ; then
+ return
+ fi
+
+ local my_flag="$1"
+ shift
+
+ local my_found=
+ local my_missing=
+
+ while [ "$1+" != "+" ]; do
+ if useq $1 ; then
+ my_found="${my_found} $1"
+ else
+ my_missing="${my_missing} $1"
+ fi
+ shift
+ done
+
+ if [ -z "$my_found" ]; then
+ echo
+ eerror "USE flag '$my_flag' needs one of these additional flag(s) set:"
+ eerror " $my_missing"
+ eerror
+ eerror "You can do this by enabling one of these flags in /etc/portage/package.use"
+ eerror
+ die "Need missing USE flag"
+ fi
+}
+
+# ========================================================================
+# enable_extension_disable ()
+#
+# Use this function to disable an extension that is enabled by default.
+# This is provided for those rare configure scripts that don't support
+# a --enable for the corresponding --disable
+#
+# $1 - extension name
+# $2 - USE flag
+
+enable_extension_disable () {
+ if ! useq "$2" ; then
+ my_conf="${my_conf} --disable-$1"
+ fi
+}
+
+# ========================================================================
+# enable_extension_enable ()
+#
+# This function is like use_enable(), except that it knows about
+# enabling modules as shared libraries, and it supports passing
+# additional data with the switch
+#
+# $1 - extension name
+# $2 - USE flag
+# $3 - 1 = support shared, 0 = never support shared
+# $4 - additional setting for configure
+
+enable_extension_enable () {
+ local my_shared
+
+ if [ "$3" == "1" ]; then
+ my_shared="$shared"
+ if [ "$4+" != "+" ]; then
+ my_shared="${my_shared},$4"
+ fi
+ else
+ if [ "$4+" != "+" ]; then
+ my_shared="=$4"
+ fi
+ fi
+
+ if useq $2 ; then
+ my_conf="${my_conf} --enable-$1$my_shared"
+ else
+ my_conf="${my_conf} --disable-$1"
+ fi
+}
+
+# ========================================================================
+# enable_extension_without ()
+#
+# Use this function to disable an extension that is enabled by default
+# This function is provided for those rare configure scripts that support
+# --without but not the corresponding --with
+#
+# $1 - extension name
+# $2 - USE flag
+
+enable_extension_without () {
+ if ! useq "$2" ; then
+ my_conf="${my_conf} --without-$1"
+ fi
+}
+
+# ========================================================================
+# enable_extension_with ()
+#
+# This function is a replacement for use_with. It supports building
+# extensions as shared libraries,
+
+# $1 - extension name
+# $2 - USE flag
+# $3 - 1 = support shared, 0 = never support shared
+# $4 - additional setting for configure
+
+enable_extension_with () {
+ local my_shared
+
+ if [ "$3" == "1" ]; then
+ my_shared="$shared"
+ if [ "$4+" != "+" ]; then
+ my_shared="${my_shared},$4"
+ fi
+ else
+ if [ "$4+" != "+" ]; then
+ my_shared="=$4"
+ fi
+ fi
+
+ if useq $2 ; then
+ my_conf="${my_conf} --with-$1$my_shared"
+ else
+ my_conf="${my_conf} --without-$1"
+ fi
+}