[bitbake-devel] [PATCH 1/1] runqueue.py: Add umask task control

Mark Hatle mark.hatle at windriver.com
Wed Jun 22 17:49:34 UTC 2011


I just noticed I left in some debug below..

The line:

 logger.warning("Using umask 0%o %s, %s" % (umask, fn, taskname))

should be either commented out or removed.  I'd be happy to re-send the pull
request if this is easier.

--Mark

On 6/22/11 12:57 PM, Mark Hatle wrote:
> 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.)
> 
> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> ---
>  lib/bb/build.py    |    1 +
>  lib/bb/runqueue.py |   12 ++++++++++++
>  2 files changed, 13 insertions(+), 0 deletions(-)
> 
> diff --git a/lib/bb/build.py b/lib/bb/build.py
> index 15ba956..4bbf10f 100644
> --- a/lib/bb/build.py
> +++ b/lib/bb/build.py
> @@ -465,6 +465,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/lib/bb/runqueue.py b/lib/bb/runqueue.py
> index 1f3b54c..e455893 100644
> --- a/lib/bb/runqueue.py
> +++ b/lib/bb/runqueue.py
> @@ -1063,8 +1063,17 @@ class RunQueueExecute:
>          # a fork() or exec*() activates PSEUDO...
>  
>          envbackup = {}
> +        umask = -1
>  
>          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]
> +            logger.warning("Using umask 0%o %s, %s" % (umask, fn, 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 +1112,9 @@ class RunQueueExecute:
>              newsi = os.open(os.devnull, os.O_RDWR)
>              os.dup2(newsi, sys.stdin.fileno())
>  
> +            if umask != -1:
> +                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)





More information about the bitbake-devel mailing list