Nimbin[12]?Mirrors & Forks / jhalfs / commits / 249d4ad

jhalfs git · trunk

jhalfs LFS build automation (mirror)

lfs mirror bash · first commit 2005-09-11 · last commit 2024-02-13 (2 years ago) · synced 3 days ago · upstream: git.linuxfromscratch.org/jhalfs

Python 78.4% Shell 19.8% Makefile 1.8%
git clone https://git.christianimmanuel.de/mirrors-forks/jhalfs.gitwget https://git.christianimmanuel.de/mirrors-forks/jhalfs/archive/jhalfs.tar.gz

Fix (again) the run-in-cgroup.sh script

Pierre Labastie · 2023-11-16 15:10 · 249d4ade208ff645ee5d5d409a4dba6f08561fa4

When using "sh  << EOF", what is between this line and EOF runs
with no attached terminal. But we need a terminal for running the
build. So we have to use "sh -c ". But then nesting of double
quotes, $, etc is too complicated. So run as root, and become back
user only when exec'ing. For some reason $@ does not work, so use
a variable set to $@.
 common/run-in-cgroup.sh | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/common/run-in-cgroup.sh b/common/run-in-cgroup.sh
index 8794cd4..3f57857 100755
--- a/common/run-in-cgroup.sh
+++ b/common/run-in-cgroup.sh
@@ -5,6 +5,8 @@ if [ -z "$CPUSPEC" ] || [ "$#" -lt 1 ]; then
 	exit 1
 fi
 
+ARGS="$@"
+
 set +e
 
 if type systemd-run >/dev/null 2>&1 ; then # systemd
@@ -17,12 +19,11 @@ elif type loginctl >/dev/null 2>&1 ; then #elogind
    sudo sh -c "echo +cpuset > /sys/fs/cgroup/cgroup.subtree_control"
    (
       sudo sh -c "echo $BASHPID > /sys/fs/cgroup/jhalfs/cgroup.procs"
-      sudo -u $(whoami) sh <<EOF
+      sudo sh -c "
          SESS_CGROUP=/sys/fs/cgroup/\$XDG_SESSION_ID
-         sudo sh -c "echo \\"$CPUSPEC\\" > \$SESS_CGROUP/cpuset.cpus"
-         (sudo sh -c "echo \$BASHPID > \$SESS_CGROUP/cgroup.procs" &&
-            exec $@)
-EOF
+         echo $CPUSPEC > \$SESS_CGROUP/cpuset.cpus
+	 ( echo \$BASHPID > \$SESS_CGROUP/cgroup.procs &&
+		 exec sudo -u $(whoami) $ARGS )"
    )
    sudo rmdir /sys/fs/cgroup/jhalfs
 else # no session manager