rpms/gnbd-kernel/devel kmodtool, NONE, 1.1 gnbd-kernel.spec, 1.135, 1.136
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Tue Feb 28 20:23:54 UTC 2006
Author: cfeist
Update of /cvs/dist/rpms/gnbd-kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv12352
Modified Files:
gnbd-kernel.spec
Added Files:
kmodtool
Log Message:
- Convert to the new kmod-scheme from Extras
(using Thorsten Leemhuis' cman-kernel diff)
--- NEW FILE kmodtool ---
#!/bin/bash
# kmodtool - Helper script for building kernel module RPMs
# Copyright (c) 2003-2006 Ville Skyttä <ville.skytta at iki.fi>,
# Thorsten Leemhuis <fedora at leemhuis.info>
#
# 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.
myprog="kmodtool"
myver="0.10.4"
knownvariants='\(BOOT\|\(big\|huge\)mem\|debug\|enterprise\|kdump\|smp\|uml\|xen\(0\|U\|-\(guest\|hypervisor\)\)\)'
kmod_name=
kver=
verrel=
variant=
get_verrel ()
{
verrel="$(echo "${1-$(uname -r)}" | sed 's/'${knownvariants}'$//')"
}
print_verrel ()
{
get_verrel $@ || return $?
echo "${verrel}"
}
get_variant ()
{
variant="$(echo "${1-$(uname -r)}" | sed 's/^.*'${knownvariants}'$/\1/')"
[ "${variant}" != "${1-$(uname -r)}" ] || variant='""'
}
print_variant ()
{
get_variant $@ || return $?
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
Provides: kernel-module = ${verrel}${variant}
Provides: kmod-${kmod_name} = %{version}-%{release}
Requires: ${kdep}
Requires: ${kmod_name}-kmod-common = %{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}
/sbin/depmod -aeF /boot/System.map-${verrel}${variant} ${verrel}${variant} > /dev/null || :
%postun -n kmod-${kmod_name}${dashvariant}
/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || :
%files -n kmod-${kmod_name}${dashvariant}
%defattr(644,root,root,755)
/lib/modules/${verrel}${variant}/extra/${kmod_name}/
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
get_rpmtemplate "${variant}"
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
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 $?
;;
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
Index: gnbd-kernel.spec
===================================================================
RCS file: /cvs/dist/rpms/gnbd-kernel/devel/gnbd-kernel.spec,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -r1.135 -r1.136
--- gnbd-kernel.spec 23 Feb 2006 20:46:55 -0000 1.135
+++ gnbd-kernel.spec 28 Feb 2006 20:23:51 -0000 1.136
@@ -11,39 +11,43 @@
###############################################################################
%define buildup 1
%define buildsmp 1
-%define buildxen 1
+%define buildxen 0
%define kernel_version 2.6.15-1.1975_FC5
+%define kversion %{kernel_version}
%define subversion 2
+%define tempversion 2.6.15
+%define tempname gnbd-kernel
%ifnarch i686
%define buildsmp 0
%endif
-%ifnarch i686
-%define buildxen 0
+%ifnarch i686 x86_64
+%define buildxen 1
%endif
-Name: gnbd-kernel
-Version: 2.6.15
-Release: 5.FC5.9
+%define kvariants %{?buildup:""} %{?buildsmp:smp}
+
+Source10: kmodtool
+%define kmodtool sh %{SOURCE10}
+# end stuff to be ...
+
+%define kmod_name gnbd
+%define kverrel %(%{kmodtool} verrel %{?kversion} 2>/dev/null)
+%{!?kvariants: %global kvariants %(%{kmodtool} variant %{?kversion} 2>/dev/null)}
+
+
+
+Name: %{kmod_name}-kmod
+Version: 1.0.0
+Release: 0.1.%(echo %{kverrel} | tr - _)
License: GPL
Group: System Environment/Kernel
Summary: gnbd-kernel - The kernel module for GFS's Network Block Device
-BuildRequires: kernel = %{kernel_version}
-BuildRequires: kernel-smp = %{kernel_version}
-BuildRequires: kernel-devel = %{kernel_version}
-BuildRequires: kernel-smp-devel = %{kernel_version}
-BuildRequires: kernel-xen-guest = %{kernel_version}
-BuildRequires: kernel-xen-hypervisor = %{kernel_version}
Conflicts: GFS <= 6.0
-Conflicts: GFS-modules
-Requires: kernel = %{kernel_version}
-Requires: /lib/modules/%{kernel_version}
-Provides: gnbd-kernel-modules = %{version}-%{release}
-Provides: kernel-modules
-#ExclusiveArch: i586 i686 x86_64 ppc
+Conflicts: GFS-modules GFS-modules-smp GFS-modules-hugemem
ExclusiveArch: i686 x86_64
-Source0: %{name}-%{version}-%{subversion}.tar.gz
+Source0: %{tempname}-%{tempversion}-%{subversion}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
%description
@@ -56,167 +60,60 @@
%description -n gnbd-kernheaders
The gnbd kernel headers are used to compile the gnbd userland tools.
-%if %{buildsmp}
-%package -n gnbd-kernel-smp
-Group: System Environment/Kernel
-Summary: gnbd-kernel-smp - The kernel module for GFS's Network Block Device
-Requires: kernel-smp = %{kernel_version}
-Requires: /lib/modules/%{kernel_version}smp
-Provides: gnbd-kernel-modules = %{version}-%{release}
-Provides: kernel-modules
-
-%description -n gnbd-kernel-smp
-gnbd-kernel-smp - The smp kernel module for GFS's Network Block Device
-%endif
+%{expand:%(%{kmodtool} rpmtemplate %{kmod_name} %{kverrel} %{kvariants} 2>/dev/null)}
-%if %{buildxen}
-%package -n gnbd-kernel-xen-guest
-Group: System Environment/Kernel
-Summary: gnbd-kernel-xen-guest - The kernel module for GFS's Network Block Device
-Requires: kernel-xen-guest = %{kernel_version}
-Requires: /lib/modules/%{kernel_version}guest
-Provides: gnbd-kernel-modules = %{version}-%{release}
-Provides: kernel-modules
-
-%description -n gnbd-kernel-xen-guest
-gnbd-kernel-xen-guest - The xen-guest kernel module for GFS's Network Block Device
-
-%package -n gnbd-kernel-xen-hypervisor
-Group: System Environment/Kernel
-Summary: gnbd-kernel-xen-hypservisor - The kernel module for GFS's Network Block Device
-Requires: kernel-xen-hypservisor = %{kernel_version}
-Requires: /lib/modules/%{kernel_version}hypervisor
-Provides: kernel-modules
-Provides: gnbd-kernel-modules = %{version}-%{release}
-
-%description -n gnbd-kernel-xen-hypervisor
-gnbd-kernel-xen-hypervisor - The xen-hypervisor kernel module for GFS's Network Block Device
-
-%endif
-################################################################################
-## THE PREP SECTION
-################################################################################
%prep
-%setup -q -n %{name}-%{version}-%{subversion}
+# to understand the magic better or to debug it, uncomment this:
+#{kmodtool} rpmtemplate %{kmod_name} %{kverrel} %{kvariants} 2>/dev/null ; sleep 5
+%setup -q -c -T -a 0
+for kvariant in %{kvariants} ; do
+ cp -a %{kmod_name}-kernel-%{tempversion}-%{subversion}/ _kmod_build_$kvariant
+done
-################################################################################
-## THE BUILD SECTION
-################################################################################
%build
-BUILD_TOPDIR=`pwd`
-
-cp -r `pwd` ../smp
-cp -r `pwd` ../guest
-cp -r `pwd` ../hypervisor
-
-Build_gnbd(){
- cpu_type=$1
- flavor=$2
- kernel_src=/lib/modules/%{kernel_version}$flavor/build
- # Kernel tree setup
- if [ -d $kernel_src/. ]; then
- echo "Kernel %{kernel_version} found."
- echo $kernel_src
- else
- echo "Kernel %{kernel_version} not found."
- echo $kernel_src
- ls /lib/modules/*
- exit 1
- fi
- ./configure --kernel_src=$kernel_src --incdir=%{_includedir}
- if [ "$flavor" == "xen-guest" -o "$flavor" == "xen-hypervisor" ]; then
- make ARCH=xen %{?_smp_mflags}
- else
- make %{?_smp_mflags}
- fi
-}
-
-%if %{buildup}
-Build_gnbd %{_target_cpu}
-%endif
-
-%if %{buildsmp}
-cd ../smp
-Build_gnbd %{_target_cpu} smp
-%endif
+for kvariant in %{kvariants}
+do
+ ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu}
+ pushd _kmod_build_$kvariant
+ ./configure --kernel_src=${ksrc} --incdir=%{_includedir}
+ if [ "${kvariant}" == "xenU" -o "${kvariant}" == "xen0" ]; then
+ make %{?_smp_mflags} KMODTARGET=/lib/modules/%{kverrel}${kvariant:+$kvariant}/extra/%{kmod_name} ARCH=xen
+ else
+ make %{?_smp_mflags} KMODTARGET=/lib/modules/%{kverrel}${kvariant:+$kvariant}/extra/%{kmod_name}
+ fi
+ ${ksrc}/scripts/mod/modpost -m -i ${ksrc}/Module.symvers src/cman.o -o cman.symvers
+ popd
+done
-%if %{buildxen}
-cd ../guest
-Build_gnbd %{_target_cpu} guest
-
-cd ../hypervisor
-Build_gnbd %{_target_cpu} hypervisor
-%endif
-
-################################################################################
-## THE INSTALL SECTION
-################################################################################
%install
rm -rf $RPM_BUILD_ROOT
-%if %{buildup}
-make install DESTDIR=$RPM_BUILD_ROOT
-%endif
-
-%if %{buildsmp}
-cd ../smp
-make install DESTDIR=$RPM_BUILD_ROOT
-%endif
-
-%if %{buildxen}
-cd ../guest
-make install DESTDIR=$RPM_BUILD_ROOT ARCH=xen
-cd ../hypervisor
-make install DESTDIR=$RPM_BUILD_ROOT ARCH=xen
-%endif
+for kvariant in %{kvariants}
+do
+ pushd _kmod_build_${kvariant}
+ if [ "${kvariant}" == "xenU" -o "${kvariant}" == "xen0" ]; then
+ make install DESTDIR=${RPM_BUILD_ROOT} KMODTARGET=${RPM_BUILD_ROOT}/lib/modules/%{kverrel}${kvariant:+$kvariant}/extra/%{kmod_name} ARCH=xen
+ else
+ make install DESTDIR=${RPM_BUILD_ROOT} KMODTARGET=${RPM_BUILD_ROOT}/lib/modules/%{kverrel}${kvariant:+$kvariant}/extra/%{kmod_name}
+ fi
+ install -p cman.symvers ${RPM_BUILD_ROOT}/lib/modules/%{kverrel}${kvariant:+$kvariant}/extra/%{kmod_name}
+ popd
+done
+chmod 0755 $RPM_BUILD_ROOT/lib/modules/*/extra/%{kmod_name}/*
-################################################################################
-## THE CLEAN SECTION
-################################################################################
%clean
rm -rf $RPM_BUILD_ROOT
-%post
-/sbin/depmod -e %{kernel_version}
-
-%if %{buildsmp}
-%post smp
-/sbin/depmod -e %{kernel_version}smp
-%endif
-
-%if %{buildxen}
-%post xen-guest
-/sbin/depmod -e %{kernel_version}guest
-%post xen-hypervisor
-/sbin/depmod -a %{kernel_version}hypervisor
-%endif
-
-%files
-%defattr(-,root,root,-)
-/lib/modules/%{kernel_version}/kernel/drivers/block/gnbd/gnbd.ko
-
-%if %{buildsmp}
-%files -n gnbd-kernel-smp
-%defattr(-,root,root,-)
-/lib/modules/%{kernel_version}smp/kernel/drivers/block/gnbd/gnbd.ko
-%endif
-
-%if %{buildxen}
-%files -n gnbd-kernel-xen-guest
-%defattr(-,root,root,-)
-/lib/modules/%{kernel_version}guest/kernel/drivers/block/gnbd/gnbd.ko
-
-%files -n gnbd-kernel-xen-hypervisor
-%defattr(-,root,root,-)
-/lib/modules/%{kernel_version}hypervisor/kernel/drivers/block/gnbd/gnbd.ko
-%endif
-
%files -n gnbd-kernheaders
%defattr(-,root,root,-)
%{_includedir}/linux/gnbd.h
%changelog
+* Tue Feb 28 2006 Chris Feist <cfeist at Redhat.com>
+- Convert to the new kmod-scheme from Extras
+ (using Thorsten Leemhuis' cman-kernel diff)
+
* Tue Feb 07 2006 Jesse Keating <jkeating at redhat.com> - 2.6.15.0-20051108.134753.FC5.18.1
- rebuilt for new gcc4.1 snapshot and glibc changes
More information about the fedora-cvs-commits
mailing list