mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02: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:
parent
44a3909bf6
commit
8dd0a45c85
|
@ -113,3 +113,5 @@ do_packagedata[stamp-extra-info] = ""
|
|||
USE_NLS = "${SDKUSE_NLS}"
|
||||
|
||||
OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
|
||||
|
||||
PATH:prepend = "${COREBASE}/scripts/nativesdk-intercept:"
|
||||
|
|
27
scripts/nativesdk-intercept/chgrp
Executable file
27
scripts/nativesdk-intercept/chgrp
Executable file
|
@ -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)
|
27
scripts/nativesdk-intercept/chown
Executable file
27
scripts/nativesdk-intercept/chown
Executable file
|
@ -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)
|
Loading…
Reference in New Issue
Block a user