Standardize globally kmod package names macros and kernel_uname_r variables in order to ease the build of kmod packages for non-default distribution (Fedora), for example for RHEL
Signed-off-by: Nicolas Viéville <nicolas.vieville@uphf.fr>
This commit is contained in:
parent
83f7c9f623
commit
4852d351ab
1 changed files with 163 additions and 109 deletions
|
|
@ -38,6 +38,16 @@ kernel_versions_to_build_for=
|
|||
filterfile=
|
||||
target=
|
||||
|
||||
kernel_uname_r=""
|
||||
kernel_uname_r_vanilla=""
|
||||
kernel_uname_r_short=""
|
||||
kernel_uname_r_wo_arch=""
|
||||
kernel_uname_r_dist=""
|
||||
kernel_uname_r_rel=""
|
||||
kernel_uname_r_rel_plus_one=""
|
||||
kernel_uname_r_short_plus_one=""
|
||||
kernel_uname_r_rel_minor=""
|
||||
|
||||
error_out()
|
||||
{
|
||||
local errorlevel=${1}
|
||||
|
|
@ -57,6 +67,84 @@ print_rpmtemplate_header()
|
|||
echo
|
||||
}
|
||||
|
||||
init_kernel_uname_r_vars()
|
||||
{
|
||||
## Build some interesting strings with kernel uname -r
|
||||
## Examples:
|
||||
## - Fedora and rhel:
|
||||
## kernel_uname_r 3.10.0-693.2.2.el7.x86_64
|
||||
## kernel_uname_r_vanilla 3.10.0
|
||||
## kernel_uname_r_short 3.10.0-693.el7
|
||||
## kernel_uname_r_wo_arch 3.10.0-693.2.2.el7
|
||||
## kernel_uname_r_dist el7
|
||||
## kernel_uname_r_rel 693
|
||||
## kernel_uname_r_rel_plus_one 694
|
||||
## kernel_uname_r_short_plus_one 3.10.0-694.el7
|
||||
## kernel_uname_r_rel_minor 2.2
|
||||
##
|
||||
kernel_uname_r=${1}
|
||||
kernel_uname_r_vanilla=$(echo ${1} | sed -n -e "s/\.${target}//" -e "s/\([[:alnum:]\.]\+\|\)-\(.*\)/\1/p")
|
||||
kernel_uname_r_short=$(echo ${1} | sed -n -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\)\(\.[[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\1-\2\4/p")
|
||||
kernel_uname_r_wo_arch=$(echo ${1} | sed -e "s/\.${target}//")
|
||||
kernel_uname_r_dist=$(echo ${1} | sed -n -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\.[[:alnum:]]\+\-\|[[:alnum:]]\+\)\([[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\4/" -e "s/^\.//p")
|
||||
kernel_uname_r_rel=$(echo ${1} | sed -n -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\.[[:alnum:]]\+\-\|[[:alnum:]]\+\.\)\([[:alnum:]\.]\+\|\)\(.*\)/\2/" -e "s/^\.//" -e "s/[\.\-]$//p")
|
||||
if $(echo "${kernel_uname_r_rel}" | grep -qE '^[0-9]+$') ; then
|
||||
kernel_uname_r_rel_plus_one=$(( kernel_uname_r_rel+1 ))
|
||||
else
|
||||
kernel_uname_r_rel_plus_one=""
|
||||
fi
|
||||
kernel_uname_r_short_plus_one=$(echo ${kernel_uname_r_short} | sed -e "s/(//" -e "s/-${kernel_uname_r_rel}\./-${kernel_uname_r_rel_plus_one}\./")
|
||||
kernel_uname_r_rel_minor=$(echo ${1} | sed -n -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\.[[:alnum:]]\+\-\|[[:alnum:]]\+\.\)\([[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\3/" -e "s/^\.//p")
|
||||
}
|
||||
|
||||
print_rpmtemplate_macros()
|
||||
{
|
||||
# Defines package names macros depending on distributions (default
|
||||
# is Fedora):
|
||||
# - rhel_kabi is set if building for RHEL
|
||||
# - kmod_pkg_name and pkg_kmod_name are the two possible forms of
|
||||
# the package name used when building packages modules. First one
|
||||
# uses kmod as prefix, the second one uses kmod as suffix. These
|
||||
# macros allow to modify the naming schema regarding the target
|
||||
# distribution (for example with suffix and prefix different from
|
||||
# kmod).
|
||||
# - kmod_obsolete_name same as kmod_pkg_name and pkg_kmod_name but
|
||||
# for obsolete package name
|
||||
#
|
||||
if [[ -n ${obsolete_name} ]] ; then
|
||||
echo '%global obsolete_name '${obsolete_name}
|
||||
fi
|
||||
cat <<EOF
|
||||
|
||||
%{?rhel:%global with_rhel_kabi 1}
|
||||
|
||||
%if 0%{?rhel} || 0%{?fedora}
|
||||
%global kmod_pkg_name kmod-${kmodname}
|
||||
%global pkg_kmod_name ${kmodname}-kmod
|
||||
%{?obsolete_name:%global kmod_obsolete_name kmod-%{obsolete_name}}
|
||||
%endif
|
||||
EOF
|
||||
}
|
||||
|
||||
print_rpmtemplate_macros_pkg_name_version()
|
||||
{
|
||||
# Defines package name with kernel version macros (depends on
|
||||
# init_kernel_uname_r_vars for kernel_uname_r* variables):
|
||||
# - rhel_kabi is set if building for RHEL
|
||||
# - kmod_for_kernel defines target kernel version string
|
||||
# - package_kmod_name complete package name including target kernel
|
||||
# version
|
||||
#
|
||||
init_kernel_uname_r_vars ${1}
|
||||
cat <<EOF
|
||||
|
||||
%if 0%{?rhel} || 0%{?fedora}
|
||||
%global kmod_for_kernel %{?with_rhel_kabi:${kernel_uname_r_short}}%{!?with_rhel_kabi:${kernel_uname_r}}
|
||||
%global package_kmod_name %{kmod_pkg_name}-%{kmod_for_kernel}
|
||||
%endif
|
||||
EOF
|
||||
}
|
||||
|
||||
print_akmodtemplate ()
|
||||
{
|
||||
echo
|
||||
|
|
@ -67,7 +155,7 @@ rpmbuild --define "_sourcedir %{_sourcedir}" \\\
|
|||
--define "_srcrpmdir \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/" \\\
|
||||
%{?dist:--define 'dist %{dist}}' \\\
|
||||
-bs --nodeps %{_specdir}/%{name}.spec ; \\\
|
||||
ln -s \$(ls \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/) \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/${kmodname}-kmod.latest
|
||||
ln -s \$(ls \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/) \$RPM_BUILD_ROOT/%{_usrsrc}/akmods/%{pkg_kmod_name}.latest
|
||||
|
||||
%package -n akmod-${kmodname}
|
||||
Summary: Akmod package for ${kmodname} kernel module(s)
|
||||
|
|
@ -75,8 +163,8 @@ Requires: kmodtool
|
|||
Requires: akmods
|
||||
%{?AkmodsBuildRequires:Requires: %{AkmodsBuildRequires}}
|
||||
# same requires and provides as a kmods package would have
|
||||
Requires: ${kmodname}-kmod-common >= %{?epoch:%{epoch}:}%{version}
|
||||
Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: %{pkg_kmod_name}-common >= %{?epoch:%{epoch}:}%{version}
|
||||
Provides: %{pkg_kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
EOF
|
||||
|
||||
if [[ -n "${obsolete_name}" ]] ; then
|
||||
|
|
@ -93,7 +181,7 @@ This package provides the akmod package for the ${kmodname} kernel modules.
|
|||
nohup /usr/sbin/akmods --from-akmod-posttrans --akmod ${kmodname} &> /dev/null &
|
||||
|
||||
%post -n akmod-${kmodname}
|
||||
[ -x /usr/sbin/akmods-ostree-post ] && /usr/sbin/akmods-ostree-post ${kmodname} %{_usrsrc}/akmods/${kmodname}-kmod-%{version}-%{release}.src.rpm
|
||||
[ -x /usr/sbin/akmods-ostree-post ] && /usr/sbin/akmods-ostree-post ${kmodname} %{_usrsrc}/akmods/%{pkg_kmod_name}-%{version}-%{release}.src.rpm
|
||||
|
||||
%files -n akmod-${kmodname}
|
||||
%defattr(-,root,root,-)
|
||||
|
|
@ -105,28 +193,28 @@ print_akmodmeta ()
|
|||
{
|
||||
cat <<EOF
|
||||
|
||||
%package -n kmod-${kmodname}
|
||||
%package -n %{kmod_pkg_name}
|
||||
Summary: Metapackage which tracks in ${kmodname} kernel module for newest kernel
|
||||
|
||||
Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: kmod-${kmodname}-xen = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: kmod-${kmodname}-smp = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: kmod-${kmodname}-PAE = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: %{pkg_kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: %{kmod_pkg_name}-xen = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: %{kmod_pkg_name}-smp = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: %{kmod_pkg_name}-PAE = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: akmod-${kmodname} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
EOF
|
||||
|
||||
if [[ -n "${obsolete_name}" ]] ; then
|
||||
echo "Provides: kmod-${obsolete_name} = ${obsolete_version}"
|
||||
echo "Obsoletes: kmod-${obsolete_name} < ${obsolete_version}"
|
||||
echo "Provides: %{kmod_obsolete_name} = ${obsolete_version}"
|
||||
echo "Obsoletes: %{kmod_obsolete_name} < ${obsolete_version}"
|
||||
fi
|
||||
cat <<EOF
|
||||
|
||||
%description -n kmod-${kmodname}
|
||||
%description -n %{kmod_pkg_name}
|
||||
This is a meta-package without payload which sole purpose is to require the
|
||||
${kmodname} kernel module(s) for the newest kernel,
|
||||
to make sure you get it together with a new kernel.
|
||||
|
||||
%files -n kmod-${kmodname}
|
||||
%files -n %{kmod_pkg_name}
|
||||
%defattr(644,root,root,755)
|
||||
EOF
|
||||
}
|
||||
|
|
@ -142,13 +230,6 @@ print_rpmtemplate_per_kmodpkg ()
|
|||
local redhatkernel=true
|
||||
fi
|
||||
|
||||
## Build some interesting strings with kernel uname -r
|
||||
## Examples:
|
||||
## kernel_uname_r 3.10.0-693.2.2.el7.x86_64
|
||||
## kernel_uname_r_short 3.10.0-693.el7
|
||||
local kernel_uname_r=${1}
|
||||
local kernel_uname_r_short=$(echo ${1} | sed -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\)\(\.[[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\1-\2\4/")
|
||||
|
||||
if [[ -h /sbin ]] ; then
|
||||
echo '%global _prefix_usr '/usr
|
||||
fi
|
||||
|
|
@ -165,51 +246,30 @@ print_rpmtemplate_per_kmodpkg ()
|
|||
# Provides: installonlypkg(kernel-module)
|
||||
cat <<EOF
|
||||
|
||||
%if 0%{?rhel}
|
||||
%package -n kmod-${kmodname}-${kernel_uname_r}
|
||||
Summary: ${kmodname} kernel module(s) for ${kernel_uname_r_short}
|
||||
Provides: kernel-modules = ${kernel_uname_r}
|
||||
%package -n %{package_kmod_name}
|
||||
Summary: ${kmodname} kernel module(s) for %{kmod_for_kernel}
|
||||
Provides: kernel-modules%{!?with_rhel_kabi:-for-kernel} = ${kernel_uname_r}
|
||||
%if %{with rhel_kabi}
|
||||
Provides: installonlypkg(kernel-module)
|
||||
Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: ${kmodname}-kmod-common >= %{?epoch:%{epoch}:}%{version}
|
||||
%endif
|
||||
Provides: %{pkg_kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: %{pkg_kmod_name}-common >= %{?epoch:%{epoch}:}%{version}
|
||||
Requires(post): %{?_prefix_usr}/sbin/depmod
|
||||
Requires(postun): %{?_prefix_usr}/sbin/depmod
|
||||
%if %{with rhel_kabi}
|
||||
Requires(post): %{?_prefix_usr}/sbin/weak-modules
|
||||
Requires(post): %{?_prefix_usr}/sbin/depmod
|
||||
Requires(postun): %{?_prefix_usr}/sbin/weak-modules
|
||||
Requires(postun): %{?_prefix_usr}/sbin/depmod
|
||||
%else
|
||||
%package -n kmod-${kmodname}-${kernel_uname_r}
|
||||
Summary: ${kmodname} kernel module(s) for ${kernel_uname_r}
|
||||
Provides: kernel-modules-for-kernel = ${kernel_uname_r}
|
||||
Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: ${kmodname}-kmod-common >= %{?epoch:%{epoch}:}%{version}
|
||||
Requires(post): %{?_prefix_usr}/sbin/depmod
|
||||
Requires(postun): %{?_prefix_usr}/sbin/depmod
|
||||
%endif
|
||||
EOF
|
||||
|
||||
if [[ -n "${obsolete_name}" ]] ; then
|
||||
echo
|
||||
echo "Provides: kmod-${obsolete_name}-${kernel_uname_r} = ${obsolete_version}"
|
||||
echo "Obsoletes: kmod-${obsolete_name}-${kernel_uname_r} < ${obsolete_version}"
|
||||
echo "Provides: %{kmod_obsolete_name}-${kernel_uname_r} = ${obsolete_version}"
|
||||
echo "Obsoletes: %{kmod_obsolete_name}-${kernel_uname_r} < ${obsolete_version}"
|
||||
fi
|
||||
|
||||
# second part
|
||||
if [[ ! -n "${customkernel}" ]] ; then
|
||||
## Build some interesting strings with kernel uname -r
|
||||
## Examples:
|
||||
## kernel_uname_r_wo_arch 3.10.0-693.2.2.el7
|
||||
## kernel_uname_r_dist el7
|
||||
## kernel_uname_r_rel 693
|
||||
## kernel_uname_r_rel_plus_one 694
|
||||
## kernel_uname_r_short_plus_one 3.10.0-694.el7
|
||||
## kernel_uname_r_rel_minor 2.2
|
||||
local kernel_uname_r_wo_arch=$(echo ${1} | sed -e "s/\.${target}//")
|
||||
local kernel_uname_r_dist=$(echo ${1} | sed -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\)\(\.[[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\4/" -e "s/^\.//")
|
||||
local kernel_uname_r_rel=$(echo ${1} | sed -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\)\(\.[[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\2/" -e "s/^\.//")
|
||||
local kernel_uname_r_rel_plus_one=$(( kernel_uname_r_rel+1 ))
|
||||
local kernel_uname_r_short_plus_one=$(echo ${kernel_uname_r_short} | sed -e "s/(//" -e "s/-${kernel_uname_r_rel}\./-${kernel_uname_r_rel_plus_one}\./")
|
||||
local kernel_uname_r_rel_minor=$(echo ${1} | sed -e "s/\.${target}//" -e "s/\(.*\)-\([[:alnum:]]\+\)\(\.[[:alnum:]\.]\+\|\)\(\.el.*\|\.fc.*\)/\3/" -e "s/^\.//")
|
||||
|
||||
cat <<EOF
|
||||
%global _kmodtool_depmod_post \\\
|
||||
if [ -f /boot/System.map-${kernel_uname_r} ] ; then \\\
|
||||
|
|
@ -220,66 +280,67 @@ else \\\
|
|||
%{?_prefix_usr}/sbin/depmod -a >/dev/null ; \\\
|
||||
fi || :
|
||||
|
||||
%if 0%{?rhel}
|
||||
%if %{with rhel_kabi}
|
||||
Requires: kernel >= ${kernel_uname_r_short}
|
||||
Requires: kernel < ${kernel_uname_r_short_plus_one}
|
||||
BuildRequires: kernel-devel = ${kernel_uname_r_wo_arch} redhat-rpm-config kernel-abi-whitelists
|
||||
|
||||
%post -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%{_kmodtool_depmod_post}
|
||||
|
||||
modules=( \$(find ${usr_lib_modules}/${kernel_uname_r}/extra/${kmodname}/ -name "*.ko") )
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --add-modules
|
||||
|
||||
%preun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
rpm -ql kmod-${kmodname}-${kernel_uname_r}-%{version}-%{release}.$(arch) | grep -e '\.ko$' > /var/run/rpm-kmod-${kmodname}-modules
|
||||
|
||||
%postun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%{_kmodtool_depmod_post}
|
||||
|
||||
modules=( \$(cat /var/run/rpm-kmod-${kmodname}-modules) )
|
||||
rm -f /var/run/rpm-kmod-${kmodname}-modules
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --remove-modules
|
||||
%else
|
||||
Requires: kernel-uname-r = ${kernel_uname_r}
|
||||
BuildRequires: kernel-devel-uname-r = ${kernel_uname_r}
|
||||
BuildRequires: gcc
|
||||
%post -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%endif
|
||||
|
||||
%post -n %{package_kmod_name}
|
||||
%{_kmodtool_depmod_post}
|
||||
%postun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
|
||||
%if %{with rhel_kabi}
|
||||
modules=( \$(find ${usr_lib_modules}/${kernel_uname_r}/extra/${kmodname}/ -name "*.ko") )
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --add-modules
|
||||
%endif
|
||||
|
||||
%if %{with rhel_kabi}
|
||||
%preun -n %{package_kmod_name}
|
||||
rpm -ql %{package_kmod_name}-%{version}-%{release}.$(arch) | grep -e '\.ko$' > /var/run/rpm-%{package_kmod_name}-modules
|
||||
%endif
|
||||
|
||||
%postun -n %{package_kmod_name}
|
||||
%{_kmodtool_depmod_post}
|
||||
|
||||
%if %{with rhel_kabi}
|
||||
modules=( \$(cat /var/run/rpm-%{package_kmod_name}-modules) )
|
||||
rm -f /var/run/rpm-%{package_kmod_name}-modules
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --remove-modules
|
||||
%endif
|
||||
EOF
|
||||
else
|
||||
cat <<EOF
|
||||
|
||||
%if 0%{?rhel}
|
||||
%post -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%post -n %{package_kmod_name}
|
||||
[[ "\$(uname -r)" == "${kernel_uname_r}" ]] && %{?_prefix_usr}/sbin/depmod -a > /dev/null || :
|
||||
|
||||
%if %{with rhel_kabi}
|
||||
if [[ "\$(uname -r)" == "${kernel_uname_r}" ]] ; then
|
||||
modules=( \$(find ${usr_lib_modules}/${kernel_uname_r}/extra/${kmodname}/ -name "*.ko") )
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --add-modules
|
||||
fi
|
||||
%endif
|
||||
|
||||
%preun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%if %{with rhel_kabi}
|
||||
%preun -n %{package_kmod_name}
|
||||
if [[ "\$(uname -r)" == "${kernel_uname_r}" ]] ; then
|
||||
rpm -ql kmod-${kmodname}-${kernel_uname_r}-%{version}-%{release}.$(arch) | grep -e '\.ko$' > /var/run/rpm-kmod-${kmodname}-modules
|
||||
rpm -ql %{package_kmod_name}-%{version}-%{release}.$(arch) | grep -e '\.ko$' > /var/run/rpm-%{package_kmod_name}-modules
|
||||
fi
|
||||
%endif
|
||||
|
||||
%postun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%postun -n %{package_kmod_name}
|
||||
[[ "\$(uname -r)" == "${kernel_uname_r}" ]] && %{?_prefix_usr}/sbin/depmod -a > /dev/null || :
|
||||
|
||||
%if %{with rhel_kabi}
|
||||
if [[ "\$(uname -r)" == "${kernel_uname_r}" ]] ; then
|
||||
modules=( \$(cat /var/run/rpm-kmod-${kmodname}-modules) )
|
||||
rm -f /var/run/rpm-kmod-${kmodname}-modules
|
||||
modules=( \$(cat /var/run/rpm-%{package_kmod_name}-modules) )
|
||||
rm -f /var/run/rpm-%{package_kmod_name}-modules
|
||||
printf '%s\n' "\${modules[@]}" | %{?_prefix_usr}/sbin/weak-modules --remove-modules
|
||||
fi
|
||||
%else
|
||||
%post -n kmod-${kmodname}-${kernel_uname_r}
|
||||
[[ "\$(uname -r)" == "${kernel_uname_r}" ]] && %{?_prefix_usr}/sbin/depmod -a > /dev/null || :
|
||||
%postun -n kmod-${kmodname}-${kernel_uname_r}
|
||||
[[ "\$(uname -r)" == "${kernel_uname_r}" ]] && %{?_prefix_usr}/sbin/depmod -a > /dev/null || :
|
||||
%endif
|
||||
EOF
|
||||
fi
|
||||
|
|
@ -287,53 +348,42 @@ EOF
|
|||
# third part
|
||||
cat <<EOF
|
||||
|
||||
%if 0%{?rhel}
|
||||
%description -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%description -n %{package_kmod_name}
|
||||
This package provides the ${kmodname} kernel modules built for the Linux
|
||||
kernel ${kernel_uname_r_short} for the %{_target_cpu} family of processors.
|
||||
%files -n kmod-${kmodname}-${kernel_uname_r}
|
||||
kernel %{kmod_for_kernel} for the %{_target_cpu} family of processors.
|
||||
%files -n %{package_kmod_name}
|
||||
%defattr(644,root,root,755)
|
||||
%dir ${usr_lib_modules}/${kernel_uname_r}/extra
|
||||
${usr_lib_modules}/${kernel_uname_r}/extra/${kmodname}/
|
||||
%else
|
||||
%description -n kmod-${kmodname}-${kernel_uname_r}
|
||||
This package provides the ${kmodname} kernel modules built for the Linux
|
||||
kernel ${kernel_uname_r} for the %{_target_cpu} family of processors.
|
||||
%files -n kmod-${kmodname}-${kernel_uname_r}
|
||||
%defattr(644,root,root,755)
|
||||
%dir ${usr_lib_modules}/${kernel_uname_r}/extra
|
||||
${usr_lib_modules}/${kernel_uname_r}/extra/${kmodname}/
|
||||
%endif
|
||||
EOF
|
||||
}
|
||||
|
||||
print_rpmtemplate_kmodmetapkg ()
|
||||
{
|
||||
local kernel_uname_r=${1}
|
||||
local kernel_variant="${2:+-${2}}"
|
||||
local kernel_variant="${1:+-${1}}"
|
||||
|
||||
cat <<EOF
|
||||
|
||||
%package -n kmod-${kmodname}${kernel_variant}
|
||||
%package -n %{kmod_pkg_name}${kernel_variant}
|
||||
Summary: Metapackage which tracks in ${kmodname} kernel module for newest kernel${kernel_variant}
|
||||
|
||||
Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: kmod-${kmodname}-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: %{pkg_kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: %{package_kmod_name} >= %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
EOF
|
||||
|
||||
if [[ -n "${obsolete_name}" ]] ; then
|
||||
echo "Provides: kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}"
|
||||
echo "Obsoletes: kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}"
|
||||
echo "Provides: %{kmod_obsolete_name}${kernel_variant} = ${obsolete_version}"
|
||||
echo "Obsoletes: %{kmod_obsolete_name}${kernel_variant} < ${obsolete_version}"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
%description -n kmod-${kmodname}${kernel_variant}
|
||||
%description -n %{kmod_pkg_name}${kernel_variant}
|
||||
This is a meta-package without payload which sole purpose is to require the
|
||||
${kmodname} kernel module(s) for the newest kernel${kernel_variant}.
|
||||
to make sure you get it together with a new kernel.
|
||||
|
||||
%files -n kmod-${kmodname}${kernel_variant}
|
||||
%files -n %{kmod_pkg_name}${kernel_variant}
|
||||
%defattr(644,root,root,755)
|
||||
|
||||
|
||||
|
|
@ -350,7 +400,8 @@ print_customrpmtemplate ()
|
|||
|
||||
# parse kernel versions string and print template
|
||||
local kernel_verrelarch=${kernel%%${kernels_known_variants}}
|
||||
print_rpmtemplate_per_kmodpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}}
|
||||
print_rpmtemplate_macros_pkg_name_version "${kernel}"
|
||||
print_rpmtemplate_per_kmodpkg --redhat ${kernel##${kernel_verrelarch}}
|
||||
elif [[ -e "${usr_lib_modules}"/"${kernel}"/build/Makefile ]] ; then
|
||||
# likely a user-build-kernel with available buildfiles
|
||||
# fixme: we should check if uname from Makefile is the same as ${kernel}
|
||||
|
|
@ -383,11 +434,13 @@ print_rpmtemplate ()
|
|||
|
||||
local kernel_verrelarch=${kernel%%${kernels_known_variants}}
|
||||
|
||||
print_rpmtemplate_macros_pkg_name_version "${kernel}"
|
||||
|
||||
# create metapackage
|
||||
print_rpmtemplate_kmodmetapkg ${kernel} ${kernel##${kernel_verrelarch}}
|
||||
print_rpmtemplate_kmodmetapkg ${kernel##${kernel_verrelarch}}
|
||||
|
||||
# create package
|
||||
print_rpmtemplate_per_kmodpkg ${kernel} ${kernel##${kernel_verrelarch}}
|
||||
print_rpmtemplate_per_kmodpkg ${kernel##${kernel_verrelarch}}
|
||||
done
|
||||
}
|
||||
|
||||
|
|
@ -519,6 +572,7 @@ elif ( [[ -n "${obsolete_name}" ]] && [[ ! -n "${obsolete_version}" ]] ) || ( [
|
|||
fi
|
||||
|
||||
# go
|
||||
print_rpmtemplate_macros
|
||||
if [[ -n "${for_kernels}" ]] ; then
|
||||
# this is easy:
|
||||
print_customrpmtemplate "${for_kernels}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue