From d236750840652962569400ddb636ea8b5a2e2b3b Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Wed, 6 Sep 2023 12:50:41 +0200 Subject: [PATCH] eclass/out-of-source: Add from Gentoo It's from Gentoo commit 2cba2db27919bc449ed2a7bf7ed3259c6b96e65f. --- .../eclass/out-of-source.eclass | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/eclass/out-of-source.eclass diff --git a/sdk_container/src/third_party/portage-stable/eclass/out-of-source.eclass b/sdk_container/src/third_party/portage-stable/eclass/out-of-source.eclass new file mode 100644 index 0000000000..dd54c8933d --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/eclass/out-of-source.eclass @@ -0,0 +1,132 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: out-of-source.eclass +# @MAINTAINER: +# Michał Górny +# @SUPPORTED_EAPIS: 7 8 +# @BLURB: convenient wrapper to build autotools packages out-of-source +# @DESCRIPTION: +# This eclass provides a minimalistic wrapper interface to easily +# build autotools (and alike) packages out-of-source. It is meant +# to resemble the interface used by multilib-minimal without actually +# requiring the package to be multilib. +# +# For the simplest ebuilds, it is enough to inherit the eclass +# and the new phase functions will automatically build the package +# out-of-source. If you need to redefine one of the default phases +# src_configure() through src_install(), you need to define +# the matching sub-phases: my_src_configure(), my_src_compile(), +# my_src_test() and/or my_src_install(). Those sub-phase functions +# will be run inside the build directory. Additionally, +# my_src_install_all() is provided to perform doc-install and other +# common tasks that are done in source directory. +# +# Example use: +# @CODE +# inherit out-of-source +# +# my_src_configure() { +# econf \ +# --disable-static +# } +# @CODE + +case ${EAPI} in + 7|8);; + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; +esac + +if [[ -z ${_OUT_OF_SOURCE_ECLASS} ]]; then +_OUT_OF_SOURCE_ECLASS=1 + +# @ECLASS_VARIABLE: BUILD_DIR +# @OUTPUT_VARIABLE +# @DEFAULT_UNSET +# @DESCRIPTION: +# The current build directory. Defaults to ${WORKDIR}/${P}_build +# if unset. + +# @FUNCTION: out-of-source_src_configure +# @DESCRIPTION: +# The default src_configure() implementation establishes a BUILD_DIR, +# sets ECONF_SOURCE to the current directory (usually S), and runs +# my_src_configure() (or the default) inside it. +out-of-source_src_configure() { + debug-print-function ${FUNCNAME} "$@" + + # set some BUILD_DIR if we don't have one yet + : "${BUILD_DIR:=${WORKDIR}/${P}_build}" + local ECONF_SOURCE=${PWD} + + mkdir -p "${BUILD_DIR}" || die + pushd "${BUILD_DIR}" >/dev/null || die + if declare -f my_src_configure >/dev/null ; then + my_src_configure + else + default_src_configure + fi + popd >/dev/null || die +} + +# @FUNCTION: out-of-source_src_compile +# @DESCRIPTION: +# The default src_compile() implementation runs my_src_compile() +# (or the default) inside the build directory. +out-of-source_src_compile() { + debug-print-function ${FUNCNAME} "$@" + + pushd "${BUILD_DIR}" >/dev/null || die + if declare -f my_src_compile >/dev/null ; then + my_src_compile + else + default_src_compile + fi + popd >/dev/null || die +} + +# @FUNCTION: out-of-source_src_test +# @DESCRIPTION: +# The default src_test() implementation runs my_src_test() +# (or the default) inside the build directory. +out-of-source_src_test() { + debug-print-function ${FUNCNAME} "$@" + + pushd "${BUILD_DIR}" >/dev/null || die + if declare -f my_src_test >/dev/null ; then + my_src_test + else + default_src_test + fi + popd >/dev/null || die +} + +# @FUNCTION: out-of-source_src_install +# @DESCRIPTION: +# The default src_install() implementation runs my_src_install() +# (or the 'make install' part of the default) inside the build directory, +# followed by a call to my_src_install_all() (or 'einstalldocs' part +# of the default) in the original working directory. +out-of-source_src_install() { + debug-print-function ${FUNCNAME} "$@" + + pushd "${BUILD_DIR}" >/dev/null || die + if declare -f my_src_install >/dev/null ; then + my_src_install + else + if [[ -f Makefile || -f GNUmakefile || -f makefile ]] ; then + emake DESTDIR="${D}" install + fi + fi + popd >/dev/null || die + + if declare -f my_src_install_all >/dev/null ; then + my_src_install_all + else + einstalldocs + fi +} + +fi + +EXPORT_FUNCTIONS src_configure src_compile src_test src_install