Mercurial 7.x reworked its Makefile to install via pip. Use a
DESTDIR-aware setup.py install instead, add python3-setuptools-scm-native
and pin the version via SETUPTOOLS_SCM_PRETEND_VERSION, and fix the
PYTHON Makefile sed.

Signed-off-by: Khem Raj <[email protected]>
---
 .../mercurial/mercurial_6.6.3.bb              | 37 -------------
 .../mercurial/mercurial_7.2.2.bb              | 53 +++++++++++++++++++
 2 files changed, 53 insertions(+), 37 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/mercurial/mercurial_6.6.3.bb
 create mode 100644 meta-oe/recipes-devtools/mercurial/mercurial_7.2.2.bb

diff --git a/meta-oe/recipes-devtools/mercurial/mercurial_6.6.3.bb 
b/meta-oe/recipes-devtools/mercurial/mercurial_6.6.3.bb
deleted file mode 100644
index 3fa692029e..0000000000
--- a/meta-oe/recipes-devtools/mercurial/mercurial_6.6.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "The Mercurial distributed SCM"
-HOMEPAGE = "http://mercurial.selenic.com/";
-SECTION = "console/utils"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "python3 python3-native python3-setuptools-native"
-RDEPENDS:${PN} = "python3 python3-modules"
-
-inherit python3native python3targetconfig
-
-SRC_URI = "https://www.mercurial-scm.org/release/${BP}.tar.gz";
-SRC_URI[sha256sum] = 
"f75d6a4a75823a1b7d713a4967eca2f596f466e58fc6bc06d72642932fd7e307"
-
-S = "${UNPACKDIR}/mercurial-${PV}"
-
-BBCLASSEXTEND = "native"
-
-export LDSHARED = "${CCLD} -shared"
-
-EXTRA_OEMAKE = "STAGING_LIBDIR=${STAGING_LIBDIR} 
STAGING_INCDIR=${STAGING_INCDIR} \
-    PREFIX=${prefix}"
-
-do_configure:append () {
-    sed -i -e 's:PYTHON?=python:PYTHON=python3:g' ${S}/Makefile
-}
-
-do_install () {
-    oe_runmake -e install-bin DESTDIR=${D} PREFIX=${prefix}
-    sed -i -e 
's:${STAGING_BINDIR_NATIVE}/python3-native/python3:${USRBINPATH}/env python3:g' 
${D}${bindir}/hg
-}
-PACKAGES =+ "${PN}-python"
-
-FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR} ${datadir}"
-FILES:${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
-
-CVE_PRODUCT = "mercurial-scm:mercurial mercurial:mercurial"
diff --git a/meta-oe/recipes-devtools/mercurial/mercurial_7.2.2.bb 
b/meta-oe/recipes-devtools/mercurial/mercurial_7.2.2.bb
new file mode 100644
index 0000000000..34a3eb9e51
--- /dev/null
+++ b/meta-oe/recipes-devtools/mercurial/mercurial_7.2.2.bb
@@ -0,0 +1,53 @@
+SUMMARY = "The Mercurial distributed SCM"
+HOMEPAGE = "http://mercurial.selenic.com/";
+SECTION = "console/utils"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "python3 python3-native python3-setuptools-native 
python3-setuptools-scm-native"
+RDEPENDS:${PN} = "python3 python3-modules"
+
+inherit python3native python3targetconfig
+
+SRC_URI = "https://www.mercurial-scm.org/release/${BP}.tar.gz";
+SRC_URI[sha256sum] = 
"f2ec8e7eeef0500591706d374555f0ceb118822068e75fa3b32be07dd2184f6c"
+
+S = "${UNPACKDIR}/mercurial-${PV}"
+
+BBCLASSEXTEND = "native"
+
+export LDSHARED = "${CCLD} -shared"
+
+# Mercurial's setup.py derives its version via setuptools-scm; the release
+# tarball is not a VCS checkout, so tell setuptools-scm the version explicitly.
+export SETUPTOOLS_SCM_PRETEND_VERSION = "${PV}"
+
+EXTRA_OEMAKE = "STAGING_LIBDIR=${STAGING_LIBDIR} 
STAGING_INCDIR=${STAGING_INCDIR} \
+    PREFIX=${prefix}"
+
+do_configure:append () {
+    sed -i -e 's:^PYTHON?*=.*:PYTHON=python3:g' ${S}/Makefile
+}
+
+# Mercurial 7.x removed the "make build"/"make all" targets and reworked
+# "make install-bin" to use "pip install", which needs pip in the sysroot and
+# ignores DESTDIR. Drive setup.py directly instead (the legacy, DESTDIR-aware
+# path). python3targetconfig makes setup.py cross-compile the C extensions
+# with the target toolchain.
+do_compile () {
+    ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py build
+}
+
+do_install () {
+    ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py install \
+        --skip-build --root=${D} --prefix=${prefix} \
+        --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+        --single-version-externally-managed
+    sed -i -e 
's:${STAGING_BINDIR_NATIVE}/python3-native/python3:${USRBINPATH}/env python3:g' 
${D}${bindir}/hg
+}
+PACKAGES =+ "${PN}-python"
+
+FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR} ${datadir}"
+FILES:${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
+
+CVE_PRODUCT = "mercurial-scm:mercurial mercurial:mercurial"
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#127852): 
https://lists.openembedded.org/g/openembedded-devel/message/127852
Mute This Topic: https://lists.openembedded.org/mt/120013649/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to