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 <mgo...@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 b4b80df06d85..9fc975cd51cb 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 +} -- 2.27.0