From ef21557313f4abf633d24a0719dec0103106a288 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Wed, 6 Jul 2011 14:20:27 +0200 Subject: [PATCH] xbps-src: multiple improvements related to chroot code. --- xbps-src/libexec/xbps-src-doinst-helper.sh.in | 8 +- xbps-src/shutils/chroot.sh.in | 93 +++++++++---------- xbps-src/xbps-src.sh.in | 8 +- 3 files changed, 50 insertions(+), 59 deletions(-) diff --git a/xbps-src/libexec/xbps-src-doinst-helper.sh.in b/xbps-src/libexec/xbps-src-doinst-helper.sh.in index e29f65d971b..ce57d92faef 100644 --- a/xbps-src/libexec/xbps-src-doinst-helper.sh.in +++ b/xbps-src/libexec/xbps-src-doinst-helper.sh.in @@ -1,6 +1,6 @@ #!/bin/sh #- -# Copyright (c) 2010 Juan Romero Pardines. +# Copyright (c) 2010-2011 Juan Romero Pardines. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -36,9 +36,9 @@ fi set_defvars -. $XBPS_SHUTILSDIR/tmpl_funcs.sh -. $XBPS_SHUTILSDIR/common_funcs.sh -. $XBPS_SHUTILSDIR/builddep_funcs.sh +for f in $(echo $XBPS_SHUTILSDIR/*.sh); do + [ -r "$f" ] && . $f +done install_src_phase() { diff --git a/xbps-src/shutils/chroot.sh.in b/xbps-src/shutils/chroot.sh.in index 99fc82e1177..b31444ab418 100644 --- a/xbps-src/shutils/chroot.sh.in +++ b/xbps-src/shutils/chroot.sh.in @@ -23,12 +23,6 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #- -# -# Script to install packages into a sandbox in masterdir. -# Actually this needs the xbps-base-chroot package installed. -# -trap "_umount && return $?" 0 INT QUIT TERM - _mount() { MASTERDIR="${XBPS_MASTERDIR}" CACHEDIR="${XBPS_CACHEDIR}" \ @@ -45,31 +39,34 @@ _umount() return $? } -[ -n "$bootstrap" ] && return 0 +chroot_init() +{ + trap "_umount && return $?" 0 INT QUIT TERM -if [ "${chroot_cmd}" = "chroot" ]; then - if [ "$(id -u)" -ne 0 ]; then - echo "Root permissions are required for the chroot, try again." + [ -n "$bootstrap" ] && return 0 + + if [ "${chroot_cmd}" = "chroot" ]; then + if [ "$(id -u)" -ne 0 ]; then + msg_error "Root permissions are required for the chroot, try again." + fi + fi + + check_installed_pkg base-chroot-0.11 + if [ $? -ne 0 ]; then + echo "${XBPS_MASTERDIR} has not been prepared for chroot operations." + echo "Please install 'base-chroot>=0.11' and try again." exit 1 fi -fi -check_installed_pkg base-chroot-0.11 -if [ $? -ne 0 ]; then - echo "${XBPS_MASTERDIR} has not been prepared for chroot operations." - echo "Please install 'base-chroot>=0.11' and try again." - exit 1 -fi + msg_normal "Entering into the chroot on $XBPS_MASTERDIR.\n" -msg_normal "Entering into the chroot on $XBPS_MASTERDIR.\n" + if [ ! -d $XBPS_MASTERDIR/usr/local/etc ]; then + mkdir -p $XBPS_MASTERDIR/usr/local/etc + fi -if [ ! -d $XBPS_MASTERDIR/usr/local/etc ]; then - mkdir -p $XBPS_MASTERDIR/usr/local/etc -fi + XBPSSRC_CF=$XBPS_MASTERDIR/usr/local/etc/xbps-src.conf -XBPSSRC_CF=$XBPS_MASTERDIR/usr/local/etc/xbps-src.conf - -cat > $XBPSSRC_CF <<_EOF + cat > $XBPSSRC_CF <<_EOF # Generated configuration file by xbps-src, DO NOT EDIT! XBPS_DISTRIBUTIONDIR=/xbps XBPS_MASTERDIR=/ @@ -80,27 +77,28 @@ XBPS_FETCH_CMD="xbps-uhelper.static fetch" XBPS_COMPRESS_CMD="$XBPS_COMPRESS_CMD" _EOF -if [ -n "$XBPS_MAKEJOBS" ]; then - echo "XBPS_MAKEJOBS=$XBPS_MAKEJOBS" >> $XBPSSRC_CF -fi -if [ -n "$XBPS_PREFER_BINPKG_DEPS" ]; then - echo "XBPS_PREFER_BINPKG_DEPS=$XBPS_PREFER_BINPKG_DEPS" >> $XBPSSRC_CF -fi -if [ -n "$XBPS_COMPRESS_LEVEL" ]; then - echo "XBPS_COMPRESS_LEVEL=$XBPS_COMPRESS_LEVEL" >> $XBPSSRC_CF -fi -if [ -n "$XBPS_CACHEDIR" ]; then - echo "XBPS_CACHEDIR=/cachedir" >> $XBPSSRC_CF -fi - -echo "# End of configuration file." >> $XBPSSRC_CF - -if [ -d $XBPS_MASTERDIR/tmp ]; then - if [ ! -f $XBPS_MASTERDIR/.xbps_mount_bind_done ]; then - msg_normal "Cleaning up /tmp...\n" - [ -h ${XBPS_MASTERDIR}/tmp ] || rm -rf $XBPS_MASTERDIR/tmp/* + if [ -n "$XBPS_MAKEJOBS" ]; then + echo "XBPS_MAKEJOBS=$XBPS_MAKEJOBS" >> $XBPSSRC_CF fi -fi + if [ -n "$XBPS_PREFER_BINPKG_DEPS" ]; then + echo "XBPS_PREFER_BINPKG_DEPS=$XBPS_PREFER_BINPKG_DEPS" >> $XBPSSRC_CF + fi + if [ -n "$XBPS_COMPRESS_LEVEL" ]; then + echo "XBPS_COMPRESS_LEVEL=$XBPS_COMPRESS_LEVEL" >> $XBPSSRC_CF + fi + if [ -n "$XBPS_CACHEDIR" ]; then + echo "XBPS_CACHEDIR=/cachedir" >> $XBPSSRC_CF + fi + + echo "# End of configuration file." >> $XBPSSRC_CF + + if [ -d $XBPS_MASTERDIR/tmp ]; then + if [ ! -f $XBPS_MASTERDIR/.xbps_mount_bind_done ]; then + msg_normal "Cleaning up /tmp...\n" + [ -h ${XBPS_MASTERDIR}/tmp ] || rm -rf $XBPS_MASTERDIR/tmp/* + fi + fi +} prepare_chroot() { @@ -277,7 +275,7 @@ xbps_chroot_handler() [ "$action" != "configure" -a "$action" != "build" -a \ "$action" != "install" -a "$action" != "chroot" -a \ - "$action" != "install-destdir" -a "$action" != "remove" ] && return 1 + "$action" != "remove" ] && return 1 if [ ! -f $XBPS_MASTERDIR/.xbps_perms_done ]; then echo -n "==> Preparing chroot on $XBPS_MASTERDIR... " @@ -285,10 +283,9 @@ xbps_chroot_handler() echo "done." fi - if [ ! -d "$XBPS_MASTERDIR/tmp" ]; then - mkdir -p "$XBPS_MASTERDIR/tmp" - fi + [ ! -d "$XBPS_MASTERDIR/tmp" ] && mkdir -p "$XBPS_MASTERDIR/tmp" + chroot_init create_binsh_symlink create_busybox_links install_xbps_utils diff --git a/xbps-src/xbps-src.sh.in b/xbps-src/xbps-src.sh.in index d1f7b83c1a3..346597faf2f 100644 --- a/xbps-src/xbps-src.sh.in +++ b/xbps-src/xbps-src.sh.in @@ -266,9 +266,7 @@ fi . @@XBPS_INSTALL_SHAREDIR@@/shutils/init_funcs.sh set_defvars for f in $(echo @@XBPS_INSTALL_SHAREDIR@@/shutils/*.sh); do - if [ -r "$f" -a "$(basename $f)" != "chroot.sh" ]; then - . $f - fi + [ -r "$f" ] && . $f done # Disable XBPS_PREFER_BINPKG_DEPS if requested. @@ -343,7 +341,6 @@ build|configure) fi if [ -z "$bootstrap" -a -z "$IN_CHROOT" ]; then - . $XBPS_SHUTILSDIR/chroot.sh xbps_chroot_handler $target ${_pkgname} else _ORIGINPKG="${_pkgname}" @@ -395,7 +392,6 @@ checkvers) check_installed_packages ;; chroot) - . $XBPS_SHUTILSDIR/chroot.sh xbps_chroot_handler chroot dummy ;; clean) @@ -427,7 +423,6 @@ install) setup_tmpl ${_pkgname} _ORIGINPKG="${_pkgname}" if [ -z "$IN_CHROOT" -a -z "$bootstrap" ]; then - . $XBPS_SHUTILSDIR/chroot.sh xbps_chroot_handler $target ${_ORIGINPKG} else setup_tmpl ${_ORIGINPKG} @@ -459,7 +454,6 @@ remove) fi setup_tmpl ${_pkgname} if [ -z "$IN_CHROOT" -a -z "$bootstrap" ]; then - . $XBPS_SHUTILSDIR/chroot.sh xbps_chroot_handler $target ${_pkgname} else remove_pkg