diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-12-10 09:33:17 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-12-15 11:14:38 +0000 |
commit | 47cc6288280bd38f42851d6423a5ffc95a46eea4 (patch) | |
tree | 62320518ece6d95523a395184d61a1d4908210db /meta/classes-global/sstate.bbclass | |
parent | 942f0909f38c6d4bf1bf28b4c29a658c1ecf133b (diff) | |
download | poky-47cc6288280bd38f42851d6423a5ffc95a46eea4.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: ae642a4b038c6946e6c8aa9778bf09099d938a31)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes-global/sstate.bbclass')
-rw-r--r-- | meta/classes-global/sstate.bbclass | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index 95d5803f17..9330433bb2 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 | } |
811 | sstate_task_postfunc[dirs] = "${WORKDIR}" | 811 | sstate_task_postfunc[dirs] = "${WORKDIR}" |
812 | 812 | ||
813 | python 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" |