From a1f79a7896b6411669b3ccada6204d2695e80fc5 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Wed, 22 Jun 2011 15:10:58 +0000 Subject: runqueue.py: Add umask task control The umask for a task can now be set as: task[umask] = 022 task[umask] = '022' If specified as a text string, it must be octal. (This is due to recipe parsing where it's always set to a string.) [RP tweaked to use None instead of -1] (Bitbake rev: a5caaaaba8f0db1af5d8f2e610021d6d4b56894e) Signed-off-by: Mark Hatle Signed-off-by: Richard Purdie --- bitbake/lib/bb/build.py | 1 + bitbake/lib/bb/runqueue.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 7947906ab2..f69464c60b 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py @@ -463,6 +463,7 @@ def add_tasks(tasklist, d): getTask('nostamp') getTask('fakeroot') getTask('noexec') + getTask('umask') task_deps['parents'][task] = [] for dep in flags['deps']: dep = data.expand(dep, d) diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 7a17fce789..b801877e16 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -1063,8 +1063,16 @@ class RunQueueExecute: # a fork() or exec*() activates PSEUDO... envbackup = {} + umask = None taskdep = self.rqdata.dataCache.task_deps[fn] + if 'umask' in taskdep and taskname in taskdep['umask']: + # umask might come in as a number or text string.. + try: + umask = int(taskdep['umask'][taskname],8) + except TypeError: + umask = taskdep['umask'][taskname] + if 'fakeroot' in taskdep and taskname in taskdep['fakeroot']: envvars = (self.rqdata.dataCache.fakerootenv[fn] or "").split() for key, value in (var.split('=') for var in envvars): @@ -1103,6 +1111,9 @@ class RunQueueExecute: newsi = os.open(os.devnull, os.O_RDWR) os.dup2(newsi, sys.stdin.fileno()) + if umask: + os.umask(umask) + bb.data.setVar("BB_WORKERCONTEXT", "1", self.cooker.configuration.data) bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", self, self.cooker.configuration.data) bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", fn, self.cooker.configuration.data) -- cgit v1.2.3-54-g00ecf