diff options
author | Stuart Herbert <stuart@gentoo.org> | 2004-06-27 16:05:26 +0000 |
---|---|---|
committer | Stuart Herbert <stuart@gentoo.org> | 2004-06-27 16:05:26 +0000 |
commit | 7c7a792ec6d6717710f798469d8d2f1095333a1c (patch) | |
tree | d005c8dad6d635b22efd3d3e5acb9bc7f6d0cf30 /eclass/confutils.eclass | |
parent | freewrl ebuild (diff) | |
download | historical-7c7a792ec6d6717710f798469d8d2f1095333a1c.tar.gz historical-7c7a792ec6d6717710f798469d8d2f1095333a1c.tar.bz2 historical-7c7a792ec6d6717710f798469d8d2f1095333a1c.zip |
Initial import
Diffstat (limited to 'eclass/confutils.eclass')
-rw-r--r-- | eclass/confutils.eclass | 251 |
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 +} |