summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmando Di Cianno <fafhrd@gentoo.org>2004-11-12 03:46:33 +0000
committerArmando Di Cianno <fafhrd@gentoo.org>2004-11-12 03:46:33 +0000
commitdb912afa48a1e4310dc7afbef84f57c5e19783ec (patch)
tree23e07eead1db22e554adfa4725e55333ef52116f /eclass/gnustep-funcs.eclass
parentStable on sparc (diff)
downloadhistorical-db912afa48a1e4310dc7afbef84f57c5e19783ec.tar.gz
historical-db912afa48a1e4310dc7afbef84f57c5e19783ec.tar.bz2
historical-db912afa48a1e4310dc7afbef84f57c5e19783ec.zip
Mass Update: gnustep.eclass revamped to allow configurable root install; gnustep-base/libs/apps updated to utilize new gnustep.eclass (only versions bumped where files would change); some KEYWORDS were accidentally dropped between version bumps of packages -- this has been resolved; windowmaker correctly supports gnustep now; gnustep-funcs.eclass added -- used where info on an installed gnustep-env is needed rather than making a full GNUstep application
Diffstat (limited to 'eclass/gnustep-funcs.eclass')
-rw-r--r--eclass/gnustep-funcs.eclass223
1 files changed, 223 insertions, 0 deletions
diff --git a/eclass/gnustep-funcs.eclass b/eclass/gnustep-funcs.eclass
new file mode 100644
index 000000000000..dee661546308
--- /dev/null
+++ b/eclass/gnustep-funcs.eclass
@@ -0,0 +1,223 @@
+# Copyright 1999-2004 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/gnustep-funcs.eclass,v 1.1 2004/11/12 03:46:33 fafhrd Exp $
+
+ECLASS=gnustep-funcs
+INHERITED="$INHERITED $ECLASS"
+
+DESCRIPTION="EClass that centralizes access to GNUstep environment information."
+
+###########################################################################
+# Functions
+# ---------
+
+# Prints out the dirname of GNUSTEP_SYSTEM_ROOT, i.e., "System" is installed
+# in egnustep_prefix
+egnustep_prefix() {
+ # Generally, only gnustep-make should be the one setting this value
+ #if [ "$1" ] && [ ! -f /etc/conf.d/net ]; then
+ if [ "$1" ]; then
+ __GS_PREFIX="$(dirname $1/prune)"
+ return 0
+ fi
+
+ if [ -f /etc/conf.d/gnustep.env ]; then
+ . /etc/conf.d/gnustep.env
+ if [ -z "${GNUSTEP_SYSTEM_ROOT}" ] || [ "/" != "${GNUSTEP_SYSTEM_ROOT:0:1}" ]; then
+ die "Please check /etc/conf.d/gnustep.env for consistency or remove it."
+ fi
+ __GS_PREFIX=$(dirname ${GNUSTEP_SYSTEM_ROOT})
+ elif [ -z "${__GS_PREFIX}" ]; then
+ __GS_PREFIX="/usr/GNUstep"
+ __GS_SYSTEM_ROOT="/usr/GNUstep/System"
+ fi
+
+ echo "${__GS_PREFIX}"
+}
+
+# Prints/sets the GNUstep install domain; Generally, this will only be
+# "System" or "Local"
+egnustep_install_domain() {
+ if [ -z "$1" ]; then
+ if [ -z "$__GS_INSTALL_DOMAIN" ]; then
+ # backwards comapatbility for older ebuilds
+ __GS_INSTALL_DOMAIN="GNUSTEP_SYSTEM_ROOT"
+ fi
+ echo ${!__GS_INSTALL_DOMAIN}
+ return 0
+ else
+ if [ "$1" == "System" ]; then
+ __GS_INSTALL_DOMAIN="GNUSTEP_SYSTEM_ROOT"
+ elif [ "$1" == "Local" ]; then
+ __GS_INSTALL_DOMAIN="GNUSTEP_LOCAL_ROOT"
+# elif [ "$1" == "Network" ]; then
+# __GS_INSTALL_DOMAIN="GNUSTEP_NETWORK_ROOT"
+ else
+ die "An invalid parameter has been passed to ${FUNCNAME}"
+ fi
+ fi
+}
+
+# Clean/reset an ebuild to the installed GNUstep evironment; generally,
+# this is called once an ebuild (at least), and packages that will
+# inherit from gnustep.eclass already do this
+egnustep_env() {
+ GNUSTEP_SYSTEM_ROOT="$(egnustep_prefix)/System"
+ if [ -f ${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles/GNUstep.sh ] ; then
+ . ${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles/GNUstep-reset.sh
+ if [ -f /etc/conf.d/gnustep.env ]; then
+ . /etc/conf.d/gnustep.env
+ else
+ GNUSTEP_SYSTEM_ROOT="/usr/GNUstep/System"
+ fi
+ . ${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles/GNUstep.sh
+
+ __GS_SYSTEM_ROOT=${GNUSTEP_SYSTEM_ROOT}
+ __GS_LOCAL_ROOT=${GNUSTEP_LOCAL_ROOT}
+ __GS_NETWORK_ROOT=${GNUSTEP_NETWORK_ROOT}
+ __GS_USER_ROOT=${GNUSTEP_USER_ROOT}
+ __GS_USER_ROOT_SUFFIX=$(dirname ${GNUSTEP_USER_ROOT#*$USER}/prune)/
+
+ # "gs_prefix" is the prefix that GNUstep is installed into, e.g.
+ # gs_prefix=/usr/GNUstep => GNUSTEP_SYSTEM_ROOT=${gs_prefix}/System
+ local gs_prefix=`egnustep_prefix`
+ echo ${gs_prefix//\//XXX_SED_FSLASH} > ${TMP}/sed.gs_prefix
+
+ # "gs_user_root_suffix" what is left over from the difference of
+ # GNUSTEP_USER_ROOT and HOME, e.g.:
+ # "/home/something/whatever/.config/GNUstep" => ".config/GNUstep"
+ echo ${__GS_USER_ROOT_SUFFIX//\//XXX_SED_FSLASH} > ${TMP}/sed.gs_user_root_suffix
+
+ # Set up common env vars for make operations
+ __GS_MAKE_EVAL="HOME=\${TMP} \
+ GNUSTEP_USER_ROOT=\${TMP} \
+ GNUSTEP_DEFAULTS_ROOT=\${TMP}/\${__GS_USER_ROOT_SUFFIX} \
+ INSTALL_ROOT_DIR=\${D} \
+ GNUSTEP_INSTALLATION_DIR=\${D}/\$(egnustep_install_domain)
+ GNUSTEP_MAKEFILES=\${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles \
+ GNUSTEP_NETWORK_ROOT=\${GNUSTEP_NETWORK_ROOT} \
+ GNUSTEP_LOCAL_ROOT=\${GNUSTEP_LOCAL_ROOT} \
+ GNUSTEP_SYSTEM_ROOT=\${GNUSTEP_SYSTEM_ROOT} \
+ TAR_OPTIONS=\"\${TAR_OPTIONS} --no-same-owner\" \
+ -j1"
+ else
+ die "gnustep-make not installed!"
+ fi
+}
+
+# Get/Set the GNUstep system root
+egnustep_system_root() {
+ if [ "$1" ]; then
+ __GS_SYSTEM_ROOT="$(dirname $1/prune)"
+ else
+ echo ${__GS_SYSTEM_ROOT}
+ fi
+}
+
+# Get/Set the GNUstep local root
+egnustep_local_root() {
+ if [ "$1" ]; then
+ __GS_LOCAL_ROOT="$(dirname $1/prune)"
+ else
+ echo ${__GS_LOCAL_ROOT}
+ fi
+}
+
+# Get/Set the GNUstep network root
+egnustep_network_root() {
+ if [ "$1" ]; then
+ __GS_NETWORK_ROOT="$(dirname $1/prune)"
+ else
+ echo ${__GS_NETWORK_ROOT}
+ fi
+}
+
+# Get/Set the GNUstep user root
+# Note: watch out for this one -- ~ and such must be enclosed in single-quotes when passed in
+egnustep_user_root() {
+ if [ "$1" ]; then
+ __GS_USER_ROOT="$(dirname $1/prune)"
+ else
+ echo ${__GS_USER_ROOT}
+ fi
+}
+
+# Print the "suffix" of the user_root, or simply
+# e.g ~/GNUstep => GNUstep
+egnustep_user_root_suffix() {
+ echo ${!__GS_USER_ROOT_SUFFIX}
+}
+
+# Make utilizing GNUstep Makefiles
+egnustep_make() {
+ if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
+ local gs_make_opts="${1}"
+ if use debug ; then
+ gs_make_opts="${gs_make_opts} debug=yes"
+ fi
+ if use profile; then
+ gs_make_opts="${gs_make_opts} profile=yes"
+ fi
+ eval emake ${__GS_MAKE_EVAL} ${gs_make_opts} all || die "package make failed"
+ else
+ die "no Makefile found"
+ fi
+ return 0
+}
+
+# Copies "convenience scripts"
+egnustep_package_config() {
+ if [ -f ${FILESDIR}/config-${PN}.sh ]; then
+ dodir `egnustep_install_domain`/Tools/Gentoo
+ exeinto `egnustep_install_domain`/Tools/Gentoo
+ doexe ${FILESDIR}/config-${PN}.sh
+ fi
+}
+
+# Informs user about existence of "convenience script"
+egnustep_package_config_info() {
+ if [ -f ${FILESDIR}/config-${PN}.sh ]; then
+ einfo "Make sure to set happy defaults for this package by executing:"
+ einfo " `egnustep_install_domain`/Tools/Gentoo/config-${PN}.sh"
+ einfo "as the user you will run the package as."
+ fi
+}
+
+# Make-install utilizing GNUstep Makefiles
+egnustep_install() {
+ if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
+ local gs_make_opts="${1}"
+ if use debug ; then
+ gs_make_opts="${gs_make_opts} debug=yes"
+ fi
+ if use profile; then
+ gs_make_opts="${gs_make_opts} profile=yes"
+ fi
+ eval emake ${__GS_MAKE_EVAL} ${gs_make_opts} install || die "package install failed"
+ else
+ die "no Makefile found"
+ fi
+ return 0
+}
+
+# Make and install docs utilzing GNUstep Makefiles
+# Note: docs installed with this from a GNUMakefile,
+# not just some files in a Documentation directory
+egnustep_doc() {
+ if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
+ local gs_make_opts="${1}"
+ if use debug ; then
+ gs_make_opts="${gs_make_opts} debug=yes"
+ fi
+ if use profile; then
+ gs_make_opts="${gs_make_opts} profile=yes"
+ fi
+ eval emake ${__GS_MAKE_EVAL} ${gs_make_opts} all || die "doc make failed"
+ eval emake ${__GS_MAKE_EVAL} ${gs_make_opts} install || die "doc install failed"
+ else
+ die "no Makefile found"
+ fi
+ return 0
+}
+###########################################################################
+