!24 update to 3.0.12
From: @yaqiangchen Reviewed-by: @wang--ge Signed-off-by: @wang--ge
This commit is contained in:
commit
622d550afa
@ -1,59 +0,0 @@
|
|||||||
From cfe6363124a0d0495727c6f4e8a1809b295a8cbf Mon Sep 17 00:00:00 2001
|
|
||||||
From: liyunfei <liyunfei33@huawei.com>
|
|
||||||
Date: Wed, 13 Sep 2023 10:05:33 +0800
|
|
||||||
Subject: [PATCH] Support CC=clang and LD=ld.lld When building the Linux
|
|
||||||
kernel, one may use `make LLVM=1` to set multiple flags, akin to `make
|
|
||||||
CC=clang LD=ld.lld NM=llvm-nm ...` (see the link below for kernel docs
|
|
||||||
explaining this further in detail).
|
|
||||||
|
|
||||||
When building kernel modules, to ensure we're using the same toolchain
|
|
||||||
as the underlying core kernel image, Kbuild will error if it's reinvoked
|
|
||||||
with a toolchain that differs. This causes DKMS to fail, since it's not
|
|
||||||
re-specifying the same compiler (or linker, etc).
|
|
||||||
|
|
||||||
Check the .comment section of the vmlinux file in the Linux kernel
|
|
||||||
source dir, and set CC= and LD= flags for make based on that.
|
|
||||||
|
|
||||||
If vmlinux does not exist, grep .config for CONFIG_CC_IS_CLANG=y and
|
|
||||||
CONFIG_LD_IS_LLD=y.
|
|
||||||
|
|
||||||
Fixes: #124
|
|
||||||
Fixes: ClangBuiltLinux/linux#1104
|
|
||||||
Link: https://docs.kernel.org/kbuild/llvm.html
|
|
||||||
Suggested-by: Colin Ian King <colin.king@canonical.com>
|
|
||||||
Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
|
|
||||||
---
|
|
||||||
dkms | 17 +++++++++++++++++
|
|
||||||
1 file changed, 17 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/dkms b/dkms
|
|
||||||
index c4b9a26..983aefc 100755
|
|
||||||
--- a/dkms
|
|
||||||
+++ b/dkms
|
|
||||||
@@ -699,6 +699,23 @@ read_conf()
|
|
||||||
[[ ${MODULES_CONF[$index]} ]] && modules_conf_array[$index]="${MODULES_CONF[$index]}"
|
|
||||||
done
|
|
||||||
|
|
||||||
+ # Check if clang was used to compile or lld was used to link the kernel.
|
|
||||||
+ if [[ -e $kernel_source_dir/vmlinux ]]; then
|
|
||||||
+ if readelf -p .comment $kernel_source_dir/vmlinux | grep -q clang; then
|
|
||||||
+ make_command="${make_command} CC=clang"
|
|
||||||
+ fi
|
|
||||||
+ if readelf -p .comment $kernel_source_dir/vmlinux | grep -q LLD; then
|
|
||||||
+ make_command="${make_command} LD=ld.lld"
|
|
||||||
+ fi
|
|
||||||
+ elif [[ -e $kernel_source_dir/.config ]]; then
|
|
||||||
+ if grep -q CONFIG_CC_IS_CLANG=y $kernel_source_dir/.config; then
|
|
||||||
+ make_command="${make_command} CC=clang"
|
|
||||||
+ fi
|
|
||||||
+ if grep -q CONFIG_LD_IS_LLD=y $kernel_source_dir/.config; then
|
|
||||||
+ make_command="${make_command} LD=ld.lld"
|
|
||||||
+ fi
|
|
||||||
+ fi
|
|
||||||
+
|
|
||||||
# Set patch_array (including kernel specific patches)
|
|
||||||
count=0
|
|
||||||
for ((index=0; index < ${#PATCH[@]}; index++)); do
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
From 25077200289dfdc37c0e86ec4c86e4932137088e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Morten Linderud <morten@linderud.pw>
|
|
||||||
Date: Sat, 10 Sep 2022 15:01:15 +0200
|
|
||||||
Subject: [PATCH] dkms: Change deprecated egrep for grep -E
|
|
||||||
|
|
||||||
New versions of grep is going to issue a warning when `egrep` is used.
|
|
||||||
|
|
||||||
egrep: warning: egrep is obsolescent; using grep -E
|
|
||||||
|
|
||||||
This changes the invocation to `grep -E`
|
|
||||||
|
|
||||||
Signed-off-by: Morten Linderud <morten@linderud.pw>
|
|
||||||
---
|
|
||||||
dkms | 2 +-
|
|
||||||
dkms.8 | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dkms b/dkms
|
|
||||||
index be00118..c4b9a26 100644
|
|
||||||
--- a/dkms
|
|
||||||
+++ b/dkms
|
|
||||||
@@ -1900,7 +1900,7 @@ remove_module()
|
|
||||||
done
|
|
||||||
|
|
||||||
# Delete the $module_version part of the tree if no other $module_version/$kernel_version dirs exist
|
|
||||||
- if ! find $dkms_tree/$module/$module_version/* -maxdepth 0 -type d 2>/dev/null | egrep -qv "(build|tarball|driver_disk|rpm|deb|source)$"; then
|
|
||||||
+ if ! find $dkms_tree/$module/$module_version/* -maxdepth 0 -type d 2>/dev/null | grep -Eqv "(build|tarball|driver_disk|rpm|deb|source)$"; then
|
|
||||||
echo $""
|
|
||||||
echo $"------------------------------"
|
|
||||||
echo $"Deleting module version: $module_version"
|
|
||||||
diff --git a/dkms.8 b/dkms.8
|
|
||||||
index 75b30de..86df63b 100644
|
|
||||||
--- a/dkms.8
|
|
||||||
+++ b/dkms.8
|
|
||||||
@@ -609,7 +609,7 @@ should be put into
|
|
||||||
.B MAKE[0].
|
|
||||||
Other entries in the MAKE array will only be used if their corresponding entry in
|
|
||||||
.B MAKE_MATCH[#]
|
|
||||||
-matches, as a regular expression (using egrep), the kernel that the module is being built for.
|
|
||||||
+matches, as a regular expression (using grep -E), the kernel that the module is being built for.
|
|
||||||
Note that if no value is placed in
|
|
||||||
.B MAKE_MATCH[#]
|
|
||||||
for any
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
Binary file not shown.
BIN
dkms-3.0.12.tar.gz
Normal file
BIN
dkms-3.0.12.tar.gz
Normal file
Binary file not shown.
33
dkms.spec
33
dkms.spec
@ -1,14 +1,12 @@
|
|||||||
Summary: Dynamic Kernel Module Support Framework
|
Summary: Dynamic Kernel Module Support Framework
|
||||||
Name: dkms
|
Name: dkms
|
||||||
Version: 2.6.1
|
Version: 3.0.12
|
||||||
Release: 8
|
Release: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
URL: https://github.com/dell/dkms
|
URL: https://github.com/dell/dkms
|
||||||
Source0: https://github.com/dell/dkms/archive/v%{version}.tar.gz#/dkms-%{version}.tar.gz
|
Source0: https://github.com/dell/dkms/archive/v%{version}.tar.gz#/dkms-%{version}.tar.gz
|
||||||
# because Mandriva calls this package dkms-minimal
|
# because Mandriva calls this package dkms-minimal
|
||||||
Patch0: change-deprecated-egrep-for-grep-E.patch
|
|
||||||
Patch1: Support-CC-clang-and-LD-ld.lld.patch
|
|
||||||
Provides: dkms-minimal = %{version}
|
Provides: dkms-minimal = %{version}
|
||||||
Requires: coreutils
|
Requires: coreutils
|
||||||
Requires: cpio
|
Requires: cpio
|
||||||
@ -29,6 +27,7 @@ Requires(post): systemd
|
|||||||
Requires(preun): systemd
|
Requires(preun): systemd
|
||||||
Requires(postun): systemd
|
Requires(postun): systemd
|
||||||
Requires: kernel-devel
|
Requires: kernel-devel
|
||||||
|
Recommends: openssl
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains the framework for the Dynamic Kernel Module Support (DKMS)
|
This package contains the framework for the Dynamic Kernel Module Support (DKMS)
|
||||||
@ -90,13 +89,13 @@ echo ""
|
|||||||
%install
|
%install
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
make install-redhat-systemd DESTDIR=$RPM_BUILD_ROOT \
|
make install-redhat DESTDIR=%{buildroot}
|
||||||
SBIN=$RPM_BUILD_ROOT%{_sbindir} \
|
|
||||||
VAR=$RPM_BUILD_ROOT%{_localstatedir}/lib/%{name} \
|
# Move 40-dkms.install to read only area (no configuration file):
|
||||||
MAN=$RPM_BUILD_ROOT%{_mandir}/man8 \
|
mkdir -p %{buildroot}%{_prefix}/lib/kernel/
|
||||||
ETC=$RPM_BUILD_ROOT%{_sysconfdir}/%{name} \
|
mv %{buildroot}%{_sysconfdir}/kernel/install.d %{buildroot}%{_prefix}/lib/kernel/
|
||||||
BASHDIR=$RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d \
|
|
||||||
LIBDIR=$RPM_BUILD_ROOT%{_prefix}/lib/%{name}
|
sed -i -e 's/# modprobe_on_install="true"/modprobe_on_install="true"/g' %{buildroot}%{_sysconfdir}/%{name}/framework.conf
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
@ -117,19 +116,25 @@ fi
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc sample.spec sample.conf AUTHORS COPYING README.md
|
%doc COPYING README.md images
|
||||||
%{_unitdir}/%{name}.service
|
%{_unitdir}/%{name}.service
|
||||||
%{_prefix}/lib/%{name}
|
%{_prefix}/lib/%{name}
|
||||||
|
%{_prefix}/lib/kernel/install.d/40-%{name}.install
|
||||||
%{_mandir}/*/*
|
%{_mandir}/*/*
|
||||||
%{_sbindir}/%{name}
|
%{_sbindir}/%{name}
|
||||||
%{_localstatedir}/lib/%{name}
|
%{_localstatedir}/lib/%{name}
|
||||||
%config(noreplace) %{_sysconfdir}/%{name}
|
%dir %{_sysconfdir}/%{name}
|
||||||
|
%config(noreplace) %{_sysconfdir}/%{name}/framework.conf
|
||||||
|
%dir %{_sysconfdir}/%{name}/framework.conf.d
|
||||||
# these dirs are for plugins - owned by other packages
|
# these dirs are for plugins - owned by other packages
|
||||||
%{_sysconfdir}/kernel/postinst.d/%{name}
|
%{_sysconfdir}/kernel/postinst.d/%{name}
|
||||||
%{_sysconfdir}/kernel/prerm.d/%{name}
|
%{_sysconfdir}/kernel/prerm.d/%{name}
|
||||||
%{_sysconfdir}/bash_completion.d/%{name}
|
%{_datadir}/bash-completion/completions/%{name}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 20 2023 chenyaqiang <chengyaqiang@huawei.com> - 3.0.12-1
|
||||||
|
- update to 3.0.12
|
||||||
|
|
||||||
* Tue Sep 19 2023 liyunfei <liyunfei@huawei.com> - 2.6.1-8
|
* Tue Sep 19 2023 liyunfei <liyunfei@huawei.com> - 2.6.1-8
|
||||||
- Add clang compile support
|
- Add clang compile support
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user