aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-02-18 10:26:33 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-03-03 14:33:58 +0000
commit5e92eb11cdf1dd06a3e2ca015f1aebaace321acd (patch)
treee44b87e78e51c04ef21abef64ecfb7ead0c21f51
parentafc44fad44261677c799558ffd35f4908556bce0 (diff)
downloadopenembedded-core-contrib-5e92eb11cdf1dd06a3e2ca015f1aebaace321acd.tar.gz
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) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/package_manager.py3
-rwxr-xr-xscripts/oe-pkgdata-util12
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":