* [Buildroot] [RFC] pkg-python infrastructure
@ 2013-10-25 15:52 Ryan Barnett
2013-10-25 16:46 ` Thomas De Schampheleire
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Ryan Barnett @ 2013-10-25 15:52 UTC (permalink / raw)
To: buildroot
A while back (about a week ago) - Gustavoz Zacarias, Thomas Petazzoni, and
myself - were having a conversation on the IRC about creating a new
package type for handling the builds of python packages. If I recall
correctly, this is what we discussed. I would like to just have some
record on how we want to handle building python packages.
Thomas P and Gustavoz - please correct/expand on any points that I may be
missing.
pkg-python infrastructure
-------------------------
* Would add a new makefile defining generic build steps for python
packages under package/pkg-python.mk.
* Would support building for Python 2.7 and Python 3+.
* Would ensure that cross-compiling of python packages is handled
correctly.
* Would support setup.py and setuptools packages.
I don't know when I will be able to get around to doing this but I would
like to at least capture the points that were made. Also anyone else is
welcome to pick up this work too :)
Thanks,
-Ryan
------------------------------------------------------------
Ryan J Barnett / Software Engineer / Platform SW
MS 137-157, 855 35th St NE, Cedar Rapids, IA, 52498-3161, US
rjbarnet at rockwellcollins.com
www.rockwellcollins.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-10-25 15:52 [Buildroot] [RFC] pkg-python infrastructure Ryan Barnett
@ 2013-10-25 16:46 ` Thomas De Schampheleire
2013-10-26 6:51 ` Thomas Petazzoni
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Thomas De Schampheleire @ 2013-10-25 16:46 UTC (permalink / raw)
To: buildroot
Ryan Barnett <rjbarnet@rockwellcollins.com> wrote:
>A while back (about a week ago) - Gustavoz Zacarias, Thomas Petazzoni, and
>myself - were having a conversation on the IRC about creating a new
>package type for handling the builds of python packages. If I recall
>correctly, this is what we discussed. I would like to just have some
>record on how we want to handle building python packages.
>
>Thomas P and Gustavoz - please correct/expand on any points that I may be
>missing.
>
>pkg-python infrastructure
>-------------------------
>
> * Would add a new makefile defining generic build steps for python
>packages under package/pkg-python.mk.
>
> * Would support building for Python 2.7 and Python 3+.
>
> * Would ensure that cross-compiling of python packages is handled
>correctly.
>
> * Would support setup.py and setuptools packages.
>
>I don't know when I will be able to get around to doing this but I would
>like to at least capture the points that were made. Also anyone else is
>welcome to pick up this work too :)
FWIW, I'm definitely in favor of such an infrastructure...
Best regards,
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-10-25 15:52 [Buildroot] [RFC] pkg-python infrastructure Ryan Barnett
2013-10-25 16:46 ` Thomas De Schampheleire
@ 2013-10-26 6:51 ` Thomas Petazzoni
2013-10-26 10:01 ` Gustavo Zacarias
2013-12-04 23:05 ` Thomas Petazzoni
3 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2013-10-26 6:51 UTC (permalink / raw)
To: buildroot
Dear Ryan Barnett,
On Fri, 25 Oct 2013 10:52:54 -0500, Ryan Barnett wrote:
> A while back (about a week ago) - Gustavoz Zacarias, Thomas Petazzoni, and
> myself - were having a conversation on the IRC about creating a new
> package type for handling the builds of python packages. If I recall
> correctly, this is what we discussed. I would like to just have some
> record on how we want to handle building python packages.
>
> Thomas P and Gustavoz - please correct/expand on any points that I may be
> missing.
>
> pkg-python infrastructure
> -------------------------
>
> * Would add a new makefile defining generic build steps for python
> packages under package/pkg-python.mk.
>
> * Would support building for Python 2.7 and Python 3+.
>
> * Would ensure that cross-compiling of python packages is handled
> correctly.
>
> * Would support setup.py and setuptools packages.
>
> I don't know when I will be able to get around to doing this but I would
> like to at least capture the points that were made. Also anyone else is
> welcome to pick up this work too :)
I definitely confirm that the number of Python modules packages has
grown quite significantly, and that it is certainly time to look at
creating a common infrastructure for those that are based on
setup.py/setuptools. If anyone is interested in working on this, it'd
be great. I just want to warn that it doesn't look like an easy task,
as cross-compilation with Python can be a bit tricky.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-10-25 15:52 [Buildroot] [RFC] pkg-python infrastructure Ryan Barnett
2013-10-25 16:46 ` Thomas De Schampheleire
2013-10-26 6:51 ` Thomas Petazzoni
@ 2013-10-26 10:01 ` Gustavo Zacarias
2013-12-04 23:05 ` Thomas Petazzoni
3 siblings, 0 replies; 7+ messages in thread
From: Gustavo Zacarias @ 2013-10-26 10:01 UTC (permalink / raw)
To: buildroot
On 10/25/2013 12:52 PM, Ryan Barnett wrote:
> pkg-python infrastructure
> -------------------------
* Packages should declare if they're python2 and/or python3 compatible.
Right now packages are only for one or the other but not both, this
should be fixed when packages are happy about it (two build/install
phases if enabled).
Regards.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-10-25 15:52 [Buildroot] [RFC] pkg-python infrastructure Ryan Barnett
` (2 preceding siblings ...)
2013-10-26 10:01 ` Gustavo Zacarias
@ 2013-12-04 23:05 ` Thomas Petazzoni
2013-12-05 10:47 ` Samuel Martin
3 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2013-12-04 23:05 UTC (permalink / raw)
To: buildroot
Hello all,
On Fri, 25 Oct 2013 10:52:54 -0500, Ryan Barnett wrote:
> A while back (about a week ago) - Gustavoz Zacarias, Thomas Petazzoni, and
> myself - were having a conversation on the IRC about creating a new
> package type for handling the builds of python packages. If I recall
> correctly, this is what we discussed. I would like to just have some
> record on how we want to handle building python packages.
>
> Thomas P and Gustavoz - please correct/expand on any points that I may be
> missing.
Following this discussion, I've started working on this. The current
status of the work is available at:
http://git.free-electrons.com/users/thomas-petazzoni/buildroot/log/?h=python-pkg
The most important commit is:
http://git.free-electrons.com/users/thomas-petazzoni/buildroot/commit/?h=python-pkg&id=5880956ce258b15887049ca5850007395cfd1857
It works quite well with distutils, there are a some issues with
setuptools packages: I'll probably need to distinguish them. There are
also a few more Python packages that have not been converted.
I've limited myself to support Python 2.x for the moment: the idea is
that once all Python packages have been converted to the
infrastructure, it will be easier to extend it to also cover Python 3.x.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-12-04 23:05 ` Thomas Petazzoni
@ 2013-12-05 10:47 ` Samuel Martin
2013-12-05 10:53 ` Thomas Petazzoni
0 siblings, 1 reply; 7+ messages in thread
From: Samuel Martin @ 2013-12-05 10:47 UTC (permalink / raw)
To: buildroot
Hi Thomas, all,
2013/12/5 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Hello all,
>
> On Fri, 25 Oct 2013 10:52:54 -0500, Ryan Barnett wrote:
>
> > A while back (about a week ago) - Gustavoz Zacarias, Thomas Petazzoni,
> and
> > myself - were having a conversation on the IRC about creating a new
> > package type for handling the builds of python packages. If I recall
> > correctly, this is what we discussed. I would like to just have some
> > record on how we want to handle building python packages.
> >
> > Thomas P and Gustavoz - please correct/expand on any points that I may be
> > missing.
>
> Following this discussion, I've started working on this. The current
> status of the work is available at:
>
>
> http://git.free-electrons.com/users/thomas-petazzoni/buildroot/log/?h=python-pkg
>
> The most important commit is:
>
>
> http://git.free-electrons.com/users/thomas-petazzoni/buildroot/commit/?h=python-pkg&id=5880956ce258b15887049ca5850007395cfd1857
>
> It works quite well with distutils, there are a some issues with
> setuptools packages: I'll probably need to distinguish them. There are
> also a few more Python packages that have not been converted.
>
> I've limited myself to support Python 2.x for the moment: the idea is
> that once all Python packages have been converted to the
> infrastructure, it will be easier to extend it to also cover Python 3.x.
>
Nice to see this topic moving! :)
I've quickly reviewed the branch:
* Commit: 5880956ce258b15887049ca5850007395cfd1857 [1,2]
docs/manual/adding-packages-python.txt:29-30: s/LIBFOO/PYTHON_FOO/
I've given a run:
* python-bottle: install fails because its setup.py does not support
'--executable' option
* python-crc16: install fails because its setup.py does not support
'--executable' option
* python-dpkt: install fails because its setup.py does not support
'--executable' option
After these, I removed "--executable=/usr/bin/python"
from PKG_PYTHON_INSTALL_OPT
* python-protobuf: install fails because it seems checking if the
destination belongs to PYTHONPATH because PYTHONPATH is not correctly set:
<snip>
running install
Checking .pth file support in
/opt/buildroot/output/target/usr/lib/python2.7/site-packages/
/opt/buildroot/output/host/usr/bin/python -E -c pass
TEST FAILED: /opt/buildroot/output/target/usr/lib/python2.7/site-packages/
does NOT support .pth files
error: bad install directory or PYTHONPATH
You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from. The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/opt/buildroot/output/target/usr/lib/python2.7/site-packages/
and your PYTHONPATH environment variable currently contains:
'/opt/buildroot/output/target/usr/lib/python/site-packages'
Here are some of your options for correcting the problem:
</snip>
The problem seems to be that PYTHON_VERSION_MAJOR is defined afterward
PKG_PYTHON_BUILD_ENV is set...
I've been able to overcome this issue by including
package/python/python.mkat the beginning of package/
pyg-python.mk,
but I'm not sure how clean this is, and how to properly fix it...
So far, I've just tested package builds (no runtim tests yet) and with this
patch [3], I've successfully built all these Python packages:
output/build/host-python-2.7.3/
output/build/host-python-distutilscross-0.1/
output/build/host-python-setuptools-0.6.36/
output/build/python-2.7.3/
output/build/python-bottle-0.11.6/
output/build/python-crc16-0.1.1/
output/build/python-dpkt-1.7/
output/build/python-id3-1.2/
output/build/python-ipy-IPy-0.75/
output/build/python-mad-0.6/
output/build/python-meld3-0.6.8/
output/build/python-netifaces-0.7/
output/build/python-nfc-142/
output/build/python-protobuf-2.4.1/
output/build/python-pygame-f0bb4a4b365d/
output/build/python-pyparsing-1.5.6/
output/build/python-pyro-3.14/
output/build/python-pyzmq-13.1.0/
output/build/python-serial-2.6/
output/build/python-setuptools-0.6.36/
output/build/python-thrift-0.9.0/
[1]
http://git.free-electrons.com/users/thomas-petazzoni/buildroot/commit/?h=python-pkg&id=5880956ce258b15887049ca5850007395cfd1857
[2]
http://git.free-electrons.com/users/thomas-petazzoni/buildroot/tree/docs/manual/adding-packages-python.txt?h=python-pkg&id=5880956ce258b15887049ca5850007395cfd1857#n29
[3] http://code.bulix.org/19qo6e-85143
Regards,
--
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20131205/22e98833/attachment-0001.html>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [RFC] pkg-python infrastructure
2013-12-05 10:47 ` Samuel Martin
@ 2013-12-05 10:53 ` Thomas Petazzoni
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2013-12-05 10:53 UTC (permalink / raw)
To: buildroot
Dear Samuel Martin,
On Thu, 5 Dec 2013 11:47:06 +0100, Samuel Martin wrote:
> > I've limited myself to support Python 2.x for the moment: the idea is
> > that once all Python packages have been converted to the
> > infrastructure, it will be easier to extend it to also cover Python 3.x.
>
> Nice to see this topic moving! :)
Yes! Ryan motivated me yesterday evening to have a look at this topic,
so I got started!
> I've quickly reviewed the branch:
> * Commit: 5880956ce258b15887049ca5850007395cfd1857 [1,2]
> docs/manual/adding-packages-python.txt:29-30: s/LIBFOO/PYTHON_FOO/
Thanks, will fix.
> I've given a run:
> * python-bottle: install fails because its setup.py does not support
> '--executable' option
> * python-crc16: install fails because its setup.py does not support
> '--executable' option
> * python-dpkt: install fails because its setup.py does not support
> '--executable' option
>
> After these, I removed "--executable=/usr/bin/python"
> from PKG_PYTHON_INSTALL_OPT
Yes, I know this problem. Originally, I wasn't passing --executable=
at install time, when I tested all the basic distutils packages. Then I
went on to some more complex setuptools packages, and one of them was
passing --executable at install time, so I added it. But I did not
retest the previous packages (hence the highly RFC state of the patch
set).
> * python-protobuf: install fails because it seems checking if the
> destination belongs to PYTHONPATH because PYTHONPATH is not correctly set:
I knew this package wasn't building, that's where I stopped yesterday
evening, and decided to notify the list anyway... which apparently was
a good idea because I'm now getting some really good and useful
feedback from you!
> <snip>
> running install
> Checking .pth file support in
> /opt/buildroot/output/target/usr/lib/python2.7/site-packages/
> /opt/buildroot/output/host/usr/bin/python -E -c pass
> TEST FAILED: /opt/buildroot/output/target/usr/lib/python2.7/site-packages/
> does NOT support .pth files
> error: bad install directory or PYTHONPATH
>
> You are attempting to install a package to a directory that is not
> on PYTHONPATH and which Python does not read ".pth" files from. The
> installation directory you specified (via --install-dir, --prefix, or
> the distutils default setting) was:
>
> /opt/buildroot/output/target/usr/lib/python2.7/site-packages/
>
> and your PYTHONPATH environment variable currently contains:
>
> '/opt/buildroot/output/target/usr/lib/python/site-packages'
>
> Here are some of your options for correcting the problem:
> </snip>
> The problem seems to be that PYTHON_VERSION_MAJOR is defined afterward
> PKG_PYTHON_BUILD_ENV is set...
> I've been able to overcome this issue by including
> package/python/python.mkat the beginning of package/
> pyg-python.mk,
> but I'm not sure how clean this is, and how to properly fix it...
Including package/python/python.mk is indeed ugly. The good solution is
to delay the evaluation of the variable by adding some more $ at the
right place :-)
> So far, I've just tested package builds (no runtim tests yet) and with this
> patch [3], I've successfully built all these Python packages:
> output/build/host-python-2.7.3/
> output/build/host-python-distutilscross-0.1/
> output/build/host-python-setuptools-0.6.36/
> output/build/python-2.7.3/
> output/build/python-bottle-0.11.6/
> output/build/python-crc16-0.1.1/
> output/build/python-dpkt-1.7/
> output/build/python-id3-1.2/
> output/build/python-ipy-IPy-0.75/
> output/build/python-mad-0.6/
> output/build/python-meld3-0.6.8/
> output/build/python-netifaces-0.7/
> output/build/python-nfc-142/
> output/build/python-protobuf-2.4.1/
> output/build/python-pygame-f0bb4a4b365d/
> output/build/python-pyparsing-1.5.6/
> output/build/python-pyro-3.14/
> output/build/python-pyzmq-13.1.0/
> output/build/python-serial-2.6/
> output/build/python-setuptools-0.6.36/
> output/build/python-thrift-0.9.0/
Cool, thanks!
I'll work on this a bit more, and post a real series.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-12-05 10:53 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-25 15:52 [Buildroot] [RFC] pkg-python infrastructure Ryan Barnett
2013-10-25 16:46 ` Thomas De Schampheleire
2013-10-26 6:51 ` Thomas Petazzoni
2013-10-26 10:01 ` Gustavo Zacarias
2013-12-04 23:05 ` Thomas Petazzoni
2013-12-05 10:47 ` Samuel Martin
2013-12-05 10:53 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox