# 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: make easy to install trinity ebuilds. # inherit trinity-base-2 trinity-functions-2 cmake-utils LICENSE="|| ( GPL-2 GPL-3 )" 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 # the 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} necessary 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-r3_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 TDE 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: # Creates 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 calls 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: # Calls default cmake install function and installs 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