[PATCH] xfstests-bld: teach setup-buildchroot about /etc/schroot/chroot.d

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



Check for the existence of a chroot definition in the chroot.d
directory, and if it exists, create the entry in that directory
instead of appending the entry to /etc/schroot/schroot.conf

Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>
---
 setup-buildchroot | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/setup-buildchroot b/setup-buildchroot
index f649ed8..e43cba8 100755
--- a/setup-buildchroot
+++ b/setup-buildchroot
@@ -28,6 +28,7 @@ QEMU=
 BINFMT_MISC_MNT=/proc/sys/fs/binfmt_misc
 
 SCHROOT_CONFFILE=/etc/schroot/schroot.conf
+SCHROOT_CHROOT_D=/etc/schroot/chroot.d
 SCHROOT_FSTAB=xfstests-bld/fstab
 SCHROOT_FSTAB_FILE=/etc/schroot/$SCHROOT_FSTAB
 
@@ -356,10 +357,32 @@ validate_binfmt_misc()
     log "Detected foreign chroot, using user-mode emulation with $QEMU version $full_version"
 }
 
+# Get the schroot configuration from either schroot.conf or entries in
+# the chroot.d directory
+get_schroot_config()
+{
+    local files
+
+    if test ! -f $SCHROOT_CONFFILE
+    then
+	die $SCHROOT_CONFFILE does not exist
+    fi
+
+    if test -d $SCHROOT_CHROOT_D
+    then
+	(cd $SCHROOT_CHROOT_D ;
+	 find . -maxdepth 1 -type f |
+	     egrep '^./[a-ZA-Z0-09_-][a-ZA-Z0-09_.-]*$' |
+	     xargs cat $SCHROOT_CONFFILE)
+    else
+	cat $SCHROOT_CONFFILE
+    fi
+}
+
 # Extract the schroot.conf entry, if any, for $CHROOT_NAME
 extract_schroot_entry()
 {
-    awk '
+    get_schroot_config | awk '
 {
     if ($0 ~ /^[[:space:]]*\[.*\][[:space:]]*$/) {
 	sub(/\][[:space:]]*$/, "")
@@ -369,7 +392,7 @@ extract_schroot_entry()
 	print
     }
 }
-' "$SCHROOT_CONFFILE"
+'
 }
 
 generate_schroot_entry()
@@ -414,19 +437,26 @@ check_for_conflicting_schroot_entry()
 # Add an entry to schroot.conf for the chroot.
 add_schroot_conf_entry()
 {
+    local f
     check_for_conflicting_schroot_entry
     if [ -n "$(extract_schroot_entry)" ]; then
 	log "$CHROOT_NAME entry already exists in $SCHROOT_CONFFILE"
 	return
     fi
 
-    log "Adding new entry to $SCHROOT_CONFFILE:"
+    if test -d $SCHROOT_CHROOT_D
+    then
+	f="$SCHROOT_CHROOT_D/$CHROOT_NAME"
+    else
+	f="$SCHROOT_CONFFILE"
+    fi
+    log "Adding new entry to $f:"
     {
 	echo
 	echo "# entry added by $SCRIPTNAME"
 	echo "[$CHROOT_NAME]"
 	generate_schroot_entry
-    } | tee -a "$SCHROOT_CONFFILE"
+    } | tee -a "$f"
     echo
 }
 
-- 
2.11.0.rc0.7.gbe5a750

--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux