summaryrefslogtreecommitdiffstats
path: root/eclass/trinity-functions.eclass
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/trinity-functions.eclass')
-rw-r--r--eclass/trinity-functions.eclass205
1 files changed, 205 insertions, 0 deletions
diff --git a/eclass/trinity-functions.eclass b/eclass/trinity-functions.eclass
new file mode 100644
index 00000000..6e15321d
--- /dev/null
+++ b/eclass/trinity-functions.eclass
@@ -0,0 +1,205 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+#
+# Original Author: Alexander Golubev (Fat-Zer)
+# Purpose: basic trinity functions and variables
+#
+
+inherit versionator multilib
+
+TRINITY_LIVEVER="14.0.0"
+
+# @FUNCTION: set-trinityver
+# @USAGE: < version >
+# @DESCRIPTION:
+# Sets the right TRINITY_VER, TDEDIR etc...
+# !!! unfinished
+set-trinityver() {
+ debug-print-function $FUNCNAME "$@"
+
+ # set install location:
+ # - 3rd party apps go into /usr, and have SLOT="0".
+ # - kde-base category ebuilds go into /usr/kde/$MAJORVER.$MINORVER,
+ # and have SLOT="$MAJORVER.$MINORVER".
+ # - This function exports $PREFIX (location to install to) and $KDEDIR
+ # (location of kdelibs to link against) for all ebuilds.
+ #
+ # -- Overrides - deprecated but working for now: --
+ # - If $KDEPREFIX is defined (in the profile or env), it overrides everything
+ # and both base and 3rd party kde stuff goes in there.
+ # - If $KDELIBSDIR is defined, the kdelibs installed in that location will be
+ # used, even by kde-base packages.
+
+ # get version elements
+ if [[ -n "$1" ]]; then
+ ETRINITY_VER="$1"
+ else
+ ETRINITY_VER="$PV"
+ fi
+
+ case "$ETRINITY_VER" in
+ 3.* )
+ export TRINITY_VER="$(get_version_component_range 1-2 "${ETRINITY_VER}")" ;;
+ 9999 )
+ export TRINITY_VER="$(get_major_version "$TRINITY_LIVEVER" )" ;;
+ * )
+ export TRINITY_VER="$(get_major_version "$ETRINITY_VER" )" ;;
+ esac
+
+ export TDEDIR="/usr/trinity/${TRINITY_VER}"
+ export TDEDIRS="/usr/trinity/${TRINITY_VER}"
+
+ # 3.5.x still uses KDE* variables
+ if [ "${TRINITY_VER}" = "3.5" ]; then
+ export KDEDIR="$TDEDIR"
+ export KDEDIRS="$TDEDIRS"
+ fi
+
+ # this sould solve problems like "cannot find libraries" espessialy when
+ # compiling kdelibs
+ # NOTE: That can breaks compilation of tdelibs:
+ # binaries which runs during compilation are tring to load shared
+ # libraries from the TDE's directory wich may be broken.
+ # TODO: fix that issue for tdelibs
+ adjust-trinity-paths
+}
+
+# @FUNCTION: get-trinity-libdirs
+# @USAGE:
+# @DESCRIPTION:
+# lists all the trinity library directories
+get-trinity-libdirs() {
+ local rv
+ for libdir in $(get_all_libdirs); do
+ echo " ${TDEDIR}/${libdir}"
+ done
+}
+
+# @FUNCTION: adjust-trinity-paths
+# @USAGE: < version >
+# @DESCRIPTION:
+# Adjust PATH LDPATH and LD_LIBRARY_PATH to see only current trinity version
+adjust-trinity-paths() {
+ debug-print-function $FUNCNAME "$@"
+ local libdir
+
+ # this function can be called during depend phase so we shouldn't use sed here
+ PATH="$(trinity_remove_path_component "$PATH" "/usr/trinity/*/bin")"
+ PATH="$(trinity_remove_path_component "$PATH" "/usr/trinity/*/sbin")"
+ PATH="$(trinity_prepand_path_component "$PATH" "${TDEDIR}/bin" )"
+
+ # FIXME: it seems we don't need LDPATH
+# LDPATH="$(trinity_remove_path_component "$LDPATH" "/usr/trinity/*/${libdir}")"
+ LD_LIBRARY_PATH="$(trinity_remove_path_component "$LD_LIBRARY_PATH" "/usr/trinity/*/${libdir}")"
+ for libdir in $(get-trinity-libdirs); do
+# LDPATH="$(trinity_prepand_path_component "$LDPATH" "${TDEDIR}/${libdir}" )"
+ LD_LIBRARY_PATH="$(trinity_prepand_path_component "$LD_LIBRARY_PATH" "${libdir}" )"
+ done
+
+ export PATH
+ export LD_LIBRARY_PATH
+
+ # Unset home paths so aplications wouldn't try to write to root's dir while build
+ unset TDEHOME
+ unset TDEROOTHOME
+}
+
+trinity_remove_path_component() {
+ local i new_path path_array
+
+ IFS=: read -ra path_array <<< "$1"
+ for i in "${path_array[@]}"; do
+ case "$i" in
+ $2 ) ;; # delete specyfied entry
+ "" ) ;;
+ * ) new_path="${new_path}:${i}" ;;
+ esac
+ done
+
+ echo "${new_path#:}"
+}
+
+trinity_prepand_path_component() {
+ local new_path
+
+ new_path="${2%:}:${1#:}"
+ echo "${new_path%:}"
+}
+
+# @FUNCTION: need-trinity
+# @USAGE: < version >
+# @DESCRIPTION:
+# Sets the correct DEPEND and RDEPEND for the needed trinity < version >.
+need-trinity() {
+ debug-print-function $FUNCNAME "$@"
+
+ local my_depend
+
+ # determine install locations
+ set-trinityver $1
+ adjust-trinity-paths
+
+ case "$1" in
+ 3.5*)
+ my_depend=">=trinity-base/kdelibs-${ETRINITY_VER}:3.5";;
+ *)
+ my_depend=">=trinity-base/tdelibs-${ETRINITY_VER}:${TRINITY_VER}";;
+ esac
+
+ DEPEND="$DEPEND $my_depend"
+ RDEPEND="$RDEPEND $my_depend"
+}
+
+# @ECLASS-VARIABLE: TRINITY_NEED_ARTS
+# @DESCRIPTION:
+# This variable is setted by need-arts function. Possible arguments values 'yes', 'no' and 'optional'
+# Default is 'no'
+TRINITY_NEED_ARTS="no"
+
+# @FUNCTION: need-arts
+# @USAGE: need-arts <yes|optional>
+# @DESCRIPTION:
+# This function adds DEPEND's for aRTs-support Possible arguments are 'yes' and 'optinal'
+# 'yes' means arts is required, optional' results in USE flag arts.
+# NOTE: this function modifies IUSE DEPEND and RDEPEND variables, so if you call it before setting
+# those variables don't forget to include the priviously setted value into them.
+need-arts() {
+ debug-print-function $FUNCNAME "$@"
+
+ local tdelibs my_depend
+
+ [[ -z "${1}" ]] && die "$FUNCNAME requires an argument"
+
+ TRINITY_NEED_ARTS=$1;
+
+ case "${TRINITY_VER}" in
+ "") die "You must call set-trinityver unctions to set TRINITY_VER before calling $FUNCNAME.";;
+ 3.5*) tdelibs="trinity-base/kdelibs";;
+ *) tdelibs="trinity-base/tdelibs";;
+ esac
+
+ # handle trinity-base/tdelibs in special way
+ if [[ "${CATEGORY}/${PN}" == "${tdelibs}" ]]; then
+ if [[ "$1" == optional ]]; then
+ my_depend=" arts? ( trinity-base/arts )"
+ IUSE+=" arts"
+ else
+ die "aRTs support for ${tdelibs} supposed to be optional"
+ fi
+ else
+ case "$1" in
+ yes) my_depend=" trinity-base/arts
+ ${tdelibs}[arts]" ;;
+ optional) my_depend=" arts? ( trinity-base/arts
+ ${tdelibs}[arts] )"
+ IUSE+=" arts" ;;
+ *) die "bad parameter: $1"
+ esac
+ fi
+
+ DEPEND+=" ${my_depend}";
+ RDEPEND+=" ${my_depend}";
+}
+