Python related changes
v5 cover Python related changes
1. add infrastructure for external python packages
2. enable zlib support for host-python due to setuptools and others dependencies
3. add some external packages
4. add distutilscross for cross-compiling python extensions
5. fix netifaces cross-compilation issue
Yegor
PATCH v5 1/6 Python: add external modules option
From: Yegor Yefremov <[email protected]>
all external python packages/libraries should reside in "external python modules" section.
Move existing modules python-serial and python-mad there
Move python-mad from package/multimedia to package
--- package/Config.in | 7 ++++- package/multimedia/Config.in | 1 - package/multimedia/python-mad/Config.in | 9 ------ package/multimedia/python-mad/python-mad.mk | 41 --------------------------- package/python-mad/Config.in | 9 ++++++ package/python-mad/python-mad.mk | 41 +++++++++++++++++++++++++++ 6 files changed, 56 insertions(+), 52 deletions(-) delete mode 100644 package/multimedia/python-mad/Config.in delete mode 100644 package/multimedia/python-mad/python-mad.mk create mode 100644 package/python-mad/Config.in create mode 100644 package/python-mad/python-mad.mk
package/Config.in +6 -1
@@ -236,6 +236,12 @@ endif source "package/microperl/Config.in" source "package/php/Config.in" source "package/python/Config.in" +if BR2_PACKAGE_PYTHON +menu "external python modules" +source "package/python-mad/Config.in" +source "package/python-serial/Config.in" +endmenu +endif source "package/ruby/Config.in" source "package/tcl/Config.in" endmenu
@@ -312,7 +318,6 @@ source "package/libhid/Config.in" source "package/libiqrf/Config.in" source "package/libusb/Config.in" source "package/libusb-compat/Config.in" -source "package/python-serial/Config.in" endmenu if BROKEN
package/multimedia/Config.in +0 -1
@@ -40,7 +40,6 @@ source "package/multimedia/mplayer/Config.in" source "package/multimedia/musepack/Config.in" source "package/multimedia/portaudio/Config.in" source "package/multimedia/pulseaudio/Config.in" -source "package/multimedia/python-mad/Config.in" source "package/multimedia/speex/Config.in" source "package/multimedia/tidsp-binaries/Config.in" source "package/multimedia/taglib/Config.in"
package/multimedia/python-mad/Config.in deleted +0 -9
@@ -1,9 +0,0 @@ -config BR2_PACKAGE_PYTHON_MAD - bool "python-mad" - depends on BR2_PACKAGE_PYTHON - select BR2_PACKAGE_LIBMAD - help - python-mad is a Python binding for the MAD library, a - high-quality integer-only MPEG decoder. - - http://spacepants.org/src/pymad/
package/multimedia/python-mad/python-mad.mk deleted +0 -41
41 lines not on this page · raw message
package/python-mad/Config.in new file +9 -0
@@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MAD + bool "python-mad" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_LIBMAD + help + python-mad is a Python binding for the MAD library, a + high-quality integer-only MPEG decoder. + + http://spacepants.org/src/pymad/
package/python-mad/python-mad.mk new file +41 -0
41 lines not on this page · raw message
Signature · 1 line
1.7.1.1
PATCH v5 1/6 Python: add external modules option
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> all external python packages/libraries should reside in yegorslists> "external python modules" section.
yegorslists> Move existing modules python-serial and python-mad there
yegorslists> Move python-mad from package/multimedia to package
Committed, thanks. Please consider enabling git's rename detection (-M) to make such a patch here a lot easier to review.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 2/6 Python: enable zlib support for the host package
In reply to yegorslists at googlemail.comFrom: Yegor Yefremov <[email protected]>
zlib is needed for the host-setuptools package
--- package/python/python.mk | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
package/python/python.mk +1 -2
@@ -28,7 +28,6 @@ HOST_PYTHON_CONF_OPT += \ --disable-bsddb \ --disable-test-modules \ --disable-bz2 \ - --disable-zlib \ --disable-ssl HOST_PYTHON_MAKE_ENV = \
@@ -52,7 +51,7 @@ endef PYTHON_DEPENDENCIES = host-python libffi -HOST_PYTHON_DEPENDENCIES = host-expat +HOST_PYTHON_DEPENDENCIES = host-expat host-zlib PYTHON_INSTALL_STAGING = YES
Signature · 1 line
1.7.1.1
PATCH v5 2/6 Python: enable zlib support for the host package
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> zlib is needed for the host-setuptools package
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 3/6 New package: python-dpkt
In reply to yegorslists at googlemail.comFrom: Yegor Yefremov <[email protected]>
--- package/Config.in | 1 + package/python-dpkt/Config.in | 11 +++++++++++ package/python-dpkt/python-dpkt.mk | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 0 deletions(-) create mode 100644 package/python-dpkt/Config.in create mode 100644 package/python-dpkt/python-dpkt.mk
package/Config.in +1 -0
@@ -238,6 +238,7 @@ source "package/php/Config.in" source "package/python/Config.in" if BR2_PACKAGE_PYTHON menu "external python modules" +source "package/python-dpkt/Config.in" source "package/python-mad/Config.in" source "package/python-serial/Config.in" endmenu
package/python-dpkt/Config.in new file +11 -0
@@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_DPKT + bool "python-dpkt" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_ZLIB + help + Fast, simple packet creation / parsing, with definitions + for the basic TCP/IP protocols. + + http://code.google.com/p/dpkt/ + +
package/python-dpkt/python-dpkt.mk new file +22 -0
@@ -0,0 +1,22 @@ +############################################################# +# +# python-dpkt +# +############################################################# + +PYTHON_DPKT_VERSION = 1.7 +PYTHON_DPKT_SOURCE = dpkt-$(PYTHON_DPKT_VERSION).tar.gz +PYTHON_DPKT_SITE = http://dpkt.googlecode.com/files + +PYTHON_DPKT_DEPENDENCIES = python + +define PYTHON_DPKT_BUILD_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define PYTHON_DPKT_INSTALL_TARGET_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(TARGET_DIR)/usr) +endef + +$(eval $(call GENTARGETS)) +
Signature · 1 line
1.7.1.1
PATCH v5 3/6 New package: python-dpkt
Quoted 18 lines · yegorslists at googlemail.com
package/python-dpkt/python-dpkt.mk new file +12
-0@@ -0,0 +1,22 @@ +############################################################# +# +# python-dpkt +# +############################################################# + +PYTHON_DPKT_VERSION = 1.7 +PYTHON_DPKT_SOURCE = dpkt-$(PYTHON_DPKT_VERSION).tar.gz +PYTHON_DPKT_SITE = http://dpkt.googlecode.com/files + +PYTHON_DPKT_DEPENDENCIES = python +
package/python-dpkt/python-dpkt.mk line 22
Quoted 10 lines
package/python-dpkt/python-dpkt.mk new file +10
-0+define PYTHON_DPKT_BUILD_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define PYTHON_DPKT_INSTALL_TARGET_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(TARGET_DIR)/usr) +endef + +$(eval $(call GENTARGETS)) +
Do somebody ever thought in doing a distutils package infrastructure that would make the adding of a new python package just a matter of:
$(eval $(call DISTUTILSTARGETS))
(or something like that)
?
Regards,
Julien
PATCH v5 3/6 New package: python-dpkt
Le Thu, 05 Jan 2012 11:14:09 +0100,
Julien Boibessot <[email protected]> a ?crit :
Quoted 4 lines
Do somebody ever thought in doing a distutils package infrastructure that would make the adding of a new python package just a matter of:
$(eval $(call DISTUTILSTARGETS))(or something like that)
Yeah, we discussed that sometime ago. I think our conclusion was:
"let's wait to have a few Python packages to see what are the common things and then we'll do an infrastructure". I guess we could merge Yegor's patches as is and then work on a common infrastructure.
Regards,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v5 3/6 New package: python-dpkt
Am 05.01.2012 11:16, schrieb Thomas Petazzoni:
Quoted 8 lines
Le Thu, 05 Jan 2012 11:14:09 +0100,
Julien Boibessot <[email protected]> a ?crit :Quoted 4 lines
Do somebody ever thought in doing a distutils package infrastructure that would make the adding of a new python package just a matter of:
$(eval $(call DISTUTILSTARGETS))(or something like that)
Quoted 4 lines
Yeah, we discussed that sometime ago. I think our conclusion was:
"let's wait to have a few Python packages to see what are the common things and then we'll do an infrastructure". I guess we could merge Yegor's patches as is and then work on a common infrastructure.
I agree. These package can be merged as they are. In the patch series we have 3 packages all using different installation methods:
dpkt - uses internal distutils and ships no C code
mad - uses internal distutils but a part of it must be cross-compiled
netifaces - uses setuptools on top of distutils, has C code and uses distutilscross to get the code crosscompiled
in the future there will be one more internal tool ditsutils2 https://bitbucket.org/tarek/distutils2/overview
and Chris Lambacher is going to PyCon with following talk: https://us.pycon.org/2012/schedule/presentation/11/
So we should wait a little till the sings will calm down and then make our decision.
Best regards,
Yegor
PATCH v5 3/6 New package: python-dpkt
In reply to yegorslists at googlemail.comQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> Signed-off-by: Yegor Yefremov <[email protected]> yegorslists> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 4/6 New package: python-setuptools
In reply to yegorslists at googlemail.comFrom: Yegor Yefremov <[email protected]>
--- package/Config.in | 1 + package/python-setuptools/Config.in | 8 +++++ package/python-setuptools/python-setuptools.mk | 34 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 0 deletions(-) create mode 100644 package/python-setuptools/Config.in create mode 100644 package/python-setuptools/python-setuptools.mk
package/Config.in +1 -0
@@ -241,6 +241,7 @@ menu "external python modules" source "package/python-dpkt/Config.in" source "package/python-mad/Config.in" source "package/python-serial/Config.in" +source "package/python-setuptools/Config.in" endmenu endif source "package/ruby/Config.in"
package/python-setuptools/Config.in new file +8 -0
@@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SETUPTOOLS + bool "python-setuptools" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_ZLIB + help + Download, build, install, upgrade, and uninstall Python packages. + + http://pypi.python.org/pypi/setuptools
package/python-setuptools/python-setuptools.mk new file +34 -0
@@ -0,0 +1,34 @@ +############################################################# +# +# python-setuptools +# +############################################################# + +PYTHON_SETUPTOOLS_VERSION = 0.6c11 +PYTHON_SETUPTOOLS_SOURCE = setuptools-$(PYTHON_SETUPTOOLS_VERSION).tar.gz +PYTHON_SETUPTOOLS_SITE = http://pypi.python.org/packages/source/s/setuptools +PYTHON_SETUPTOOLS_DEPENDENCIES = python +HOST_PYTHON_SETUPTOOLS_DEPENDENCIES = host-python + + +define HOST_PYTHON_SETUPTOOLS_BUILD_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define PYTHON_SETUPTOOLS_BUILD_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define HOST_PYTHON_SETUPTOOLS_INSTALL_CMDS + (cd $(@D); PYTHONPATH="$(HOST_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"\ + $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(HOST_DIR)/usr) +endef + +define PYTHON_SETUPTOOLS_INSTALL_TARGET_CMDS + (cd $(@D); PYTHONPATH="$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"\ + $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(TARGET_DIR)/usr) +endef + +$(eval $(call GENTARGETS)) +$(eval $(call GENTARGETS,host)) +
Signature · 1 line
1.7.1.1
PATCH v5 4/6 New package: python-setuptools
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> Signed-off-by: Yegor Yefremov <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 5/6 New package: python-distutilscross
In reply to yegorslists at googlemail.comFrom: Yegor Yefremov <[email protected]>
--- .../python-distutilscross/python-distutilscross.mk | 22 ++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) create mode 100644 package/python-distutilscross/python-distutilscross.mk
package/python-distutilscross/python-distutilscross.mk new file +22 -0
@@ -0,0 +1,22 @@ +############################################################# +# +# python-distutilscross +# +############################################################# + +PYTHON_DISTUTILSCROSS_VERSION = 0.1 +PYTHON_DISTUTILSCROSS_SOURCE = distutilscross-$(PYTHON_DISTUTILSCROSS_VERSION).tar.gz +PYTHON_DISTUTILSCROSS_SITE = http://pypi.python.org/packages/source/d/distutilscross + +HOST_PYTHON_DISTUTILSCROSS_DEPENDENCIES = host-python host-python-setuptools + +define HOST_PYTHON_DISTUTILSCROSS_BUILD_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define HOST_PYTHON_DISTUTILSCROSS_INSTALL_CMDS + (cd $(@D); $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(HOST_DIR)/usr) +endef + +$(eval $(call GENTARGETS,host)) +
Signature · 1 line
1.7.1.1
PATCH v5 5/6 New package: python-distutilscross
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> Signed-off-by: Yegor Yefremov <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 6/6 New package: python-netifaces
In reply to yegorslists at googlemail.comFrom: Yegor Yefremov <[email protected]>
--- package/Config.in | 1 + package/python-netifaces/Config.in | 9 +++ .../python-netifaces-fix-cross-build.patch | 54 ++++++++++++++++++++ package/python-netifaces/python-netifaces.mk | 27 ++++++++++ 4 files changed, 91 insertions(+), 0 deletions(-) create mode 100644 package/python-netifaces/Config.in create mode 100644 package/python-netifaces/python-netifaces-fix-cross-build.patch create mode 100644 package/python-netifaces/python-netifaces.mk
package/Config.in +1 -0
@@ -240,6 +240,7 @@ if BR2_PACKAGE_PYTHON menu "external python modules" source "package/python-dpkt/Config.in" source "package/python-mad/Config.in" +source "package/python-netifaces/Config.in" source "package/python-serial/Config.in" source "package/python-setuptools/Config.in" endmenu
package/python-netifaces/Config.in new file +9 -0
@@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_NETIFACES + bool "python-netifaces" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_SETUPTOOLS + help + Portable access to network interfaces from Python. + + http://alastairs-place.net/projects/netifaces +
package/python-netifaces/python-netifaces-fix-cross-build.patch new file +54 -0
54 lines not on this page · raw message
package/python-netifaces/python-netifaces.mk new file +27 -0
@@ -0,0 +1,27 @@ +############################################################# +# +# python-netifaces +# +############################################################# + +PYTHON_NETIFACES_VERSION = 0.6 +PYTHON_NETIFACES_SOURCE = netifaces-$(PYTHON_NETIFACES_VERSION).tar.gz +PYTHON_NETIFACES_SITE = http://alastairs-place.net/projects/netifaces + +PYTHON_NETIFACES_DEPENDENCIES = python host-python-setuptools host-python-distutilscross + +define PYTHON_NETIFACES_BUILD_CMDS + (cd $(@D); \ + PYTHONXCPREFIX="$(STAGING_DIR)/usr/" \ + LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \ + $(HOST_DIR)/usr/bin/python setup.py build) +endef + +define PYTHON_NETIFACES_INSTALL_TARGET_CMDS + (cd $(@D); PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + $(HOST_DIR)/usr/bin/python setup.py install --prefix=$(TARGET_DIR)/usr) +endef + + +$(eval $(call GENTARGETS)) +
Signature · 1 line
1.7.1.1
PATCH v5 6/6 New package: python-netifaces
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> Signed-off-by: Yegor Yefremov <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 6/6 New package: python-netifaces
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
"Peter" == Peter Korsgaard <[email protected]> writes:
"yegorslists" == yegorslists <[email protected]> writes:
yegorslists> From: Yegor Yefremov <[email protected]> yegorslists> Signed-off-by: Yegor Yefremov <[email protected]>
Peter> Committed, thanks.
It unfortunately seems broken and tries to build for the host rather than the target:
(on a ppc64 host building for i686):
creating build/lib.linux-ppc64-2.7/usr/lib64/ccache/gcc -pthread -shared -L/home/peko/scratch/host/lib -L/home/peko/scratch/host/usr/lib -Wl,-rpath,/home/peko/scratch/host/usr/lib -L/home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/lib -L/home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/usr/lib build/temp.linux-ppc64-2.7/netifaces.o -o build/lib.linux-ppc64-2.7/netifaces.so /usr/bin/ld: skipping incompatible /home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/lib/libgcc_s.so when searching for -lgcc_s/usr/bin/ld: skipping incompatible /lib/libpthread.so.0 when searching for /lib/libpthread.so.0/usr/bin/ld: cannot find /lib/libpthread.so.0/usr/bin/ld: skipping incompatible /usr/lib/libpthread_nonshared.a when searching for /usr/lib/libpthread_nonshared.a/usr/bin/ld: cannot find /usr/lib/libpthread_nonshared.a
collect2: ld returned 1 exit status
error: command '/usr/lib64/ccache/gcc' failed with exit status 1
make: *** [/home/peko/scratch/build/python-netifaces-0.6/.stamp_built] Error 1
Any ideas?
Signature · 1 line
Bye, Peter Korsgaard
PATCH v5 6/6 New package: python-netifaces
Quoted 24 lines · Peter Korsgaard
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
"Peter" == Peter Korsgaard <[email protected]> writes:
"yegorslists" == yegorslists ?<[email protected]> writes:
?yegorslists> From: Yegor Yefremov <[email protected]> ?yegorslists> Signed-off-by: Yegor Yefremov <[email protected]>
?Peter> Committed, thanks.
It unfortunately seems broken and tries to build for the host rather than the target:
(on a ppc64 host building for i686):
creating build/lib.linux-ppc64-2.7
/usr/lib64/ccache/gcc-pthread -shared -L/home/peko/scratch/host/lib -L/home/peko/scratch/host/usr/lib -Wl,-rpath,/home/peko/scratch/host/usr/lib -L/home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/lib -L/home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/usr/libbuild/temp.linux-ppc64-2.7/netifaces.o-o build/lib.linux-ppc64-2.7/netifaces.so/usr/bin/ld: skipping incompatible/home/peko/scratch/host/usr/i686-unknown-linux-uclibc/sysroot/lib/libgcc_s.sowhen searching for -lgcc_s/usr/bin/ld: skipping incompatible/lib/libpthread.so.0when searching for/lib/libpthread.so.0/usr/bin/ld: cannot find/lib/libpthread.so.0/usr/bin/ld: skipping incompatible/usr/lib/libpthread_nonshared.awhen searching for/usr/lib/libpthread_nonshared.a/usr/bin/ld: cannot find/usr/lib/libpthread_nonshared.a
collect2: ld returned 1 exit status
error: command '/usr/lib64/ccache/gcc' failed with exit status 1
make: *** [/home/peko/scratch/build/python-netifaces-0.6/.stamp_built] Error 1
Quoted 1 line
Any ideas?
My bad. I had some problems reorganizing my patches and forgot -x option by build command. Still learning git :-( Please test the patch I submitted.
Yegor