From 72f1bbe9f1bb82d3b340eea50924529942c93ace Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Tue, 30 Jun 2020 02:46:30 -0400 Subject: opkbuild: Run ob-* commands from a child shell This basically reverts commit ab654dadd640164b7ddf01a3599c2a8beb6d6302. --- diff --git a/NEWS b/NEWS index 8533dbc..5c71ff8 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,11 @@ Utilities: - oh-fixperms (used in most packages) also sets owners and groups - "build" makefile "install" targets are run with (fake) superuser privileges. + * opkbuild now runs the "build" makefile's "install" target and all + ob-* commands under the same (fake) superuser environment. This was + the behavior in versions 3.0.0-alpha1 through 3.0.0-beta7. Since + version 4.0.0, commands were run in separate (fake) superuser + environments, which may not preserve superuser ownership of files. libopkbuild: diff --git a/src/opkbuild.sh b/src/opkbuild.sh index e6dc730..ab768eb 100644 --- a/src/opkbuild.sh +++ b/src/opkbuild.sh @@ -351,13 +351,16 @@ build() { case "${opt_target}" in '') - ../build build && - ${opt_uid0_cmd} -- ../build install && - ${opt_uid0_cmd} -- "${bindir}/ob-installdocs" && - ${opt_uid0_cmd} -- "${bindir}/ob-gencontrol" && - ${opt_uid0_cmd} -- "${bindir}/ob-buildopk" && - ${opt_uid0_cmd} -- "${bindir}/ob-genchanges" || + if ! ../build build || ! ${opt_uid0_cmd} -- ${SH} <<-EOF + ../build install && + "${bindir}/ob-installdocs" && + "${bindir}/ob-gencontrol" && + "${bindir}/ob-buildopk" && + "${bindir}/ob-genchanges" + EOF + then return 1 + fi ;; 'install'|'install-'*) if ! ${opt_uid0_cmd} -- ../build -- "${opt_target}" -- cgit v0.9.1