[oe] [meta-python2][zeus][PATCH] python-backports-init: Add helper class and recipe

Tim Orling ticotimo at gmail.com
Tue Dec 3 15:40:16 UTC 2019


Recipes that install in the backports namespace have
a tendency to conflict in the installation of
.../site-packages/backports/__init__.py

Add a class and recipe to help avoid the conflict.

Modify recipes that are affected:
  - python-backports-functools-lru-cache
  - python-backports-ssl
  - python-configparser

Signed-off-by: Tim Orling <ticotimo at gmail.com>
---
 classes/python-backports-init.bbclass         |  7 ++++++
 ...ython-backports-functools-lru-cache_1.5.bb |  2 +-
 .../backports/__init__.py                     |  5 ++++
 .../python/python-backports-init_1.0.bb       | 25 +++++++++++++++++++
 .../python/python-backports-ssl_3.5.0.1.bb    |  3 ++-
 .../python/python-configparser_3.8.1.bb       |  2 +-
 6 files changed, 41 insertions(+), 3 deletions(-)
 create mode 100644 classes/python-backports-init.bbclass
 create mode 100644 recipes-devtools/python/python-backports-init/backports/__init__.py
 create mode 100644 recipes-devtools/python/python-backports-init_1.0.bb

diff --git a/classes/python-backports-init.bbclass b/classes/python-backports-init.bbclass
new file mode 100644
index 00000000..727bc4a8
--- /dev/null
+++ b/classes/python-backports-init.bbclass
@@ -0,0 +1,7 @@
+inherit python-dir
+
+RDEPENDS_${PN} += "python-backports-init"
+
+do_install_prepend() {
+    rm -rf $(find . -path "*/backports/__init__.py" -type f)
+}
diff --git a/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb b/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
index 825444ff..11c15338 100644
--- a/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
+++ b/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
@@ -11,7 +11,7 @@ SRC_URI[sha256sum] = "9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151f
 
 DEPENDS += "python-setuptools-scm-native"
 
-inherit setuptools pypi
+inherit setuptools pypi python-backports-init
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-pickle \
diff --git a/recipes-devtools/python/python-backports-init/backports/__init__.py b/recipes-devtools/python/python-backports-init/backports/__init__.py
new file mode 100644
index 00000000..febdb2f8
--- /dev/null
+++ b/recipes-devtools/python/python-backports-init/backports/__init__.py
@@ -0,0 +1,5 @@
+# A Python "namespace package" http://www.python.org/dev/peps/pep-0382/
+# This always goes inside of a namespace package's __init__.py
+
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
diff --git a/recipes-devtools/python/python-backports-init_1.0.bb b/recipes-devtools/python/python-backports-init_1.0.bb
new file mode 100644
index 00000000..29e712a6
--- /dev/null
+++ b/recipes-devtools/python/python-backports-init_1.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Helper package to avoid backports/__init__.py conflicts"
+DETAIL = "backports packages in python2 suffer from a flaw in the namespace \
+implementation and can conflict with each other. For OE purposes, at least \
+fix the conflicting install of .../site-packages/backports/__init__.py"
+AUTHOR = "Tim Orling <ticotimo at gmail.com>"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://backports/__init__.py"
+
+inherit python-dir
+
+# provide to avoid warnings
+do_compile() {
+    :
+}
+
+do_install() {
+    install -d ${D}${PYTHON_SITEPACKAGES_DIR}/backports
+    install ${WORKDIR}/backports/__init__.py ${D}${PYTHON_SITEPACKAGES_DIR}/backports/
+}
+
+FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py"
diff --git a/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb b/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb
index 45492daa..8be16039 100644
--- a/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb
+++ b/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb
@@ -13,6 +13,7 @@ SRC_URI[md5sum] = "c03fc5e2c7b3da46b81acf5cbacfe1e6"
 SRC_URI[sha256sum] = "502ad98707319f4a51fa2ca1c677bd659008d27ded9f6380c79e8932e38dcdf2"
 
 PYPI_PACKAGE = "backports.ssl_match_hostname"
-inherit pypi setuptools
+
+inherit pypi setuptools python-backports-init
 
 RDEPENDS_${PN} += "${PYTHON_PN}-pkgutil"
diff --git a/recipes-devtools/python/python-configparser_3.8.1.bb b/recipes-devtools/python/python-configparser_3.8.1.bb
index 69f045db..859dbd78 100644
--- a/recipes-devtools/python/python-configparser_3.8.1.bb
+++ b/recipes-devtools/python/python-configparser_3.8.1.bb
@@ -1,2 +1,2 @@
-inherit setuptools
+inherit setuptools python-backports-init
 require python-configparser.inc
-- 
2.24.0



More information about the Openembedded-devel mailing list