From 184a070733c0055a9cad15fcad57a264910a64ff Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Thu, 9 Feb 2023 11:19:45 -0800 Subject: testsuite: Move setup-rootfs logic from Makefile to script It's easier to implement the logic outside of the Makefile, so rename the populate-modules.sh script to setup-rootfs.sh and move the additional logic from the makefile to the script. Signed-off-by: Lucas De Marchi Reviewed-by: Emil Velikov --- Makefile.am | 10 +-- testsuite/populate-modules.sh | 145 -------------------------------------- testsuite/setup-rootfs.sh | 160 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 153 deletions(-) delete mode 100755 testsuite/populate-modules.sh create mode 100755 testsuite/setup-rootfs.sh diff --git a/Makefile.am b/Makefile.am index b0a654c..021b315 100644 --- a/Makefile.am +++ b/Makefile.am @@ -239,18 +239,12 @@ endif # TESTSUITE # ------------------------------------------------------------------------------ -EXTRA_DIST += testsuite/populate-modules.sh +EXTRA_DIST += testsuite/setup-rootfs.sh MODULE_PLAYGROUND = testsuite/module-playground ROOTFS = testsuite/rootfs ROOTFS_PRISTINE = $(top_srcdir)/testsuite/rootfs-pristine -CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && mkdir -p $(dir $(ROOTFS)) && \ - cp -r $(ROOTFS_PRISTINE) $(ROOTFS) && \ - find $(ROOTFS) -type d -exec chmod +w {} \; && \ - find $(ROOTFS) -type f -name .gitignore -exec rm -f {} \; && \ - $(top_srcdir)/testsuite/populate-modules.sh \ - $(MODULE_PLAYGROUND) $(ROOTFS) $(top_builddir)/config.h ) && \ - touch testsuite/stamp-rootfs +CREATE_ROOTFS = $(AM_V_GEN) $(top_srcdir)/testsuite/setup-rootfs.sh $(ROOTFS_PRISTINE) $(ROOTFS) $(MODULE_PLAYGROUND) $(top_builddir)/config.h build-module-playground: $(AM_V_GEN)if test "$(top_srcdir)" != "$(top_builddir)"; then \ diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh deleted file mode 100755 index 5009cac..0000000 --- a/testsuite/populate-modules.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/bash - -set -e - -MODULE_PLAYGROUND=$1 -ROOTFS=$2 -CONFIG_H=$3 - -feature_enabled() { - local feature=$1 - grep KMOD_FEATURES $CONFIG_H | head -n 1 | grep -q \+$feature -} - -declare -A map -map=( - ["test-depmod/search-order-simple/lib/modules/4.4.4/kernel/crypto/"]="mod-simple.ko" - ["test-depmod/search-order-simple/lib/modules/4.4.4/updates/"]="mod-simple.ko" - ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foo/"]="mod-simple.ko" - ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foobar/"]="mod-simple.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko" - ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko" - ["test-depmod/search-order-external-first/lib/modules/4.4.4/foo/"]="mod-simple.ko" - ["test-depmod/search-order-external-first/lib/modules/4.4.4/foobar/"]="mod-simple.ko" - ["test-depmod/search-order-external-first/lib/modules/external/"]="mod-simple.ko" - ["test-depmod/search-order-external-last/lib/modules/4.4.4/foo/"]="mod-simple.ko" - ["test-depmod/search-order-external-last/lib/modules/4.4.4/foobar/"]="mod-simple.ko" - ["test-depmod/search-order-external-last/lib/modules/external/"]="mod-simple.ko" - ["test-depmod/search-order-override/lib/modules/4.4.4/foo/"]="mod-simple.ko" - ["test-depmod/search-order-override/lib/modules/4.4.4/override/"]="mod-simple.ko" - ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko" - ["test-dependencies/lib/modules/4.0.20-kmod/kernel/"]="mod-foo-c.ko" - ["test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko" - ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/"]="mod-foo.ko" - ["test-init/"]="mod-simple.ko" - ["test-remove/"]="mod-simple.ko" - ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" - ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" - ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-simple.ko"]="mod-simple.ko" - ["test-modprobe/show-exports/mod-loop-a.ko"]="mod-loop-a.ko" - ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" - ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" - ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" - ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" - ["test-modprobe/force/lib/modules/4.4.4/kernel/"]="mod-simple.ko" - ["test-modprobe/oldkernel/lib/modules/3.3.3/kernel/"]="mod-simple.ko" - ["test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/"]="mod-simple.ko" - ["test-modprobe/alias-to-none/lib/modules/4.4.4/kernel/"]="mod-simple.ko" - ["test-modprobe/module-param-kcmdline/lib/modules/4.4.4/kernel/"]="mod-simple.ko" - ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko" - ["test-modprobe/module-from-abspath/home/foo/"]="mod-simple.ko" - ["test-modprobe/module-from-relpath/home/foo/"]="mod-simple.ko" - ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" - ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" - ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" - ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" - ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" - ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" - ["test-modinfo/mod-simple-i386.ko"]="mod-simple-i386.ko" - ["test-modinfo/mod-simple-x86_64.ko"]="mod-simple-x86_64.ko" - ["test-modinfo/mod-simple-sparc64.ko"]="mod-simple-sparc64.ko" - ["test-modinfo/mod-simple-sha1.ko"]="mod-simple.ko" - ["test-modinfo/mod-simple-sha256.ko"]="mod-simple.ko" - ["test-modinfo/mod-simple-pkcs7.ko"]="mod-simple.ko" - ["test-modinfo/external/lib/modules/external/mod-simple.ko"]="mod-simple.ko" - ["test-tools/insert/lib/modules/4.4.4/kernel/"]="mod-simple.ko" - ["test-tools/remove/lib/modules/4.4.4/kernel/"]="mod-simple.ko" -) - -gzip_array=( - "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko" - ) - -xz_array=( - "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko" - ) - -zstd_array=( - "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko" - ) - -attach_sha256_array=( - "test-modinfo/mod-simple-sha256.ko" - ) - -attach_sha1_array=( - "test-modinfo/mod-simple-sha1.ko" - ) - -attach_pkcs7_array=( - "test-modinfo/mod-simple-pkcs7.ko" - ) - -for k in "${!map[@]}"; do - dst=${ROOTFS}/$k - src=${MODULE_PLAYGROUND}/${map[$k]} - - if [[ $dst = */ ]]; then - install -d "$dst" - install -t "$dst" "$src" - else - install -D "$src" "$dst" - fi -done - -# start poking the final rootfs... - -# compress modules with each format if feature is enabled -if feature_enabled ZLIB; then - for m in "${gzip_array[@]}"; do - gzip "$ROOTFS/$m" - done -fi - -if feature_enabled XZ; then - for m in "${xz_array[@]}"; do - xz "$ROOTFS/$m" - done -fi - -if feature_enabled ZSTD; then - for m in "${zstd_array[@]}"; do - zstd --rm $ROOTFS/$m - done -fi - -for m in "${attach_sha1_array[@]}"; do - cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m" -done - -for m in "${attach_sha256_array[@]}"; do - cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m" -done - -for m in "${attach_pkcs7_array[@]}"; do - cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m" -done diff --git a/testsuite/setup-rootfs.sh b/testsuite/setup-rootfs.sh new file mode 100755 index 0000000..d155a30 --- /dev/null +++ b/testsuite/setup-rootfs.sh @@ -0,0 +1,160 @@ +#!/bin/bash + +set -e + +ROOTFS_PRISTINE=$1 +ROOTFS=$2 +MODULE_PLAYGROUND=$3 +CONFIG_H=$4 + +# create rootfs from rootfs-pristine + +create_rootfs() { + rm -rf "$ROOTFS" + mkdir -p $(dirname "$ROOTFS") + cp -r "$ROOTFS_PRISTINE" "$ROOTFS" + find "$ROOTFS" -type d -exec chmod +w {} \; + find "$ROOTFS" -type f -name .gitignore -exec rm -f {} \; +} + +feature_enabled() { + local feature=$1 + grep KMOD_FEATURES $CONFIG_H | head -n 1 | grep -q \+$feature +} + +declare -A map +map=( + ["test-depmod/search-order-simple/lib/modules/4.4.4/kernel/crypto/"]="mod-simple.ko" + ["test-depmod/search-order-simple/lib/modules/4.4.4/updates/"]="mod-simple.ko" + ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foo/"]="mod-simple.ko" + ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foobar/"]="mod-simple.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko" + ["test-depmod/search-order-external-first/lib/modules/4.4.4/foo/"]="mod-simple.ko" + ["test-depmod/search-order-external-first/lib/modules/4.4.4/foobar/"]="mod-simple.ko" + ["test-depmod/search-order-external-first/lib/modules/external/"]="mod-simple.ko" + ["test-depmod/search-order-external-last/lib/modules/4.4.4/foo/"]="mod-simple.ko" + ["test-depmod/search-order-external-last/lib/modules/4.4.4/foobar/"]="mod-simple.ko" + ["test-depmod/search-order-external-last/lib/modules/external/"]="mod-simple.ko" + ["test-depmod/search-order-override/lib/modules/4.4.4/foo/"]="mod-simple.ko" + ["test-depmod/search-order-override/lib/modules/4.4.4/override/"]="mod-simple.ko" + ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko" + ["test-dependencies/lib/modules/4.0.20-kmod/kernel/"]="mod-foo-c.ko" + ["test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko" + ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/"]="mod-foo.ko" + ["test-init/"]="mod-simple.ko" + ["test-remove/"]="mod-simple.ko" + ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" + ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-simple.ko"]="mod-simple.ko" + ["test-modprobe/show-exports/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" + ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" + ["test-modprobe/force/lib/modules/4.4.4/kernel/"]="mod-simple.ko" + ["test-modprobe/oldkernel/lib/modules/3.3.3/kernel/"]="mod-simple.ko" + ["test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/"]="mod-simple.ko" + ["test-modprobe/alias-to-none/lib/modules/4.4.4/kernel/"]="mod-simple.ko" + ["test-modprobe/module-param-kcmdline/lib/modules/4.4.4/kernel/"]="mod-simple.ko" + ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko" + ["test-modprobe/module-from-abspath/home/foo/"]="mod-simple.ko" + ["test-modprobe/module-from-relpath/home/foo/"]="mod-simple.ko" + ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" + ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" + ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" + ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" + ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" + ["test-depmod/modules-outdir/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" + ["test-modinfo/mod-simple-i386.ko"]="mod-simple-i386.ko" + ["test-modinfo/mod-simple-x86_64.ko"]="mod-simple-x86_64.ko" + ["test-modinfo/mod-simple-sparc64.ko"]="mod-simple-sparc64.ko" + ["test-modinfo/mod-simple-sha1.ko"]="mod-simple.ko" + ["test-modinfo/mod-simple-sha256.ko"]="mod-simple.ko" + ["test-modinfo/mod-simple-pkcs7.ko"]="mod-simple.ko" + ["test-modinfo/external/lib/modules/external/mod-simple.ko"]="mod-simple.ko" + ["test-tools/insert/lib/modules/4.4.4/kernel/"]="mod-simple.ko" + ["test-tools/remove/lib/modules/4.4.4/kernel/"]="mod-simple.ko" +) + +gzip_array=( + "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko" + ) + +xz_array=( + "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko" + ) + +zstd_array=( + "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko" + ) + +attach_sha256_array=( + "test-modinfo/mod-simple-sha256.ko" + ) + +attach_sha1_array=( + "test-modinfo/mod-simple-sha1.ko" + ) + +attach_pkcs7_array=( + "test-modinfo/mod-simple-pkcs7.ko" + ) + +create_rootfs + +for k in "${!map[@]}"; do + dst=${ROOTFS}/$k + src=${MODULE_PLAYGROUND}/${map[$k]} + + if [[ $dst = */ ]]; then + install -d "$dst" + install -t "$dst" "$src" + else + install -D "$src" "$dst" + fi +done + +# start poking the final rootfs... + +# compress modules with each format if feature is enabled +if feature_enabled ZLIB; then + for m in "${gzip_array[@]}"; do + gzip "$ROOTFS/$m" + done +fi + +if feature_enabled XZ; then + for m in "${xz_array[@]}"; do + xz "$ROOTFS/$m" + done +fi + +if feature_enabled ZSTD; then + for m in "${zstd_array[@]}"; do + zstd --rm $ROOTFS/$m + done +fi + +for m in "${attach_sha1_array[@]}"; do + cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m" +done + +for m in "${attach_sha256_array[@]}"; do + cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m" +done + +for m in "${attach_pkcs7_array[@]}"; do + cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m" +done + +touch testsuite/stamp-rootfs -- cgit v1.2.1