commit:     0593f945a6a1aaed13f6e3eb5938ab50d31c7c0a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 20 18:56:39 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jun 23 18:30:36 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0593f945

llvm.org.eclass: Introduce llvm-project patch-friendly src_prepare

Introduce llvm.org_src_prepare() that calls appropriate src_prepare()
implementation (either cmake or default), causing patch application
to happen in ${WORKDIR} rather than ${S}.  This makes it possible
to use patches made against llvm-project git repository out of the box.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/llvm.org.eclass | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/eclass/llvm.org.eclass b/eclass/llvm.org.eclass
index b4b80df06d8..9fc975cd51c 100644
--- a/eclass/llvm.org.eclass
+++ b/eclass/llvm.org.eclass
@@ -174,6 +174,9 @@ llvm.org_set_globals() {
 # == phase functions ==
 
 EXPORT_FUNCTIONS src_unpack
+if ver_test -ge 10.0.1_rc; then
+       EXPORT_FUNCTIONS src_prepare
+fi
 
 # @FUNCTION: llvm.org_src_unpack
 # @DESCRIPTION:
@@ -217,3 +220,23 @@ llvm.org_src_unpack() {
                fi
        fi
 }
+
+# @FUNCTION: llvm.org_src_prepare
+# @DESCRIPTION:
+# Call appropriate src_prepare (cmake or default) depending on inherited
+# eclasses.  Make sure that PATCHES and user patches are applied in top
+# ${WORKDIR}, so that patches straight from llvm-project repository
+# work correctly with -p1.
+llvm.org_src_prepare() {
+       if declare -f cmake_src_prepare >/dev/null; then
+               # cmake eclasses force ${S} for default_src_prepare
+               # but use ${CMAKE_USE_DIR} for everything else
+               CMAKE_USE_DIR=${S} \
+               S=${WORKDIR} \
+               cmake_src_prepare
+       else
+               pushd "${WORKDIR}" >/dev/null || die
+               default_src_prepare
+               popd >/dev/null || die
+       fi
+}

Reply via email to