list-packageconfig-flags.py: fix searching bitbake module failed
cover list-packageconfig-flags.py: fix searching bitbake module failed
The following changes since commit b467b99a5d25efe5eadfb07dbecba608575256ac:
linux-yocto: switch genericx86 to use common-pc (2013-08-24 09:37:49 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib hongxu/fix-list-pkgconfig
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=hongxu/fix-list-pkgconfig
Hongxu Jia (1):
list-packageconfig-flags.py: fix searching bitbake module failed
scripts/contrib/list-packageconfig-flags.py | 32 ++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-)
Signature · 1 line
1.8.1.2
PATCH 1/1 list-packageconfig-flags.py: fix searching bitbake module failed
Run list-packageconfig-flags.py on wrlinux's platform in which
the oe-core layer and bitbake layer in different directories:
----../layers/oe-core/scripts/contrib/list-packageconfig-flags.py
Traceback (most recent call last):
File "../layers/oe-core/scripts/contrib/list-packageconfig-flags.py", line 28, in <module>
import bb.cache
ImportError: No module named bb.cache
----
The script import bb module from bitbake lib dir, the previous lib dir was hardcode and only worked on poky but not for others.
In this situation, look for bitbake/bin dir in PATH could fix this issue.
[YOCTO #5060]
--- scripts/contrib/list-packageconfig-flags.py | 32 ++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-)
scripts/contrib/list-packageconfig-flags.py +25 -7
@@ -23,8 +23,26 @@ import sys import getopt import os +def search_bitbakepath(): + bitbakepath = "" + + # Search path to bitbake lib dir in order to load bb modules + if os.path.exists(os.path.join(os.path.dirname(sys.argv[0]), '../../bitbake/lib/bb')): + bitbakepath = os.path.join(os.path.dirname(sys.argv[0]), '../../bitbake/lib') + bitbakepath = os.path.abspath(bitbakepath) + else: + # Look for bitbake/bin dir in PATH + for pth in os.environ['PATH'].split(':'): + if os.path.exists(os.path.join(pth, '../lib/bb')): + bitbakepath = os.path.abspath(os.path.join(pth, '../lib')) + break + if not bitbakepath: + sys.stderr.write("Unable to find bitbake by searching parent directory of this script or PATH\n") + sys.exit(1) + return bitbakepath + # For importing the following modules -sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../../bitbake/lib')) +sys.path.insert(0, search_bitbakepath()) import bb.cache import bb.cooker import bb.providers
@@ -39,12 +57,12 @@ OPTION: -p, --prefer list pkgs with preferred version EXAMPLE: -list-packageconfig-flags.py poky/meta poky/meta-yocto -list-packageconfig-flags.py -f poky/meta poky/meta-yocto -list-packageconfig-flags.py -a poky/meta poky/meta-yocto -list-packageconfig-flags.py -p poky/meta poky/meta-yocto -list-packageconfig-flags.py -f -p poky/meta poky/meta-yocto -list-packageconfig-flags.py -a -p poky/meta poky/meta-yocto +list-packageconfig-flags.py +list-packageconfig-flags.py -f +list-packageconfig-flags.py -a +list-packageconfig-flags.py -p +list-packageconfig-flags.py -f -p +list-packageconfig-flags.py -a -p ''' def usage():
Signature · 1 line
1.8.1.2
Quoted 52 lines · On Wednesday 28 August 2013 12:30:01 Hongxu Jia wrote:
Run
list-packageconfig-flags.pyon wrlinux's platform in which the oe-core layer and bitbake layer in different directories:
----../layers/oe-core/scripts/contrib/list-packageconfig-flags.pyTraceback (most recent call last):
File "../layers/oe-core/scripts/contrib/list-packageconfig-flags.py", line
28, in <module> import bb.cache
ImportError: No module named bb.cache
----The script import bb module from bitbake lib dir, the previous lib dir was hardcode and only worked on poky but not for others.
In this situation, look for bitbake/bin dir in PATH could fix this issue.
[YOCTO #5060]
Signed-off-by Hongxu Jia <[email protected]>--- scripts/contrib/list-packageconfig-flags.py | 32++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-)
(quoted diff) +0
-0
b/scripts/contrib/list-packageconfig-flags.pyindex 149922d..371033a 100755scripts/contrib/list-packageconfig-flags.py +5
-0@@ -23,8 +23,26 @@ import sys import getopt import os +def search_bitbakepath(): + bitbakepath = "" + + # Search path to bitbake lib dir in order to load bb modules + if os.path.exists(os.path.join(os.path.dirname(sys.argv[0]),'../../bitbake/lib/bb')): + bitbakepath =
os.path.join(os.path.dirname(sys.argv[0]), '../../bitbake/lib')+ bitbakepath =os.path.abspath(bitbakepath)scripts/contrib/list-packageconfig-flags.py +8
-0+ else: + # Look for bitbake/bin dir in PATH + for pth in os.environ['PATH'].split(':'): + if os.path.exists(os.path.join(pth, '../lib/bb')): + bitbakepath = os.path.abspath(os.path.join(pth, '../lib')) + break + if not bitbakepath: + sys.stderr.write("Unable to find bitbake by searching parentdirectory of this script or PATH\n") +
sys.exit(1)scripts/contrib/list-packageconfig-flags.py +2
-1+ return bitbakepath + # For importing the following modules -sys.path.insert(0,
Quoted 3 lines
os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../../bitbake/lib'))
+sys.path.insert(0,search_bitbakepath())
This looks fine, but I've been thinking for a while that we should have a place for shared library code just for the scripts directory in which we could put this function rather than having it repeated in a number of different scripts. I'll add an enhancement to bugzilla to do this in 1.6.
Quoted 12 lines
import bb.cache
import bb.cooker
import bb.providersscripts/contrib/list-packageconfig-flags.py +0
-5@@ -39,12 +57,12 @@ OPTION: -p, --prefer list pkgs with preferred version EXAMPLE: -list-packageconfig-flags.py poky/meta poky/meta-yocto -list-packageconfig-flags.py -f poky/meta poky/meta-yocto -list-packageconfig-flags.py -a poky/meta poky/meta-yocto -list-packageconfig-flags.py -p poky/meta poky/meta-yocto -list-packageconfig-flags.py -f -p poky/meta poky/meta-yocto
scripts/contrib/list-packageconfig-flags.py OPTION: · line 68
Quoted 10 lines
scripts/contrib/list-packageconfig-flags.py +6
-1-list-packageconfig-flags.py -a -p poky/meta poky/meta-yocto +list-packageconfig-flags.py +list-packageconfig-flags.py -f +list-packageconfig-flags.py -a +list-packageconfig-flags.py -p +list-packageconfig-flags.py -f -p +list-packageconfig-flags.py -a -p ''' def usage():
Signature · 2 lines
Paul Eggleton Intel Open Source Technology Centre