From: Roman I Khimov Date: Tue, 23 Mar 2010 10:27:40 +0000 (+0300) Subject: distutils-common-base: move Python dir detection to separate class X-Git-Tag: Release-2010-05/1~299 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0f9409803d6edc14608828967c0c52b5a2d182e;p=openembedded.git distutils-common-base: move Python dir detection to separate class Allows to inherit that in packages containing Python extensions but still tightly control packaging of those extensions. Mainly for the cases where you want those python modules/extensions/parts to be packaged separately from the main package in order not to introduce python dependency where you don't need it. Technically, you can do it with distutils-common-base, but it might require more FILES_* work than with python-dir. Introduce PYTHON_SITEPACKAGES_DIR along the way, site-packages directory is referenced frequently enough within class files, but some recipes also pack this directory as ${libdir}/python2.5/site-packages ${libdir}/python2.6/site-packages ${libdir}/python*/site-packages /usr/lib/python*/site-packages ${libdir}/*/site-packages all of which are not perfect. Signed-off-by: Roman I Khimov --- diff --git a/classes/distutils-common-base.bbclass b/classes/distutils-common-base.bbclass index 87578b773f..b6dce7e583 100644 --- a/classes/distutils-common-base.bbclass +++ b/classes/distutils-common-base.bbclass @@ -1,19 +1,10 @@ +inherit python-dir + EXTRA_OEMAKE = "" export STAGING_INCDIR export STAGING_LIBDIR -def python_dir(d): - import os, bb - staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 ) - for majmin in "2.6 2.5 2.4 2.3".split(): - if os.path.exists( "%s/python%s" % ( staging_incdir, majmin ) ): return "python%s" % majmin - if not "python-native" in bb.data.getVar( "DEPENDS", d, 1 ).split(): - raise "No Python in STAGING_INCDIR. Forgot to build python-native ?" - return "INVALID" - -PYTHON_DIR = "${@python_dir(d)}" - PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc ${PN}" FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*" diff --git a/classes/python-dir.bbclass b/classes/python-dir.bbclass new file mode 100644 index 0000000000..d631a5c3ff --- /dev/null +++ b/classes/python-dir.bbclass @@ -0,0 +1,11 @@ +def python_dir(d): + import os, bb + staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 ) + for majmin in "2.6 2.5 2.4 2.3".split(): + if os.path.exists( "%s/python%s" % ( staging_incdir, majmin ) ): return "python%s" % majmin + if not "python-native" in bb.data.getVar( "DEPENDS", d, 1 ).split(): + raise "No Python in STAGING_INCDIR. Forgot to build python-native ?" + return "INVALID" + +PYTHON_DIR = "${@python_dir(d)}" +PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"