From 542af78472f054a58a6af65b49849da00ad6a076 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Sat, 7 Nov 2020 22:50:11 +0100 Subject: [PATCH] xbps-src: remove proot chroot-style proot is broken and result in random hard to debug issues, this is the best way to not have new users use it. --- README.md | 14 +------------- common/chroot-style/proot.sh | 30 ------------------------------ common/xbps-src/libexec/build.sh | 3 --- etc/defaults.conf | 3 +-- xbps-src | 4 ++-- 5 files changed, 4 insertions(+), 50 deletions(-) delete mode 100755 common/chroot-style/proot.sh diff --git a/README.md b/README.md index 9238b1918ef..7c89d5a5a90 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ multiple utilities to accomplish this task: - `ethereal` - only useful for one-shot containers, i.e docker (used with travis). - `xbps-uunshare(1)` - XBPS utility that uses `user_namespaces(7)` (part of xbps, default). - `xbps-uchroot(1)` - XBPS utility that uses `namespaces` and must be `setgid` (part of xbps). - - `proot(1)` - utility that implements chroot/bind mounts in user space, see https://proot-me.github.io/. > NOTE: `xbps-src` does not allow building as root anymore. Use one of the chroot methods shown above. @@ -136,17 +135,6 @@ If for some reason it's erroring out as `ERROR clone (Operation not permitted)`, your user is a member of the required `group` and that `xbps-uchroot(1)` utility has the proper permissions and owner/group as explained above. -#### proot(1) - -The `proot(1)` utility implements chroot and bind mounts support completely in user space, -and can be used if your Linux kernel does not have support for namespaces. See https://proot-me.github.io/. -for more information. - -To enable it: - - $ cd void-packages - $ echo XBPS_CHROOT_CMD=proot >> etc/conf - ### Install the bootstrap packages @@ -404,7 +392,7 @@ checksum of the downloaded file matches the one specified in the template. Ultimately, if no mirror carries the distfile, or in case all downloads failed the checksum verification, the original download location is used. -If you use `proot` or `uchroot` for your XBPS_CHROOT_CMD, you may also specify a local path +If you use `uchroot` for your XBPS_CHROOT_CMD, you may also specify a local path using the `file://` prefix or simply an absolute path on your build host (e.g. /mnt/distfiles). Mirror locations specified this way are bind mounted inside the chroot environment under $XBPS_MASTERDIR and searched for distfiles just the same as remote locations. diff --git a/common/chroot-style/proot.sh b/common/chroot-style/proot.sh deleted file mode 100755 index 5c670ea5da8..00000000000 --- a/common/chroot-style/proot.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# This chroot script uses proot (see http://proot.me) -# -readonly MASTERDIR="$1" -readonly DISTDIR="$2" -readonly HOSTDIR="$3" -readonly EXTRA_ARGS="$4" -shift 4 - -if ! command -v proot >/dev/null 2>&1; then - exit 1 -fi - -if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then - echo "$0 MASTERDIR/DISTDIR not set" - exit 1 -fi - -# proot does not properly return the resultcode. Workaround this -RESULT=$(mktemp) || exit 1 - -PROOT_NO_SECCOMP=1 proot -r $MASTERDIR -w / -b "$RESULT:/.result" -b $DISTDIR:/void-packages \ - ${HOSTDIR:+-b $HOSTDIR:/host} -b /proc:/proc -b /dev:/dev \ - -b /sys:/sys $EXTRA_ARGS /bin/sh -c '$@; echo $? > /.result' $0 $@ - -rv=$(cat "$RESULT") -rm "$RESULT" - -exit $rv diff --git a/common/xbps-src/libexec/build.sh b/common/xbps-src/libexec/build.sh index 6abc988298b..3ac5a962d15 100755 --- a/common/xbps-src/libexec/build.sh +++ b/common/xbps-src/libexec/build.sh @@ -41,9 +41,6 @@ check_pkg_arch $XBPS_CROSS_BUILD if [ -z "$XBPS_CROSS_PREPARE" ]; then prepare_cross_sysroot $XBPS_CROSS_BUILD || exit $? fi -if [ -z "$XBPS_DEPENDENCY" -a -z "$XBPS_TEMP_MASTERDIR" -a -n "$XBPS_KEEP_ALL" -a "$XBPS_CHROOT_CMD" = "proot" ]; then - remove_pkg_autodeps -fi # Install dependencies from binary packages if [ "$PKGNAME" != "$XBPS_TARGET_PKG" -o -z "$XBPS_SKIP_DEPS" ]; then install_pkg_deps $PKGNAME $XBPS_TARGET_PKG pkg $XBPS_CROSS_BUILD $XBPS_CROSS_PREPARE || exit $? diff --git a/etc/defaults.conf b/etc/defaults.conf index 6e297903fbd..a652310307b 100644 --- a/etc/defaults.conf +++ b/etc/defaults.conf @@ -118,14 +118,13 @@ XBPS_SUCMD="sudo /bin/sh -c" # # - uunshare (uses xbps-uunshare(1), user namespaces) # - uchroot (uses xbps-uchroot(1), namespaces, setgid) -# - proot (uses proot, external, does not need special permissions) # - bwrap (uses bwrap, external, does not need special permissions) # - ethereal (uses root, needs no permissions, for disposable containers) # # The order is already set as shown above, but can be overriden below. # Additional arguments to the chroot style can be passed in via XBPS_CHROOT_CMD_ARGS. # -#XBPS_CHROOT_CMD=proot +#XBPS_CHROOT_CMD=uchroot #XBPS_CHROOT_CMD_ARGS="" # [OPTIONAL] diff --git a/xbps-src b/xbps-src index 3cd19dc42ec..b9bb4b6dae4 100755 --- a/xbps-src +++ b/xbps-src @@ -317,7 +317,7 @@ read_pkg() { setup_distfiles_mirror() { local mirror scheme path - # Scheme file:// mirror locations only work with uchroot or proot + # Scheme file:// mirror locations only work with uchroot for mirror in $XBPS_DISTFILES_MIRROR; do scheme="file" if [[ "$mirror" == *://* ]]; then @@ -327,7 +327,7 @@ setup_distfiles_mirror() { path="$mirror" fi [ "$scheme" != "file" ] && continue - if [ "$XBPS_CHROOT_CMD" == "uchroot" -o "$XBPS_CHROOT_CMD" == "proot" ]; then + if [ "$XBPS_CHROOT_CMD" == "uchroot" ]; then if [ ! -d "$path" ]; then msg_warn "xbps-src: Invalid path in XBPS_DISTFILES_MIRROR ($mirror)\n" continue