From 0cb15d9559e34faffea1ac0be825d0602f225ba9 Mon Sep 17 00:00:00 2001 From: Ming Liu Date: Sun, 26 Feb 2017 08:39:19 +0100 Subject: 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. Signed-off-by: Ming Liu Signed-off-by: Ross Burton --- .../python/python-native-2.7-manifest.inc | 11 +++++++ .../python/python-native_2.7.13.bb | 9 +----- scripts/contrib/python/generate-manifest-2.7.py | 37 ++++++++++++++++++---- 3 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 meta/recipes-devtools/python/python-native-2.7-manifest.inc 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 @@ + +# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. +# Generator: '../../../scripts/contrib/python/generate-manifest-2.7.py --native' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer +# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy + + + +RPROVIDES+="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 " + + + 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}:" inherit native -RPROVIDES += "python-distutils-native \ - python-compression-native \ - python-textutils-native \ - python-codecs-native \ - python-core-native \ - python-unittest-native \ - python-io-native \ -" +require python-native-${PYTHON_MAJMIN}-manifest.inc EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}" 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 @@ # * Updated to no longer generate special -dbg package, instead use the # single system -dbg # * Update version with ".1" to indicate this change +# +# February 26, 2017 -- Ming Liu +# * Updated to support generating manifest for native python import os import sys import time +import argparse VERSION = "2.7.2" @@ -21,16 +25,17 @@ __version__ = "20110222.2" class MakefileMaker: - def __init__( self, outfile ): + def __init__( self, outfile, isNative ): """initialize""" self.packages = {} self.targetPrefix = "${libdir}/python%s/" % VERSION[:3] + self.isNative = isNative self.output = outfile self.out( """ # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. -# Generator: '%s' Version %s (C) 2002-2010 Michael 'Mickey' Lauer +# Generator: '%s%s' Version %s (C) 2002-2010 Michael 'Mickey' Lauer # Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy -""" % ( sys.argv[0], __version__ ) ) +""" % ( sys.argv[0], ' --native' if isNative else '', __version__ ) ) # # helper functions @@ -65,6 +70,20 @@ class MakefileMaker: global VERSION + # + # generate rprovides line for native + # + + if self.isNative: + rprovideLine = 'RPROVIDES+="' + for name in sorted(self.packages): + rprovideLine += "%s-native " % name.replace( '${PN}', 'python' ) + rprovideLine += '"' + + self.out( rprovideLine ) + self.out( "" ) + return + # # generate provides line # @@ -147,17 +166,21 @@ class MakefileMaker: self.doEpilog() if __name__ == "__main__": + parser = argparse.ArgumentParser( description='generate python manifest' ) + parser.add_argument( '-n', '--native', help='generate manifest for native python', action='store_true' ) + parser.add_argument( 'outfile', metavar='OUTPUT_FILE', nargs='?', default='', help='Output file (defaults to stdout)' ) + args = parser.parse_args() - if len( sys.argv ) > 1: + if args.outfile: try: - os.unlink(sys.argv[1]) + os.unlink( args.outfile ) except Exception: sys.exc_clear() - outfile = open( sys.argv[1], "w" ) + outfile = open( args.outfile, "w" ) else: outfile = sys.stdout - m = MakefileMaker( outfile ) + m = MakefileMaker( outfile, args.native ) # Add packages here. Only specify dlopen-style library dependencies here, no ldd-style dependencies! # Parameters: revision, name, description, dependencies, filenames -- cgit v1.2.3