Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package suse-module-tools for
openSUSE:Factory checked in at 2021-07-04 22:10:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suse-module-tools (Old)
and /work/SRC/openSUSE:Factory/.suse-module-tools.new.2625 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "suse-module-tools"
Sun Jul 4 22:10:39 2021 rev:43 rq:903663 version:16.0.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/suse-module-tools/suse-module-tools.changes
2021-06-21 20:35:15.218596255 +0200
+++
/work/SRC/openSUSE:Factory/.suse-module-tools.new.2625/suse-module-tools.changes
2021-07-04 22:10:42.237247123 +0200
@@ -1,0 +2,13 @@
+Thu Jul 1 21:03:49 UTC 2021 - Martin Wilck <[email protected]>
+
+- Update to version 16.0.5
+ * moved config files to /usr/lib/modprobe.d and /usr/lib/depmod.d
+ * "modprobe $FS" for a blacklisted file system now offers to
+ unblacklist the module permanently
+ * disabled automatic un-blacklisting of filesystem modules loaded
+ at installation time
+ * added faster substitute for lsinitrd to speed up weak-modules2
+ * added README.md
+ * modprobe.conf cleanup
+
+-------------------------------------------------------------------
Old:
----
suse-module-tools-16.0.4.obscpio
New:
----
suse-module-tools-16.0.5.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ suse-module-tools.spec ++++++
--- /var/tmp/diff_new_pack.PFjzrV/_old 2021-07-04 22:10:43.077240626 +0200
+++ /var/tmp/diff_new_pack.PFjzrV/_new 2021-07-04 22:10:43.077240626 +0200
@@ -15,20 +15,30 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+# missing in SLE15 (systemd-rpm-macros)
+%{!?_modulesloaddir: %global _modulesloaddir /usr/lib/modules-load.d}
-# Define _rpmmacrodir if it's not defined yet
-%{!?_rpmmacrodir: %global _rpmmacrodir %{_rpmconfigdir}/macros.d}
-%define modules_load_dir /usr/lib/modules-load.d
+# Location for modprobe and depmod .conf files
+#
+# This assumes post-usr-merge (20210527) for Tumbleweed
+%if 0%{?suse_version} >= 1550
+%global modprobe_dir /usr/lib/modprobe.d
+%global depmod_dir /usr/lib/depmod.d
+%else
+%global modprobe_dir /lib/modprobe.d
+%global depmod_dir /lib/depmod.d
+%endif
# List of legacy file systems to be blacklisted by default
%global fs_blacklist adfs affs bfs befs cramfs efs erofs exofs freevxfs hfs
hpfs jfs minix nilfs2 ntfs omfs qnx4 qnx6 sysv ufs
-%if 0%{?sle_version} >= 120200 && 0%{?sle_version} < 150000
-%global softdep_br_netfilter 1
-%endif
+# List of all files installed under modprobe.d
+# Note: this list contains files installed by previous versions, like
00-system-937216.conf!
+%global modprobe_conf_files 00-system 00-system-937216 10-unsupported-modules
50-blacklist 60-blacklist_fs-* 99-local
+%global modprobe_conf_rpmsave %(echo "%{modprobe_conf_files}" | sed 's,\\([^
]*\\),%{_sysconfdir}/modprobe.d/\\1.conf.rpmsave,g')
Name: suse-module-tools
-Version: 16.0.4
+Version: 16.0.5
Release: 0
Summary: Configuration for module loading and SUSE-specific utilities
for KMPs
License: GPL-2.0-or-later
@@ -41,6 +51,7 @@
Requires: /usr/bin/sed
Requires: coreutils
Requires: findutils
+Requires: systemd-rpm-macros
Requires: rpm
Requires(post): /usr/bin/grep
Requires(post): /usr/bin/sed
@@ -52,6 +63,10 @@
Recommends: kmod
# This release requires the dracut module 90nvdimm
Conflicts: dracut < 49.1
+# TW: conflict with pre-usrmerge
+%if 0%{?suse_version} >= 1550
+Conflicts: filesystem < 15.5-40.2
+%endif
%description
This package contains helper scripts for KMP installation and
@@ -76,6 +91,7 @@
%setup -q
%build
+sed -i 's/@FS_BLACKLIST@.*/%{fs_blacklist}/' README.md
%install
# now assemble the parts for modprobe.conf
@@ -86,27 +102,23 @@
if [ -f "modprobe.conf/modprobe.conf.$RPM_ARCH" ]; then
cat "modprobe.conf/modprobe.conf.$RPM_ARCH" >>00-system.conf
fi
+install -d -m 755 "%{buildroot}%{modprobe_dir}"
install -d -m 755 "%{buildroot}%{_sysconfdir}/modprobe.d"
install -pm644 "10-unsupported-modules.conf" \
- "%{buildroot}%{_sysconfdir}/modprobe.d/"
-install -pm644 00-system.conf "%{buildroot}%{_sysconfdir}/modprobe.d/"
+ "%{buildroot}%{modprobe_dir}/"
+install -pm644 00-system.conf "%{buildroot}%{modprobe_dir}/"
-%if 0%{?softdep_br_netfilter}
-# softdep bridge->br_netfilter, SLE only
-install -pm644 modprobe.conf/00-system-937216.conf
%{buildroot}%{_sysconfdir}/modprobe.d
-%endif
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-install -pm644 modprobe.conf/modprobe.conf.blacklist
"%{buildroot}%{_sysconfdir}/modprobe.d/50-blacklist.conf"
+install -pm644 modprobe.conf/modprobe.conf.blacklist
"%{buildroot}%{modprobe_dir}/50-blacklist.conf"
%endif
-install -pm644 modprobe.conf/modprobe.conf.local
"%{buildroot}%{_sysconfdir}/modprobe.d/99-local.conf"
+install -d -m 755 "%{buildroot}/%{depmod_dir}"
install -d -m 755 "%{buildroot}%{_sysconfdir}/depmod.d"
-install -pm 644 "depmod-00-system.conf" \
- "%{buildroot}%{_sysconfdir}/depmod.d/00-system.conf"
+install -pm 644 "depmod-00-system.conf"
"%{buildroot}%{depmod_dir}/00-system.conf"
# "/usr/lib/module-init-tools" name hardcoded in KMPs, mkinitrd, etc.
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools"
-install -pm 755 weak-modules{,2} "%{buildroot}/usr/lib/module-init-tools/"
-install -pm 755 driver-check.sh "%{buildroot}/usr/lib/module-init-tools/"
+install -pm 755 -t "%{buildroot}/usr/lib/module-init-tools/" \
+ weak-modules{,2} driver-check.sh unblacklist lsinitrd-quick
%if 0%{?suse_version} < 1550
# rpm macros and helper
@@ -126,8 +138,8 @@
# Ensure that the sg driver is loaded early (bsc#1036463)
# Not needed in SLE11, where sg is loaded via udev rule.
-install -d -m 755 "%{buildroot}%{modules_load_dir}"
-install -pm 644 sg.conf "%{buildroot}%{modules_load_dir}"
+install -d -m 755 "%{buildroot}%{_modulesloaddir}"
+install -pm 644 sg.conf "%{buildroot}%{_modulesloaddir}"
%ifarch ppc64 ppc64le
install -d -m 755 %{buildroot}/usr/lib/systemd/system-generators
install -m 755 udev-trigger-generator
%{buildroot}/usr/lib/systemd/system-generators
@@ -138,131 +150,58 @@
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
for mod in %{fs_blacklist}; do
echo "\
+# DO NOT EDIT THIS FILE!
+#
# The $mod file system is blacklisted by default because it isn't actively
# supported by SUSE, not well maintained, or may have security vulnerabilites.
-# To enable autoloading the $mod file system module, comment out the
-# \"blacklist $mod\" statement below. ENABLE AT YOUR OWN RISK.
-#
-# File system modules loaded at installation time of the %{name} package
-# are not blacklisted. This is achieved by commenting out the blacklist
-# line in the post-installation script. To prevent the post-installation
-# script from modifying this file, delete the line containing \"THIS FILE MAY
-# BE MODIFIED\" at the bottom.
blacklist $mod
-# __THIS FILE MAY BE MODIFIED__" \
- >%{buildroot}%{_sysconfdir}/modprobe.d/60-blacklist_fs-"$mod".conf
+# The filesystem can be un-blacklisted by running \"modprobe $mod\".
+# See README.md in the %{name} package for details.
+install $mod /usr/lib/module-init-tools/unblacklist $mod; /sbin/modprobe
--ignore-install $mod
+" \
+ >%{buildroot}%{modprobe_dir}/60-blacklist_fs-"$mod".conf
done
%endif
%post
-%if 0%{?sle_version} >= 150000
-# Delete obsolete unsupported-modules file from SLE11
-rm -f %{_sysconfdir}/modprobe.d/unsupported-modules
-%else
-# Logic for releases below CODE 15
-%if 0%{?is_opensuse} == 1
-allowed=1
-%else
-allowed=0
-%endif
-test_allow_on_install()
-{
- # configure handling of unsupported modules
- # default is to allow them
- allow=1
- # if the obsolete LOAD_UNSUPPORTED_MODULES_AUTOMATICALLY variable is
- # set to no, don't allow (this was used in SLES 9 and 10)
- if test -e %{_sysconfdir}/sysconfig/hardware/config; then
- . %{_sysconfdir}/sysconfig/hardware/config
- if test "x$LOAD_UNSUPPORTED_MODULES_AUTOMATICALLY" = "xno"; then
- allow=0
- fi
- # obsolete
- rm %{_sysconfdir}/sysconfig/hardware/config
- fi
- # don't change the setting during upgrade
- if test "$1" != 1; then
- allow=
- return
- fi
- # on SLES, the default is not to allow unsupported modules
- if grep -qs "Enterprise Server" %{_sysconfdir}/os-release; then
- allow=0
- else
- return
- fi
- # unless the admin passed "oem-modules=1" to the kernel during install
- if grep -qs '\<oem-modules=1\>' /proc/cmdline; then
- allow=1
- return
- fi
- # or if the installer already loaded some unsupported modules
- # (see TAINT_NO_SUPPORT in /etc/src/linux/include/linux/kernel.h)
- tainted=$(cat /proc/sys/kernel/tainted 2>/dev/null || echo 0)
- if test $((tainted & (1<<30))) != 0; then
- allow=1
- return
- fi
-}
-# upgrade from old locations
-if test -e %{_sysconfdir}/modprobe.d/unsupported-modules; then
- mv -f %{_sysconfdir}/modprobe.d/unsupported-modules \
- %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-fi
-test_allow_on_install "$@"
-if test -n "$allow" -a "$allow" != "$allowed"; then
- sed -ri 's/^( *allow_unsupported_modules *) [01]/\1 '"$allow"'/' \
- %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-fi
-%endif
+exit 0
-# upgrade from old locations
-if test -e %{_sysconfdir}/modprobe.conf.local; then
- mv -f %{_sysconfdir}/modprobe.conf.local \
- %{_sysconfdir}/modprobe.d/99-local.conf
+%pre
+# Avoid restoring old .rpmsave files in %posttrans
+for f in %{modprobe_conf_rpmsave}; do
+ if [ -f ${f} ]; then
+ mv -f ${f} ${f}.%{name}
+ fi
+done
+if [ -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave ]; then
+ mv -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave \
+ %{_sysconfdir}/depmod.d/00-system.conf.rpmsave.%{name}
fi
+exit 0
-# Avoid systems becoming unbootable by blacklisting filesystem
-# modules. Modules loaded at installation time will not be
-# blacklisted (the blacklist statement is commented out).
-# config(noreplace) makes sure that this is not overwritten by rpm.
-%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-for mod in %{fs_blacklist}; do
- conf=%{_sysconfdir}/modprobe.d/60-blacklist_fs-"$mod".conf
- if [ -f "$conf" ] && \
- grep -q '^# __THIS FILE MAY BE MODIFIED__$' "$conf" && \
- sed '/^nodev/d;' /proc/filesystems | grep -q "\<$mod\>"; then
- sed -i '
-/^# next line was commented out by postinstall script of %{name}$/d
-/^blacklist '"$mod"'/{i\
-# next line was commented out by postinstall script of %{name}
-s/^/# /
-}' "$conf"
+%posttrans
+# If the user had modified any of the configuration files installed under
+# /etc, they'll now be renamed to .rpmsave files. Restore them.
+for f in %{modprobe_conf_rpmsave}; do
+ if [ -f ${f} ]; then
+ mv -fv ${f} ${f%.rpmsave}
fi
done
-%endif
+if [ -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave ]; then
+ mv -fv %{_sysconfdir}/depmod.d/00-system.conf.rpmsave \
+ %{_sysconfdir}/depmod.d/00-system.conf
+fi
+exit 0
%files
%defattr(-,root,root)
-%if 0%{?sle_version:%{sle_version}}%{!?sle_version:150000} <= 120200
-%dir %{_defaultlicensedir}
-%endif
%license LICENSE
-%doc README.SUSE
+%doc README.md
+%{modprobe_dir}
%dir %{_sysconfdir}/modprobe.d
-%config %{_sysconfdir}/modprobe.d/00-system.conf
-%if 0%{?softdep_br_netfilter}
-%config(noreplace) %{_sysconfdir}/modprobe.d/00-system-937216.conf
-%endif
-%config(noreplace) %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-%config(noreplace) %{_sysconfdir}/modprobe.d/50-blacklist.conf
-%config(noreplace) %{_sysconfdir}/modprobe.d/60-blacklist_fs-*.conf
-%endif
-%config(noreplace) %{_sysconfdir}/modprobe.d/99-local.conf
+%{depmod_dir}
%dir %{_sysconfdir}/depmod.d
-%config %{_sysconfdir}/depmod.d/00-system.conf
%if 0%{?suse_version} < 1550
%{_rpmmacrodir}/macros.initrd
%endif
@@ -270,8 +209,7 @@
/usr/lib/module-init-tools
%exclude /usr/lib/module-init-tools/weak-modules
%{_unitdir}/systemd-sysctl.service.d
-%dir %{modules_load_dir}
-%{modules_load_dir}/sg.conf
+%{_modulesloaddir}
%ifarch ppc64 ppc64le
/usr/lib/systemd/system-generators
%endif
++++++ _service ++++++
--- /var/tmp/diff_new_pack.PFjzrV/_old 2021-07-04 22:10:43.101240440 +0200
+++ /var/tmp/diff_new_pack.PFjzrV/_new 2021-07-04 22:10:43.101240440 +0200
@@ -15,7 +15,6 @@
<param name="files">*/suse-module-tools.spec</param>
<param name="outfilename">suse-module-tools.spec</param>
</service>
- <service name="set_version" mode="manual"/>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.PFjzrV/_old 2021-07-04 22:10:43.117240316 +0200
+++ /var/tmp/diff_new_pack.PFjzrV/_new 2021-07-04 22:10:43.117240316 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/suse-module-tools.git</param>
- <param
name="changesrevision">fe422e7058c691493567eeffc162f278b2120549</param></service></servicedata>
\ No newline at end of file
+ <param
name="changesrevision">25069795b35b36f37a9f22688fd612be43475363</param></service></servicedata>
\ No newline at end of file
++++++ suse-module-tools-16.0.4.obscpio -> suse-module-tools-16.0.5.obscpio
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/README.SUSE
new/suse-module-tools-16.0.5/README.SUSE
--- old/suse-module-tools-16.0.4/README.SUSE 2021-06-17 16:41:56.000000000
+0200
+++ new/suse-module-tools-16.0.5/README.SUSE 1970-01-01 01:00:00.000000000
+0100
@@ -1,19 +0,0 @@
-Please don't edit /etc/modprobe.conf. Place your settings into
-/etc/modprobe.conf.local instead.
-
-
-To avoid loading backup files of various tools and editors, modprobe skips
-files under /etc/modprobe.d/ that have the following prefixes
-
-"."
-"~"
-
-and the following suffixes
-
-".rpmsave"
-".rpmorig"
-".rpmnew"
-".bak"
-".YaST2save"
-".-"
-"~"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/README.md
new/suse-module-tools-16.0.5/README.md
--- old/suse-module-tools-16.0.4/README.md 1970-01-01 01:00:00.000000000
+0100
+++ new/suse-module-tools-16.0.5/README.md 2021-07-01 22:29:34.000000000
+0200
@@ -0,0 +1,96 @@
+# suse-module-tools
+
+This package contains a collection of tools and configuration files for
+handling kernel modules and setting module parameters. The configuration files
+represent a carefully engineered, recommended default configuration. In
+certain cases, it may be necessary to modify or revert some of these settings.
+It's ok to do so, but make sure you know what you're doing if you do.
+
+Please don't edit any of the configuration files shipped in this package.
+Instead, copy the files from `/lib/modprobe.d` to `/etc/modprobe.d`, preserving
+the file name, and edit the copy under `/etc/modprobe.d`.
+Likewise for `/lib/depmod.d` vs. `/etc/depmod.d` and `/usr/lib/modules-load.d`
vs.
+`/etc/modules-load.d`.
+
+To completely mask the directives in a configuration file, it's recommended
+to create a symlink to `/dev/null` with the same name as the file to be masked
+in the respective directory under `/etc`. E.g. to mask
+`/lib/modprobe.d/20-foo.conf`, run
+
+ ln -s /dev/null /etc/modprobe.d/20-foo.conf
+
+
+## Blacklisted file systems
+
+In the Linux kernel, file system types are implemented as kernel
+modules. While many of these file systems are well maintained, some of the
+older and less frequently used ones are not. This poses a security risk,
+because maliciously crafted file system images might open security holes when
+mounted either automatically or by an inadvertent user.
+
+These file systems are therefore **blacklisted** by default under openSUSE and
+SUSE Enterprise Linux. This means that the on-demand loading of file system
+modules at mount time is disabled. Blacklisting is accomplished by placing
+configuration files called `60-blacklist_fs-$SOME_FS.conf` under
+`/lib/modprobe.d`. The current list of blacklisted filesystems is:
+
+ @FS_BLACKLIST@ # will be filled from spec file during package build
+
+### CAVEAT
+
+In the very unlikely case that one of the blacklisted file systems is necessary
+for your system to boot, make sure you un-blacklist your file system before
+rebooting.
+
+### Un-blacklisting a file system
+
+If a user tries to **mount(8)** a device with a blacklisted file system, the
+mount command prints an error message like this:
+
+ mount: /mnt/mx: unknown filesystem type 'minix' (hint: possibly
blacklisted, see mount(8)).
+
+(**mount(8)** can't distinguish between a file system for which no kernel
+module exists at all, and a file system for which a module exists which
+is blacklisted).
+
+Users who need the blacklisted file systems and therefore want to override
+the blacklisting can load the blacklisted module directly using `modprobe
+$SOME_FS` in a terminal. This will call a script that offers to "un-blacklist"
+the module for future use.
+
+ # modprobe minix
+ unblacklist: *** NOTE: minix will be loaded even if you answer "n" below.
***
+ unblacklist: minix is currently blacklisted, do you want to un-blacklist
it (y/n)? y
+ unblacklist: minix un-blacklisted by creating
/etc/modprobe.d/60-blacklist_fs-minix.conf
+
+If the user selects **y**, the module is un-blacklisted by creating a symlink
+to `/dev/null` (see above). Future attempts to mount minix file systems will
+work with no issue, even after reboot, because the kernel's auto-loading
+mechanism works for this file system again. If the user selects **n**, the
+module remains blacklisted. Regardless of the user's answer, the module will be
+loaded for the time being; i.e. subsequent **mount** commands for devices with
+this file system will succeed until the module is unloaded or the system is
+rebooted.
+
+For security reasons, it's recommended that you only un-blacklist file system
+modules that you know you'll use on a regular basis, and just enable them
+temporarily otherwise.
+
+
+## Weak modules
+
+This package contains the script `weak-modules2` which is necessary to make
+3rd party kernel modules installed for one kernel available to
+KABI-compatible kernels. SUSE ensures KABI compatibility over the life
+time of a service pack in SUSE Enterprise Linux. See the
+[SUSE SolidDriver Program](https://drivers.suse.com/doc/SolidDriver/) for
+details.
+
+
+## Kernel-specific sysctl settings
+
+This package installs the file `50-kernel-uname_r.conf` which makes sure
+that sysctl settings which are recommended for the currently running kernel
+are applied by **systemd-sysctl.service** at boot time. These settings are
+shipped in the file `/boot/sysctl.conf-$(uname -r)`, which is part of the
+kernel package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/lsinitrd-quick
new/suse-module-tools-16.0.5/lsinitrd-quick
--- old/suse-module-tools-16.0.4/lsinitrd-quick 1970-01-01 01:00:00.000000000
+0100
+++ new/suse-module-tools-16.0.5/lsinitrd-quick 2021-07-01 22:29:34.000000000
+0200
@@ -0,0 +1,92 @@
+#! /bin/bash
+
+trap 'echo error in $BASH_COMMAND >&2; exit 1' ERR
+
+MG_CPIO=$'\x71\xc7'
+MG_CPIO1=070701
+MG_GZ=$'\x1f\x8b'
+MG_GZ1=$'\x1f\x9e'
+MG_BZ="BZh"
+MG_XZ=$'\xfd7zXZ'
+MG_LZ4=$'\x02\x21'
+MG_LZO=$'\x89LZO'
+MG_ZSTD=$'\x28\xB5\x2F\xFD'
+
+check_fmt() {
+ case $1 in
+ $MG_CPIO*|$MG_CPIO1)
+ echo cpio;;
+ $MG_GZ*|$MG_GZ1*)
+ echo gzip;;
+ $MG_BZ*)
+ echo bz2;;
+ $MG_XZ*)
+ echo xz;;
+ $MG_LZ4*)
+ echo lz4;;
+ $MG_LZO*)
+ echo lzo;;
+ $MG_ZSTD*)
+ echo zstd;;
+ esac
+}
+
+uncomp() {
+ case $1 in
+ $MG_CPIO*|$MG_CPIO1)
+ cat;;
+ $MG_GZ*)
+ zcat;;
+ $MG_BZ*)
+ bzcat;;
+ $MG_XZ*)
+ xzcat;;
+ $MG_LZ4*)
+ lz4 -d -c;;
+ $MG_LZO*)
+ lzop -d -c;;
+ $MG_ZSTD*)
+ zstd -d -c;;
+ esac
+}
+
+check_size () {
+ [[ "$SIZE" -gt $1 ]] || {
+ echo "$INITRD: file too small, cannot read magic" >&2
+ exit 1
+ }
+}
+
+INITRD=$1
+[[ "$INITRD" && -f "$INITRD" ]] || {
+ echo "$INITRD: file not found" >&2
+ exit 1
+}
+SIZE=$(stat -L -c %s "$INITRD")
+check_size 6
+
+read -r -d'\0' -n 6 MAGIC <"$INITRD"
+FMT=$(check_fmt "$MAGIC")
+BYTES=0
+if [[ ! $FMT ]]; then
+ echo "$INITRD: unknown format" >&2
+ exit 1
+elif [[ "$FMT" = cpio ]]; then
+ # check for "early CPIO" image
+ TMPFILE=$(mktemp "${TMPDIR:-/tmp}/initrd-XXXXXX")
+ EARLY=$(cpio -t early_cpio "kernel/*/microcode/*.bin" \
+ <"$INITRD" 2>"$TMPFILE")
+ BLOCKS=$(cut -d" " -f1 "$TMPFILE")
+ rm -f "$TMPFILE"
+ if [[ -z "$EARLY" ]]; then
+ # just plain uncompressed cpio
+ cpio -t <"$INITRD" 2>/dev/null
+ exit
+ fi
+ BYTES=$((512*BLOCKS))
+ check_size $((BYTES + 6))
+ read -r -d '\0' -n 6 MAGIC \
+ < <(dd if="$INITRD" bs=1b count=1 skip=$BLOCKS 2>/dev/null)
+fi
+
+tail -c +$((BYTES + 1)) "$INITRD" | uncomp "$MAGIC" | cpio -t 2>/dev/null
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/suse-module-tools-16.0.4/modprobe.conf/00-system-937216.conf
new/suse-module-tools-16.0.5/modprobe.conf/00-system-937216.conf
--- old/suse-module-tools-16.0.4/modprobe.conf/00-system-937216.conf
2021-06-17 16:41:56.000000000 +0200
+++ new/suse-module-tools-16.0.5/modprobe.conf/00-system-937216.conf
2021-07-01 22:29:34.000000000 +0200
@@ -1,3 +1,5 @@
+# DO NOT EDIT - copy to /etc/modprobe.d/00-system-937216.conf and edit the copy
+#
# Since kernel 3.18 br_netfilter is needed to pass bridged packets to
# netfilter. Load br_netfilter automatically to avoid regressions in SLE12 SP2+
# service packs (bsc#937216).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.common
new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.common
--- old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.common
2021-06-17 16:41:56.000000000 +0200
+++ new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.common
2021-07-01 22:29:34.000000000 +0200
@@ -1,22 +1,23 @@
#
# Copyright (c) 1996-2002 SuSE Linux AG Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
+#
# All rights reserved.
#
# Author: Hubert Mantel <[email protected]>, 1996-2002
#
-# Configuration file for loadable modules; used by modprobe
-#
-# Please don't edit this file. Place your settings into
-# /etc/modprobe.d/99-local.conf instead.
+# === PLEASE DO NOT EDIT THIS FILE ===
#
+# If you need to make changes, copy this file to /etc/modprobe.d
+# and apply changes there.
#
+# Configuration file for loadable modules; used by modprobe
+
########################################################################
# If you want to use the new autofs4
########################################################################
-
alias autofs autofs4
-
########################################################################
# block dev aliases
########################################################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.i386
new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.i386
--- old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.i386
2021-06-17 16:41:56.000000000 +0200
+++ new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.i386
2021-07-01 22:29:34.000000000 +0200
@@ -23,7 +23,7 @@
options sisfb mode=none mem=12288
# ata_piix can't handle ICH6 in AHCI mode
-install ata_piix /sbin/modprobe ahci 2>&1 |:; /sbin/modprobe --ignore-install
ata_piix
+softdep ata_piix pre: ahci
# QEMU/KVM can handle ACPI Hotplugging
alias dmi:bvnQEMU:bvrQEMU:* acpiphp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.x86_64
new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.x86_64
--- old/suse-module-tools-16.0.4/modprobe.conf/modprobe.conf.x86_64
2021-06-17 16:41:56.000000000 +0200
+++ new/suse-module-tools-16.0.5/modprobe.conf/modprobe.conf.x86_64
2021-07-01 22:29:34.000000000 +0200
@@ -10,7 +10,7 @@
# options parport_pc io=0x378,0x278 irq=none,none
# ata_piix can't handle ICH6 in AHCI mode
-install ata_piix /sbin/modprobe ahci 2>&1 |:; /sbin/modprobe --ignore-install
ata_piix
+softdep ata_piix pre: ahci
# QEMU/KVM can handle ACPI Hotplugging
alias dmi:bvnQEMU:bvrQEMU:* acpiphp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/suse-module-tools.spec
new/suse-module-tools-16.0.5/suse-module-tools.spec
--- old/suse-module-tools-16.0.4/suse-module-tools.spec 2021-06-17
16:41:56.000000000 +0200
+++ new/suse-module-tools-16.0.5/suse-module-tools.spec 2021-07-01
22:29:34.000000000 +0200
@@ -15,20 +15,30 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+# missing in SLE15 (systemd-rpm-macros)
+%{!?_modulesloaddir: %global _modulesloaddir /usr/lib/modules-load.d}
-# Define _rpmmacrodir if it's not defined yet
-%{!?_rpmmacrodir: %global _rpmmacrodir %{_rpmconfigdir}/macros.d}
-%define modules_load_dir /usr/lib/modules-load.d
+# Location for modprobe and depmod .conf files
+#
+# This assumes post-usr-merge (20210527) for Tumbleweed
+%if 0%{?suse_version} >= 1550
+%global modprobe_dir /usr/lib/modprobe.d
+%global depmod_dir /usr/lib/depmod.d
+%else
+%global modprobe_dir /lib/modprobe.d
+%global depmod_dir /lib/depmod.d
+%endif
# List of legacy file systems to be blacklisted by default
%global fs_blacklist adfs affs bfs befs cramfs efs erofs exofs freevxfs hfs
hpfs jfs minix nilfs2 ntfs omfs qnx4 qnx6 sysv ufs
-%if 0%{?sle_version} >= 120200 && 0%{?sle_version} < 150000
-%global softdep_br_netfilter 1
-%endif
+# List of all files installed under modprobe.d
+# Note: this list contains files installed by previous versions, like
00-system-937216.conf!
+%global modprobe_conf_files 00-system 00-system-937216 10-unsupported-modules
50-blacklist 60-blacklist_fs-* 99-local
+%global modprobe_conf_rpmsave %(echo "%{modprobe_conf_files}" | sed 's,\\([^
]*\\),%{_sysconfdir}/modprobe.d/\\1.conf.rpmsave,g')
Name: suse-module-tools
-Version: 16.0.4
+Version: 16.0.5
Release: 0
Summary: Configuration for module loading and SUSE-specific utilities
for KMPs
License: GPL-2.0-or-later
@@ -41,6 +51,7 @@
Requires: /usr/bin/sed
Requires: coreutils
Requires: findutils
+Requires: systemd-rpm-macros
Requires: rpm
Requires(post): /usr/bin/grep
Requires(post): /usr/bin/sed
@@ -52,6 +63,10 @@
Recommends: kmod
# This release requires the dracut module 90nvdimm
Conflicts: dracut < 49.1
+# TW: conflict with pre-usrmerge
+%if 0%{?suse_version} >= 1550
+Conflicts: filesystem < 15.5-40.2
+%endif
%description
This package contains helper scripts for KMP installation and
@@ -76,6 +91,7 @@
%setup -q
%build
+sed -i 's/@FS_BLACKLIST@.*/%{fs_blacklist}/' README.md
%install
# now assemble the parts for modprobe.conf
@@ -86,27 +102,23 @@
if [ -f "modprobe.conf/modprobe.conf.$RPM_ARCH" ]; then
cat "modprobe.conf/modprobe.conf.$RPM_ARCH" >>00-system.conf
fi
+install -d -m 755 "%{buildroot}%{modprobe_dir}"
install -d -m 755 "%{buildroot}%{_sysconfdir}/modprobe.d"
install -pm644 "10-unsupported-modules.conf" \
- "%{buildroot}%{_sysconfdir}/modprobe.d/"
-install -pm644 00-system.conf "%{buildroot}%{_sysconfdir}/modprobe.d/"
+ "%{buildroot}%{modprobe_dir}/"
+install -pm644 00-system.conf "%{buildroot}%{modprobe_dir}/"
-%if 0%{?softdep_br_netfilter}
-# softdep bridge->br_netfilter, SLE only
-install -pm644 modprobe.conf/00-system-937216.conf
%{buildroot}%{_sysconfdir}/modprobe.d
-%endif
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-install -pm644 modprobe.conf/modprobe.conf.blacklist
"%{buildroot}%{_sysconfdir}/modprobe.d/50-blacklist.conf"
+install -pm644 modprobe.conf/modprobe.conf.blacklist
"%{buildroot}%{modprobe_dir}/50-blacklist.conf"
%endif
-install -pm644 modprobe.conf/modprobe.conf.local
"%{buildroot}%{_sysconfdir}/modprobe.d/99-local.conf"
+install -d -m 755 "%{buildroot}/%{depmod_dir}"
install -d -m 755 "%{buildroot}%{_sysconfdir}/depmod.d"
-install -pm 644 "depmod-00-system.conf" \
- "%{buildroot}%{_sysconfdir}/depmod.d/00-system.conf"
+install -pm 644 "depmod-00-system.conf"
"%{buildroot}%{depmod_dir}/00-system.conf"
# "/usr/lib/module-init-tools" name hardcoded in KMPs, mkinitrd, etc.
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools"
-install -pm 755 weak-modules{,2} "%{buildroot}/usr/lib/module-init-tools/"
-install -pm 755 driver-check.sh "%{buildroot}/usr/lib/module-init-tools/"
+install -pm 755 -t "%{buildroot}/usr/lib/module-init-tools/" \
+ weak-modules{,2} driver-check.sh unblacklist lsinitrd-quick
%if 0%{?suse_version} < 1550
# rpm macros and helper
@@ -126,8 +138,8 @@
# Ensure that the sg driver is loaded early (bsc#1036463)
# Not needed in SLE11, where sg is loaded via udev rule.
-install -d -m 755 "%{buildroot}%{modules_load_dir}"
-install -pm 644 sg.conf "%{buildroot}%{modules_load_dir}"
+install -d -m 755 "%{buildroot}%{_modulesloaddir}"
+install -pm 644 sg.conf "%{buildroot}%{_modulesloaddir}"
%ifarch ppc64 ppc64le
install -d -m 755 %{buildroot}/usr/lib/systemd/system-generators
install -m 755 udev-trigger-generator
%{buildroot}/usr/lib/systemd/system-generators
@@ -138,131 +150,58 @@
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
for mod in %{fs_blacklist}; do
echo "\
+# DO NOT EDIT THIS FILE!
+#
# The $mod file system is blacklisted by default because it isn't actively
# supported by SUSE, not well maintained, or may have security vulnerabilites.
-# To enable autoloading the $mod file system module, comment out the
-# \"blacklist $mod\" statement below. ENABLE AT YOUR OWN RISK.
-#
-# File system modules loaded at installation time of the %{name} package
-# are not blacklisted. This is achieved by commenting out the blacklist
-# line in the post-installation script. To prevent the post-installation
-# script from modifying this file, delete the line containing \"THIS FILE MAY
-# BE MODIFIED\" at the bottom.
blacklist $mod
-# __THIS FILE MAY BE MODIFIED__" \
- >%{buildroot}%{_sysconfdir}/modprobe.d/60-blacklist_fs-"$mod".conf
+# The filesystem can be un-blacklisted by running \"modprobe $mod\".
+# See README.md in the %{name} package for details.
+install $mod /usr/lib/module-init-tools/unblacklist $mod; /sbin/modprobe
--ignore-install $mod
+" \
+ >%{buildroot}%{modprobe_dir}/60-blacklist_fs-"$mod".conf
done
%endif
%post
-%if 0%{?sle_version} >= 150000
-# Delete obsolete unsupported-modules file from SLE11
-rm -f %{_sysconfdir}/modprobe.d/unsupported-modules
-%else
-# Logic for releases below CODE 15
-%if 0%{?is_opensuse} == 1
-allowed=1
-%else
-allowed=0
-%endif
-test_allow_on_install()
-{
- # configure handling of unsupported modules
- # default is to allow them
- allow=1
- # if the obsolete LOAD_UNSUPPORTED_MODULES_AUTOMATICALLY variable is
- # set to no, don't allow (this was used in SLES 9 and 10)
- if test -e %{_sysconfdir}/sysconfig/hardware/config; then
- . %{_sysconfdir}/sysconfig/hardware/config
- if test "x$LOAD_UNSUPPORTED_MODULES_AUTOMATICALLY" = "xno"; then
- allow=0
- fi
- # obsolete
- rm %{_sysconfdir}/sysconfig/hardware/config
- fi
- # don't change the setting during upgrade
- if test "$1" != 1; then
- allow=
- return
- fi
- # on SLES, the default is not to allow unsupported modules
- if grep -qs "Enterprise Server" %{_sysconfdir}/os-release; then
- allow=0
- else
- return
- fi
- # unless the admin passed "oem-modules=1" to the kernel during install
- if grep -qs '\<oem-modules=1\>' /proc/cmdline; then
- allow=1
- return
- fi
- # or if the installer already loaded some unsupported modules
- # (see TAINT_NO_SUPPORT in /etc/src/linux/include/linux/kernel.h)
- tainted=$(cat /proc/sys/kernel/tainted 2>/dev/null || echo 0)
- if test $((tainted & (1<<30))) != 0; then
- allow=1
- return
- fi
-}
-# upgrade from old locations
-if test -e %{_sysconfdir}/modprobe.d/unsupported-modules; then
- mv -f %{_sysconfdir}/modprobe.d/unsupported-modules \
- %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-fi
-test_allow_on_install "$@"
-if test -n "$allow" -a "$allow" != "$allowed"; then
- sed -ri 's/^( *allow_unsupported_modules *) [01]/\1 '"$allow"'/' \
- %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-fi
-%endif
+exit 0
-# upgrade from old locations
-if test -e %{_sysconfdir}/modprobe.conf.local; then
- mv -f %{_sysconfdir}/modprobe.conf.local \
- %{_sysconfdir}/modprobe.d/99-local.conf
+%pre
+# Avoid restoring old .rpmsave files in %posttrans
+for f in %{modprobe_conf_rpmsave}; do
+ if [ -f ${f} ]; then
+ mv -f ${f} ${f}.%{name}
+ fi
+done
+if [ -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave ]; then
+ mv -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave \
+ %{_sysconfdir}/depmod.d/00-system.conf.rpmsave.%{name}
fi
+exit 0
-# Avoid systems becoming unbootable by blacklisting filesystem
-# modules. Modules loaded at installation time will not be
-# blacklisted (the blacklist statement is commented out).
-# config(noreplace) makes sure that this is not overwritten by rpm.
-%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-for mod in %{fs_blacklist}; do
- conf=%{_sysconfdir}/modprobe.d/60-blacklist_fs-"$mod".conf
- if [ -f "$conf" ] && \
- grep -q '^# __THIS FILE MAY BE MODIFIED__$' "$conf" && \
- sed '/^nodev/d;' /proc/filesystems | grep -q "\<$mod\>"; then
- sed -i '
-/^# next line was commented out by postinstall script of %{name}$/d
-/^blacklist '"$mod"'/{i\
-# next line was commented out by postinstall script of %{name}
-s/^/# /
-}' "$conf"
- fi
+%posttrans
+# If the user had modified any of the configuration files installed under
+# /etc, they'll now be renamed to .rpmsave files. Restore them.
+for f in %{modprobe_conf_rpmsave}; do
+ if [ -f ${f} ]; then
+ mv -fv ${f} ${f%.rpmsave}
+ fi
done
-%endif
+if [ -f %{_sysconfdir}/depmod.d/00-system.conf.rpmsave ]; then
+ mv -fv %{_sysconfdir}/depmod.d/00-system.conf.rpmsave \
+ %{_sysconfdir}/depmod.d/00-system.conf
+fi
+exit 0
%files
%defattr(-,root,root)
-%if 0%{?sle_version:%{sle_version}}%{!?sle_version:150000} <= 120200
-%dir %{_defaultlicensedir}
-%endif
%license LICENSE
-%doc README.SUSE
+%doc README.md
+%{modprobe_dir}
%dir %{_sysconfdir}/modprobe.d
-%config %{_sysconfdir}/modprobe.d/00-system.conf
-%if 0%{?softdep_br_netfilter}
-%config(noreplace) %{_sysconfdir}/modprobe.d/00-system-937216.conf
-%endif
-%config(noreplace) %{_sysconfdir}/modprobe.d/10-unsupported-modules.conf
-%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150100
-%config(noreplace) %{_sysconfdir}/modprobe.d/50-blacklist.conf
-%config(noreplace) %{_sysconfdir}/modprobe.d/60-blacklist_fs-*.conf
-%endif
-%config(noreplace) %{_sysconfdir}/modprobe.d/99-local.conf
+%{depmod_dir}
%dir %{_sysconfdir}/depmod.d
-%config %{_sysconfdir}/depmod.d/00-system.conf
%if 0%{?suse_version} < 1550
%{_rpmmacrodir}/macros.initrd
%endif
@@ -270,8 +209,7 @@
/usr/lib/module-init-tools
%exclude /usr/lib/module-init-tools/weak-modules
%{_unitdir}/systemd-sysctl.service.d
-%dir %{modules_load_dir}
-%{modules_load_dir}/sg.conf
+%{_modulesloaddir}
%ifarch ppc64 ppc64le
/usr/lib/systemd/system-generators
%endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/unblacklist
new/suse-module-tools-16.0.5/unblacklist
--- old/suse-module-tools-16.0.4/unblacklist 1970-01-01 01:00:00.000000000
+0100
+++ new/suse-module-tools-16.0.5/unblacklist 2021-07-01 22:29:34.000000000
+0200
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (c) 2021 SUSE LLC
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Never unblacklist non-interactively
+if ! tty -s <&0; then
+ exit 0
+fi
+
+ME=$(basename "$0")
+if [ $UID -ne 0 ]; then
+ echo "$ME: you must be root to run this program" >&2
+ exit 1
+fi
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $ME module" >&2
+ exit 1
+fi
+
+MODULE=$1
+if [ -z "$MODULE" ] || \
+ [ ! -f /lib/modprobe.d/60-blacklist_fs-"$MODULE".conf -a \
+ ! -f /usr/lib/modprobe.d/60-blacklist_fs-"$MODULE".conf ]; then
+ echo "$ME: Invalid or unknown module \"$MODULE\"" >&2
+ exit 1
+fi
+
+CONF=/etc/modprobe.d/60-blacklist_fs-"$MODULE".conf
+if [ -L "$CONF" ]; then
+ if [ x"$(readlink -f "$CONF")" = x/dev/null ]; then
+ # already linked to /dev/null
+ exit 0
+ else
+ echo "$ME: $CONF is in unexpected state, exiting" >&2
+ exit 1
+ fi
+elif [ -f "$CONF" ]; then
+ if ! egrep -q "^[ ]*blacklist[ ]+$MODULE" "$CONF"; then
+ # not blacklisted
+ exit 0
+ fi
+ if ! egrep -q '^# __THIS FILE MAY BE MODIFIED__' "$CONF"; then
+ echo "$ME: $CONF exists, cannot modify it" >&2
+ exit 1
+ fi
+elif [ -e "$CONF" ]; then
+ echo "$ME: $CONF is in unexpected state, exiting" >&2
+ exit 1
+fi
+
+echo "$ME: loading $MODULE file system module" >&2
+_a=
+while [ -z "$_a" ]; do
+ echo -n "$ME: Do you want to un-blacklist $MODULE permanently
(<y>es/<n>o/n<e>ver)? " >&2
+ read _a
+ case $_a in
+ y|yes) _a=yes;;
+ n|no) _a=no;;
+ e|never) _a=never;;
+ *) _a=;;
+ esac
+done
+case $_a in
+ no)
+ echo "$ME: not un-blacklisting $MODULE" >&2
+ exit 0
+ ;;
+ never)
+ echo "$ME: creating $CONF" >&2
+ rm -f "$CONF"
+ cat >$CONF <<EOF
+# created by $0 (user wants to never unblacklist this module)
+blacklist $MODULE
+EOF
+ exit 0
+ ;;
+esac
+
+if ln -sf /dev/null "$CONF"; then
+ echo "$ME: $MODULE un-blacklisted by creating $CONF" >&2
+ exit 0
+else
+ echo "$ME: Failed to create $CONF" >&2
+ exit 1
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/suse-module-tools-16.0.4/weak-modules2
new/suse-module-tools-16.0.5/weak-modules2
--- old/suse-module-tools-16.0.4/weak-modules2 2021-06-17 16:41:56.000000000
+0200
+++ new/suse-module-tools-16.0.5/weak-modules2 2021-07-01 22:29:34.000000000
+0200
@@ -57,6 +57,20 @@
#
: ${DRACUT:=/usr/bin/dracut}
+find_lsinitrd() {
+ local lsi
+ LSINITRD=
+ for lsi in /usr/lib/module-init-tools/lsinitrd-quick /usr/bin/lsinitrd; do
+ if [[ -x $lsi ]]; then
+ LSINITRD=$lsi
+ break
+ fi
+ done
+ if [[ ! "$LSINITRD" ]]; then
+ echo "$0: could not find lsinitrd" >&2
+ exit 1
+ fi
+}
find_depmod() {
local _d
@@ -322,7 +336,7 @@
}
get_initrd_basenames() {
- lsinitrd /boot/initrd-$1 | \
+ $LSINITRD /boot/initrd-$1 | \
sed -rn 's:.*\<lib/modules/.*/::p' | \
strip_mod_extensions
@@ -710,6 +724,7 @@
#unset LANG LC_ALL LC_COLLATE
find_depmod
+find_lsinitrd
tmpdir=$(mktemp -d /var/tmp/${0##*/}.XXXXXX)
trap "rm -rf $tmpdir" EXIT
++++++ suse-module-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.PFjzrV/_old 2021-07-04 22:10:43.229239449 +0200
+++ /var/tmp/diff_new_pack.PFjzrV/_new 2021-07-04 22:10:43.229239449 +0200
@@ -1,5 +1,5 @@
name: suse-module-tools
-version: 16.0.4
-mtime: 1623940916
-commit: fe422e7058c691493567eeffc162f278b2120549
+version: 16.0.5
+mtime: 1625171374
+commit: 25069795b35b36f37a9f22688fd612be43475363