diff options
Diffstat (limited to 'eclass/trinity-meta-2.eclass')
-rw-r--r-- | eclass/trinity-meta-2.eclass | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/eclass/trinity-meta-2.eclass b/eclass/trinity-meta-2.eclass new file mode 100644 index 00000000..a4cfedf9 --- /dev/null +++ b/eclass/trinity-meta-2.eclass @@ -0,0 +1,241 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +# +# Original Author: fat-zer +# Purpose: make easy to install trinity ebuilds. +# + +inherit trinity-base-2 trinity-functions-2 cmake-utils + +LICENSE="GPL-2 LGPL-2" +HOMEPAGE="http://www.trinitydesktop.org/" + +# set slot, TDEDIR, TRINITY_VER and PREFIX +set-trinityver +[[ -z "$SLOT" ]] && SLOT="$TRINITY_VER" + +# common dependencies +DEPEND="trinity-base/tdelibs:${SLOT}" + +# @FUNCTION: trinity-meta-2_set_trinity_submodule +# @DESCRIPTION: +# sets the TRINITY_SUBMODULE variable to nth value obtained from ${PN} +# if it isn't set yet +trinity-meta-2_set_trinity_submodule() { + debug-print-function $FUNCNAME "$@" + + if [[ -z "$TRINITY_SUBMODULE" ]]; then + TRINITY_SUBMODULE="${PN#${TRINITY_MODULE_NAME}-}" + fi +} + +# @FUNCTION: trinity-meta-2_src_pkg_setup +# @DESCRIPTION: +# Default pkg_setup function. It sets the correct ${S} +# nessecary files. +trinity-meta-2_pkg_setup() { + debug-print-function ${FUNCNAME} "$@" + adjust-trinity-paths + + trinity-meta-2_set_trinity_submodule +} + +# @FUNCTION: trinity-meta-2_src_unpack +# @DESCRIPTION: +# Default source extract function. It tries to unpack only +# necessary files. +trinity-meta-2_src_unpack() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${BUILD_TYPE} = live ]]; then + case "${TRINITY_SCM}" in + git) + git-2_src_unpack + ;; + *) die "TRINITY_SCM: ${TRINITY_SCM} is not supported by ${FUNCNAME}" ;; + esac + fi + trinity-meta-2_src_extract +} + +# @FUNCTION: trinity-meta-2_src_extract +# @DESCRIPTION: +# A function to extract the source for a split KDE ebuild. +# Also see KMMODULE, KMEXTRACT +trinity-meta-2_src_extract() { + debug-print-function ${FUNCNAME} "$@" + + trinity-meta-2_create_extractlists + + if [[ "${BUILD_TYPE}" = live ]]; then + einfo "Exporting parts of working copy to ${S}" + case "$TRINITY_SCM" in + git) # nothing we can do to prevent git from unpacking code + ;; + *) die "TRINITY_SCM: ${TRINITY_SCM} is not supported by ${FUNCNAME}" + esac + else + local tarfile tarparams f extractlist + + case $TRINITY_TARBALL in + *.gz) + tarparams=" --gzip" + ;; + *.xz) + tarparams=" --xz" + ;; + esac + + # Full path to source tarball + tarfile="${DISTDIR}/${TRINITY_TARBALL}" + + # Detect real toplevel dir from tarball name - it will be used upon extraction + topdir="${TRINITY_TARBALL%.tar.*}" + + ebegin "Unpacking parts of ${TRINITY_TARBALL} to ${WORKDIR}" + + for f in $TSM_EXTRACT_LIST; do + extractlist+=" ${topdir}/${f}" + done + + tar -xpf "${tarfile}" ${tarparams} -C "${WORKDIR}" ${extractlist} 2> /dev/null \ + || echo "tar extract command failed at least partially - continuing anyway" + + # Make sure $S points to right place + [[ "${WORKDIR}/${topdir}" != "${S}" ]] && S="${WORKDIR}/${topdir}" + fi +} + +# @FUNCTION: trinity-meta-2_rsync_copy +# @DESCRIPTION: +# Copies files from svn or git repository to $S +trinity-meta-2_rsync_copy() { + debug-print-function ${FUNCNAME} "$@" + + local rsync_options subdir targetdir wc_path escm + case "${TRINITY_SCM}" in + git) wc_path="${EGIT_STORE_DIR}/${EGIT_PROJECT}";; + *) die "TRINITY_SCM: ${TRINITY_SCM} is not supported by ${FUNCNAME}" ;; + esac + + rsync_options="--group --links --owner --perms --quiet --exclude=.svn/ --exclude=.git/" + + # Copy ${TRINITY_MODULE_NAME} non-recursively (toplevel files) + rsync ${rsync_options} "${wc_path}"/* "${S}" \ + || die "rsync: can't export toplevel files to '${S}'." + # Copy cmake directory + if [[ -d "${wc_path}/cmake" ]]; then + rsync --recursive ${rsync_options} "${wc_path}/cmake" "${S}" \ + || die "rsync: can't export cmake files to '${S}'." + fi + # Copy all subdirectories listed in $TSM_EXTRACT_LIST + for subdir in ${TSM_EXTRACT_LIST}; do + rsync --recursive ${rsync_options} "${wc_path}/${subdir}" \ + "${S}/$(dirname subdir)" \ + || die "rsync: can't export object '${wc_path}/${subdir}' to '${S}'." + done +} + +# @FUNCTION: trinity-meta_create_extractlists +# @DESCRIPTION: +# Create lists of files and subdirectories to extract. +# Also see descriptions of KMMODULE and KMEXTRACT +trinity-meta-2_create_extractlists() { + debug-print-function ${FUNCNAME} "$@" + local submod + + # if $TSM_EXTRACT is not set assign it to dirs named in TRINITY_SUBMODULE + if [ -z "${TSM_EXTRACT}" ]; then + for submod in ${TRINITY_SUBMODULE}; do + TSM_EXTRACT="${TSM_EXTRACT} ${submod}/" + done + fi + + # add package-specific files and directories + case "${TRINITY_MODULE_NAME}" in + tdebase) TSM_EXTRACT_LIST+=" kcontrol/" ;; + *) ;; # nothing special for other modules + esac + + TSM_EXTRACT_LIST+=" ${TSM_EXTRACT} ${TSM_EXTRACT_ALSO} cmake/ CMakeLists.txt" + TSM_EXTRACT_LIST+=" config.h.cmake ConfigureChecks.cmake" + + debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: TSM_EXTRACT_LIST=\"${TSM_EXTRACT_LIST}\"" +} + +# @FUNCTION: trinity-meta_src_prepare +# @DESCRIPTION: +# Default src prepare function. Currently it's only a stub. +trinity-meta-2_src_prepare() { + debug-print-function ${FUNCNAME} "$@" + local shared_patch_dir f f_name; + + shared_patch_dir="${FILESDIR}/shared/${TRINITY_MODULE_NAME}-${PV}/patches/" + if [ -d "${shared_patch_dir}" ]; then + find "${shared_patch_dir}" -type f | while read f; do + f_name="$(basename "${f}")" + case "${f_name}" in + *.diff | *.patch ) epatch "${f}" ;; + *.gz ) cp "${f}" "${T}" + gunzip ${T}/${f_name} + epatch ${T}/${f_name%.gz} + ;; + *.bz2 ) cp "${f}" "${T}" + bunzip2 ${T}/${f_name} + epatch ${T}/${f_name%.bz2} + ;; + *) die "unknown patch type in the patch directory" ;; + esac + done; + fi + + trinity-base-2_src_prepare +} + +# @FUNCTION: trinity-meta-2_src_configure +# @DESCRIPTION: +# Default source configure function. It sets apropriate cmake args. +# Also see description of KMMODULE +trinity-meta-2_src_configure() { + debug-print-function ${FUNCNAME} "$@" + + local item tsmargs mod + + for item in $TRINITY_SUBMODULE; do + mod="${item^^}" + mod="${mod//-/_}" + tsmargs+=" -DBUILD_${mod}=ON" + done + + mycmakeargs=( + "${mycmakeargs[@]}" + ${tsmargs} + ) + + trinity-base-2_src_configure +} + +# @FUNCTION: trinity-meta-2_src_compile +# @DESCRIPTION: +# Just call trinity-base_src_compile. +trinity-meta-2_src_compile() { + debug-print-function ${FUNCNAME} "$@" + + trinity-base-2_src_compile +} + +# @FUNCTION: trinity-meta-2_src_install +# @DESCRIPTION: +# Call default cmake install function. and install documentation. +trinity-meta-2_src_install() { + debug-print-function ${FUNCNAME} "$@" + + TRINITY_BASE_NO_INSTALL_DOC="yes" trinity-base-2_src_install + + trinity-base-2_create_tmp_docfiles $TSM_EXTRACT + trinity-base-2_install_docfiles +} + +EXPORT_FUNCTIONS src_prepare src_configure src_compile src_install src_unpack pkg_setup |