@@ -745,7 +745,7 @@ def pstaging_fetch(sstatefetch, d):
if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False):
uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)]
- with bb.utils.umask(0o002):
+ with bb.utils.umask(bb.utils.to_filemode(d.getVar("DEFAULT_SHARED_UMASK"))):
bb.utils.mkdirhier(dldir)
for srcuri in uris:
@@ -776,9 +776,10 @@ sstate_task_prefunc[dirs] = "${WORKDIR}"
python sstate_task_postfunc () {
shared_state = sstate_state_fromvars(d)
- omask = os.umask(0o002)
- if omask != 0o002:
- bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask)
+ shared_umask = bb.utils.to_filemode(d.getVar("DEFAULT_SHARED_UMASK"))
+ omask = os.umask(shared_umask)
+ if omask != shared_umask:
+ bb.note("Using umask %0o (not %0o) for sstate packaging" % (shared_umask, omask))
sstate_package(shared_state, d)
os.umask(omask)
@@ -843,7 +844,8 @@ python sstate_create_and_sign_package () {
# Create the required sstate directory if it is not present.
if not sstate_pkg.parent.is_dir():
- with bb.utils.umask(0o002):
+ shared_umask = bb.utils.to_filemode(d.getVar("DEFAULT_SHARED_UMASK"))
+ with bb.utils.umask(shared_umask):
bb.utils.mkdirhier(str(sstate_pkg.parent))
if sign_pkg:
@@ -944,6 +944,8 @@ TRANSLATED_TARGET_ARCH ??= "${@d.getVar('TARGET_ARCH').replace("_", "-")}"
# Set a default umask to use for tasks for determinism
BB_DEFAULT_UMASK ??= "022"
+# The umask to use for shared files (e.g. DL_DIR and SSTATE_DIR)
+DEFAULT_SHARED_UMASK ??= "002"
# Complete output from bitbake
BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log"
Currently, the "shared" directory permissions of sstate are hardcoded. Since multiple areas of the code reference this, separate it out to a variable to allow the behaviour to be configurable. Initially this applies to SSTATE_DIR. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/classes-global/sstate.bbclass | 12 +++++++----- meta/conf/bitbake.conf | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-)