sysv -> systemd switch [release 2.2.0.3-4mamba;Sat Dec 13 2014]
This commit is contained in:
parent
ce10972958
commit
4bfff59189
11
dkms.service
Normal file
11
dkms.service
Normal file
@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=Dynamic Kernel Modules System
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/usr/lib/systemd/scripts/dkms start
|
||||
ExecStop=/usr/lib/systemd/scripts/dkms stop
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
45
dkms.spec
45
dkms.spec
@ -1,6 +1,6 @@
|
||||
Name: dkms
|
||||
Version: 2.2.0.3
|
||||
Release: 3mamba
|
||||
Release: 4mamba
|
||||
Summary: Dynamic Kernel Module Support
|
||||
Group: System/Tools
|
||||
Vendor: openmamba
|
||||
@ -8,6 +8,8 @@ Distribution: openmamba
|
||||
Packager: Ercole 'ercolinux' Carpanetto <ercole69@gmail.com>
|
||||
URL: http://linux.dell.com/projects.shtml#dkms
|
||||
Source: http://linux.dell.com/dkms/permalink/dkms-%{version}.tar.gz
|
||||
Source1: dkms.service
|
||||
Source2: dkms.systemd
|
||||
Patch0: dkms-2.2.0.3-dont_fail_if_module_source_removed.patch
|
||||
License: GPL
|
||||
## AUTOBUILDREQ-BEGIN
|
||||
@ -29,27 +31,45 @@ DKMS stands for Dynamic Kernel Module Support. It is designed to create a framew
|
||||
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||
make install-redhat DESTDIR=%{buildroot}
|
||||
|
||||
install -D -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/dkms.service
|
||||
install -D -m0755 %{SOURCE2} %{buildroot}%{_prefix}/lib/systemd/scripts/dkms
|
||||
|
||||
rm -f %{buildroot}%{_initrddir}/dkms_autoinstaller
|
||||
|
||||
install -d %{buildroot}%{_presetdir}
|
||||
cat > %{buildroot}%{_presetdir}/50-dkms.preset << _EOF
|
||||
enable dkms.service
|
||||
_EOF
|
||||
|
||||
|
||||
%clean
|
||||
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||
|
||||
%post
|
||||
%systemd_post %{name}
|
||||
if [ $1 -ge 1 ]; then
|
||||
/sbin/chkconfig --add dkms_autoinstaller
|
||||
/sbin/service dkms_autoinstaller start
|
||||
systemctl -q enable %{name}
|
||||
systemctl -q start %{name}
|
||||
fi
|
||||
:
|
||||
|
||||
%preun
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/chkconfig --del dkms_autoinstaller
|
||||
fi
|
||||
%systemd_preun %{name}
|
||||
:
|
||||
|
||||
%postun
|
||||
%systemd_postun %{name}
|
||||
:
|
||||
|
||||
%posttrans
|
||||
# clean old sysv broken links
|
||||
find /etc/rc[0-6].d/ -type l -xtype l -exec rm -f {} \;
|
||||
:
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%{_sysconfdir}/dkms/template-dkms-mkrpm.spec
|
||||
%{_sysconfdir}/dkms/template-dkms-redhat-kmod.spec
|
||||
%{_initrddir}/dkms_autoinstaller
|
||||
%{_sysconfdir}/bash_completion.d/dkms
|
||||
%{_sysconfdir}/dkms/framework.conf
|
||||
%{_sysconfdir}/kernel/postinst.d/dkms
|
||||
@ -63,10 +83,17 @@ fi
|
||||
%{_prefix}/lib/dkms/mkkerneldoth
|
||||
%dir %{_localstatedir}/lib/dkms
|
||||
%{_localstatedir}/lib/dkms/dkms_dbversion
|
||||
%{_mandir}/man8/dkms.8.gz
|
||||
%doc AUTHORS COPYING README.dkms TODO
|
||||
%{_presetdir}/50-dkms.preset
|
||||
%{_unitdir}/dkms.service
|
||||
%{_prefix}/lib/systemd/scripts/dkms
|
||||
%{_mandir}/man8/dkms.8*
|
||||
%doc AUTHORS COPYING
|
||||
#README.dkms TODO
|
||||
|
||||
%changelog
|
||||
* Sat Dec 13 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 2.2.0.3-4mamba
|
||||
- sysv -> systemd switch
|
||||
|
||||
* Sat Apr 13 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 2.2.0.3-3mamba
|
||||
- added a patch to avoid failed with dkms status and remove if missing source directory
|
||||
|
||||
|
61
dkms.systemd
Normal file
61
dkms.systemd
Normal file
@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /etc/default/dkms
|
||||
|
||||
# list dkms modules for the current running kernel
|
||||
list_dkms_modules() {
|
||||
shopt -s nullglob
|
||||
declare -a DKMS_MOULES
|
||||
# dkms status needs uname -r to list correctly intalled version for current kernel
|
||||
local modules_path=($(dkms status -k "$(uname -r)"|sed -rn 's#(.*), (.*), (.*), (.*): installed#\1/\2/\3/\4#p'))
|
||||
for p in "${modules_path[@]}"; do
|
||||
for m in /var/lib/dkms/"$p"/module/*.ko{,gz}; do
|
||||
m=${m##*/}
|
||||
m=${m%.gz}
|
||||
m=${m%.ko}
|
||||
DKMS_MODULES+=("$m")
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# load installed kernel modules for the current kernel version
|
||||
load_dkms_modules() {
|
||||
local ret=0
|
||||
list_dkms_modules
|
||||
for m in "${DKMS_MODULES[@]}"; do
|
||||
modprobe "$m"
|
||||
ret+=$?
|
||||
done
|
||||
return $ret
|
||||
}
|
||||
|
||||
# unload installed kernel modules for the current kernel version
|
||||
unload_dkms_modules() {
|
||||
list_dkms_modules
|
||||
# ask for removal
|
||||
for m in "${DKMS_MODULES[@]}"; do
|
||||
modprobe --remove --quiet "$m"
|
||||
done
|
||||
# check modules are unloaded
|
||||
# sometimes modprobe -r fail but modules are removed
|
||||
for m in "${DKMS_MODULES[@]}"; do
|
||||
[[ -e /sys/modules/$m ]] && return 1
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
dkms autoinstall -k "$(uname -r)"
|
||||
[[ $LOAD =~ [Yy][Ee][Ss] ]] && load_dkms_modules
|
||||
;;
|
||||
stop)
|
||||
[[ $UNLOAD =~ [Yy][Ee][Ss] ]] && unload_dkms_modules
|
||||
;;
|
||||
*)
|
||||
echo "usage: $0 {start|stop}" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
:
|
||||
# vim:set ts=2 sw=2 ft=sh et:
|
Loading…
Reference in New Issue
Block a user