xbps-src: only umount bind mounts in the chroot shell fragment.

This commit is contained in:
Juan RP 2011-02-11 14:19:34 +01:00
parent 97ed70429b
commit 85543cd319
2 changed files with 8 additions and 27 deletions

View file

@ -1,5 +1,5 @@
#- #-
# Copyright (c) 2008-2010 Juan Romero Pardines. # Copyright (c) 2008-2011 Juan Romero Pardines.
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -27,8 +27,7 @@
# Script to install packages into a sandbox in masterdir. # Script to install packages into a sandbox in masterdir.
# Actually this needs the xbps-base-chroot package installed. # Actually this needs the xbps-base-chroot package installed.
# #
trap "_umount && return $?" 0 INT QUIT TERM
trap "echo && chroot_handler_interrupted $?" INT QUIT TERM
[ -n "$base_chroot" ] && return 0 [ -n "$base_chroot" ] && return 0
@ -230,14 +229,11 @@ _mount()
return $? return $?
} }
chroot_handler_interrupted() _umount()
{ {
local rv="$1" MASTERDIR="${XBPS_MASTERDIR}" ${sudo_cmd} \
@@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-chroot-helper umount
if [ -f ${XBPS_MASTERDIR}/.xbps_chroot_working ]; then return $?
rm -f ${XBPS_MASTERDIR}/.xbps_chroot_working
fi
return $rv
} }
xbps_chroot_handler() xbps_chroot_handler()
@ -274,8 +270,6 @@ xbps_chroot_handler()
"cd /xbps/xbps-src && make IN_CHROOT=1 install clean" \ "cd /xbps/xbps-src && make IN_CHROOT=1 install clean" \
2>&1 >/dev/null || return $? 2>&1 >/dev/null || return $?
touch -f ${XBPS_MASTERDIR}/.xbps_chroot_working
if [ "$action" = "chroot" ]; then if [ "$action" = "chroot" ]; then
env in_chroot=yes IN_CHROOT=1 LANG=C PATH=$path \ env in_chroot=yes IN_CHROOT=1 LANG=C PATH=$path \
${chroot_cmd} $XBPS_MASTERDIR /bin/sh || \ ${chroot_cmd} $XBPS_MASTERDIR /bin/sh || \
@ -289,7 +283,6 @@ xbps_chroot_handler()
rv=$? rv=$?
fi fi
rm -f ${XBPS_MASTERDIR}/.xbps_chroot_working
msg_normal "Exiting from the chroot on $XBPS_MASTERDIR.\n" msg_normal "Exiting from the chroot on $XBPS_MASTERDIR.\n"
return $rv return $rv

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (c) 2008-2010 Juan Romero Pardines. # Copyright (c) 2008-2011 Juan Romero Pardines.
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -23,6 +23,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#- #-
: ${XBPS_CONFIG_FILE:=@@XBPS_INSTALL_ETCDIR@@/xbps-src.conf} : ${XBPS_CONFIG_FILE:=@@XBPS_INSTALL_ETCDIR@@/xbps-src.conf}
: ${progname:=$(basename $0)} : ${progname:=$(basename $0)}
@ -33,19 +34,6 @@
: ${xbps_machine:=$(uname -m)} : ${xbps_machine:=$(uname -m)}
: ${XBPS_UTILS_REQVER:=20100511} : ${XBPS_UTILS_REQVER:=20100511}
trap '_MASTERDIR=${XBPS_MASTERDIR} sighandler_exit $?' 0 INT QUIT
sighandler_exit()
{
# Always unmount in case we failed before!
if [ -z "$in_chroot" ]; then
cd ${_MASTERDIR} && \
env MASTERDIR="${_MASTERDIR}" \
@@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-chroot-helper umount
fi
exit $1
}
check_reqhost_utils() check_reqhost_utils()
{ {
[ -n "$in_chroot" ] && return 0 [ -n "$in_chroot" ] && return 0