summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-12-10 09:33:17 +0000
committerSteve Sakoman <steve@sakoman.com>2024-01-27 08:09:47 -1000
commitedc3370b86fabc1d3eb19589a228146dff015471 (patch)
treea450b524085173a58431226fc76606ca89d9544b /meta
parent229061248d45ea63cc6eec9b1e505fdad030e7a9 (diff)
downloadpoky-edc3370b86fabc1d3eb19589a228146dff015471.tar.gz
sstate: Fix dir ownership issues in SSTATE_DIR
We currently use mkdir -p to create missing parent directories within SSTATE_DIR. Reading the man page for mkdir mentions that parent directories are created with the current umask, *not* the mode passed upon the commandline. We could fix this by setting and resetting the umask but since we already have decent python code able to do this, move to using that injecting a python function into the chain of functions already present. This should help fix the occasional sstate directory creation with the wrong permissions. [YOCTO #14385] (From OE-Core rev: 90d1e97b7c8bce0fb49714923989c63d243eb2da) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit ae642a4b038c6946e6c8aa9778bf09099d938a31) Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes-global/sstate.bbclass9
1 files changed, 7 insertions, 2 deletions
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass
index 5b27a1f0f9..0f11a528b5 100644
--- a/meta/classes-global/sstate.bbclass
+++ b/meta/classes-global/sstate.bbclass
@@ -703,7 +703,7 @@ def sstate_package(ss, d):
703 if d.getVar('SSTATE_SKIP_CREATION') == '1': 703 if d.getVar('SSTATE_SKIP_CREATION') == '1':
704 return 704 return
705 705
706 sstate_create_package = ['sstate_report_unihash', 'sstate_create_package'] 706 sstate_create_package = ['sstate_report_unihash', 'sstate_create_pkgdirs', 'sstate_create_package']
707 if d.getVar('SSTATE_SIG_KEY'): 707 if d.getVar('SSTATE_SIG_KEY'):
708 sstate_create_package.append('sstate_sign_package') 708 sstate_create_package.append('sstate_sign_package')
709 709
@@ -810,6 +810,12 @@ python sstate_task_postfunc () {
810} 810}
811sstate_task_postfunc[dirs] = "${WORKDIR}" 811sstate_task_postfunc[dirs] = "${WORKDIR}"
812 812
813python sstate_create_pkgdirs () {
814 # report_unihash can change SSTATE_PKG and mkdir -p in shell doesn't own intermediate directories
815 # correctly so do this in an intermediate python task
816 with bb.utils.umask(0o002):
817 bb.utils.mkdirhier(os.path.dirname(d.getVar('SSTATE_PKG')))
818}
813 819
814# 820#
815# Shell function to generate a sstate package from a directory 821# Shell function to generate a sstate package from a directory
@@ -822,7 +828,6 @@ sstate_create_package () {
822 return 828 return
823 fi 829 fi
824 830
825 mkdir --mode=0775 -p `dirname ${SSTATE_PKG}`
826 TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX` 831 TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
827 832
828 OPT="-cS" 833 OPT="-cS"