summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/pyinotify.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/bitbake/lib/pyinotify.py b/bitbake/lib/pyinotify.py
index 8c94b3e334..5c9b6d0fe2 100644
--- a/bitbake/lib/pyinotify.py
+++ b/bitbake/lib/pyinotify.py
@@ -603,6 +603,17 @@ class _ProcessEvent:
603 unknown event. 603 unknown event.
604 """ 604 """
605 stripped_mask = event.mask - (event.mask & IN_ISDIR) 605 stripped_mask = event.mask - (event.mask & IN_ISDIR)
606 # Bitbake hack - we see event masks of 0x6, IN_MODIFY & IN_ATTRIB
607 # The kernel inotify code can set more than one of the bits in the mask,
608 # fsnotify_change() in linux/fsnotify.h is quite clear that IN_ATTRIB,
609 # IN_MODIFY and IN_ACCESS can arrive together.
610 # This breaks the code below which assume only one mask bit is ever
611 # set in an event. We don't care about attrib or access in bitbake so drop those
612 if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ATTRIB):
613 stripped_mask = stripped_mask - (stripped_mask & IN_ATTRIB)
614 if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ACCESS):
615 stripped_mask = stripped_mask - (stripped_mask & IN_ACCESS)
616
606 maskname = EventsCodes.ALL_VALUES.get(stripped_mask) 617 maskname = EventsCodes.ALL_VALUES.get(stripped_mask)
607 if maskname is None: 618 if maskname is None:
608 raise ProcessEventError("Unknown mask 0x%08x" % stripped_mask) 619 raise ProcessEventError("Unknown mask 0x%08x" % stripped_mask)