diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index 2968cc4c2e..53bc2e3940 100644 --- a/meta/classes-global/sstate.bbclass +++ b/meta/classes-global/sstate.bbclass @@ -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("OE_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("OE_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("OE_SHARED_UMASK")) + with bb.utils.umask(shared_umask): bb.utils.mkdirhier(str(sstate_pkg.parent)) if sign_pkg: diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index a3300fc172..b1f8ac5b11 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -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) +OE_SHARED_UMASK ??= "002" # Complete output from bitbake BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log"