aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'util/mktinderboxchroot.sh')
-rwxr-xr-xutil/mktinderboxchroot.sh59
1 files changed, 51 insertions, 8 deletions
diff --git a/util/mktinderboxchroot.sh b/util/mktinderboxchroot.sh
index 61bf410..8b36554 100755
--- a/util/mktinderboxchroot.sh
+++ b/util/mktinderboxchroot.sh
@@ -29,9 +29,13 @@ clean_work_chroot()
{
echo -n "Cleaning work chroot..."
if [ -d $WORK_CHROOT ];then
- for dir in $WORK_CHROOT/{"/dev","/proc","/sys","/usr/portage/distfiles","/usr/portage/packages","/usr/portage/","/etc/portage"};do
+ for dir in {"PKGDIR","DISTDIR"};do
+ umount_dir $dir
+ done
+ for dir in $WORK_CHROOT/{"/dev","/proc","/sys","$PORTAGE_DIR"};do
umount "$dir" || umount -l "$dir"
done
+
rm -rf --one-file-system "$WORK_CHROOT"
fi
echo Done
@@ -49,6 +53,49 @@ clean_base_chroot()
echo Done
}
+GPSRET=""
+get_portage_setting()
+{
+ setting=`grep $1 "$BASE_CHROOT/etc/make.conf" | sed -e "s/.*$1[[:space:]]*=[[:space:]]*//;s/\"//g;"`
+ if [ "y$setting" == "y" ];then
+ case $1 in
+ "PORTDIR" )
+ GPSRET=`portageq portdir`
+ return 0;;
+ "DISTDIR" )
+ GPSRET=`portageq distdir`
+ return 0;;
+ "PKGDIR" )
+ GPSRET=`portageq pkgdir`
+ return 0;;
+ * )
+ return 1;;
+ esac
+ fi
+ GPSRET=$setting
+ return 0;
+}
+
+mount_dir()
+{
+ get_portage_setting $1
+ if [ $? -eq 0 ];then
+ if [ ! -e "$GPSRET" ];then
+ mkdir -p "$GPSRET"
+ fi
+ mkdir -p "$WORK_CHROOT/$GPSRET"
+ mount -o bind "$GPSRET" "$WORK_CHROOT/$GPSRET"
+ else
+ echo "Unable to get setting for $1 variable"
+ exit 1
+ fi
+}
+
+umount_dir()
+{
+ get_portage_setting $1
+ umount "$WORK_CHROOT/$GPSRET" || umount -l "$WORK_CHROOT/$GPSRET"
+}
FORCE_CLEAN_BASE=0
@@ -110,6 +157,7 @@ else
echo -n "Copying settings..."
cp -L /etc/resolv.conf "$BASE_CHROOT/etc"
cp -L /etc/make.conf "$BASE_CHROOT/etc"
+ cp -RL /etc/portage "$BASE_CHROOT/etc"
echo Done
fi
@@ -149,15 +197,10 @@ mount -o bind "$PORTAGE_DIR" "$WORK_CHROOT/usr/portage"
mount -o remount,ro "$WORK_CHROOT/usr/portage"
-mount -o bind "$PORTAGE_DIR/distfiles" "$WORK_CHROOT/usr/portage/distfiles"
+mount_dir "DISTDIR"
+mount_dir "PKGDIR"
-if [ ! -e "$PORTAGE_DIR/packages/" ];then
- mkdir "$PORTAGE_DIR/packages/"
-fi
-mount -o bind "$PORTAGE_DIR/packages/" "$WORK_CHROOT/usr/portage/packages/"
-mount -o bind /etc/portage "$WORK_CHROOT/etc/portage"
-mount -o remount,ro "$WORK_CHROOT/etc/portage"
echo Done