Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e510391817 | ||
|
|
d4c4417a62 | ||
|
|
1eb1bcfcee | ||
|
|
49d47bbf00 |
15 changed files with 229 additions and 424 deletions
|
|
@ -1 +0,0 @@
|
|||
1
|
||||
21
.gitignore
vendored
21
.gitignore
vendored
|
|
@ -1 +1,20 @@
|
|||
/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
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
#
|
||||
# depmod.conf
|
||||
#
|
||||
|
||||
# override default search ordering for kmod packaging
|
||||
search updates extra built-in weak-updates
|
||||
267
kmod.spec
267
kmod.spec
|
|
@ -1,105 +1,25 @@
|
|||
# Fedora does not support CONFIG_MODVERSIONS. Without kabi support
|
||||
# weak-modules is useless at best, and can be actively harmful.
|
||||
# Since RHEL *does* support this and offers kabi support,
|
||||
# turn it on there by default.
|
||||
%if 0%{?rhel}
|
||||
%bcond_without weak_modules
|
||||
%bcond_without dist_conf
|
||||
%else
|
||||
%bcond_with weak_modules
|
||||
%bcond_with dist_conf
|
||||
%endif
|
||||
|
||||
%bcond_without zlib
|
||||
%bcond_without xz
|
||||
%bcond_without zstd
|
||||
|
||||
Name: kmod
|
||||
Version: 34.2
|
||||
Version: 26
|
||||
Release: 3%{?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
|
||||
URL: https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git
|
||||
License: GPLv2+
|
||||
URL: http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary
|
||||
Source0: https://www.kernel.org/pub/linux/utils/kernel/kmod/%{name}-%{version}.tar.xz
|
||||
Source1: weak-modules
|
||||
Source2: depmod.conf.dist
|
||||
Exclusiveos: Linux
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: chrpath
|
||||
%if %{with zlib}
|
||||
BuildRequires: zlib-devel
|
||||
%endif
|
||||
%if %{with xz}
|
||||
BuildRequires: xz-devel
|
||||
%endif
|
||||
BuildRequires: scdoc gtk-doc
|
||||
BuildRequires: libxslt
|
||||
BuildRequires: openssl-devel
|
||||
BuildRequires: make automake libtool
|
||||
%if %{with zstd}
|
||||
BuildRequires: libzstd-devel
|
||||
%endif
|
||||
|
||||
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 +28,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
|
||||
|
|
@ -122,45 +43,37 @@ The kmod-devel package provides header files used for development of
|
|||
applications that wish to load or unload Linux kernel modules.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
autoreconf --install
|
||||
export V=1
|
||||
%configure \
|
||||
--with-openssl \
|
||||
%if %{with zlib}
|
||||
--with-zlib \
|
||||
%endif
|
||||
%if %{with xz}
|
||||
--with-xz \
|
||||
%endif
|
||||
%if %{with zstd}
|
||||
--with-zstd \
|
||||
%endif
|
||||
--enable-debug
|
||||
|
||||
%{make_build} V=1
|
||||
--with-xz
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
%{make_install}
|
||||
|
||||
pushd $RPM_BUILD_ROOT%{_mandir}/man5
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
pushd $RPM_BUILD_ROOT/%{_mandir}/man5
|
||||
ln -s modprobe.d.5.gz modprobe.conf.5.gz
|
||||
popd
|
||||
|
||||
find %{buildroot} -type f -name "*.la" -delete
|
||||
rm -rf $RPM_BUILD_ROOT%{_libdir}/*.la
|
||||
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
|
||||
|
||||
%if %{with weak_modules}
|
||||
install -pm 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sbindir}/weak-modules
|
||||
%endif
|
||||
|
||||
%if %{with dist_conf}
|
||||
install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf
|
||||
%endif
|
||||
mkdir -p $RPM_BUILD_ROOT/sbin
|
||||
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sbindir}/weak-modules
|
||||
|
||||
%files
|
||||
%dir %{_sysconfdir}/depmod.d
|
||||
|
|
@ -173,23 +86,14 @@ install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf
|
|||
%{_sbindir}/rmmod
|
||||
%{_sbindir}/lsmod
|
||||
%{_sbindir}/depmod
|
||||
%if %{with weak_modules}
|
||||
%{_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 TODO
|
||||
|
||||
%files libs
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%{_libdir}/libkmod.so.*
|
||||
|
||||
|
|
@ -199,129 +103,6 @@ install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf
|
|||
%{_libdir}/libkmod.so
|
||||
|
||||
%changelog
|
||||
* Wed Aug 13 2025 Zamir SUN <zsun@fedoraproject.org> - 34.2-3
|
||||
- Rebuild to switch gating to TMT.
|
||||
- Resolves: rhbz#2382934
|
||||
|
||||
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 34.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Mon Mar 31 2025 Josh Boyer <jwboyer@fedoraproject.org> - 34.2-1
|
||||
- New upstream v34.2
|
||||
- Resolves: rhbz#2355680
|
||||
|
||||
* Sat Mar 08 2025 Josh Boyer <jwboyer@fedoraproject.org> - 34.1-1
|
||||
- New upstream v34.1
|
||||
- Resolves: rhbz#2350269
|
||||
|
||||
* Mon Feb 24 2025 Josh Boyer <jwboyer@fedoraproject.org>
|
||||
- New upstream v34
|
||||
- Resolves: rhbz#2347049
|
||||
|
||||
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 33-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 33-2
|
||||
- Rebuilt for the bin-sbin merge (2nd attempt)
|
||||
|
||||
* Thu Aug 15 2024 Eugene Syromiatnikov <esyr@redhat.com> - 33-1
|
||||
- New upstream v33
|
||||
- Resolves: rhbz#2268030
|
||||
|
||||
* Mon Aug 12 2024 Eugene Syromiatnikov <esyr@redhat.com> - 31-8
|
||||
- weak-modules: use either zcat or xzcat based on symvers file extension
|
||||
|
||||
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 31-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Thu Apr 11 2024 Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl> - 31-6
|
||||
- Prepare for %%_bindir==%%_sbindir
|
||||
|
||||
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 31-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 31-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Dec 01 2023 Eugene Syromiatnikov <esyr@redhat.com> - 31-3
|
||||
- migrated to SPDX license
|
||||
|
||||
* Thu Nov 09 2023 Josh Boyer <jwboyer@fedoraproject.org> - 31-2
|
||||
- Add upstream patches to enable SHA3 support
|
||||
- New upstream v31
|
||||
- Resolves: rhbz#2241394
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 30-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue May 09 2023 Eugene Syromiatnikov <esyr@redhat.com> - 30-5
|
||||
- Add symvers.xz support to weak-modules
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 30-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Sat Dec 17 2022 Florian Weimer <fweimer@redhat.com> - 30-3
|
||||
- Port configure script to C99
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 30-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Mon Jul 4 2022 Yauheni Kaliuta <ykaliuta@redhat.com> - 30-1
|
||||
- New upstream v30
|
||||
- Resolves: rhbz#2102796
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 29-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 29-6
|
||||
- Rebuilt with OpenSSL 3.0.0
|
||||
|
||||
* Tue Aug 10 2021 Yauheni Kaliuta <ykaliuta@redhat.com> - 29-5
|
||||
- kmod.spec: enable debug
|
||||
- weak-modules: compare_initramfs_modules: exit on pushd/popd failures
|
||||
- weak-modules: split modules into array with read -a
|
||||
- Add default config file, /etc/depmod.d/dist.conf
|
||||
|
||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 29-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Tue Jun 08 2021 Neal Gompa <ngompa13@gmail.com> - 29-3
|
||||
- Fix conditional to only install weak-modules for RHEL
|
||||
|
||||
* Tue May 25 2021 Justin M. Forbes <jforbes@fedoraproject.org> - 29-2
|
||||
- Rebuild for weak-modules drop in Fedora
|
||||
|
||||
* Mon May 24 2021 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Remove weak-modules for Fedora as it causes problems.
|
||||
|
||||
* Fri May 14 2021 Josh Boyer <jwboyer@fedoraproject.org> - 29-1
|
||||
- New upstream v29
|
||||
- Resolves: rhbz#1962980
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 28-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Thu Jan 07 2021 Josh Boyer <jwboyer@fedoraproject.org> - 28-1
|
||||
- New upstream v28
|
||||
- Enable zstd support
|
||||
- Resolves: rhbz#1913949
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 27-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Wed Mar 25 2020 Yauheni Kaliuta <ykaliuta@fedoraproject.org> - 27-2
|
||||
- add 0001-depmod-do-not-output-.bin-to-stdout.patch
|
||||
Resolves: rhbz#1808430
|
||||
|
||||
* Thu Feb 20 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 27-1
|
||||
- New upstream v27
|
||||
|
||||
* Mon Jan 20 2020 Yauheni Kaliuta <ykaliuta@fedoraproject.org> - 26-5
|
||||
- weak-modules: sync with RHEL
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 26-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Feb 25 2019 Yauheni Kaliuta <yauheni.kaliuta@redhat.com> - 26-3
|
||||
- weak-modules: sync with RHEL
|
||||
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (kmod-34.2.tar.xz) = 0e095c45ad61a6c61ce1ad61b9aa10cf5040e688b749f9a933b0e7d12de493c58027a5068b459cbbce05576fc564a22b83a3dbef1e6511b2a3e27034c88afd33
|
||||
SHA512 (kmod-26.tar.xz) = 3ca276c6fc13c2dd2220ec528b8dc4ab4edee5d2b22e16b6f945c552e51f74342c01c33a53740e6af8c893d42bd4d6f629cd8fa6e15ef8bd8da30cb003ef0865
|
||||
|
|
|
|||
46
tests/libkmod/Makefile
Normal file
46
tests/libkmod/Makefile
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of /CoreOS/libkmod
|
||||
# Description: Test if libkmod working ok
|
||||
# Author: Susant Sahani<susant@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
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<susant@redhat.com>" > $(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)
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
test: bash ./runtest.sh
|
||||
framework: beakerlib
|
||||
duration: 15m
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
[General]
|
||||
name=libkmod gating test
|
||||
owner=Susant Sahani <susant@redhat.com>
|
||||
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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
prepare:
|
||||
how: install
|
||||
package:
|
||||
- libcmocka-devel
|
||||
- make
|
||||
- gcc
|
||||
discover:
|
||||
how: fmf
|
||||
execute:
|
||||
how: tmt
|
||||
79
tests/sanity/Makefile
Normal file
79
tests/sanity/Makefile
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of general/kmod/sanity
|
||||
# Description: kmod test
|
||||
#
|
||||
# 2016-07-31
|
||||
# Author: Chunyu Hu <chuhu@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# 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 <chuhu@redhat.com>" > $(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)
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
[General]
|
||||
name=kmod gating test
|
||||
owner=Ziqian SUN <zsun@redhat.com>
|
||||
description=kmod gating test
|
||||
license=GPLv2
|
||||
confidential=no
|
||||
destructive=no
|
||||
|
||||
[restraint]
|
||||
entry_point=./runtest.sh
|
||||
max_time=15m
|
||||
use_pty=false
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
test: bash ./runtest.sh
|
||||
framework: beakerlib
|
||||
duration: 15m
|
||||
18
tests/tests.yml
Normal file
18
tests/tests.yml
Normal file
|
|
@ -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
|
||||
170
weak-modules
170
weak-modules
|
|
@ -3,6 +3,15 @@
|
|||
# weak-modules - determine which modules are kABI compatible with installed
|
||||
# kernels and set up the symlinks in /lib/*/weak-updates.
|
||||
#
|
||||
# This is an updated version of the script which doesn't support
|
||||
# multiple installation of the same out-of-tree module (stored in the
|
||||
# 'extra' subdirectory) for multiple kernels. This assumption is
|
||||
# supposed to be verified at the rpm level of the packages delivering
|
||||
# these modules. There are some checks for this assumption, however we
|
||||
# really don't solve this situation. This limitation allows for a much
|
||||
# simpler version of the script. Previous version tried to work in this
|
||||
# case but was incorrect in some cases.
|
||||
|
||||
unset LANG LC_ALL LC_COLLATE
|
||||
|
||||
tmpdir=$(mktemp -td ${0##*/}.XXXXXX)
|
||||
|
|
@ -23,14 +32,6 @@ declare -A weak_modules_before
|
|||
declare -A groups
|
||||
declare -A grouped_modules
|
||||
|
||||
# output of validate_weak_links, one iteration
|
||||
# short_name -> path
|
||||
declare -A compatible_modules
|
||||
|
||||
# state for update_modules_for_krel (needed for add_kernel case)
|
||||
# short_name -> path
|
||||
declare -A installed_modules
|
||||
|
||||
# doit:
|
||||
# A wrapper used whenever we're going to perform a real operation.
|
||||
doit() {
|
||||
|
|
@ -179,24 +180,24 @@ compare_initramfs_modules() {
|
|||
mkdir "$tmpdir/new_initramfs"
|
||||
|
||||
decompress_initramfs "$old_initramfs" "$tmpdir/old_initramfs.img"
|
||||
pushd "$tmpdir/old_initramfs" >/dev/null || exit
|
||||
pushd "$tmpdir/old_initramfs" >/dev/null
|
||||
cpio -i < "$tmpdir/old_initramfs.img" 2>/dev/null
|
||||
rm "$tmpdir/old_initramfs.img"
|
||||
n=0; for i in `list_module_files|sort`; do
|
||||
old_initramfs_modules[n]="$i"
|
||||
n=$((n+1))
|
||||
done
|
||||
popd >/dev/null || exit
|
||||
popd >/dev/null
|
||||
|
||||
decompress_initramfs "$new_initramfs" "$tmpdir/new_initramfs.img"
|
||||
pushd "$tmpdir/new_initramfs" >/dev/null || exit
|
||||
pushd "$tmpdir/new_initramfs" >/dev/null
|
||||
cpio -i < "$tmpdir/new_initramfs.img" 2>/dev/null
|
||||
rm "$tmpdir/new_initramfs.img"
|
||||
n=0; for i in `list_module_files|sort`; do
|
||||
new_initramfs_modules[n]="$i"
|
||||
n=$((n+1))
|
||||
done
|
||||
popd >/dev/null || exit
|
||||
popd >/dev/null
|
||||
|
||||
# Compare the length and contents of the arrays
|
||||
if [ "${#old_initramfs_modules[@]}" == "${#new_initramfs_modules[@]}" -a \
|
||||
|
|
@ -467,34 +468,11 @@ prepare_sandbox() {
|
|||
|
||||
#config
|
||||
echo "search external extra built-in weak-updates" >"$conf"
|
||||
echo "external * $dir" >>"$conf"
|
||||
echo "external $krel $dir" >>"$conf"
|
||||
|
||||
depmod="$depmod_orig -C $conf"
|
||||
}
|
||||
|
||||
# discard_installed:
|
||||
# remove installed_modules[] from modules[]
|
||||
discard_installed()
|
||||
{
|
||||
local short_name
|
||||
|
||||
for m in "${!modules[@]}"; do
|
||||
short_name="$(module_short_name "${modules[$m]}")"
|
||||
|
||||
[[ -z "${installed_modules[$short_name]}" ]] && continue
|
||||
|
||||
unset "modules[$m]"
|
||||
done
|
||||
}
|
||||
|
||||
# update_installed:
|
||||
# add compatible_modules[] to installed_modules[]
|
||||
update_installed()
|
||||
{
|
||||
for m in "${!compatible_modules[@]}"; do
|
||||
installed_modules[$m]="${compatible_modules[$m]}"
|
||||
done
|
||||
}
|
||||
|
||||
# finish_sandbox:
|
||||
# restore global state after sandboxing
|
||||
|
|
@ -520,31 +498,26 @@ finish_sandbox() {
|
|||
# Auxiliary functions to find symvers file
|
||||
make_kernel_file_names() {
|
||||
local krel="$1"
|
||||
shift
|
||||
local file="$1"
|
||||
shift
|
||||
local file="$2"
|
||||
local suffix="$3"
|
||||
|
||||
for suffix in "$@"; do
|
||||
echo "${BASEDIR}/boot/${file}-${krel}${suffix}"
|
||||
echo "${BASEDIR}/lib/modules/${krel}/${file}${suffix}"
|
||||
done
|
||||
echo "${BASEDIR}/boot/${file}-${krel}${suffix}"
|
||||
echo "${BASEDIR}/lib/modules/${krel}/${file}${suffix}"
|
||||
}
|
||||
|
||||
find_kernel_file() {
|
||||
local krel="$1"
|
||||
shift
|
||||
local file="$1"
|
||||
shift
|
||||
local print="$1"
|
||||
shift
|
||||
local file="$2"
|
||||
local suffix="$3"
|
||||
local print="$4"
|
||||
local i
|
||||
|
||||
if [[ "$print" != "" ]]; then
|
||||
make_kernel_file_names "$krel" "$file" "$@"
|
||||
make_kernel_file_names "$krel" "$file" "$suffix"
|
||||
return 0
|
||||
fi
|
||||
|
||||
for i in $(make_kernel_file_names "$krel" "$file" "$@"); do
|
||||
for i in $(make_kernel_file_names "$krel" "$file" "$suffix"); do
|
||||
if [[ -r "$i" ]]; then
|
||||
echo "$i"
|
||||
return 0
|
||||
|
|
@ -568,7 +541,7 @@ find_symvers_file() {
|
|||
local krel="$1"
|
||||
local print="$2"
|
||||
|
||||
find_kernel_file "$krel" symvers "$print" .xz .gz
|
||||
find_kernel_file "$krel" symvers .gz "$print"
|
||||
}
|
||||
|
||||
# find_systemmap_file:
|
||||
|
|
@ -578,7 +551,7 @@ find_systemmap_file() {
|
|||
local print="$2"
|
||||
local no_suffix=""
|
||||
|
||||
find_kernel_file "$krel" System.map "$print" "$no_suffix"
|
||||
find_kernel_file "$krel" System.map "$no_suffix" "$print"
|
||||
}
|
||||
|
||||
#### Main logic
|
||||
|
|
@ -595,7 +568,6 @@ find_systemmap_file() {
|
|||
# the given kernel)
|
||||
# - check the state after validation to produce needed messages
|
||||
# and trigger initrd regeneration if the list changed.
|
||||
#
|
||||
update_modules_for_krel() {
|
||||
local krel="$1"
|
||||
local func="$2"
|
||||
|
|
@ -607,24 +579,12 @@ update_modules_for_krel() {
|
|||
|
||||
global_link_state_save $krel
|
||||
|
||||
# remove already installed from modules[]
|
||||
discard_installed
|
||||
|
||||
# do not run heavy validation procedure if no modules to install
|
||||
if [[ "${#modules[@]}" -eq 0 ]]; then
|
||||
finish_sandbox $krel
|
||||
return
|
||||
fi
|
||||
|
||||
$func $krel
|
||||
|
||||
if ! validate_weak_links $krel && [[ -z "$force_update" ]]; then
|
||||
global_link_state_restore $krel
|
||||
fi
|
||||
|
||||
# add compatible to installed
|
||||
update_installed
|
||||
|
||||
global_link_state_announce_changes $krel
|
||||
|
||||
finish_sandbox $krel
|
||||
|
|
@ -640,16 +600,12 @@ update_modules() {
|
|||
local func="$1"
|
||||
local force_update="$2"
|
||||
local module_krel
|
||||
declare -a saved_modules
|
||||
|
||||
read_modules_list || exit 1
|
||||
[[ ${#modules[@]} -gt 0 ]] || return
|
||||
saved_modules=("${modules[@]}")
|
||||
|
||||
for krel in $(find_installed_kernels); do
|
||||
update_modules_for_krel $krel $func $force_update
|
||||
modules=("${saved_modules[@]}")
|
||||
installed_modules=()
|
||||
done
|
||||
|
||||
for module in "${modules[@]}"; do
|
||||
|
|
@ -674,7 +630,7 @@ add_weak_links() {
|
|||
module_krel="$(krel_of_module $module)"
|
||||
|
||||
case "$module" in
|
||||
$BASEDIR/lib/modules/$krel/*)
|
||||
/lib/modules/$krel/*)
|
||||
# Module already installed to the current kernel
|
||||
continue ;;
|
||||
esac
|
||||
|
|
@ -742,7 +698,6 @@ remove_weak_links() {
|
|||
#
|
||||
# Returns 0 (success) if proposal is fine or
|
||||
# 1 (false) if some incompatible symlinks were removed
|
||||
# initializes global hashmap compatible_modules with all the valid ones
|
||||
validate_weak_links() {
|
||||
local krel="$1"
|
||||
local basedir=${BASEDIR:+-b $BASEDIR}
|
||||
|
|
@ -758,21 +713,14 @@ 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=()
|
||||
|
||||
if ! [[ -e $tmpdir/symvers-$krel ]]; then
|
||||
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
|
||||
|
|
@ -831,9 +779,6 @@ validate_weak_links() {
|
|||
module_krel=$(krel_of_module $target)
|
||||
|
||||
if [[ "$module" == "$target" ]]; then
|
||||
short_name="$(module_short_name "$module")"
|
||||
compatible_modules+=([$short_name]="$module")
|
||||
|
||||
pr_verbose "Module ${module##*/} from kernel $module_krel is compatible with kernel $krel"
|
||||
fi
|
||||
done
|
||||
|
|
@ -932,12 +877,9 @@ add_modules() {
|
|||
# do_make_groups:
|
||||
# Takes tmp file which contains preprocessed modules.dep
|
||||
# output (or modules.dep)
|
||||
#
|
||||
# reads modules.dep format information from stdin
|
||||
# produces groups associative array
|
||||
# the group is a maximum subset of modules having at least a link
|
||||
#
|
||||
# more fine tuned extra filtering.
|
||||
do_make_groups()
|
||||
{
|
||||
local tmp="$1"
|
||||
|
|
@ -946,9 +888,7 @@ do_make_groups()
|
|||
declare -a mods
|
||||
|
||||
while read i; do
|
||||
read -a mods <<< "$i"
|
||||
|
||||
echo "${mods[0]}" |grep -q "extra/" || continue
|
||||
mods=($i)
|
||||
|
||||
# if the module already met, then its dependencies already counted
|
||||
module_group="${grouped_modules[${mods[0]}]}"
|
||||
|
|
@ -958,8 +898,6 @@ do_make_groups()
|
|||
group_name="${mods[0]}"
|
||||
|
||||
for mod in "${mods[@]}"; do
|
||||
echo "$mod" |grep -q "extra/" || continue
|
||||
|
||||
# if there is already such group,
|
||||
# it is a subset of the one being created
|
||||
# due to depmod output
|
||||
|
|
@ -977,32 +915,26 @@ do_make_groups()
|
|||
# preprocess output for make_groups
|
||||
# depmod -n produces also aliases, so it cuts them off
|
||||
# also it removes colon after the first module
|
||||
cut_depmod_deps()
|
||||
filter_depmod_deps()
|
||||
{
|
||||
awk 'BEGIN { pr = 1 } /^#/{ pr = 0 } pr == 1 {sub(":",""); print $0}'
|
||||
}
|
||||
|
||||
# filter_extra_absoluted:
|
||||
# make_abs_path:
|
||||
# Takes kernel version
|
||||
# makes full path from the relative module path
|
||||
# (produced by depmod for in-kernel-dir modules)
|
||||
# filter only extra/ modules
|
||||
filter_extra_absoluted()
|
||||
make_abs_path()
|
||||
{
|
||||
local kver="$1"
|
||||
local mod
|
||||
declare -a mods
|
||||
|
||||
while read i; do
|
||||
# skip non-extra. The check is not perfect, but ok
|
||||
# to speed up handling in general cases
|
||||
echo "$i" |grep -q "extra/" || continue
|
||||
|
||||
read -a mods <<< "$i"
|
||||
mods=($i)
|
||||
for j in "${!mods[@]}"; do
|
||||
mod="${mods[$j]}"
|
||||
|
||||
[[ ${mod:0:1} == "/" ]] || mod="$BASEDIR/lib/modules/$kver/$mod"
|
||||
[[ ${mod:0:1} == "/" ]] || mod="/lib/modules/$kver/$mod"
|
||||
mods[$j]="$mod"
|
||||
done
|
||||
echo "${mods[@]}"
|
||||
|
|
@ -1010,20 +942,20 @@ filter_extra_absoluted()
|
|||
}
|
||||
|
||||
# make_groups:
|
||||
# takes k -- kernel version, we are installing extras from
|
||||
# takes krel and a file with the list of modules,
|
||||
# prepares and feeds to do_make_groups
|
||||
# to create the module groups (global)
|
||||
make_groups()
|
||||
{
|
||||
local k="$1"
|
||||
local krel="$1"
|
||||
local tmp1="$2"
|
||||
local tmp2=$(mktemp -p $tmpdir)
|
||||
local basedir=${BASEDIR:+-b $BASEDIR}
|
||||
|
||||
groups=()
|
||||
grouped_modules=()
|
||||
|
||||
$depmod -n $basedir $k 2>/dev/null |
|
||||
cut_depmod_deps | filter_extra_absoluted $k > $tmp2
|
||||
$depmod -n $krel $(cat $tmp1) 2>/dev/null |
|
||||
filter_depmod_deps | make_abs_path $krel > $tmp2
|
||||
|
||||
do_make_groups $tmp2
|
||||
|
||||
|
|
@ -1034,7 +966,6 @@ add_kernel() {
|
|||
local krel=${1:-$(uname -r)}
|
||||
local tmp
|
||||
local no_force_update=""
|
||||
local num
|
||||
|
||||
tmp=$(mktemp -p $tmpdir)
|
||||
|
||||
|
|
@ -1044,36 +975,17 @@ add_kernel() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
for k in $(find_kernels_with_extra | rpmsort -r); do
|
||||
for k in $(find_kernels_with_extra | rpmsort); do
|
||||
[[ "$krel" == "$k" ]] && continue
|
||||
find_modules $k extra > $tmp
|
||||
|
||||
is_empty_file "$tmp" || make_groups $k
|
||||
is_empty_file "$tmp" || make_groups $krel $tmp
|
||||
|
||||
# reuse tmp
|
||||
|
||||
# optimization, check independent modules in one run.
|
||||
# first try groups with one element in each.
|
||||
# it means independent modules, so we can safely remove
|
||||
# incompatible links
|
||||
# some cut and paste here
|
||||
|
||||
echo > $tmp
|
||||
for g in "${groups[@]}"; do
|
||||
num="$(echo "$g" | wc -w)"
|
||||
[ "$num" -gt 1 ] && continue
|
||||
|
||||
printf '%s\n' $g >> $tmp
|
||||
done
|
||||
# to avoid subshell, see the read_modules_list comment
|
||||
read_modules_list < $tmp
|
||||
update_modules_for_krel $krel add_weak_links force_update
|
||||
|
||||
for g in "${groups[@]}"; do
|
||||
num="$(echo "$g" | wc -w)"
|
||||
[ "$num" -eq 1 ] && continue
|
||||
|
||||
printf '%s\n' $g > $tmp
|
||||
# to avoid subshell, see the read_modules_list comment
|
||||
read_modules_list < $tmp
|
||||
update_modules_for_krel $krel add_weak_links $no_force_update
|
||||
done
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue