# 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: fat-zer # Ported to git-r3 eclass and EAPI7 by E. Liddell # Purpose: support ebuilds for the trinity project (a kde3 fork). # 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(). # @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 either call # git-r3_src_unpack or base_src_unpack. trinity-base-2_src_unpack() { if [[ ${BUILD_TYPE} = live ]]; then git-r3_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" == "en" || \ "$lang" == "man" || \ "$lang" == "doxy" || \ "$lang" == "online" || \ "$lang" == "${TRINITY_MODULE_NAME}" ]] ; then echo -n; # do nothing it's main documentation or not related 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=( -DBUILD_DOC="$(usex handbook)" "${eg_cmakeargs[@]}" ) fi fi if [[ "${TRINITY_NEED_ARTS}" == "optional" ]]; then eg_cmakeargs=( -DWITH_ARTS="$(usex arts)" "${eg_cmakeargs[@]}" ) fi if [[ "${TRINITY_NEED_ARTS}" == "yes" ]]; then eg_cmakeargs=( -DWITH_ARTS=ON "${eg_cmakeargs[@]}" ) fi mycmakeargs=( -DCMAKE_INSTALL_PREFIX="${EPREFIX}${TDEDIR}" -DCMAKE_INSTALL_RPATH="${EPREFIX}${TDEDIR}" "${eg_cmakeargs[@]}" "${mycmakeargs[@]}" ) 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 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 } EXPORT_FUNCTIONS src_configure src_compile src_install src_prepare