summaryrefslogtreecommitdiffstats
path: root/gentoo/eclass/trinity-meta.eclass
diff options
context:
space:
mode:
Diffstat (limited to 'gentoo/eclass/trinity-meta.eclass')
-rw-r--r--gentoo/eclass/trinity-meta.eclass262
1 files changed, 262 insertions, 0 deletions
diff --git a/gentoo/eclass/trinity-meta.eclass b/gentoo/eclass/trinity-meta.eclass
new file mode 100644
index 000000000..b6ddb073d
--- /dev/null
+++ b/gentoo/eclass/trinity-meta.eclass
@@ -0,0 +1,262 @@
+# 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 trinity-functions 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"
+
+if [[ "$TRINITY_VER" == "3.5" ]]; then
+# common dependencies
+ DEPEND="trinity-base/kdelibs:${SLOT}"
+else
+ DEPEND="trinity-base/tdelibs:${SLOT}"
+fi
+
+# @FUNCTION: trinity-meta_set_trinity_submodule
+# @DESCRIPTION:
+# sets the TRINITY_SUBMODULE variable to vth value aptained from ${PN}
+# if it doesn't set yet
+trinity-meta_set_trinity_submodule() {
+ debug-print-function $FUNCNAME "$@"
+
+ if [[ -z "$TRINITY_SUBMODULE" ]]; then
+ TRINITY_SUBMODULE="${PN#${TRINITY_MODULE_NAME}-}"
+ fi
+}
+
+# @FUNCTION: trinity-meta_src_pkg_setup
+# @DESCRIPTION:
+# Default pkg_setup function. It sets the correct ${S}
+# nessecary files.
+trinity-meta_pkg_setup() {
+ debug-print-function ${FUNCNAME} "$@"
+ adjust-trinity-paths
+
+ trinity-meta_set_trinity_submodule
+}
+
+# @FUNCTION: trinity-meta_src_unpack
+# @DESCRIPTION:
+# Default source extract function. It tries to unpack only
+# nessecary files.
+trinity-meta_src_unpack() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${BUILD_TYPE} = live ]]; then
+ case "${TRINITY_SCM}" in
+ svn)
+ mkdir -p "$S"
+ ESVN_RESTRICT="export" subversion_src_unpack
+ subversion_wc_info
+ subversion_bootstrap
+ ;;
+ git)
+ git-2_src_unpack
+ ;;
+ *) die "TRINITY_SCM: ${TRINITY_SCM} is not supported by ${FUNCNAME}" ;;
+ esac
+ fi
+ trinity-meta_src_extract
+}
+
+# @FUNCTION: trinity-meta_src_extract
+# @DESCRIPTION:
+# A function to extract the source for a split KDE ebuild.
+# Also see KMMODULE, KMEXTRACT
+trinity-meta_src_extract() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ trinity-meta_create_extractlists
+
+ if [[ "${BUILD_TYPE}" = live ]]; then
+ einfo "Exporting parts of working copy to ${S}"
+ case "$TRINITY_SCM" in
+ svn) trinity-meta_rsync_copy ;;
+ git) # we nothing 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_rsync_copy
+# @DESCRIPTION:
+# Copies files from svn or git repository to $S
+trinity-meta_rsync_copy() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ local rsync_options subdir targetdir wc_path escm
+ case "${TRINITY_SCM}" in
+ svn) wc_path="${ESVN_WC_PATH}";;
+ 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_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
+ kdebase) TSM_EXTRACT_LIST+=" kcontrol/ kdmlib/" ;;
+ tdebase) TSM_EXTRACT_LIST+=" kcontrol/" ;;
+ *) ;; # nothing special for over modules
+# *) die "TRINITY_MODULE_NAME ${TRINITY_MODULE_NAME} is not supported by function ${FUNCNAME}" ;;
+ 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_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
+
+# fix bad cmake code fo 3.5.13.1
+ if [ $PV == "3.5.13.1" ]; then
+ [ -f "cmake/modules/FindTDE.cmake" ] && \
+ sed -ie 's!HINTS\s\+${\w*BIN\w*}!HINTS "${TDE_PREFIX}/bin" ${BIN_INSTALL_DIR}!' \
+ cmake/modules/FindTDE.cmake
+ fi
+
+ trinity-base_src_prepare
+}
+
+# @FUNCTION: trinity-meta_src_configure
+# @DESCRIPTION:
+# Default source configure function. It sets apropriate cmake args.
+# Also see description of KMMODULE
+trinity-meta_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_src_configure
+}
+
+# @FUNCTION: trinity-meta_src_compile
+# @DESCRIPTION:
+# Just call trinity-base_src_compile.
+trinity-meta_src_compile() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ trinity-base_src_compile
+}
+
+# @FUNCTION: trinity-meta_src_install
+# @DESCRIPTION:
+# Call default cmake install function. and install documentation.
+trinity-meta_src_install() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ TRINITY_BASE_NO_INSTALL_DOC="yes" trinity-base_src_install
+
+ trinity-base_create_tmp_docfiles $TSM_EXTRACT
+ trinity-base_install_docfiles
+}
+
+EXPORT_FUNCTIONS src_prepare src_configure src_compile src_install src_unpack pkg_setup