You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging-gentoo/eclass/trinity-functions-2.eclass

188 lines
5.1 KiB

# Copyright 1999-2013 Gentoo Foundation
# Copyright 2020 The Trinity Desktop Project
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# Original Author: Alexander Golubev (Fat-Zer)
# Ported to git-r3 eclass and EAPI7 by E. Liddell
# Purpose: basic trinity functions and variables
#
inherit multilib
TRINITY_LIVEVER="14.1.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".
# - trinity-base category ebuilds go into /usr/trinity/$ETRINITY_VER,
# and have SLOT="$MAJORVER.$MINORVER".
# - This function exports $PREFIX (location to install to) and $TDEDIR
# (location of tdelibs to link against) for all ebuilds.
# get version elements
if [[ -n "$1" ]]; then
ETRINITY_VER="$1"
else
ETRINITY_VER="$PV"
fi
case "$ETRINITY_VER" in
9999 )
export TRINITY_VER="$(ver_cut 1 "$TRINITY_LIVEVER" )" ;;
* )
export TRINITY_VER="$(ver_cut 1 "$ETRINITY_VER" )" ;;
esac
export TDEDIR="/usr/trinity/${TRINITY_VER}"
export TDEDIRS="/usr/trinity/${TRINITY_VER}"
# This should solve problems like "cannot find libraries",
# especially when compiling tdelibs.
# NOTE: Binaries which run during compilation and try to load shared
# libraries from the TDE directory (which may be broken) may still
# break compilation of tdelibs(?)
# 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:
# Adjusts 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 applications wouldn't try to write to root's dir while building
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
my_depend=">=trinity-base/tdelibs-${ETRINITY_VER}:${TRINITY_VER}"
DEPEND="$DEPEND $my_depend"
RDEPEND="$RDEPEND $my_depend"
}
# @ECLASS-VARIABLE: TRINITY_NEED_ARTS
# @DESCRIPTION:
# This variable is set by the need-arts function.
# Possible arguments are 'yes', 'no' and 'optional'. Default is 'no'.
TRINITY_NEED_ARTS="no"
# @FUNCTION: need-arts
# @USAGE: need-arts <yes|optional>
# @DESCRIPTION:
# This function adds DEPENDs for aRTs support.
# Possible arguments are 'yes' and 'optional' '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 previously set value when you set them again.
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 functions to set TRINITY_VER before calling $FUNCNAME.";;
*) 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}";
}