From e6636bd5d6280d92996bd70b744e8a29e54c7e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Tue, 19 Nov 2019 17:45:28 +0100 Subject: Gentoo: Initial import of an ebuilds tree from Fat-Zer's (Alexander Golubev) repository. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- gentoo/eclass/trinity-functions.eclass | 205 +++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 gentoo/eclass/trinity-functions.eclass (limited to 'gentoo/eclass/trinity-functions.eclass') diff --git a/gentoo/eclass/trinity-functions.eclass b/gentoo/eclass/trinity-functions.eclass new file mode 100644 index 000000000..6e15321d9 --- /dev/null +++ b/gentoo/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 +# @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}"; +} + -- cgit v1.2.3