[oe] OT: determining in `Makefile.in` the Python version/path

Paul Menzel paulepanter at users.sourceforge.net
Mon Jan 10 10:46:37 UTC 2011


Am Sonntag, den 09.01.2011, 23:17 +0100 schrieb Andreas Oberritter:
> On 01/09/2011 10:07 PM, Paul Menzel wrote:
> > I tried to use `python-config` to determine the Python version [3].
> > 
> >         ifeq (arm, $(ARCH))
> >         -# Force external python2.5 for now!
> >         -LIBS +=-lpython2.5
> >         +# Force external Python for now!
> >         +LIBS += $(shell python-config --libs)
> >          endif
> > 
> > This fails with the following error though documented in `log.do_compile`.
> > 
> >         Traceback (most recent call last):
> >           File "/oe/build/angstrom-dev/sysroots/i686-linux/usr/bin/python-config", line 6, in <module>
> >             from distutils import sysconfig
> >           File "/oe/build/angstrom-dev/sysroots/i686-linux/usr/lib/python2.6/distutils/sysconfig.py", line 22, in <module>
> >             PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
> > 
> 
> For OE's Python, you need to set some variables in your recipe, e.g.:
> 
> EXTRA_OECONF = " \
>         BUILD_SYS=${BUILD_SYS} \
>         HOST_SYS=${HOST_SYS} \
>         STAGING_INCDIR=${STAGING_INCDIR} \
>         STAGING_LIBDIR=${STAGING_LIBDIR} \
> "

Andreas, thank you very much. At first it did not work and I got the
same error. Then I tried to put it into `EXTRA_OEMAKE`, since the error
was during task `compile`. That did not work either and I got the same
error again.

With a manual test recipe (attached, `git am --scissors`) manually
running

	python-config --libs

worked, so I think the problem is, that the environment variables are
not passed to the shell(?) opened by `$(shell …)`.

Searching for `'BUILD_SYS=${BUILD_SYS}'` through the repository I found
that sometimes those variables are exported and tried the following

        do_configure_prepend() {
               export BUILD_SYS=${BUILD_SYS}
               export HOST_SYS=${HOST_SYS}
               export STAGING_INCDIR=${STAGING_INCDIR}
               export STAGING_LIBDIR=${STAGING_LIBDIR}
        }
        
        […]
        
        do_compile_prepend() {
               export BUILD_SYS=${BUILD_SYS}
               export HOST_SYS=${HOST_SYS}
               export STAGING_INCDIR=${STAGING_INCDIR}
               export STAGING_LIBDIR=${STAGING_LIBDIR}
        }

which seems to work. Is that the right explanation and is there an
easier way to do this?


Thanks,

Paul

8<-------------------------------------------------------------------->8
From dbf2af72601e5998af0d3cc0f0dc4abcc5d4fa6e Mon Sep 17 00:00:00 2001
From: Paul Menzel <paulepanter at users.sourceforge.net>
Date: Mon, 10 Jan 2011 11:00:45 +0100
Subject: [PATCH] test-python-config: add test program for `python-config`

http://lists.linuxtogo.org/pipermail/openembedded-devel/2011-January/028563.html

Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>
---
 recipes/helloworld/test-python-config_1.0.0.bb |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)
 create mode 100644 recipes/helloworld/test-python-config_1.0.0.bb

diff --git a/recipes/helloworld/test-python-config_1.0.0.bb b/recipes/helloworld/test-python-config_1.0.0.bb
new file mode 100644
index 0000000..89c89e9
--- /dev/null
+++ b/recipes/helloworld/test-python-config_1.0.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "run `python-config --libs`"
+LICENSE = "GPLv3"
+PR = "r0"
+DEPENDS = "python"
+
+S = "${WORKDIR}/${P}"
+
+do_fetch () {
+	mkdir -p ${WORKDIR}/${P}
+	cd ${WORKDIR}/${P}
+}
+
+do_compile () {
+	BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} STAGING_INCDIR=${STAGING_INCDIR} STAGING_LIBDIR=${STAGING_LIBDIR} python-config --libs
+}
+
+do_install () {
+}
-- 
1.7.2.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20110110/bdc65a76/attachment-0002.sig>


More information about the Openembedded-devel mailing list