diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index 4e53c68..0587760 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,26 @@ -/kmod-*.tar.xz +/kmod-7.tar.xz +/kmod-8.tar.xz +/kmod-9.tar.xz +/kmod-10.tar.xz +/kmod-11.tar.xz +/kmod-12.tar.xz +/kmod-13.tar.xz +/kmod-14.tar.xz +/kmod-15.tar.xz +/kmod-16.tar.xz +/kmod-17.tar.xz +/kmod-18.tar.xz +/kmod-19.tar.xz +/kmod-20.tar.xz +/kmod-21.tar.xz +/kmod-22.tar.xz +/kmod-23.tar.xz +/kmod-24.tar.xz +/kmod-25.tar.xz +/kmod-26.tar.xz +/kmod-27.tar.xz +/kmod-28.tar.xz +/kmod-29.tar.gz +/kmod-29.tar.xz +/kmod-30.tar.gz +/kmod-30.tar.xz diff --git a/kmod-configure-c99.patch b/kmod-configure-c99.patch new file mode 100644 index 0000000..86cda4d --- /dev/null +++ b/kmod-configure-c99.patch @@ -0,0 +1,37 @@ +configure.ac: In _Noreturn check, include for exit + +Otherwise, an implicit functiona declaration is used, causing +a C99 compatibility issue. + +Submitted upstream: + + + +diff --git a/configure b/configure +index d053310a8b4a313a..ec1f12d02428f848 100755 +--- a/configure ++++ b/configure +@@ -14021,7 +14021,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + printf %s "checking whether _Noreturn is supported... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-_Noreturn int foo(void) { exit(0); } ++#include ++ _Noreturn int foo(void) { exit(0); } + _ACEOF + if ac_fn_c_try_compile "$LINENO" + then : +diff --git a/configure.ac b/configure.ac +index 6989e9360da23721..12e0518533201ccf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -68,7 +68,8 @@ AC_COMPILE_IFELSE( + + AC_MSG_CHECKING([whether _Noreturn is supported]) + AC_COMPILE_IFELSE( +- [AC_LANG_SOURCE([[_Noreturn int foo(void) { exit(0); }]])], ++ [AC_LANG_SOURCE([[#include ++ _Noreturn int foo(void) { exit(0); }]])], + [AC_DEFINE([HAVE_NORETURN], [1], [Define if _Noreturn is available]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) diff --git a/kmod.spec b/kmod.spec index 8d0b67b..10ac33f 100644 --- a/kmod.spec +++ b/kmod.spec @@ -15,58 +15,16 @@ %bcond_without zstd Name: kmod -Version: 34.2 -Release: 3%{?dist} +Version: 30 +Release: 6%{?dist} Summary: Linux kernel module management utilities -# https://docs.fedoraproject.org/en-US/legal/license-field/#_no_effective_license_analysis -# GPL-2.0-or-later: -# build-aux/compile -# build-aux/depcomp -# build-aux/ltmain.sh -# build-aux/ltmain.sh -# build-aux/missing -# build-aux/py-compile -# build-aux/test-driver -# m4/attributes.m4 -# m4/features.m4 -# tools -# GPL-3.0-or-later: -# build-aux/config.guess -# build-aux/config.sub -# build-aux/git-version-gen -# libkmod/docs/gtk-doc.make -# m4/gtk-doc.m4 -# FSFUL: -# configure -# FSFULLRWD: -# aclocal.m4 -# libkmod/docs/Makefile.in -# m4/libtool.m4 -# m4/lt~obsolete.m4 -# m4/ltoptions.m4 -# m4/ltsugar.m4 -# m4/ltversion.m4 -# Makefile.in -# LGPL-2.1-only: -# libkmod/python/kmod/error.py -# libkmod/python/kmod/__init__.py -# libkmod/python/kmod/version.py -# libkmod/python/kmod/version.py.in -# LGPL-2.1-or-later: -# config.h.in (no explicit license, the one in COPYING is assumed) -# libkmod -# man (no explicit license, the one in COPYING is assumed) -# shared -# shell-completion/bash/kmod -# testsuite -# X11: -# build-aux/install-sh -License: GPL-2.0-or-later AND GPL-3.0-or-later AND FSFUL AND FSFULLRWD AND LGPL-2.1-only AND LGPL-2.1-or-later AND X11 +License: GPLv2+ URL: https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git Source0: https://www.kernel.org/pub/linux/utils/kernel/kmod/%{name}-%{version}.tar.xz Source1: weak-modules Source2: depmod.conf.dist +Patch0: kmod-configure-c99.patch Exclusiveos: Linux BuildRequires: gcc @@ -77,9 +35,9 @@ BuildRequires: zlib-devel %if %{with xz} BuildRequires: xz-devel %endif -BuildRequires: scdoc gtk-doc +BuildRequires: libxslt BuildRequires: openssl-devel -BuildRequires: make automake libtool +BuildRequires: make %if %{with zstd} BuildRequires: libzstd-devel %endif @@ -88,18 +46,6 @@ Provides: module-init-tools = 4.0-1 Obsoletes: module-init-tools < 4.0-1 Provides: /sbin/modprobe -%if "%{_sbindir}" == "%{_bindir}" -# Compat symlinks for Requires in other packages. -# We rely on filesystem to create the symlinks for us. -Requires: filesystem(unmerged-sbin-symlinks) -Provides: /usr/sbin/modprobe -Provides: /usr/sbin/modinfo -Provides: /usr/sbin/insmod -Provides: /usr/sbin/rmmod -Provides: /usr/sbin/lsmod -Provides: /usr/sbin/depmod -%endif - %description The kmod package provides various programs needed for automatic loading and unloading of modules under 2.6, 3.x, and later kernels, as well @@ -108,6 +54,7 @@ examples of loaded and unloaded modules. %package libs Summary: Libraries to handle kernel module loading and unloading +License: LGPLv2+ %description libs The kmod-libs package provides runtime libraries for any application that @@ -123,9 +70,10 @@ applications that wish to load or unload Linux kernel modules. %prep %autosetup -p1 +# Avoid rebuilding the autoconf scripts. +touch -r aclocal.m4 configure* %build -autoreconf --install %configure \ --with-openssl \ %if %{with zlib} @@ -150,6 +98,14 @@ popd find %{buildroot} -type f -name "*.la" -delete +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/modprobe +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/modinfo +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/insmod +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/rmmod +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/depmod +ln -sf ../bin/kmod $RPM_BUILD_ROOT%{_sbindir}/lsmod + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/modprobe.d @@ -177,17 +133,12 @@ install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf %{_sbindir}/weak-modules %endif %{_datadir}/bash-completion/ -%{_datadir}/fish/vendor_functions.d/* -%{_datadir}/zsh/site-functions/* %if %{with dist_conf} %{_sysconfdir}/depmod.d/dist.conf %endif -%{_datadir}/pkgconfig/kmod.pc -%attr(0644,root,root) %{_mandir}/man5/mod*.d*.5* -%attr(0644,root,root) %{_mandir}/man5/depmod.d.5* -%{_mandir}/man5/modprobe.conf.5* +%attr(0644,root,root) %{_mandir}/man5/*.5* %attr(0644,root,root) %{_mandir}/man8/*.8* -%doc NEWS README.md +%doc NEWS README.md TODO %files libs %license COPYING @@ -199,58 +150,6 @@ install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf %{_libdir}/libkmod.so %changelog -* Wed Aug 13 2025 Zamir SUN - 34.2-3 -- Rebuild to switch gating to TMT. -- Resolves: rhbz#2382934 - -* Thu Jul 24 2025 Fedora Release Engineering - 34.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Mar 31 2025 Josh Boyer - 34.2-1 -- New upstream v34.2 -- Resolves: rhbz#2355680 - -* Sat Mar 08 2025 Josh Boyer - 34.1-1 -- New upstream v34.1 -- Resolves: rhbz#2350269 - -* Mon Feb 24 2025 Josh Boyer -- New upstream v34 -- Resolves: rhbz#2347049 - -* Fri Jan 17 2025 Fedora Release Engineering - 33-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek - 33-2 -- Rebuilt for the bin-sbin merge (2nd attempt) - -* Thu Aug 15 2024 Eugene Syromiatnikov - 33-1 -- New upstream v33 -- Resolves: rhbz#2268030 - -* Mon Aug 12 2024 Eugene Syromiatnikov - 31-8 -- weak-modules: use either zcat or xzcat based on symvers file extension - -* Thu Jul 18 2024 Fedora Release Engineering - 31-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Apr 11 2024 Zbigniew Jedrzejewski-Szmek - 31-6 -- Prepare for %%_bindir==%%_sbindir - -* Thu Jan 25 2024 Fedora Release Engineering - 31-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 31-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Dec 01 2023 Eugene Syromiatnikov - 31-3 -- migrated to SPDX license - -* Thu Nov 09 2023 Josh Boyer - 31-2 -- Add upstream patches to enable SHA3 support -- New upstream v31 -- Resolves: rhbz#2241394 - * Thu Jul 20 2023 Fedora Release Engineering - 30-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index 0390a92..0b8dd33 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (kmod-34.2.tar.xz) = 0e095c45ad61a6c61ce1ad61b9aa10cf5040e688b749f9a933b0e7d12de493c58027a5068b459cbbce05576fc564a22b83a3dbef1e6511b2a3e27034c88afd33 +SHA512 (kmod-30.tar.xz) = e2cd34e600a72e44710760dfda9364b790b8352a99eafbd43e683e4a06f37e6b5c0b5d14e7c28070e30fc5fc6ceddedf7b97f3b6c2c5c2d91204fefd630b9a3e diff --git a/tests/libkmod/Makefile b/tests/libkmod/Makefile new file mode 100644 index 0000000..cc53a81 --- /dev/null +++ b/tests/libkmod/Makefile @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: LGPL-2.1+ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/libkmod +# Description: Test if libkmod working ok +# Author: Susant Sahani +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +export TEST=/CoreOS/libkmod +export TESTVERSION=1.0 + +OBJS = test-libkmod.c +CFLAG = -Wall -g3 +CC = gcc +LIBS = -lkmod -lcmocka + +test-libkmod:${OBJ} + ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS} + +run: test-libkmod + ./runtest.sh +clean: + -rm -f test-libkmod + +.c.o: + ${CC} ${CFLAGS} ${INCLUDES} -c $< + +CC = gcc + +include /usr/share/rhts/lib/rhts-make.include +$(METADATA): Makefile + @echo "Owner: Susant Sahani" > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Test libkmod works ok" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: libkmod" >> $(METADATA) + @echo "Requires: libkmod libkmod-devel" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -Fedora 29" >> $(METADATA) + rhts-lint $(METADATA) diff --git a/tests/libkmod/libkmod.fmf b/tests/libkmod/libkmod.fmf deleted file mode 100644 index 8733518..0000000 --- a/tests/libkmod/libkmod.fmf +++ /dev/null @@ -1,3 +0,0 @@ -test: bash ./runtest.sh -framework: beakerlib -duration: 15m diff --git a/tests/libkmod/metadata b/tests/libkmod/metadata deleted file mode 100644 index 455987a..0000000 --- a/tests/libkmod/metadata +++ /dev/null @@ -1,14 +0,0 @@ -[General] -name=libkmod gating test -owner=Susant Sahani -description=libkmod gating test -license=GPLv2 -confidential=no -destructive=no - -[restraint] -entry_point=./runtest.sh -max_time=15m -use_pty=false -dependencies=gcc,make,libcmocka-devel,kmod-devel - diff --git a/tests/libkmod/runtest.sh b/tests/libkmod/runtest.sh index d86b2e2..1ef013c 100755 --- a/tests/libkmod/runtest.sh +++ b/tests/libkmod/runtest.sh @@ -18,7 +18,6 @@ rlJournalStart rlPhaseStartSetup rlAssertRpm $PACKAGE rlAssertExists "$IPIP" - rlRun "gcc -o test-libkmod test-libkmod.c -lkmod -lcmocka" rlRun "cp test-libkmod /usr/bin/" rlPhaseEnd diff --git a/tests/plan.fmf b/tests/plan.fmf deleted file mode 100644 index 160239c..0000000 --- a/tests/plan.fmf +++ /dev/null @@ -1,10 +0,0 @@ -prepare: - how: install - package: - - libcmocka-devel - - make - - gcc -discover: - how: fmf -execute: - how: tmt diff --git a/tests/sanity/Makefile b/tests/sanity/Makefile new file mode 100644 index 0000000..e422f7f --- /dev/null +++ b/tests/sanity/Makefile @@ -0,0 +1,79 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of general/kmod/sanity +# Description: kmod test +# +# 2016-07-31 +# Author: Chunyu Hu +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +TENV=_env +ifeq ($(PKG_TOP_DIR),) + export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \ + [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done) + export _TOP_DIR := $(shell p=$$PWD; while :; do \ + [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done) + -include $(PKG_TOP_DIR)/env.mk +endif +include $(TENV) +ifeq ($(_TOP_DIR),) + _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE) +endif + +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(TENV) $(METADATA) _env runtest.sh Makefile PURPOSE lib.sh + +.PHONY: all install download clean + +run: $(FILES) build + ( set +o posix; . /usr/bin/rhts_environment.sh; \ + . /usr/share/beakerlib/beakerlib.sh; \ + . runtest.sh ) + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -fr *~ $(BUILT_FILES) + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Chunyu Hu " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: kmod kernel module check from kernel modules tools">> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 1h" >> $(METADATA) + @echo "RunFor: kernel" >> $(METADATA) + @echo "Requires: kernel" >> $(METADATA) + @echo "Requires: sysstat perf trace-cmd" >> $(METADATA) + @echo "Requires: $(PACKAGE_NAME) python rpm wget" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + rhts-lint $(METADATA) diff --git a/tests/sanity/metadata b/tests/sanity/metadata deleted file mode 100644 index 6c68b4b..0000000 --- a/tests/sanity/metadata +++ /dev/null @@ -1,12 +0,0 @@ -[General] -name=kmod gating test -owner=Ziqian SUN -description=kmod gating test -license=GPLv2 -confidential=no -destructive=no - -[restraint] -entry_point=./runtest.sh -max_time=15m -use_pty=false diff --git a/tests/sanity/sanity.fmf b/tests/sanity/sanity.fmf deleted file mode 100644 index 8733518..0000000 --- a/tests/sanity/sanity.fmf +++ /dev/null @@ -1,3 +0,0 @@ -test: bash ./runtest.sh -framework: beakerlib -duration: 15m diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..828a27a --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,18 @@ +- hosts: localhost + tags: + - classic + roles: + - role: standard-test-beakerlib + tests: + - sanity + - libkmod + required_packages: + - kernel + - perf + - sysstat + - trace-cmd + - kmod + - kmod-devel + - gcc + - libcmocka + - libcmocka-devel diff --git a/weak-modules b/weak-modules index 76523a7..d4ac171 100644 --- a/weak-modules +++ b/weak-modules @@ -758,7 +758,6 @@ validate_weak_links() { # to return to caller that original proposal is not valid # here 0 is true, 1 is false, since it will be the return code local is_configuration_valid=0 - local cat_prog tmp=$(mktemp -p $tmpdir) compatible_modules=() @@ -767,12 +766,7 @@ validate_weak_links() { local symvers_path=$(find_symvers_file "$krel") [[ -n "$symvers_path" ]] || return - cat_prog="cat" - case "$symvers" in - *.gz) cat_prog="zcat" ;; - *.xz) cat_prog="xzcat" ;; - esac - "$cat_prog" "$symvers_path" > $tmpdir/symvers-$krel + zcat "$symvers_path" > $tmpdir/symvers-$krel fi while ((is_updates_changed)); do