mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
nativesdk: Handle chown/chgrp calls in nativesdk do_install tasks
We disable the useradd code for nativesdk targets since we don't support postinstalls or multiple users in those cases. This means any usage of chown/chgrp inside do_install tasks won't work and would have to be conditional. Rather than require all recipes to do that, add intercepts of the calls and map those to root/root user/groups. We can't just ignore them as some calls are used to remove host contamination from the host user ID so they need to be made, just as root. (From OE-Core rev: e1f40670c438e33cae87678425de72ca03566888) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -113,3 +113,5 @@ do_packagedata[stamp-extra-info] = ""
|
|||||||
USE_NLS = "${SDKUSE_NLS}"
|
USE_NLS = "${SDKUSE_NLS}"
|
||||||
|
|
||||||
OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
|
OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
|
||||||
|
|
||||||
|
PATH:prepend = "${COREBASE}/scripts/nativesdk-intercept:"
|
||||||
|
|||||||
Executable
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Wrapper around 'chgrp' that redirects to root in all cases
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# calculate path to the real 'chgrp'
|
||||||
|
path = os.environ['PATH']
|
||||||
|
path = path.replace(os.path.dirname(sys.argv[0]), '')
|
||||||
|
real_chgrp = shutil.which('chgrp', path=path)
|
||||||
|
|
||||||
|
args = list()
|
||||||
|
|
||||||
|
found = False
|
||||||
|
for i in sys.argv:
|
||||||
|
if i.startswith("-"):
|
||||||
|
args.append(i)
|
||||||
|
continue
|
||||||
|
if not found:
|
||||||
|
args.append("root")
|
||||||
|
found = True
|
||||||
|
else:
|
||||||
|
args.append(i)
|
||||||
|
|
||||||
|
os.execv(real_chgrp, args)
|
||||||
Executable
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Wrapper around 'chown' that redirects to root in all cases
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# calculate path to the real 'chown'
|
||||||
|
path = os.environ['PATH']
|
||||||
|
path = path.replace(os.path.dirname(sys.argv[0]), '')
|
||||||
|
real_chown = shutil.which('chown', path=path)
|
||||||
|
|
||||||
|
args = list()
|
||||||
|
|
||||||
|
found = False
|
||||||
|
for i in sys.argv:
|
||||||
|
if i.startswith("-"):
|
||||||
|
args.append(i)
|
||||||
|
continue
|
||||||
|
if not found:
|
||||||
|
args.append("root:root")
|
||||||
|
found = True
|
||||||
|
else:
|
||||||
|
args.append(i)
|
||||||
|
|
||||||
|
os.execv(real_chown, args)
|
||||||
Reference in New Issue
Block a user