From e43ee910408794654dc3c498e4790ab39cbb3466 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Fri, 17 May 2019 02:41:43 +0200 Subject: [PATCH] libremakepkg: fix building packages requring a rw startdir Several packages require a read-write startdir: - Some packages have a pkgver that is computed dynamically through a pkgver function. This is the case for many packages using git repositories. At the end of the package build, the pkgver is automatically updated in the PKGBUILD, however, without that fix that fails with libremakepkg as the PKGBUILD was set read-only. - Some packages like linux-libre are modifying the install= script. This is done by creating a temporary install script in the startdir that is then modified with sed. Once this is done that install script is then dynamically selected. As this also require to have read-write access to the startdir to be read-write it fails to build the package if it's not the case. In both cases it's possible to modify the PKGBUILDs to workaround the issue, however the Arch Linux distribution has a read-write startdir, and modifying each affected packages would significatively increase the cost (in time and efforts) of maintaining Parabola. This was broken by the following commit: 646ac02 libremakepkg,chcleanup: Be stricter about network access Thanks to elibrokeit on the #parabola IRC channel on Freenode for helping me identifying the cause of read-only mounts in libremakepkg. Signed-off-by: Denis 'GNUtoo' Carikli --- src/chroot-tools/libremakepkg | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index 00eb2e0..fe7dd3a 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -124,11 +124,11 @@ build() ( local run_ynet=() local run_nnet=() if $INCHROOT; then - local _run=(sh -c "mount --bind -o ro -- ${startdir@Q} ${startdir@Q} && cd ${startdir@Q} && \$@" --) + local _run=(sh -c "cd ${startdir@Q} && \$@" --) run_ynet=(unshare --mount -- "${_run[@]}") run_nnet=(unshare --mount --net -- "${_run[@]}") else - librechroot_flags+=(-r "$startdir:/startdir") + librechroot_flags+=(-w "$startdir:/startdir") run_ynet=(librechroot "${librechroot_flags[@]}" run) run_nnet=(librechroot "${librechroot_flags[@]}" -N run) fi 2.21.0