From c82164fd0aa29d08681802ed9e2effdc2f2f62d3 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Wed, 18 Feb 2015 10:26:33 +0000 Subject: lib/oe/package_manager: support exclusion from complementary glob process by regex Sometimes you do not want certain packages to be installed when installing complementary packages, e.g. when using dev-pkgs in IMAGE_FEATURES you may not want to install all packages from a particular multilib. This introduces a new PACKAGE_EXCLUDE_COMPLEMENTARY variable to allow specifying regexes to match packages to exclude. (From OE-Core master rev: d4fe8f639d87d5ff35e50d07d41d0c1e9f12c4e3) (From OE-Core rev: 5e92eb11cdf1dd06a3e2ca015f1aebaace321acd) Signed-off-by: Paul Eggleton Signed-off-by: Brendan Le Foll Signed-off-by: Richard Purdie --- meta/lib/oe/package_manager.py | 3 +++ scripts/oe-pkgdata-util | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index 1c64205330..1c33b0fb64 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -519,6 +519,9 @@ class PackageManager(object): cmd = [bb.utils.which(os.getenv('PATH'), "oe-pkgdata-util"), "glob", self.d.getVar('PKGDATA_DIR', True), installed_pkgs_file, globs] + exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY', True) + if exclude: + cmd.extend(['-x', exclude]) try: bb.note("Installing complementary packages ...") complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT) diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util index a373116b2c..49009559bb 100755 --- a/scripts/oe-pkgdata-util +++ b/scripts/oe-pkgdata-util @@ -28,7 +28,7 @@ import re import optparse from collections import defaultdict -def glob(args, usage, debug=False): +def glob(args, usage, debug=False, exclude=""): if len(args) < 3: usage() sys.exit(1) @@ -45,7 +45,10 @@ def glob(args, usage, debug=False): print('ERROR: Unable to find package list file %s' % pkglist_file) sys.exit(1) - skipregex = re.compile("-locale-|^locale-base-|-dev$|-doc$|-dbg$|-staticdev$|^kernel-module-") + skipval = "-locale-|^locale-base-|-dev$|-doc$|-dbg$|-staticdev$|^kernel-module-" + if exclude: + skipval += "|" + exclude + skipregex = re.compile(skipval) mappedpkgs = set() with open(pkglist_file, 'r') as f: @@ -305,6 +308,9 @@ Available commands: parser.add_option("-d", "--debug", help = "Report all SRCREV values, not just ones where AUTOREV has been used", action="store_true", dest="debug", default=False) + parser.add_option("-x", "--exclude", + help = "Exclude packages matching specified regex from the glob operation", + action="store", type="string", dest="exclude", default="") options, args = parser.parse_args(sys.argv) args = args[1:] @@ -314,7 +320,7 @@ Available commands: sys.exit(1) if args[0] == "glob": - glob(args[1:], parser.print_help, options.debug) + glob(args[1:], parser.print_help, options.debug, options.exclude) elif args[0] == "lookup-pkg": lookup_pkg(args[1:], parser.print_help, options.debug) elif args[0] == "lookup-recipe": -- cgit v1.2.3-54-g00ecf