summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2016-01-05 11:12:16 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2016-03-30 18:07:26 +0200
commite010b4985cea93daddec398db101a0b48c7a564d (patch)
tree79fb02d2690850067790b3122a3c1c5861d5178c
parentd535517e113980a635207286cfee3df2ba0ece27 (diff)
python: add a PACKAGECONFIG for _tkinter
Currently _tkinter is only built when tcl/tk is available before the python do_configure task is built. Make this deterministic by providing a PACKAGECONFIG for it. If tkinter is in PACKAGECONFIG add the needed dependencies, if not force that tkinter is not built. Note that currently enabling tkinter does not work due to a cyclic dependency: 'python' depends on 'tk/tcl' depends on 'cracklib' depends on 'python' Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
-rw-r--r--recipes-devtools/python/python/dont_build_tkinter.patch24
-rw-r--r--recipes-devtools/python/python_2.7.9.bbappend19
2 files changed, 43 insertions, 0 deletions
diff --git a/recipes-devtools/python/python/dont_build_tkinter.patch b/recipes-devtools/python/python/dont_build_tkinter.patch
new file mode 100644
index 0000000..bdd47a8
--- /dev/null
+++ b/recipes-devtools/python/python/dont_build_tkinter.patch
@@ -0,0 +1,24 @@
+_tkinter module needs tk module along with tcl.
+Force python to not be built with _tkinter.
+
+Upstream-Status: Inappropriate [distribution]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+--- Python-2.7.9/setup.py.orig 2015-12-20 16:56:24.580951972 +0100
++++ Python-2.7.9/setup.py 2015-12-20 17:00:34.524083526 +0100
+@@ -1762,10 +1762,11 @@
+ self.extensions.extend(exts)
+
+ # Call the method for detecting whether _tkinter can be compiled
+- self.detect_tkinter(inc_dirs, lib_dirs)
++ # disable detection of tcl/tk and thus don't build python with _tkinter
++ #self.detect_tkinter(inc_dirs, lib_dirs)
+
+- if '_tkinter' not in [e.name for e in self.extensions]:
+- missing.append('_tkinter')
++ #if '_tkinter' not in [e.name for e in self.extensions]:
++ # missing.append('_tkinter')
+
+ ## # Uncomment these lines if you want to play with xxmodule.c
+ ## ext = Extension('xx', ['xxmodule.c'])
diff --git a/recipes-devtools/python/python_2.7.9.bbappend b/recipes-devtools/python/python_2.7.9.bbappend
new file mode 100644
index 0000000..ff0071f
--- /dev/null
+++ b/recipes-devtools/python/python_2.7.9.bbappend
@@ -0,0 +1,19 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/python:"
+
+SRC_URI_remove = "file://avoid_warning_about_tkinter.patch"
+
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[tkinter] = ",,tk"
+PACKAGECONFIG_remove_class-native = "tkinter"
+PACKAGECONFIG_remove_class-nativesdk = "tkinter"
+RDEPENDS_${PN}-tkinter_append += "${@base_contains('PACKAGECONFIG', 'tkinter', 'tcl tk', '', d)}"
+SRC_URI += " \
+ ${@base_contains('PACKAGECONFIG', 'tkinter', '', 'file://dont_build_tkinter.patch', d)} \
+"
+python __anonymous() {
+ if not 'openembedded-layer' in d.getVar('BBFILE_COLLECTIONS'):
+ if 'tkinter' in d.getVar('PACKAGECONFIG'):
+ bb.error('Python PACKAGECONFIG tkinter requires tk provided by' \
+ 'meta-oe layer but the layer is not available.')
+}