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:
Richard Purdie 2021-11-22 16:11:45 +00:00
parent 44a3909bf6
commit 8dd0a45c85
3 changed files with 56 additions and 0 deletions

View File

@ -113,3 +113,5 @@ do_packagedata[stamp-extra-info] = ""
USE_NLS = "${SDKUSE_NLS}"
OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
PATH:prepend = "${COREBASE}/scripts/nativesdk-intercept:"

View 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)

View 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)