mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 04:56:58 +02:00
For execution of the compiled binaries in /build/arm64-usr we rely on qemu-user binfmt emulation and have to tell it where the root is with QEMU_LD_PREFIX because build systems don't chroot into /build/arm64-usr themselves (which also works just by chance on amd64 because we have similar glibc versions and so on). The env var setup was done in /etc/profile.d/qemu-aarch64.sh but is now not read anymore since the container runs the shell not as login shell. Add the login options to the bash and su calls when starting the container.
38 lines
1.0 KiB
Bash
Executable File
38 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -n "${SDK_USER_ID:-}" ] ; then
|
|
usermod -u $SDK_USER_ID sdk
|
|
fi
|
|
if [ -n "${SDK_GROUP_ID:-}" ] ; then
|
|
groupmod -g $SDK_GROUP_ID sdk
|
|
fi
|
|
|
|
chown -R sdk:sdk /home/sdk
|
|
|
|
# This is ugly.
|
|
# We need to sudo su - sdk -c so the SDK user gets a fresh login.
|
|
# 'sdk' is member of multiple groups, and plain docker USER only
|
|
# allows specifying membership of a single group.
|
|
# When a command is passed to the container, we run, respectively:
|
|
# sudo su - sdk -c "<command>".
|
|
# Then, we need to preserve whitespaces in arguments of commands
|
|
# passed to the container, e.g.
|
|
# ./update_chroot --toolchain_boards="amd64-usr arm64-usr".
|
|
# This is done via a separate ".cmd" file since we have used up
|
|
# our quotes for su -c "<cmd>" already.
|
|
if [ $# -gt 0 ] ; then
|
|
cmd="/home/sdk/.cmd"
|
|
echo -n "exec bash -l -i -c '" >"$cmd"
|
|
for arg in "$@"; do
|
|
echo -n "\"$arg\" " >>"$cmd"
|
|
done
|
|
echo "'" >>"$cmd"
|
|
chmod 755 "$cmd"
|
|
sudo su sdk -c "$cmd"
|
|
rc=$?
|
|
rm -f "$cmd"
|
|
exit $rc
|
|
else
|
|
exec sudo su -l sdk
|
|
fi
|