All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] gpsd: fix Python-related build failure
Date: Wed, 22 Aug 2012 10:07:24 +0200	[thread overview]
Message-ID: <5034933C.8040005@free-electrons.com> (raw)
In-Reply-To: <1345548715-16593-1-git-send-email-spdawson@gmail.com>

Hi,

Le 21/08/2012 13:31, spdawson at gmail.com a ?crit :
> From: Simon Dawson <spdawson@gmail.com>
> 
> The gpsd build falls over on certain autobuild machines; an example follows.
> 
>   http://autobuild.buildroot.net/results/42b435c271b0d791365e18ad974c7eecca8896a0/build-end.log
> 
> ImportError: No module named simplejson:
>   File "/scratch/peko/build/gpsd-3.7/SConstruct", line 1072:
>     from leapsecond import save_leapseconds
>   File "/scratch/peko/build/gpsd-3.7/leapsecond.py", line 27:
>     import gps.misc
>   File "/scratch/peko/build/gpsd-3.7/gps/__init__.py", line 9:
>     from gps import *
>   File "/scratch/peko/build/gpsd-3.7/gps/gps.py", line 17:
>     from client import *
>   File "/scratch/peko/build/gpsd-3.7/gps/client.py", line 9:
>     import simplejson as json                        # For Python 2.4 and 2.5
> make: *** [/scratch/peko/build/gpsd-3.7/.stamp_built] Error 2
> 
> The problem appears to be the indiscriminate importing done in the module
> initialisation for the gps Python module. If the simplejson module is not
> available for the host Python, then the build fails.
> 
> For the purposes of the build, the simplejson import is superfluous; in fact,
> since SConstruct pulls in gps.misc via leapsecond.py, all of the imports in
> the gps module initialisation are superfluous.
> 
> Signed-off-by: Simon Dawson <spdawson@gmail.com>
> ---
>  .../gpsd-05-python-2.5-compat-simplejson.patch     |   40 ++++++++++++++++++++
>  1 file changed, 40 insertions(+)
>  create mode 100644 package/gpsd/gpsd-05-python-2.5-compat-simplejson.patch
> 
> diff --git a/package/gpsd/gpsd-05-python-2.5-compat-simplejson.patch b/package/gpsd/gpsd-05-python-2.5-compat-simplejson.patch
> new file mode 100644
> index 0000000..f275faa
> --- /dev/null
> +++ b/package/gpsd/gpsd-05-python-2.5-compat-simplejson.patch
> @@ -0,0 +1,40 @@
> +The gpsd build falls over on certain autobuild machines; an example follows.
> +
> +  http://autobuild.buildroot.net/results/42b435c271b0d791365e18ad974c7eecca8896a0/build-end.log
> +
> +ImportError: No module named simplejson:
> +  File "/scratch/peko/build/gpsd-3.7/SConstruct", line 1072:
> +    from leapsecond import save_leapseconds
> +  File "/scratch/peko/build/gpsd-3.7/leapsecond.py", line 27:
> +    import gps.misc
> +  File "/scratch/peko/build/gpsd-3.7/gps/__init__.py", line 9:
> +    from gps import *
> +  File "/scratch/peko/build/gpsd-3.7/gps/gps.py", line 17:
> +    from client import *
> +  File "/scratch/peko/build/gpsd-3.7/gps/client.py", line 9:
> +    import simplejson as json                        # For Python 2.4 and 2.5
> +make: *** [/scratch/peko/build/gpsd-3.7/.stamp_built] Error 2
> +
> +The problem appears to be the indiscriminate importing done in the module
> +initialisation for the gps Python module. If the simplejson module is not
> +available for the host Python, then the build fails.
> +
> +For the purposes of the build, the simplejson import is superfluous; in fact,
> +since SConstruct pulls in gps.misc via leapsecond.py, all of the imports in
> +the gps module initialisation are superfluous.
> +
> +Signed-off-by: Simon Dawson <spdawson@gmail.com>
> +diff -Nurp a/gps/__init__.py b/gps/__init__.py
> +--- a/gps/__init__.py	2012-05-23 22:06:40.000000000 +0100
> ++++ b/gps/__init__.py	2012-08-03 09:09:54.096816764 +0100
> +@@ -6,8 +6,8 @@
> + api_major_version = 5   # bumped on incompatible changes
> + api_minor_version = 0   # bumped on compatible changes
> + 
> +-from gps import *
> +-from misc import *
> ++#from gps import *
> ++#from misc import *
> + 
> + # The 'client' module exposes some C utility functions for Python clients.
> + # The 'packet' module exposes the packet getter via a Python interface.
> 

I'm not very fond of that approach. I guess one of the purpose of these
bindings are precisely to provide a python API, and you break it here
since instead of including gps.foo, you will need to include gps.bar.foo
(if I remember my Python correctly).

I guess the real problem that we have to address here is why scons uses
the interpreter from the distribution and not the buildroot-generated one.

I guess, we could just make scons depends on host-python and force the
$(SCONS) variable as "$(HOST_DIR)/usr/bin/python
$(HOST_DIR)/usr/bin/scons ?"

-- 
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2012-08-22  8:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-21 11:31 [Buildroot] [PATCH] gpsd: fix Python-related build failure spdawson at gmail.com
2012-08-22  8:07 ` Maxime Ripard [this message]
2012-08-22  8:26   ` Simon Dawson
2012-08-22 18:06     ` Thomas Petazzoni
2012-08-24  7:59       ` [Buildroot] [PATCH] gpsd: Fix lacking simplejson module error at build Maxime Ripard
2012-08-24 10:43         ` Thomas Petazzoni
2012-08-24 21:43         ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5034933C.8040005@free-electrons.com \
    --to=maxime.ripard@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.