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