diff options
author | E. Liddell <[email protected]> | 2020-01-04 15:52:45 -0500 |
---|---|---|
committer | TDE Gitea <[email protected]> | 2020-01-06 23:43:40 +0000 |
commit | caa72c95dead3dfe0a365b47d783393ae98e3f14 (patch) | |
tree | 40876e12249ba9c3eaf0a34003e1079e926ab6b6 /eclass/trinity-base-2.eclass | |
parent | 3ffa67c73f0d6aee8c9cd5bd78b6ec3961bbb399 (diff) | |
download | tde-packaging-gentoo-caa72c95dead3dfe0a365b47d783393ae98e3f14.tar.gz tde-packaging-gentoo-caa72c95dead3dfe0a365b47d783393ae98e3f14.zip |
Moved EAPI 7 eclasses to trinity-[foo]-2.eclass; 14.0.6 ebuilds for tqt, tqtinterface, dbus-1-tqt, tdelibs amended to work with new eclasses
Signed-off-by: E. Liddell <[email protected]>
Diffstat (limited to 'eclass/trinity-base-2.eclass')
-rw-r--r-- | eclass/trinity-base-2.eclass | 400 |
1 files changed, 400 insertions, 0 deletions
diff --git a/eclass/trinity-base-2.eclass b/eclass/trinity-base-2.eclass new file mode 100644 index 00000000..3dda5f04 --- /dev/null +++ b/eclass/trinity-base-2.eclass @@ -0,0 +1,400 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +# +# Original Author: fat-zer +# Purpose: support ebuilds for the trinity project (a kde3 fork). +# + +RESTRICT=network-sandbox +inherit trinity-functions-2 cmake-utils + +addwrite "/usr/tqt3/etc/settings" +addpredict "/usr/tqt3/etc/settings" + +# ban EAPI 0-6 +case $EAPI in + 0|1|2|3|4|5|6) die "EAPI=${EAPI} is not supported" ;; + 7) ;; + *) die "Unknown EAPI=${EAPI}" +esac + +# @ECLASS-VARIABLE: BUILD_TYPE +# @DESCRIPTION: +# Determines the build type: live or release +if [[ ${PV} = *9999* ]]; then + BUILD_TYPE="live" +else + BUILD_TYPE="release" +fi +export BUILD_TYPE + +# @ECLASS-VARIABLE: TRINITY_MODULE_NAME +# @DESCRIPTION: +# The name of trinity module; It's used for multiple purposes. First of all it +# determines the tarball name (git repository for live packages) +echo "${TRINITY_MODULE_NAME:=${PN}}" >/dev/null + +# @ECLASS-VARIABLE: TRINITY_SCM +# @DESCRIPTION: +# Determines which version control system code is checking out live ebuilds from. + +# @ECLASS-VARIABLE: TMP_DOCDIR +# @DESCRIPTION: +# A temporary directory used to copy common documentation before installing it +# +# @ECLASS-VARIABLE: TRINTY_BASE_NO_INSTALL_DOC +# @DESCRIPTION: +# if set to anything except "no" this variable prevents +# trinity-base_src_install() from installing documentation +# + +# @ECLASS-VARIABLE: TRINTY_LANGS +# @DESCRIPTION: +# This is a whitespace-separated list of translations this ebuild supports. +# These translations are automatically added to IUSE. Therefore ebuilds must set +# this variable before inheriting any eclasses. To enable only selected +# translations, ebuilds must call enable_selected_linguas(). + +# @ECLASS-VARIABLE: TRINTY_DOC_LANGS +# @DESCRIPTION: +# This is a whitespace-separated list of translations this ebuild supports. +# These translations are automatically added to IUSE. Therefore ebuilds must set +# this variable before inheriting any eclasses. To enable only selected +# translations, ebuilds must call enable_selected_linguas(). kde4-{base,meta}.eclass does +# this for you. + +# @ECLASS-VARIABLE: TRINITY_HANDBOOK +# @DESCRIPTION: +# Set to enable handbook in application. Possible values are 'always', 'optional' +# (handbook USE flag) and 'never'. +# This variable must be set before inheriting any eclasses. Defaults to 'never'. +# Also ensures buildtime and runtime dependencies are met. +TRINITY_HANDBOOK="${TRINITY_HANDBOOK:-never}" + +# @ECLASS-VARIABLE: TRINITY_EXTRAGEAR_PACKAGING +# @DESCRIPTION: +# Set TRINITY_EXTRAGEAR_PACKAGING=yes before inheriting if the package use extragear-like +# packaging and then supports ${TRINITY_LANGS}, ${TRINITY_DOC_LANGS} and +# ${TRINITY_HANDBOOK} variables. The translations are found in the directory +# pointed by the TEG_PO_DIR variable. + +# @ECLASS-VARIABLE: TRINITY_GIT_MIRROR +# @DESCRIPTION: +# User (or ebuild) can select another git mirror if it's needed; +# Defaults to https://mirror.git.trinitydesktop.org/gitea/TDE/ + +# @ECLASS-VARIABLE: TRINITY_GIT_BRANCH +# @DESCRIPTION: +# Specify git branch for live ebuilds. Default: master + +# @ECLASS-VARIABLE: TRINITY_COMMON_DOCS +# @DESCRIPTION: +# Common doc names that were found in trinity project's dirs. +TRINITY_COMMON_DOCS="AUTHORS BUGS CHANGELOG CHANGES COMMENTS COMPLIANCE COMPILING + CONFIG_FORMAT CONFIGURING COPYING COPYRIGHT CREDITS DEBUG DESIGN FAQ + HACKING HISTORY HOWTO IDEAS INSTALL LICENSE MAINTAINERS NAMING NEWS + NOTES PLUGINS PORTING README SECURITY-HOLES TASKGROUPS TEMPLATE + TESTCASES THANKS THOUGHTS TODO VERSION" + +# @ECLASS-VARIABLE: TRINITY_TARBALL +# @DESCRIPTION: +# This variable holds the name of the tarboll with current module's source code. + +# @ECLASS-VARIABLE: TRINITY_BASE_SRC_URI +# @DESCRIPTION: +# The top SRC_URI for all trinity packages +TRINITY_BASE_SRC_URI="http://www.mirrorservice.org/sites/trinitydesktop.org/trinity/releases" + +#reset TRINITY_SCM and inherit proper eclass +if [[ ${BUILD_TYPE} = live ]]; then + # set default TRINITY_SCM if not set + [[ -z "$TRINITY_SCM" ]] && TRINITY_SCM=git + + case ${TRINITY_SCM} in + git) inherit git-r3 ;; + *) die "Unsupported TRINITY_SCM=${TRINITY_SCM}" ;; + esac + + #set some variables + EGIT_REPO_URI="${TRINITY_GIT_MIRROR:=https://mirror.git.trinitydesktop.org/gitea/TDE/${TRINITY_MODULE_NAME}}" + EGIT_BRANCH="${TRINITY_GIT_BRANCH:=master}" + +# S="${WORKDIR}/${TRINITY_MODULE_NAME}" +elif [[ "${BUILD_TYPE}" == release ]]; then + mod_name="${TRINITY_MODULE_NAME}" + mod_ver="${TRINITY_MODULE_VER:=${PV}}" + + #Note: Only releases in the 14.0 series are presently supported. + full_mod_name="${mod_name}-trinity-${mod_ver}" + TRINITY_TARBALL="${full_mod_name}.tar.xz" + + if [[ -n "${TRINITY_MODULE_TYPE}" ]] ; then + SRC_URI="${TRINITY_BASE_SRC_URI}/R${mod_ver}/main/${TRINITY_MODULE_TYPE}/$TRINITY_TARBALL" + else + SRC_URI="${TRINITY_BASE_SRC_URI}/R${mod_ver}/main/$TRINITY_TARBALL" + fi + + S="${WORKDIR}/${full_mod_name}" +else + die "Unknown BUILD_TYPE=${BUILD_TYPE}" +fi + + +if [[ -n "${TRINITY_EXTRAGEAR_PACKAGING}" ]]; then +# @ECLASS-VARIABLE: TEG_PO_DIR +# @DESCRIPTION: +# Change the translation directory for extragear packages. The default is ${S}/po + TEG_PO_DIR="${TEG_PO_DIR:-${S}/po}" + +# @ECLASS-VARIABLE: TEG_DOC_DIR +# @DESCRIPTION: +# Change the documentation directory for extragear packages. The default is +# ${S}/doc + TEG_DOC_DIR="${TEG_DOC_DIR:-${S}/doc}" + + if [[ -n "${TRINITY_LANGS}" || -n "${TRINITY_DOC_LANGS}" ]]; then + for lang in ${TRINITY_LANGS} ${TRINITY_DOC_LANGS}; do + IUSE="${IUSE} linguas_${lang}" + done + + trinityhandbookdepend=" + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xsl-stylesheets + " + case ${TRINITY_HANDBOOK} in + yes | always) + DEPEDND+=" ${trinityhandbookdepend}" + ;; + optional) + IUSE+=" +handbook" + DEPEND+=" handbook? ( ${trinityhandbookdepend} )" + ;; + *) ;; + esac + fi +fi + +# @FUNCTION: trinity-base-2_src_unpack +# @DESCRIPTION: +# A default src unpack function to be call git-v3_src_unpack either +trinity-base-2_src_unpack() { + if [[ ${BUILD_TYPE} = live ]]; then + git-v3_src_unpack + else + base_src_unpack + fi +} + + +# @FUNCTION: trinity-base-2_src_prepare +# @DESCRIPTION: +# General pre-configure and pre-compile function for Trinity applications. +trinity-base-2_src_prepare() { + debug-print-function ${FUNCNAME} "$@" + + local dir lang + + # SCM bootstrap--removed on the grounds that if you got this far, + # you have to be using git + + # Apply patches + eapply_user + + # Handle documentation and translations for extragear packages + if [[ -n "$TRINITY_EXTRAGEAR_PACKAGING" ]]; then + # remove languages that have not been selected + if [[ -n $TRINITY_LANGS ]]; then + einfo "Removing unselected translations from ${TEG_PO_DIR}" + for dir in $(find ${TEG_PO_DIR} -mindepth 1 -maxdepth 1 -type d ); do + lang="$(basename "$dir")" + if ! has "$lang" ${TRINITY_LANGS}; then + eerror "Translation $lang seems to present in the package but is not supported by the ebuild" + elif ! has $lang ${LINGUAS}; then + rm -rf $dir + fi + done + fi + + # if we removed all translations we should point it + if [[ -z $(find ${TEG_PO_DIR} -mindepth 1 -maxdepth 1 -type d) ]]; then + TRINITY_NO_TRANSLATIONS=yes + fi + + # remove not selected documentation + if [[ -n $TRINITY_DOC_LANGS ]]; then + einfo "Removing unselected documentation from ${TEG_DOC_DIR}" + for dir in $(find ${TEG_DOC_DIR} -mindepth 1 -maxdepth 1 -type d ); do + lang="$(basename "$dir")" + if [[ "$lang" == "${PN}" || \ + "$lang" == "${TRINITY_MODULE_NAME}" ]] ; then + echo -n; # do nothing it's main documentation + elif ! has "$lang" ${TRINITY_LANGS}; then + eerror "Documentation translated to language $lang seems to present in the package but is not supported by the ebuild" + elif ! has $lang ${LINGUAS}; then + rm -rf $dir + fi + done + fi + fi + + cmake-utils_src_prepare +} + + +# @FUNCTION: trinity-base-2_src_configure +# @DESCRIPTION: +# Call standard cmake-utils_src_onfigure and add some common arguments. +trinity-base-2_src_configure() { + debug-print-function ${FUNCNAME} "$@" + local eg_cmakeargs + + [[ -n "${PREFIX}" ]] && export PREFIX="${TDEDIR}" + + if [[ -n "$TRINITY_EXTRAGEAR_PACKAGING" ]]; then + eg_cmakeargs=( -DBUILD_ALL=ON ) + if [[ "$TRINITY_NO_TRANSLATIONS" == "yes" ]]; then + eg_cmakeargs=( -DBUILD_TRANSLATIONS=OFF "${eg_cmakeargs[@]}" ) + else + eg_cmakeargs=( -DBUILD_TRANSLATIONS=ON "${eg_cmakeargs[@]}" ) + fi + if [[ "${TRINITY_HANDBOOK}" == optional ]]; then + eg_cmakeargs=( + $(cmake-utils_use_with handbook DOC) + "${eg_cmakeargs[@]}" ) + fi + fi + + mycmakeargs=( + -DCMAKE_INSTALL_PREFIX="${EPREFIX}${TDEDIR}" + -DCMAKE_INSTALL_RPATH="${EPREFIX}${TDEDIR}" + "${eg_cmakeargs[@]}" + "${mycmakeargs[@]}" + ) + +# $([[ "${TRINITY_NEED_ARTS}" == "optional" ]] && (cmake-utils_use_with arts ARTS)) + + cmake-utils_src_configure +} + +# @FUNCTION: trinity-base-2_src_compile +# @DESCRIPTION: +# Just call cmake-utils_src_compile. +trinity-base-2_src_compile() { + debug-print-function ${FUNCNAME} "$@" + + cmake-utils_src_compile +} + +# @FUNCTION: trinity-base-2_src_install +# @DESCRIPTION: +# Call standard cmake-utils_src_install and installs common documentation. +trinity-base-2_src_install() { + debug-print-function ${FUNCNAME} "$@" + cmake-utils_src_install + +# trinity-base_fix_desktop_files + if [[ -z "$TRINITY_BASE_NO_INSTALL_DOC" || + "$TRINITY_BASE_NO_INSTALL_DOC" == "no" ]]; then + trinity-base-2_create_tmp_docfiles + trinity-base-2_install_docfiles + fi +} + +# @FUNCTION: trinity-base-2_create_tmp_docfiles +# @DESCRIPTION: +# Create docfiles in the form ${TMP_DOCDIR}/path.to.docfile.COMMON_NAME +# Also see the description for TRINITY_COMMON_DOCS and TMP_DOCDIR. +trinity-base-2_create_tmp_docfiles() { + debug-print-function ${FUNCNAME} "$@" + local srcdirs dir docfile targetdoc + + if [[ -z "$TMP_DOCDIR" || ! -d "$TMP_DOCDIR" ]] ; then + TMP_DOCDIR="$T/docs" + mkdir -p ${TMP_DOCDIR} + fi + + if [[ -z "$@" ]] ; then + srcdirs="./" + else + srcdirs="$@" + fi + + einfo "Generating documentation list..." + for dir in $srcdirs; do + for doc in ${TRINITY_COMMON_DOCS}; do + for docfile in $(find $dir -type f -name "*${doc}*"); do + targetdoc="${docfile//\//.}" + targetdoc="${targetdoc#..}" + cp "${docfile}" "$TMP_DOCDIR/${targetdoc}" + done + done + done + +} + +# @FUNCTION: trinity-base-2_install_docfiles +# @DESCRIPTION: +# Install documentation from ${TMP_DOCDIR} or from first argument. +trinity-base-2_install_docfiles() { + debug-print-function ${FUNCNAME} "$@" + local doc docdir + [[ -n "$TMP_DOCDIR" ]] && docdir="$TMP_DOCDIR" + [[ -n "$1" ]] && docdir="$1" + [[ -z "$docdir" ]] && die "docdir is not set in ${FUNCNAME}." + + pushd "${docdir}" >/dev/null + find . -maxdepth 1 -type f | while read doc; do + einfo "Installing documentation: ${doc##*/}" + dodoc "${doc}" + done + popd >/dev/null +} + +# @FUNCTION: trinity-base_fix_desktop_files +# @DESCRIPTION: OBSOLETE?????? +# Perform desktop files modifications according to current version. You can pass +# either desktop files or direcories to the parametrs. In case you'd pass a +# directory the function will recursively search for all desktop files and +# modify them. If no argument specified the function assume to work on the ${D}; +#trinity-base_fix_desktop_files() { + +# # Test if we have to perform any file fixing for current version +# case "3.5" in +# *${TRINITY_VER}*);; +# *) return 0 ;; +# esac +# +# local file_list dir_list f +# +# if [ "$#" != 0 ]; then +# # Get directories and files from arguments +# for f in $@; do +# if [ -f "$f" ]; then +# file_list+=" $f" +# elif [ -d "$f" ]; then +# dir_list+=" $f" +# else +# eerror "${FUNCNAME}: bad argument type: $(stat -c %F "$f")" +# fi +# done +# else +# dir_list="${D}" +# fi +# +# # Recursivly search for desktop files in directories +# for f in $dir_list; do +# file_list+="$(find ${f} -type f -name '*.desktop')" +# done +# +# # Performe the updates +# case "${TRINITY_VER}" in +# 3.5) +# for f in $file_list; do +# sed -i '/^OnlyShowIn=/s/KDE/TDE/g' "$f" +# done;; +# esac +#} + +EXPORT_FUNCTIONS src_configure src_compile src_install src_prepare |