diff --git a/helper-templates/chroot.sh b/helper-templates/chroot.sh index 98359102805..f114eef4357 100644 --- a/helper-templates/chroot.sh +++ b/helper-templates/chroot.sh @@ -34,12 +34,15 @@ else echo "==> Entering into the chroot on $XBPS_MASTERDIR." fi -for f in bin sbin tmp var sys proc dev xbps xbps_builddir xbps_destdir; do +REQDIRS="bin sbin tmp var sys proc dev xbps xbps_builddir \ + xbps_destdir xbps_srcdistdir" +for f in ${REQDIRS}; do [ ! -d $XBPS_MASTERDIR/$f ] && mkdir -p $XBPS_MASTERDIR/$f done -unset f +unset f REQDIRS -for f in sys proc dev xbps xbps_builddir xbps_destdir; do +REQFS="sys proc dev xbps xbps_builddir xbps_destdir xbps_srcdistdir" +for f in ${REQFS}; do if [ ! -f $XBPS_MASTERDIR/.${f}_mount_bind_done ]; then echo -n "=> Mounting $f in chroot... " local blah= @@ -47,6 +50,7 @@ for f in sys proc dev xbps xbps_builddir xbps_destdir; do xbps) blah=$XBPS_DISTRIBUTIONDIR;; xbps_builddir) blah=$XBPS_BUILDDIR;; xbps_destdir) blah=$XBPS_DESTDIR;; + xbps_srcdistdir) blah=$XBPS_SRCDISTDIR;; *) blah=/$f;; esac mount --bind $blah $XBPS_MASTERDIR/$f @@ -64,7 +68,7 @@ echo "XBPS_DISTRIBUTIONDIR=/xbps" > $XBPS_MASTERDIR/etc/xbps.conf echo "XBPS_MASTERDIR=/" >> $XBPS_MASTERDIR/etc/xbps.conf echo "XBPS_DESTDIR=/xbps_destdir" >> $XBPS_MASTERDIR/etc/xbps.conf echo "XBPS_BUILDDIR=/xbps_builddir" >> $XBPS_MASTERDIR/etc/xbps.conf -echo "XBPS_SRCDISTDIR=/xbps/srcdistdir" >> $XBPS_MASTERDIR/etc/xbps.conf +echo "XBPS_SRCDISTDIR=/xbps_srcdistdir" >> $XBPS_MASTERDIR/etc/xbps.conf echo "XBPS_CFLAGS=\"$XBPS_CFLAGS\"" >> $XBPS_MASTERDIR/etc/xbps.conf echo "XBPS_CXXFLAGS=\"\$XBPS_CFLAGS\"" >> $XBPS_MASTERDIR/etc/xbps.conf if [ -n "$XBPS_MAKEJOBS" ]; then @@ -79,44 +83,23 @@ rebuild_ldso_cache() echo " done." } -configure_chroot_pkg() +chroot_pkg_handler() { - local pkg="$1" + local action="$1" + local pkg="$2" - [ -z "$pkg" ] && return 1 + [ -z "$action" -o -z "$pkg" ] && return 1 + + [ "$action" != "configure" -a "$action" != "build" -a \ + "$action" != "install" -a "$action" != "chroot" ] && return 1 rebuild_ldso_cache - env in_chroot=yes chroot $XBPS_MASTERDIR /xbps/xbps.sh configure $pkg - echo "==> Exiting from the chroot on $XBPS_MASTERDIR." -} - -build_chroot_pkg() -{ - local pkg="$1" - - [ -z "$pkg" ] && return 1 - - rebuild_ldso_cache - env in_chroot=yes chroot $XBPS_MASTERDIR /xbps/xbps.sh build $pkg - echo "==> Exiting from the chroot on $XBPS_MASTERDIR." -} - -install_chroot_pkg() -{ - local pkg="$1" - - [ -z "$pkg" ] && return 1 - - rebuild_ldso_cache - env in_chroot=yes chroot $XBPS_MASTERDIR /xbps/xbps.sh install $pkg - echo "==> Exiting from the chroot on $XBPS_MASTERDIR." - umount_chroot_fs -} - -enter_chroot() -{ - rebuild_ldso_cache - env in_chroot=yes chroot $XBPS_MASTERDIR /bin/bash + if [ "$action" = "chroot" ]; then + env in_chroot=yes chroot $XBPS_MASTERDIR /bin/bash + else + env in_chroot=yes chroot $XBPS_MASTERDIR /xbps/xbps.sh \ + $action $pkg + fi echo "==> Exiting from the chroot on $XBPS_MASTERDIR." umount_chroot_fs } @@ -126,7 +109,7 @@ umount_chroot_fs() local fs= local dir= - for fs in sys proc dev xbps xbps_builddir xbps_destdir; do + for fs in ${REQFS}; do [ ! -f $XBPS_MASTERDIR/.${fs}_mount_bind_done ] && continue echo -n "=> Unmounting $fs from chroot... " umount -f $XBPS_MASTERDIR/$fs @@ -139,7 +122,7 @@ umount_chroot_fs() unset fs done - for dir in xbps xbps_builddir xbps_destdir; do + for dir in xbps xbps_builddir xbps_destdir xbps_srcdistdir; do [ -d $XBPS_MASTERDIR/$dir ] && rmdir $XBPS_MASTERDIR/$dir done } diff --git a/xbps.sh b/xbps.sh index 4e4bfd9ede3..8c4ace6f41c 100755 --- a/xbps.sh +++ b/xbps.sh @@ -1233,7 +1233,7 @@ install_pkg() if [ -z "$base_chroot" -a -z "$in_chroot" ]; then run_file $XBPS_TMPLHELPDIR/chroot.sh - install_chroot_pkg $curpkgn + chroot_pkg_handler install $curpkgn return $? fi @@ -1403,7 +1403,7 @@ stow_pkg() cd $XBPS_DESTDIR/$pkgname-$version || exit 1 find . > $flist - sed -i -e "s|^.$||g;s|^./||g" $flist + sed -i -e "s|^.$||g;s|^./||g;s|.xbps-filelist||g" $flist cp -ar . $XBPS_MASTERDIR mv -f $flist $XBPS_DESTDIR/$pkgname-$version/.xbps-filelist @@ -1506,7 +1506,7 @@ build) setup_tmpl $2 if [ -z "$base_chroot" -a -z "$in_chroot" ]; then run_file $XBPS_TMPLHELPDIR/chroot.sh - build_chroot_pkg $2 + chroot_pkg_handler build $2 umount_chroot_fs else fetch_distfiles $2 @@ -1521,13 +1521,13 @@ build) ;; chroot) run_file $XBPS_TMPLHELPDIR/chroot.sh - enter_chroot + chroot_pkg_handler chroot dummy ;; configure) setup_tmpl $2 if [ -z "$base_chroot" -a -z "$in_chroot" ]; then run_file $XBPS_TMPLHELPDIR/chroot.sh - configure_chroot_pkg $2 + chroot_pkg_handler configure $2 umount_chroot_fs else fetch_distfiles $2