summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Liu <peter.x.liu@external.atlascopco.com>2017-02-26 08:39:19 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-01 23:27:10 +0000
commite720e3b4af036f0867f7616470013c714cad38e1 (patch)
tree68bfae0145548da12832d381f0e3b36ce4c87104
parent8d8d0a52d5f00a1703de65e1fb60f3771a0fbf33 (diff)
downloadpoky-e720e3b4af036f0867f7616470013c714cad38e1.tar.gz
generate-manifest-2.7.py: add logic to generate native manifest
python-native supposes to RPROVIDE all native packages as added in generate-manifest-2.7.py, but it does not so far, this leads a problem that sometimes bitbake cant find a runtime provider for a python-*-native when a new runtime dependency on it being required, this usualy happens after a new native python-* recipe is created or the old native python-* recipes are upgraded. To give a example, the following commit is trying to address such a issue: commit 4583cd1bb15306e8f0ab7bcd80732e6f35aa4533: [ python-native: Make python-native also RPROVIDE python-unittest-native ] To avoid manually extending RPROVIDE every time when a new runtime dependency is introduced, an argument '-n/--native' is added to the manifest generator, allowing it create a native python manifest, with a RPROVIDE line only, the RPROVIDE should contain all the sub-packages. The generated python-native-2.7-manifest.inc is also added which is included by python-native recipe. (From OE-Core rev: 0cb15d9559e34faffea1ac0be825d0602f225ba9) Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/python/python-native-2.7-manifest.inc11
-rw-r--r--meta/recipes-devtools/python/python-native_2.7.13.bb9
-rwxr-xr-xscripts/contrib/python/generate-manifest-2.7.py37
3 files changed, 42 insertions, 15 deletions
diff --git a/meta/recipes-devtools/python/python-native-2.7-manifest.inc b/meta/recipes-devtools/python/python-native-2.7-manifest.inc
new file mode 100644
index 0000000000..f45147b2bc
--- /dev/null
+++ b/meta/recipes-devtools/python/python-native-2.7-manifest.inc
@@ -0,0 +1,11 @@
1
2# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
3# Generator: '../../../scripts/contrib/python/generate-manifest-2.7.py --native' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
4# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
5
6
7
8RPROVIDES+="python-2to3-native python-argparse-native python-audio-native python-bsddb-native python-codecs-native python-compile-native python-compiler-native python-compression-native python-contextlib-native python-core-native python-crypt-native python-ctypes-native python-curses-native python-datetime-native python-db-native python-debugger-native python-dev-native python-difflib-native python-distutils-native python-distutils-staticdev-native python-doctest-native python-email-native python-fcntl-native python-gdbm-native python-hotshot-native python-html-native python-idle-native python-image-native python-importlib-native python-io-native python-json-native python-lang-native python-logging-native python-mailbox-native python-math-native python-mime-native python-mmap-native python-multiprocessing-native python-netclient-native python-netserver-native python-numbers-native python-pickle-native python-pkgutil-native python-plistlib-native python-pprint-native python-profile-native python-pydoc-native python-re-native python-readline-native python-resource-native python-robotparser-native python-shell-native python-smtpd-native python-sqlite3-native python-sqlite3-tests-native python-stringold-native python-subprocess-native python-syslog-native python-terminal-native python-tests-native python-textutils-native python-threading-native python-tkinter-native python-unittest-native python-unixadmin-native python-xml-native python-xmlrpc-native python-zlib-native "
9
10
11
diff --git a/meta/recipes-devtools/python/python-native_2.7.13.bb b/meta/recipes-devtools/python/python-native_2.7.13.bb
index 9a6430dba5..7edf153489 100644
--- a/meta/recipes-devtools/python/python-native_2.7.13.bb
+++ b/meta/recipes-devtools/python/python-native_2.7.13.bb
@@ -25,14 +25,7 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
25 25
26inherit native 26inherit native
27 27
28RPROVIDES += "python-distutils-native \ 28require python-native-${PYTHON_MAJMIN}-manifest.inc
29 python-compression-native \
30 python-textutils-native \
31 python-codecs-native \
32 python-core-native \
33 python-unittest-native \
34 python-io-native \
35"
36 29
37EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}" 30EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}"
38 31
diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py
index f2ecf8d3f5..6f7a4c39e0 100755
--- a/scripts/contrib/python/generate-manifest-2.7.py
+++ b/scripts/contrib/python/generate-manifest-2.7.py
@@ -9,10 +9,14 @@
9# * Updated to no longer generate special -dbg package, instead use the 9# * Updated to no longer generate special -dbg package, instead use the
10# single system -dbg 10# single system -dbg
11# * Update version with ".1" to indicate this change 11# * Update version with ".1" to indicate this change
12#
13# February 26, 2017 -- Ming Liu <peter.x.liu@external.atlascopco.com>
14# * Updated to support generating manifest for native python
12 15
13import os 16import os
14import sys 17import sys
15import time 18import time
19import argparse
16 20
17VERSION = "2.7.2" 21VERSION = "2.7.2"
18 22
@@ -21,16 +25,17 @@ __version__ = "20110222.2"
21 25
22class MakefileMaker: 26class MakefileMaker:
23 27
24 def __init__( self, outfile ): 28 def __init__( self, outfile, isNative ):
25 """initialize""" 29 """initialize"""
26 self.packages = {} 30 self.packages = {}
27 self.targetPrefix = "${libdir}/python%s/" % VERSION[:3] 31 self.targetPrefix = "${libdir}/python%s/" % VERSION[:3]
32 self.isNative = isNative
28 self.output = outfile 33 self.output = outfile
29 self.out( """ 34 self.out( """
30# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. 35# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
31# Generator: '%s' Version %s (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> 36# Generator: '%s%s' Version %s (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
32# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy 37# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
33""" % ( sys.argv[0], __version__ ) ) 38""" % ( sys.argv[0], ' --native' if isNative else '', __version__ ) )
34 39
35 # 40 #
36 # helper functions 41 # helper functions
@@ -66,6 +71,20 @@ class MakefileMaker:
66 global VERSION 71 global VERSION
67 72
68 # 73 #
74 # generate rprovides line for native
75 #
76
77 if self.isNative:
78 rprovideLine = 'RPROVIDES+="'
79 for name in sorted(self.packages):
80 rprovideLine += "%s-native " % name.replace( '${PN}', 'python' )
81 rprovideLine += '"'
82
83 self.out( rprovideLine )
84 self.out( "" )
85 return
86
87 #
69 # generate provides line 88 # generate provides line
70 # 89 #
71 90
@@ -147,17 +166,21 @@ class MakefileMaker:
147 self.doEpilog() 166 self.doEpilog()
148 167
149if __name__ == "__main__": 168if __name__ == "__main__":
169 parser = argparse.ArgumentParser( description='generate python manifest' )
170 parser.add_argument( '-n', '--native', help='generate manifest for native python', action='store_true' )
171 parser.add_argument( 'outfile', metavar='OUTPUT_FILE', nargs='?', default='', help='Output file (defaults to stdout)' )
172 args = parser.parse_args()
150 173
151 if len( sys.argv ) > 1: 174 if args.outfile:
152 try: 175 try:
153 os.unlink(sys.argv[1]) 176 os.unlink( args.outfile )
154 except Exception: 177 except Exception:
155 sys.exc_clear() 178 sys.exc_clear()
156 outfile = open( sys.argv[1], "w" ) 179 outfile = open( args.outfile, "w" )
157 else: 180 else:
158 outfile = sys.stdout 181 outfile = sys.stdout
159 182
160 m = MakefileMaker( outfile ) 183 m = MakefileMaker( outfile, args.native )
161 184
162 # Add packages here. Only specify dlopen-style library dependencies here, no ldd-style dependencies! 185 # Add packages here. Only specify dlopen-style library dependencies here, no ldd-style dependencies!
163 # Parameters: revision, name, description, dependencies, filenames 186 # Parameters: revision, name, description, dependencies, filenames