Added kmp macros, kmodtool
This commit is contained in:
parent
e3077ee936
commit
e53623e26d
231
kmodtool
Executable file
231
kmodtool
Executable file
@ -0,0 +1,231 @@
|
||||
#!/bin/bash
|
||||
|
||||
# kmodtool - Helper script for building kernel module RPMs
|
||||
# Copyright (c) 2003-2006 Ville Skyttä <ville.skytta@iki.fi>,
|
||||
# Thorsten Leemhuis <fedora@leemhuis.info>
|
||||
# Jon Masters <jcm@redhat.com>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
shopt -s extglob
|
||||
|
||||
myprog="kmodtool"
|
||||
myver="0.10.10_kmp2"
|
||||
knownvariants=@(BOOT|PAE|@(big|huge)mem|debug|enterprise|kdump|?(large)smp|uml|xen[0U]?(-PAE))
|
||||
kmod_name=
|
||||
kver=
|
||||
verrel=
|
||||
variant=
|
||||
kmp=
|
||||
|
||||
get_verrel ()
|
||||
{
|
||||
verrel=${1:-$(uname -r)}
|
||||
verrel=${verrel%%$knownvariants}
|
||||
}
|
||||
|
||||
print_verrel ()
|
||||
{
|
||||
get_verrel $@
|
||||
echo "${verrel}"
|
||||
}
|
||||
|
||||
get_variant ()
|
||||
{
|
||||
get_verrel $@
|
||||
variant=${1:-$(uname -r)}
|
||||
variant=${variant##$verrel}
|
||||
variant=${variant:-'""'}
|
||||
}
|
||||
|
||||
print_variant ()
|
||||
{
|
||||
get_variant $@
|
||||
echo "${variant}"
|
||||
}
|
||||
|
||||
get_rpmtemplate ()
|
||||
{
|
||||
local variant="${1}"
|
||||
local dashvariant="${variant:+-${variant}}"
|
||||
case "$verrel" in
|
||||
*.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;;
|
||||
*) kdep="kernel-%{_target_cpu} = ${verrel}${variant}" ;;
|
||||
esac
|
||||
cat <<EOF
|
||||
%package -n kmod-${kmod_name}${dashvariant}
|
||||
Summary: ${kmod_name} kernel module(s)
|
||||
Group: System Environment/Kernel
|
||||
EOF
|
||||
|
||||
if [ ! -z "$kmp" ]; then
|
||||
echo "%global _use_internal_dependency_generator 0"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
Provides: kernel-modules = ${verrel}${variant}
|
||||
Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
EOF
|
||||
|
||||
if [ -z "$kmp" ]; then
|
||||
echo "Requires: ${kdep}"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
Requires: ${kmod_name}-kmod-common >= %{?epoch:%{epoch}:}%{version}
|
||||
Requires(post): /sbin/depmod
|
||||
Requires(postun): /sbin/depmod
|
||||
BuildRequires: kernel${dashvariant}-devel-%{_target_cpu} = ${verrel}
|
||||
%description -n kmod-${kmod_name}${dashvariant}
|
||||
This package provides the ${kmod_name} kernel modules built for the Linux
|
||||
kernel ${verrel}${variant} for the %{_target_cpu} family of processors.
|
||||
%post -n kmod-${kmod_name}${dashvariant}
|
||||
if [ -e "/boot/System.map-${verrel}${variant}" ]; then
|
||||
/sbin/depmod -aeF "/boot/System.map-${verrel}${variant}" "${verrel}${variant}" > /dev/null || :
|
||||
fi
|
||||
EOF
|
||||
|
||||
if [ ! -z "$kmp" ]; then
|
||||
cat <<EOF
|
||||
modules=( \$(rpm -ql kmod-${kmod_name}${dashvariant} | grep '\.ko$') )
|
||||
if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\n' "\${modules[@]}" \
|
||||
| /sbin/weak-modules --add-modules
|
||||
fi
|
||||
%preun -n kmod-${kmod_name}${dashvariant}
|
||||
find /lib/modules/${verrel}${variant}/extra/${kmod_name} | grep '\.ko$' \
|
||||
> /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
%postun -n kmod-${kmod_name}${dashvariant}
|
||||
/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || :
|
||||
EOF
|
||||
|
||||
if [ ! -z "$kmp" ]; then
|
||||
cat <<EOF
|
||||
modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) )
|
||||
#rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
|
||||
if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\n' "\${modules[@]}" \
|
||||
| /sbin/weak-modules --remove-modules
|
||||
fi
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
%files -n kmod-${kmod_name}${dashvariant}
|
||||
%defattr(644,root,root,755)
|
||||
/lib/modules/${verrel}${variant}/
|
||||
EOF
|
||||
}
|
||||
|
||||
print_rpmtemplate ()
|
||||
{
|
||||
kmod_name="${1}"
|
||||
shift
|
||||
kver="${1}"
|
||||
get_verrel "${1}"
|
||||
shift
|
||||
if [ -z "${kmod_name}" ] ; then
|
||||
echo "Please provide the kmodule-name as first parameter." >&2
|
||||
exit 2
|
||||
elif [ -z "${kver}" ] ; then
|
||||
echo "Please provide the kver as second parameter." >&2
|
||||
exit 2
|
||||
elif [ -z "${verrel}" ] ; then
|
||||
echo "Couldn't find out the verrel." >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
for variant in "$@" ; do
|
||||
if [ "default" == "$variant" ];
|
||||
then
|
||||
get_rpmtemplate ""
|
||||
else
|
||||
get_rpmtemplate "${variant}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<EOF
|
||||
You called: ${invocation}
|
||||
|
||||
Usage: ${myprog} <command> <option>+
|
||||
Commands:
|
||||
verrel <uname>
|
||||
- Get "base" version-release.
|
||||
variant <uname>
|
||||
- Get variant from uname.
|
||||
rpmtemplate <mainpgkname> <uname> <variants>
|
||||
- Return a template for use in a source RPM
|
||||
rpmtemplate_kmp <mainpgkname> <uname> <variants>
|
||||
- Return a template for use in a source RPM with KMP dependencies
|
||||
version
|
||||
- Output version number and exit.
|
||||
EOF
|
||||
}
|
||||
|
||||
invocation="$(basename ${0}) $@"
|
||||
while [ "${1}" ] ; do
|
||||
case "${1}" in
|
||||
verrel)
|
||||
shift
|
||||
print_verrel $@
|
||||
exit $?
|
||||
;;
|
||||
variant)
|
||||
shift
|
||||
print_variant $@
|
||||
exit $?
|
||||
;;
|
||||
rpmtemplate)
|
||||
shift
|
||||
print_rpmtemplate "$@"
|
||||
exit $?
|
||||
;;
|
||||
rpmtemplate_kmp)
|
||||
shift
|
||||
kmp=1
|
||||
print_rpmtemplate "$@"
|
||||
exit $?
|
||||
;;
|
||||
version)
|
||||
echo "${myprog} ${myver}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown option '${1}'." >&2
|
||||
usage >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# mode: sh
|
||||
# sh-indentation: 2
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
# ex: ts=2 sw=2 et
|
47
redhat-rpm-config-kmp.patch
Normal file
47
redhat-rpm-config-kmp.patch
Normal file
@ -0,0 +1,47 @@
|
||||
--- redhat-rpm-config-8.0.45/macros 2005-08-16 20:27:33.000000000 -0400
|
||||
+++ redhat-rpm-config-8.0.45_wip/macros 2006-10-16 16:52:35.000000000 -0400
|
||||
@@ -156,3 +157,44 @@
|
||||
|
||||
# Disable lookups
|
||||
%_hkp_keyserver %{nil}
|
||||
+
|
||||
+# kernel_source kversion kflavor
|
||||
+%kernel_source(v:f:) %{expand:%( \
|
||||
+ if [ "default" = "%{-f*}" ]
|
||||
+ then
|
||||
+ echo "/usr/src/kernels/%{-v*}-%{_target_cpu}"
|
||||
+ else
|
||||
+ echo "/usr/src/kernels/%{-v*}-%{-f*}-%{_target_cpu}"
|
||||
+ fi
|
||||
+)}
|
||||
+
|
||||
+%kmodtool /usr/lib/rpm/redhat/kmodtool
|
||||
+
|
||||
+# kernel_module_package [ -n name ]
|
||||
+
|
||||
+%kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \
|
||||
+ machine=`uname -m` \
|
||||
+ %{!?kversion: %{expand: %%define kversion %(uname -r)}} \
|
||||
+ flavors="default" \
|
||||
+ if [ "i686" == "$machine" ] \
|
||||
+ then
|
||||
+ flavors="$flavors smp" \
|
||||
+ fi
|
||||
+ if [ "i686" == "$machine" ] || [ "x86_64" == "$machine" ] \
|
||||
+ then \
|
||||
+ xenver=$(rpm -q --qf '%{VERSION}-%{RELEASE}' kernel-xen-devel)\
|
||||
+ kdver=$(rpm -q --qf '%{VERSION}-%{RELEASE}' kernel-kdump-devel)\
|
||||
+ if [ "$kversion" == "$xenver" ] \
|
||||
+ then \
|
||||
+ flavors="$flavors xen0" \
|
||||
+ fi \
|
||||
+ if [ "$kversion" == "$kdver" ] \
|
||||
+ then \
|
||||
+ flavors="$flavors kdump" \
|
||||
+ fi \
|
||||
+ fi \
|
||||
+ flavors_to_build=$flavors \
|
||||
+ echo "%%global flavors_to_build ${flavors_to_build:-%%nil}" \
|
||||
+ %define kverrel %(%{kmodtool} verrel %{?kversion} 2>/dev/null) \
|
||||
+ %{kmodtool} rpmtemplate_kmp %{-n*} %{kverrel} $flavors_to_build 2>/dev/null \
|
||||
+)}
|
@ -1,13 +1,15 @@
|
||||
Summary: Red Hat specific rpm configuration files.
|
||||
Name: redhat-rpm-config
|
||||
Version: 8.0.45
|
||||
Release: 8
|
||||
Release: 9
|
||||
License: GPL
|
||||
Group: Development/System
|
||||
Source: redhat-rpm-config-%{version}.tar.gz
|
||||
Source1: brp-java-repack-jars
|
||||
Source2: kmodtool
|
||||
Patch0: redhat-rpm-config-java.patch
|
||||
Patch1: redhat-rpm-config-find-requires.patch
|
||||
Patch2: redhat-rpm-config-kmp.patch
|
||||
BuildArch: noarch
|
||||
#Requires: rpmbuild(VendorConfig) <= 4.1
|
||||
#Requires: mktemp
|
||||
@ -32,7 +34,9 @@ chmod a+x ${RPM_BUILD_ROOT}%{_prefix}/lib/rpm/redhat/config.{guess,sub}
|
||||
|
||||
(cd ${RPM_BUILD_ROOT}%{_prefix}/lib/rpm/redhat ; patch -p1 -i %{PATCH0})
|
||||
(cd ${RPM_BUILD_ROOT}%{_prefix}/lib/rpm/redhat ; patch -p1 -i %{PATCH1})
|
||||
(cd ${RPM_BUILD_ROOT}%{_prefix}/lib/rpm/redhat ; patch -p1 -i %{PATCH2})
|
||||
install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_prefix}/lib/rpm/redhat/
|
||||
install -m 755 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_prefix}/lib/rpm/redhat/
|
||||
|
||||
%clean
|
||||
rm -rf ${RPM_BUILD_ROOT}
|
||||
@ -42,6 +46,9 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%{_prefix}/lib/rpm/redhat
|
||||
|
||||
%changelog
|
||||
* Mon Oct 16 2006 Jon Masters <jcm@redhat.com> 8.0.45-9
|
||||
- Added kernel_module_package macro. Working on unified packaging.
|
||||
|
||||
* Thu Oct 12 2006 Jon Masters <jcm@redhat.com> 8.0.45-8
|
||||
- Added patch for find-requires. Waiting on write access to public CVS.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user