From d0a8f9a8ff1e7185dc5bd7ebf88859f2fc520c77589e1b6c80c6cbe3e9327048 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sat, 29 May 2021 17:41:53 +0000 Subject: [PATCH] Accepting request 896081 from home:michals - Adjust to usermerge. On Tumbleweed /lib and /usr/lib are the same directory and the canonical location is in /usr. Document and read only /usr to prevent reading the same file twice. On earlier releases preserve compatibility for files placed in /lib and read both. + kmod-usrmerge.patch * Refresh usr-lib-modprobe.patch - Remove test patches included in release 29 - kmod-populate-modules-Use-more-bash-more-quotes.patch - kmod-testsuite-compress-modules-if-feature-is-enabled.patch - kmod-also-test-xz-compression.patch OBS-URL: https://build.opensuse.org/request/show/896081 OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=188 --- kmod-also-test-xz-compression.patch | 39 ------- ...te-modules-Use-more-bash-more-quotes.patch | 65 ----------- ...mpress-modules-if-feature-is-enabled.patch | 103 ------------------ kmod-testsuite.spec | 4 +- kmod-usrmerge.patch | 68 ++++++++++++ kmod.changes | 15 +++ kmod.spec | 6 + usr-lib-modprobe.patch | 86 ++++++++------- 8 files changed, 137 insertions(+), 249 deletions(-) delete mode 100644 kmod-also-test-xz-compression.patch delete mode 100644 kmod-populate-modules-Use-more-bash-more-quotes.patch delete mode 100644 kmod-testsuite-compress-modules-if-feature-is-enabled.patch create mode 100644 kmod-usrmerge.patch diff --git a/kmod-also-test-xz-compression.patch b/kmod-also-test-xz-compression.patch deleted file mode 100644 index da136ec..0000000 --- a/kmod-also-test-xz-compression.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 07aed32d80f306372e13701181cb827e6d0d7cff Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi -Date: Fri, 29 Jan 2021 18:36:00 -0800 -Subject: [PATCH 2/2] testsuite: also test xz compression - ---- - testsuite/populate-modules.sh | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh -index ae43884984b8..099f02669156 100755 ---- a/testsuite/populate-modules.sh -+++ b/testsuite/populate-modules.sh -@@ -72,6 +72,9 @@ map=( - - 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" - ) - -@@ -112,6 +115,12 @@ if feature_enabled ZLIB; then - 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 --- -2.26.2 - diff --git a/kmod-populate-modules-Use-more-bash-more-quotes.patch b/kmod-populate-modules-Use-more-bash-more-quotes.patch deleted file mode 100644 index 1ca7958..0000000 --- a/kmod-populate-modules-Use-more-bash-more-quotes.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 3cee67ddd75114f9557ab7e13ef1751c277d9bd3 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Wed, 25 Mar 2020 11:03:58 -0400 -Subject: [PATCH] populate-modules: Use more bash, more quotes - -We're already using associatives arrays, so there's no reason we should -be using 'test'. ---- - testsuite/populate-modules.sh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh -index 358e7405dcf8..b0cc932818e0 100755 ---- a/testsuite/populate-modules.sh -+++ b/testsuite/populate-modules.sh -@@ -85,15 +85,15 @@ attach_pkcs7_array=( - "test-modinfo/mod-simple-pkcs7.ko" - ) - --for k in ${!map[@]}; do -+for k in "${!map[@]}"; do - dst=${ROOTFS}/$k - src=${MODULE_PLAYGROUND}/${map[$k]} - -- if test "${dst: -1}" = "/"; then -- install -d $dst -- install -t $dst $src -+ if [[ $dst = */ ]]; then -+ install -d "$dst" -+ install -t "$dst" "$src" - else -- install -D $src $dst -+ install -D "$src" "$dst" - fi - done - -@@ -101,7 +101,7 @@ done - - # gzip these modules - for m in "${gzip_array[@]}"; do -- gzip $ROOTFS/$m -+ gzip "$ROOTFS/$m" - done - - # zstd-compress these modules -@@ -110,13 +110,13 @@ for m in "${zstd_array[@]}"; do - done - - for m in "${attach_sha1_array[@]}"; do -- cat ${MODULE_PLAYGROUND}/dummy.sha1 >> ${ROOTFS}/$m -+ cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m" - done - - for m in "${attach_sha256_array[@]}"; do -- cat ${MODULE_PLAYGROUND}/dummy.sha256 >> ${ROOTFS}/$m -+ cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m" - done - - for m in "${attach_pkcs7_array[@]}"; do -- cat ${MODULE_PLAYGROUND}/dummy.pkcs7 >> ${ROOTFS}/$m -+ cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m" - done --- -2.26.2 - diff --git a/kmod-testsuite-compress-modules-if-feature-is-enabled.patch b/kmod-testsuite-compress-modules-if-feature-is-enabled.patch deleted file mode 100644 index 12c4147..0000000 --- a/kmod-testsuite-compress-modules-if-feature-is-enabled.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 4be01b2fc8f44c35184138ee9e21f2bc146c9056 Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi -Date: Fri, 29 Jan 2021 18:35:59 -0800 -Subject: [PATCH 1/2] testsuite: compress modules if feature is enabled -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Since the output needs to be the same, regardless if the module is -compressed, change populate-modules.sh to conditionally compress the -module if that feature is enabled. - -This way we can execute the tests with any build-time configuration and -it should still pass. - -Suggested-by: Michal Suchánek ---- - Makefile.am | 2 +- - testsuite/populate-modules.sh | 27 ++++++++++++++++++--------- - testsuite/test-depmod.c | 2 -- - 3 files changed, 19 insertions(+), 12 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 702a665f0334..8c79349f1eb9 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -250,7 +250,7 @@ CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && mkdir -p $(dir $(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) ) && \ -+ $(MODULE_PLAYGROUND) $(ROOTFS) $(top_builddir)/config.h ) && \ - touch testsuite/stamp-rootfs - - build-module-playground: -diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh -index b0cc932818e0..ae43884984b8 100755 ---- a/testsuite/populate-modules.sh -+++ b/testsuite/populate-modules.sh -@@ -4,6 +4,12 @@ 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=( -@@ -99,15 +105,18 @@ done - - # start poking the final rootfs... - --# gzip these modules --for m in "${gzip_array[@]}"; do -- gzip "$ROOTFS/$m" --done -- --# zstd-compress these modules --for m in "${zstd_array[@]}"; do -- zstd --rm $ROOTFS/$m --done -+# 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 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" -diff --git a/testsuite/test-depmod.c b/testsuite/test-depmod.c -index 261559cab89b..d7802d7b2e0b 100644 ---- a/testsuite/test-depmod.c -+++ b/testsuite/test-depmod.c -@@ -25,7 +25,6 @@ - - #include "testsuite.h" - --#ifdef ENABLE_ZLIB - #define MODULES_ORDER_UNAME "4.4.4" - #define MODULES_ORDER_ROOTFS TESTSUITE_ROOTFS "test-depmod/modules-order-compressed" - #define MODULES_ORDER_LIB_MODULES MODULES_ORDER_ROOTFS "/lib/modules/" MODULES_ORDER_UNAME -@@ -57,7 +56,6 @@ DEFINE_TEST(depmod_modules_order_for_compressed, - { } - }, - }); --#endif - - #define SEARCH_ORDER_SIMPLE_ROOTFS TESTSUITE_ROOTFS "test-depmod/search-order-simple" - static noreturn int depmod_search_order_simple(const struct test *t) --- -2.26.2 - diff --git a/kmod-testsuite.spec b/kmod-testsuite.spec index 7153fe3..b62c8ad 100644 --- a/kmod-testsuite.spec +++ b/kmod-testsuite.spec @@ -37,9 +37,7 @@ Patch5: 0011-Do-not-filter-unsupported-modules-when-running-a-van.patch Patch6: 0012-modprobe-print-unsupported-status.patch Patch7: usr-lib-modprobe.patch Patch8: no-stylesheet-download.patch -Patch10: kmod-populate-modules-Use-more-bash-more-quotes.patch -Patch11: kmod-testsuite-compress-modules-if-feature-is-enabled.patch -Patch12: kmod-also-test-xz-compression.patch +Patch9: kmod-usrmerge.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: docbook5-xsl-stylesheets diff --git a/kmod-usrmerge.patch b/kmod-usrmerge.patch new file mode 100644 index 0000000..026b845 --- /dev/null +++ b/kmod-usrmerge.patch @@ -0,0 +1,68 @@ +From 6572069f71045f304780cb63a5a090a275fc22dd Mon Sep 17 00:00:00 2001 +From: Michal Suchanek +Date: Sat, 29 May 2021 08:10:36 +0200 +Subject: [PATCH] modprobe.d, depmod.d: Only read from /usr/lib, not /lib. + +With usrmerge /lib is linked to /usr/lib and the modprobe.d files would +be interpreted twice. It is possible to write non-idempotent modprobe.d +files leading to weird errors. + +Signed-off-by: Michal Suchanek +--- + libkmod/libkmod.c | 1 - + man/depmod.d.xml | 1 - + man/modprobe.d.xml | 1 - + tools/depmod.c | 1 - + 4 files changed, 4 deletions(-) + +diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c +index ddf13fb3d822..262f5d1512c9 100644 +--- a/libkmod/libkmod.c ++++ b/libkmod/libkmod.c +@@ -66,7 +66,6 @@ static const char *default_config_paths[] = { + "/run/modprobe.d", + "/usr/local/lib/modprobe.d", + PREFIX "/lib/modprobe.d", +- "/lib/modprobe.d", + NULL + }; + +diff --git a/man/depmod.d.xml b/man/depmod.d.xml +index 8a898cf4a9eb..b315e931d635 100644 +--- a/man/depmod.d.xml ++++ b/man/depmod.d.xml +@@ -39,7 +39,6 @@ + + + +- /lib/depmod.d/*.conf + /usr/lib/depmod.d/*.conf + /usr/local/lib/depmod.d/*.conf + /run/depmod.d/*.conf +diff --git a/man/modprobe.d.xml b/man/modprobe.d.xml +index 8a7c696dcee1..08d789176dd3 100644 +--- a/man/modprobe.d.xml ++++ b/man/modprobe.d.xml +@@ -40,7 +40,6 @@ + + + +- /lib/modprobe.d/*.conf + /usr/lib/modprobe.d/*.conf + /usr/local/lib/modprobe.d/*.conf + /run/modprobe.d/*.conf +diff --git a/tools/depmod.c b/tools/depmod.c +index 8f6a4f8cd7cb..3a4708316581 100644 +--- a/tools/depmod.c ++++ b/tools/depmod.c +@@ -55,7 +55,6 @@ static const char *default_cfg_paths[] = { + "/run/depmod.d", + "/usr/local/lib/depmod.d", + PREFIX "/lib/depmod.d", +- "/lib/depmod.d", + NULL + }; + +-- +2.26.2 + diff --git a/kmod.changes b/kmod.changes index be03e23..358ceb8 100644 --- a/kmod.changes +++ b/kmod.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Sat May 29 09:58:09 UTC 2021 - Michal Suchanek + +- Adjust to usermerge. On Tumbleweed /lib and /usr/lib are the same directory + and the canonical location is in /usr. Document and read only /usr to prevent + reading the same file twice. + On earlier releases preserve compatibility for files placed in /lib and read + both. + + kmod-usrmerge.patch + * Refresh usr-lib-modprobe.patch +- Remove test patches included in release 29 + - kmod-populate-modules-Use-more-bash-more-quotes.patch + - kmod-testsuite-compress-modules-if-feature-is-enabled.patch + - kmod-also-test-xz-compression.patch + ------------------------------------------------------------------- Thu May 27 22:20:42 UTC 2021 - Jan Engelhardt diff --git a/kmod.spec b/kmod.spec index d14b9cd..b89ba1b 100644 --- a/kmod.spec +++ b/kmod.spec @@ -37,6 +37,7 @@ Patch5: 0011-Do-not-filter-unsupported-modules-when-running-a-van.patch Patch6: 0012-modprobe-print-unsupported-status.patch Patch7: usr-lib-modprobe.patch Patch8: no-stylesheet-download.patch +Patch9: kmod-usrmerge.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: docbook5-xsl-stylesheets @@ -100,6 +101,11 @@ in %lname. %prep %autosetup -p1 +# When not on tumbleweed read both /lib and /usr/lib +# on Tumbleweed /lib and /usr/lib are the same - don't apply files twice +%if 0%{?suse_version} <= 1500 +%patch9 -p1 -R +%endif %build autoreconf -fi diff --git a/usr-lib-modprobe.patch b/usr-lib-modprobe.patch index 4d2a70b..ed5746b 100644 --- a/usr-lib-modprobe.patch +++ b/usr-lib-modprobe.patch @@ -1,6 +1,10 @@ +From fc1b2c14e2ca4d7ccd4a3b75a435ab7d927533bc Mon Sep 17 00:00:00 2001 From: Michal Suchanek Date: Tue, 12 Jan 2021 16:54:46 +0100 -Subject: [PATCH] modprobe.d: load from /usr/lib. +Subject: [PATCH] modprobe.d, depmod.d: load from /usr/lib. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit There is an ongoing effort to limit use of files outside of /usr (or $prefix on general). Currently all modprobe.d paths are hardcoded to @@ -10,26 +14,18 @@ Cc: Marcus Rückert Cc: Takashi Iwai Cc: Dominique Leuenberger Signed-off-by: Michal Suchanek - -From: Jan Engelhardt -Date: 2021-05-28 00:17:47.552369139 +0200 - -If you make the build flexible and allow varying values for ``--sysconfdir``, -then permit the same for ``--prefix``. - -An obvious side effect is that with little change, the unnecessary hard -dependency on merged /usr goes away. --- - Makefile.am | 1 + - libkmod/libkmod.c | 2 +- - man/modprobe.d.xml | 2 +- - tools/depmod.c | 2 +- - 4 files changed, 4 insertions(+), 3 deletions(-) + Makefile.am | 1 + + libkmod/libkmod.c | 1 + + man/depmod.d.xml | 1 + + man/modprobe.d.xml | 1 + + tools/depmod.c | 1 + + 5 files changed, 5 insertions(+) -Index: kmod-29/Makefile.am -=================================================================== ---- kmod-29.orig/Makefile.am -+++ kmod-29/Makefile.am +diff --git a/Makefile.am b/Makefile.am +index d859c240178f..8553368988c0 100644 +--- a/Makefile.am ++++ b/Makefile.am @@ -19,6 +19,7 @@ AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ -I$(top_srcdir) \ @@ -38,42 +34,54 @@ Index: kmod-29/Makefile.am ${zlib_CFLAGS} AM_CFLAGS = $(OUR_CFLAGS) -Index: kmod-29/libkmod/libkmod.c -=================================================================== ---- kmod-29.orig/libkmod/libkmod.c -+++ kmod-29/libkmod/libkmod.c -@@ -65,7 +65,7 @@ static const char *default_config_paths[ +diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c +index 7c2b889d713e..ddf13fb3d822 100644 +--- a/libkmod/libkmod.c ++++ b/libkmod/libkmod.c +@@ -65,6 +65,7 @@ static const char *default_config_paths[] = { SYSCONFDIR "/modprobe.d", "/run/modprobe.d", "/usr/local/lib/modprobe.d", -- "/lib/modprobe.d", + PREFIX "/lib/modprobe.d", + "/lib/modprobe.d", NULL }; - -Index: kmod-29/man/modprobe.d.xml -=================================================================== ---- kmod-29.orig/man/modprobe.d.xml -+++ kmod-29/man/modprobe.d.xml -@@ -40,7 +40,7 @@ +diff --git a/man/depmod.d.xml b/man/depmod.d.xml +index b315e931d635..8a898cf4a9eb 100644 +--- a/man/depmod.d.xml ++++ b/man/depmod.d.xml +@@ -39,6 +39,7 @@ -- /lib/modprobe.d/*.conf ++ /lib/depmod.d/*.conf + /usr/lib/depmod.d/*.conf + /usr/local/lib/depmod.d/*.conf + /run/depmod.d/*.conf +diff --git a/man/modprobe.d.xml b/man/modprobe.d.xml +index 0ab3e9110a7e..8a7c696dcee1 100644 +--- a/man/modprobe.d.xml ++++ b/man/modprobe.d.xml +@@ -41,6 +41,7 @@ + + + /lib/modprobe.d/*.conf + /usr/lib/modprobe.d/*.conf /usr/local/lib/modprobe.d/*.conf /run/modprobe.d/*.conf /etc/modprobe.d/*.conf -Index: kmod-29/tools/depmod.c -=================================================================== ---- kmod-29.orig/tools/depmod.c -+++ kmod-29/tools/depmod.c -@@ -54,7 +54,7 @@ static const char *default_cfg_paths[] = +diff --git a/tools/depmod.c b/tools/depmod.c +index eb810b811e35..8f6a4f8cd7cb 100644 +--- a/tools/depmod.c ++++ b/tools/depmod.c +@@ -54,6 +54,7 @@ static const char *default_cfg_paths[] = { SYSCONFDIR "/depmod.d", "/run/depmod.d", "/usr/local/lib/depmod.d", -- "/lib/depmod.d", + PREFIX "/lib/depmod.d", + "/lib/depmod.d", NULL }; - +-- +2.26.2 +