summaryrefslogtreecommitdiff
path: root/poky/bitbake
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2022-04-08 18:23:27 +0300
committerPatrick Williams <patrick@stwcx.xyz>2022-04-08 18:24:52 +0300
commitde0582f0e7de86eaf8c8d90d86ed313273a73774 (patch)
tree9e7371e33b7eea92fcfff468681fd8396db41388 /poky/bitbake
parent76d114cab0113c54be8288785cda4ce230ad08a6 (diff)
downloadopenbmc-de0582f0e7de86eaf8c8d90d86ed313273a73774.tar.xz
subtree updates
meta-raspberrypi: 31c33d155c..cfbb192e5c: Andrei Gherzan (1): docs: Add information for RTC devices Andrew Penner (2): rpi-cmdline: Add ability to specify CPUs to add to the isolcpus list extra-build-config: Add documentation for the ISOLATED_CPUS configuration variable Jan Vermaete (1): docs: untabify the few tabs in the file Khem Raj (3): userland: Update to latest as of 20220323 picamera-libs: Adjust sourcedir omxplayer: Use internal version of ffmpeg meta-openembedded: af11f6ce73..b9e440ead8: Adrian Freihofer (1): srecord: build fix Andreas Müller (40): octave: upgrade 4.4.1 -> 6.4.0 and overhaul recipe mousepad: upgrade 0.5.8 -> 0.5.9 xfce4-terminal: upgrade 0.8.10 -> 1.0.0 orage: upgrade 4.12.1 -> 4.16.0 orage: enable notify PACKAGECONFIG by default ristretto: upgrade 0.12.1 -> 0.12.2 xarchiver: upgrade 0.5.4.14 -> 0.5.4.17 xfce4-cpufreq-plugin: upgrade 1.2.5 -> 1.2.7 xfce4-cpugraph-plugin: upgrade 1.2.5 -> 1.2.6 xfce4-diskperf-plugin: upgrade 2.6.3 -> 2.7.0 xfce4-notifyd: upgrade 0.6.2 -> 0.6.3 xfce4-screenshooter: upgrade 1.9.9 -> 1.9.10 xfce4-sensors-plugin: upgrade 1.4.2 -> 1.4.3 Allow several components notification meta-xfce: Add Andreas Müller back to maintainers list accountsservice: upgrade 0.6.55 -> 22.08.8 colord-gtk: upgrade 0.2.0 -> 0.3.0 evince: upgrade 41.4 -> 42.1 evolution-data-server: upgrade 3.43.1 -> 3.44.0 file-roller: upgrade 3.40.0 -> 3.42.0 gdm: upgrade 41.0 -> 42.0 gedit: upgrade 41.0 -> 42.0 gfbgraph: upgrade 0.2.4 -> 0.2.5 gnome-calculator upgrade 41.1 -> 42-0 libgweather4: initial add 4.0.0 gnome-calendar 41.2 -> 42.0 gnome-desktop: upgrade 41.2 -> 42.0 libnma: upgrade 1.8.34 -> 1.8.36 gnome-bluetooth4: initial add 42.0 gnome-font-viewer: upgrade 41.0 -> 42.0 yelp-xsl: upgrade 41.1 -> 42.0 yelp-tools: upgrade 41.0 -> 42.0 yelp: upgrade 41.2 -> 42.1 upower: upgrade 0.99.13 -> 0.99.17 / build with mesom upower: fix location of udev-rules with sysvinit gnome-commander: initial add 1.14.2 gnome-text-editor: initial add 42.0 evolution-data-server: re-enable gobject-introspection jack: upgrade 1.19.19 -> 1.19.20 fluidsynth: upgrade 2.2.4 -> 2.2.6 Chen Qi (1): blueman: fix python site-packages installation issue Craig McQueen (1): dnsmasq: Fix a typo in initscript Davide Gardenal (2): python3-wxgtk4: add distro feature check to match dependency fwupd: add COMPATIBLE_HOST to match dependency Jose Quaresma (2): srt: 1.4.2 -> 1.4.3 srt: 1.4.3 -> 1.4.4 Khem Raj (2): xfce4-screenshooter: Add dependency on libxml-parser-perl-native open-vm-tools: Use specific BSD-2-Clause for license Matsunaga-Shinji (2): samba: add 2 cves to allowlist libzip: add CVE-2017-12858 to allowlist Minjae Kim (1): multipath-tools: update SRC_URI Potin Lai (1): libimobiledevice-glue: update recipe Robert Yang (2): wxwidgets: Fix checking for PACKAGECONFIG and DISTRO_FEATURES wxwidgets: git -> gitsm to fix build when no x11 Samuli Piippo (1): python3-qface: upgrade 2.0.6 -> 2.0.7 Xu Huan (5): python3-cheetah: upgrade 3.2.6.post2 -> 3.2.6 python3-evdev: upgrade 1.4.0 -> 1.5.0 python3-google-api-python-client: upgrade 2.36.0 -> 2.42.0 python3-itsdangerous: upgrade 2.1.1 -> 2.1.2 python3-grpcio: upgrade 1.44.0 -> 1.45.0 Yi Zhao (1): dracut: upgrade 055 -> 056 wangmy (20): python3-bitarray: upgrade 2.4.0 -> 2.4.1 python3-click: upgrade 8.0.4 -> 8.1.2 python3-cppy: upgrade 1.2.0 -> 1.2.1 python3-pandas: upgrade 1.4.1 -> 1.4.2 python3-protobuf: upgrade 3.19.4 -> 3.20.0 python3-pychromecast: upgrade 10.3.0 -> 11.0.0 python3-pyparted: upgrade 3.11.7 -> 3.12.0 python3-redis: upgrade 4.2.0 -> 4.2.1 python3-sqlalchemy: upgrade 1.4.32 -> 1.4.34 python3-thrift: upgrade 0.15.0 -> 0.16.0 python3-trafaret: upgrade 2.1.0 -> 2.1.1 python3-twine: upgrade 3.8.0 -> 4.0.0 python3-tzlocal: upgrade 4.1 -> 4.2 python3-websocket-client: upgrade 1.3.1 -> 1.3.2 python3-werkzeug: upgrade 2.0.3 -> 2.1.1 zenity: upgrade 3.41.0 -> 3.42.0 ceres-solver: upgrade 2.0.0 -> 2.1.0 grpc: upgrade 1.45.0 -> 1.45.1 poppler: upgrade 22.03.0 -> 22.04.0 xorg-sgml-doctools: upgrade 1.11 -> 1.12 zhengrq.fnst (2): python3-jdatetime: upgrade 4.0.0 -> 4.1.0 python3-kiwisolver: upgrade 1.4.0 -> 1.4.2 meta-security: da93339112..498ca39cd6: Armin Kuster (5): openscap-daemon: use renamaed python_setuptools_build_meta python3-fail2ban: fix compile issue on some hosts lkrg-module: covert to git fetcher linux-yocto_security.inc: add lkrg kfrags samhain: update to 4.4.7 Ashish Sharma (1): meta-security : Use SPDX style licensing format Davide Gardenal (2): clamav: add COMPATIBLE_HOST to fix build error fscrypt: update dependecy from go-dep-native to go-native Robert Yang (1): LICENSE: adopt SPDX standard names poky: 1976521190..ed98f1a1ae: Abongwa Amahnui Bonalais (1): oe-init-build-env: add quotes around variables to prevent word splitting Alessio Igor Bogani (1): kernel.bbclass: Use KERNEL_IMAGEDEST instead of hardcoded boot path Alexandre Belloni (1): pseudo: Fix handling of absolute links Bruce Ashfield (6): linux-yocto/5.15: update to v5.15.32 linux-yocto/5.10: update to v5.10.109 linux-yocto/5.15: aufs: fixes and optimization linux-yocto-rt/5.15: aufs: compile fix linux-yocto/5.15: features/security: Move x86_64 configs to separate file linux-yocto/5.10: features/security: Move x86_64 configs to separate file Carlos Rafael Giani (1): libsdl2: Disable libunwind dependency in native builds Claudius Heine (1): os-release: add os-release-initrd package Ferry Toth (1): package_manager: sign DEB package feeds Joe Slater (1): unzip: fix CVE-2021-4217 Khem Raj (1): glib-2.0: Backport patches C++ variant of g_atomic_int_compare_and_exchange() Oleksandr Kravchuk (1): tzdata: update to 2022a Peter Kjellerstedt (5): python3-jinja2: Correct HOMEPAGE insane.bbclass: Make do_qa_patch() depend on if patch-fuzz is in ERROR_QA insane.bbclass: Make changes to QA_EMPTY_DIRS trigger package_qa to rerun bitbake.conf: Remove ERROR_QA from BB_HASHEXCLUDE_COMMON bitbake: knotty.py: Show elapsed time also for tasks with progress bars Richard Purdie (11): bitbake: parse: Ensure any existing siggen is closed down first bitbake: data: Ensure vardepsexclude or BB_BASEHASH_IGNORE_VARS covers contains items bitbake: server/process: Disable gc around critical section bitbake: cooker: Reset and rebuild inotify watches bitbake: pyinotify: Handle potential latent bug mirrors: Switch glibc and binutils to use shallow mirror tarballs bitbake: data: Fix accidentally added parameter bitbake.conf: Drop unexports from a different era vim: Upgrade 8.2.4524 -> 8.2.4681 Revert "meta: rust: Bug fix for target definitions returning 'NoneType'" build-appliance-image: Update to master head revision Robert Yang (1): waffle: The surfaceless-egl and gbm requires opengl Saul Wold (5): busybox: Exclude .debug from depmod kmod: Add an exclude directive to depmod depmodwrapper: Use nonarch_base_libdir for depmod.d kmod: Update exclude patch to Accepted depmodwrapper-cross: Fix missing $ Sean Anderson (1): u-boot: Fix condition for install_spl_helper Simone Weiss (1): popt: add ptest Sundeep KOKKONDA (3): gcc: sanitizer: Fix tsan against glibc 2.34 meta: rust: Bug fix for target definitions returning 'NoneType' meta: scripts - relocation script adapted to support big-endian machines Xavier Berger (1): gpg-sign: Add parameters to gpg signature function Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I294af706d7b96796ff360b402b9d011082cf36a7
Diffstat (limited to 'poky/bitbake')
-rw-r--r--poky/bitbake/lib/bb/cooker.py54
-rw-r--r--poky/bitbake/lib/bb/data.py19
-rw-r--r--poky/bitbake/lib/bb/parse/__init__.py2
-rw-r--r--poky/bitbake/lib/bb/server/process.py3
-rw-r--r--poky/bitbake/lib/bb/tests/codeparser.py28
-rw-r--r--poky/bitbake/lib/bb/ui/knotty.py22
-rw-r--r--poky/bitbake/lib/pyinotify.py11
7 files changed, 90 insertions, 49 deletions
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index df4acca18a..08593d114a 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -169,27 +169,15 @@ class BBCooker:
bb.debug(1, "BBCooker starting %s" % time.time())
sys.stdout.flush()
- self.configwatcher = pyinotify.WatchManager()
- bb.debug(1, "BBCooker pyinotify1 %s" % time.time())
- sys.stdout.flush()
+ self.configwatcher = None
+ self.confignotifier = None
- self.configwatcher.bbseen = set()
- self.configwatcher.bbwatchedfiles = set()
- self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications)
- bb.debug(1, "BBCooker pyinotify2 %s" % time.time())
- sys.stdout.flush()
self.watchmask = pyinotify.IN_CLOSE_WRITE | pyinotify.IN_CREATE | pyinotify.IN_DELETE | \
pyinotify.IN_DELETE_SELF | pyinotify.IN_MODIFY | pyinotify.IN_MOVE_SELF | \
pyinotify.IN_MOVED_FROM | pyinotify.IN_MOVED_TO
- self.watcher = pyinotify.WatchManager()
- bb.debug(1, "BBCooker pyinotify3 %s" % time.time())
- sys.stdout.flush()
- self.watcher.bbseen = set()
- self.watcher.bbwatchedfiles = set()
- self.notifier = pyinotify.Notifier(self.watcher, self.notifications)
- bb.debug(1, "BBCooker pyinotify complete %s" % time.time())
- sys.stdout.flush()
+ self.watcher = None
+ self.notifier = None
# If being called by something like tinfoil, we need to clean cached data
# which may now be invalid
@@ -240,9 +228,29 @@ class BBCooker:
sys.stdout.flush()
self.handlePRServ()
+ def setupConfigWatcher(self):
+ if self.configwatcher:
+ self.configwatcher.close()
+ self.confignotifier = None
+ self.configwatcher = None
+ self.configwatcher = pyinotify.WatchManager()
+ self.configwatcher.bbseen = set()
+ self.configwatcher.bbwatchedfiles = set()
+ self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications)
+
+ def setupParserWatcher(self):
+ if self.watcher:
+ self.watcher.close()
+ self.notifier = None
+ self.watcher = None
+ self.watcher = pyinotify.WatchManager()
+ self.watcher.bbseen = set()
+ self.watcher.bbwatchedfiles = set()
+ self.notifier = pyinotify.Notifier(self.watcher, self.notifications)
+
def process_inotify_updates(self):
for n in [self.confignotifier, self.notifier]:
- if n.check_events(timeout=0):
+ if n and n.check_events(timeout=0):
# read notified events and enqeue them
n.read_events()
n.process_events()
@@ -262,10 +270,6 @@ class BBCooker:
self.configwatcher.bbseen.remove(event.pathname)
# Could remove all entries starting with the directory but for now...
bb.parse.clear_cache()
- if "IN_CREATE" in event.maskname:
- self.add_filewatch([[event.pathname]], watcher=self.configwatcher, dirs=True)
- elif "IN_DELETE" in event.maskname and event.pathname in self.configwatcher.bbseen:
- self.configwatcher.bbseen.remove(event.pathname)
if not event.pathname in self.inotify_modified_files:
self.inotify_modified_files.append(event.pathname)
self.baseconfig_valid = False
@@ -285,10 +289,6 @@ class BBCooker:
self.watcher.bbseen.remove(event.pathname)
# Could remove all entries starting with the directory but for now...
bb.parse.clear_cache()
- if "IN_CREATE" in event.maskname:
- self.add_filewatch([[event.pathname]], dirs=True)
- elif "IN_DELETE" in event.maskname and event.pathname in self.watcher.bbseen:
- self.watcher.bbseen.remove(event.pathname)
if not event.pathname in self.inotify_modified_files:
self.inotify_modified_files.append(event.pathname)
self.parsecache_valid = False
@@ -358,6 +358,8 @@ class BBCooker:
if mod not in self.orig_sysmodules:
del sys.modules[mod]
+ self.setupConfigWatcher()
+
# Need to preserve BB_CONSOLELOG over resets
consolelog = None
if hasattr(self, "data"):
@@ -1639,6 +1641,8 @@ class BBCooker:
self.updateCacheSync()
if self.state != state.parsing and not self.parsecache_valid:
+ self.setupParserWatcher()
+
bb.parse.siggen.reset(self.data)
self.parseConfiguration ()
if CookerFeatures.SEND_SANITYEVENTS in self.featureset:
diff --git a/poky/bitbake/lib/bb/data.py b/poky/bitbake/lib/bb/data.py
index 5d02bab99b..62ec214762 100644
--- a/poky/bitbake/lib/bb/data.py
+++ b/poky/bitbake/lib/bb/data.py
@@ -272,7 +272,7 @@ def update_data(d):
"""Performs final steps upon the datastore, including application of overrides"""
d.finalize(parent = True)
-def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
+def build_dependencies(key, keys, shelldeps, varflagsexcl, ignored_vars, d):
deps = set()
try:
if key[-1] == ']':
@@ -283,12 +283,15 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
return deps, value
varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
vardeps = varflags.get("vardeps")
+ exclusions = varflags.get("vardepsexclude", "").split()
- def handle_contains(value, contains, d):
+ def handle_contains(value, contains, exclusions, d):
newvalue = []
if value:
newvalue.append(str(value))
for k in sorted(contains):
+ if k in exclusions or k in ignored_vars:
+ continue
l = (d.getVar(k) or "").split()
for item in sorted(contains[k]):
for word in item.split():
@@ -316,7 +319,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
deps = deps | parser.references
deps = deps | (keys & parser.execs)
- value = handle_contains(value, parser.contains, d)
+ value = handle_contains(value, parser.contains, exclusions, d)
else:
value, parsedvar = d.getVarFlag(key, "_content", False, retparser=True)
parser = bb.codeparser.ShellParser(key, logger)
@@ -324,7 +327,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
deps = deps | shelldeps
deps = deps | parsedvar.references
deps = deps | (keys & parser.execs) | (keys & parsedvar.execs)
- value = handle_contains(value, parsedvar.contains, d)
+ value = handle_contains(value, parsedvar.contains, exclusions, d)
if hasattr(parsedvar, "removes"):
value = handle_remove(value, deps, parsedvar.removes, d)
if vardeps is None:
@@ -339,7 +342,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
value, parser = d.getVarFlag(key, "_content", False, retparser=True)
deps |= parser.references
deps = deps | (keys & parser.execs)
- value = handle_contains(value, parser.contains, d)
+ value = handle_contains(value, parser.contains, exclusions, d)
if hasattr(parser, "removes"):
value = handle_remove(value, deps, parser.removes, d)
@@ -359,7 +362,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
deps |= set(varfdeps)
deps |= set((vardeps or "").split())
- deps -= set(varflags.get("vardepsexclude", "").split())
+ deps -= set(exclusions)
except bb.parse.SkipRecipe:
raise
except Exception as e:
@@ -380,7 +383,7 @@ def generate_dependencies(d, ignored_vars):
tasklist = d.getVar('__BBTASKS', False) or []
for task in tasklist:
- deps[task], values[task] = build_dependencies(task, keys, shelldeps, varflagsexcl, d)
+ deps[task], values[task] = build_dependencies(task, keys, shelldeps, varflagsexcl, ignored_vars, d)
newdeps = deps[task]
seen = set()
while newdeps:
@@ -389,7 +392,7 @@ def generate_dependencies(d, ignored_vars):
newdeps = set()
for dep in nextdeps:
if dep not in deps:
- deps[dep], values[dep] = build_dependencies(dep, keys, shelldeps, varflagsexcl, d)
+ deps[dep], values[dep] = build_dependencies(dep, keys, shelldeps, varflagsexcl, ignored_vars, d)
newdeps |= deps[dep]
newdeps -= seen
#print "For %s: %s" % (task, str(deps[task]))
diff --git a/poky/bitbake/lib/bb/parse/__init__.py b/poky/bitbake/lib/bb/parse/__init__.py
index c01807ba87..347609513b 100644
--- a/poky/bitbake/lib/bb/parse/__init__.py
+++ b/poky/bitbake/lib/bb/parse/__init__.py
@@ -113,6 +113,8 @@ def init(fn, data):
return h['init'](data)
def init_parser(d):
+ if hasattr(bb.parse, "siggen"):
+ bb.parse.siggen.exit()
bb.parse.siggen = bb.siggen.init(d)
def resolve_file(fn, d):
diff --git a/poky/bitbake/lib/bb/server/process.py b/poky/bitbake/lib/bb/server/process.py
index ce53fdc678..19ef83980f 100644
--- a/poky/bitbake/lib/bb/server/process.py
+++ b/poky/bitbake/lib/bb/server/process.py
@@ -28,6 +28,7 @@ import re
import datetime
import pickle
import traceback
+import gc
import bb.server.xmlrpcserver
from bb import daemonize
from multiprocessing import queues
@@ -739,8 +740,10 @@ class ConnectionWriter(object):
self.event = self
def _send(self, obj):
+ gc.disable()
with self.wlock:
self.writer.send_bytes(obj)
+ gc.enable()
def send(self, obj):
obj = multiprocessing.reduction.ForkingPickler.dumps(obj)
diff --git a/poky/bitbake/lib/bb/tests/codeparser.py b/poky/bitbake/lib/bb/tests/codeparser.py
index f485204791..71ed382ab8 100644
--- a/poky/bitbake/lib/bb/tests/codeparser.py
+++ b/poky/bitbake/lib/bb/tests/codeparser.py
@@ -318,7 +318,7 @@ d.getVar(a(), False)
"filename": "example.bb",
})
- deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
+ deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d)
self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"]))
@@ -365,7 +365,7 @@ esac
self.d.setVarFlags("FOO", {"func": True})
self.setEmptyVars(execs)
- deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
+ deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d)
self.assertEqual(deps, set(["somevar", "inverted"] + execs))
@@ -375,7 +375,7 @@ esac
self.d.setVar("FOO", "foo=oe_libinstall; eval $foo")
self.d.setVarFlag("FOO", "vardeps", "oe_libinstall")
- deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
+ deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d)
self.assertEqual(deps, set(["oe_libinstall"]))
@@ -384,7 +384,7 @@ esac
self.d.setVar("FOO", "foo=oe_libinstall; eval $foo")
self.d.setVarFlag("FOO", "vardeps", "${@'oe_libinstall'}")
- deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
+ deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d)
self.assertEqual(deps, set(["oe_libinstall"]))
@@ -399,7 +399,7 @@ esac
# Check dependencies
self.d.setVar('ANOTHERVAR', expr)
self.d.setVar('TESTVAR', 'anothervalue testval testval2')
- deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), self.d)
+ deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), self.d)
self.assertEqual(sorted(values.splitlines()),
sorted([expr,
'TESTVAR{anothervalue} = Set',
@@ -412,6 +412,24 @@ esac
# Check final value
self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['anothervalue', 'yetanothervalue', 'lastone'])
+ def test_contains_vardeps_excluded(self):
+ # Check the ignored_vars option to build_dependencies is handled by contains functionality
+ varval = '${TESTVAR2} ${@bb.utils.filter("TESTVAR", "somevalue anothervalue", d)}'
+ self.d.setVar('ANOTHERVAR', varval)
+ self.d.setVar('TESTVAR', 'anothervalue testval testval2')
+ self.d.setVar('TESTVAR2', 'testval3')
+ deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(["TESTVAR"]), self.d)
+ self.assertEqual(sorted(values.splitlines()), sorted([varval]))
+ self.assertEqual(deps, set(["TESTVAR2"]))
+ self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue'])
+
+ # Check the vardepsexclude flag is handled by contains functionality
+ self.d.setVarFlag('ANOTHERVAR', 'vardepsexclude', 'TESTVAR')
+ deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), self.d)
+ self.assertEqual(sorted(values.splitlines()), sorted([varval]))
+ self.assertEqual(deps, set(["TESTVAR2"]))
+ self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue'])
+
#Currently no wildcard support
#def test_vardeps_wildcards(self):
# self.d.setVar("oe_libinstall", "echo test")
diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py
index b2e7520ee7..3f410fd525 100644
--- a/poky/bitbake/lib/bb/ui/knotty.py
+++ b/poky/bitbake/lib/bb/ui/knotty.py
@@ -252,26 +252,26 @@ class TerminalFilter(object):
return
tasks = []
for t in runningpids:
+ start_time = activetasks[t].get("starttime", None)
+ if start_time:
+ msg = "%s - %s (pid %s)" % (activetasks[t]["title"], self.elapsed(currenttime - start_time), activetasks[t]["pid"])
+ else:
+ msg = "%s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"])
progress = activetasks[t].get("progress", None)
if progress is not None:
pbar = activetasks[t].get("progressbar", None)
rate = activetasks[t].get("rate", None)
- start_time = activetasks[t].get("starttime", None)
if not pbar or pbar.bouncing != (progress < 0):
if progress < 0:
- pbar = BBProgress("0: %s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"]), 100, widgets=[' ', progressbar.BouncingSlider(), ''], extrapos=3, resize_handler=self.sigwinch_handle)
+ pbar = BBProgress("0: %s" % msg, 100, widgets=[' ', progressbar.BouncingSlider(), ''], extrapos=3, resize_handler=self.sigwinch_handle)
pbar.bouncing = True
else:
- pbar = BBProgress("0: %s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"]), 100, widgets=[' ', progressbar.Percentage(), ' ', progressbar.Bar(), ''], extrapos=5, resize_handler=self.sigwinch_handle)
+ pbar = BBProgress("0: %s" % msg, 100, widgets=[' ', progressbar.Percentage(), ' ', progressbar.Bar(), ''], extrapos=5, resize_handler=self.sigwinch_handle)
pbar.bouncing = False
activetasks[t]["progressbar"] = pbar
- tasks.append((pbar, progress, rate, start_time))
+ tasks.append((pbar, msg, progress, rate, start_time))
else:
- start_time = activetasks[t].get("starttime", None)
- if start_time:
- tasks.append("%s - %s (pid %s)" % (activetasks[t]["title"], self.elapsed(currenttime - start_time), activetasks[t]["pid"]))
- else:
- tasks.append("%s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"]))
+ tasks.append(msg)
if self.main.shutdown:
content = pluralise("Waiting for %s running task to finish",
@@ -308,12 +308,12 @@ class TerminalFilter(object):
if not self.quiet:
for tasknum, task in enumerate(tasks[:(self.rows - 1 - lines)]):
if isinstance(task, tuple):
- pbar, progress, rate, start_time = task
+ pbar, msg, progress, rate, start_time = task
if not pbar.start_time:
pbar.start(False)
if start_time:
pbar.start_time = start_time
- pbar.setmessage('%s:%s' % (tasknum, pbar.msg.split(':', 1)[1]))
+ pbar.setmessage('%s: %s' % (tasknum, msg))
pbar.setextra(rate)
if progress > -1:
content = pbar.update(progress)
diff --git a/poky/bitbake/lib/pyinotify.py b/poky/bitbake/lib/pyinotify.py
index 8c94b3e334..5c9b6d0fe2 100644
--- a/poky/bitbake/lib/pyinotify.py
+++ b/poky/bitbake/lib/pyinotify.py
@@ -603,6 +603,17 @@ class _ProcessEvent:
unknown event.
"""
stripped_mask = event.mask - (event.mask & IN_ISDIR)
+ # Bitbake hack - we see event masks of 0x6, IN_MODIFY & IN_ATTRIB
+ # The kernel inotify code can set more than one of the bits in the mask,
+ # fsnotify_change() in linux/fsnotify.h is quite clear that IN_ATTRIB,
+ # IN_MODIFY and IN_ACCESS can arrive together.
+ # This breaks the code below which assume only one mask bit is ever
+ # set in an event. We don't care about attrib or access in bitbake so drop those
+ if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ATTRIB):
+ stripped_mask = stripped_mask - (stripped_mask & IN_ATTRIB)
+ if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ACCESS):
+ stripped_mask = stripped_mask - (stripped_mask & IN_ACCESS)
+
maskname = EventsCodes.ALL_VALUES.get(stripped_mask)
if maskname is None:
raise ProcessEventError("Unknown mask 0x%08x" % stripped_mask)