RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   20-Jun-2007 18:56:48
  Branch: HEAD                             Handle: 2007062017564700

  Added files:
    rpm/scripts             brp-implant-ident-static brp-java-repack-jars
                            find-provides.ksyms find-requires.ksyms kmodtool
                            rpmsort symset-table
  Modified files:
    rpm                     CHANGES
    rpm/scripts             Makefile.am brp-compress brp-strip
                            brp-strip-comment-note brp-strip-shared
                            brp-strip-static-archive find-lang.sh

  Log:
    - collect CentOS5 redhat-rpm-config changes for reference composting.

  Summary:
    Revision    Changes     Path
    1.1380      +1  -0      rpm/CHANGES
    1.38        +3  -0      rpm/scripts/Makefile.am
    1.13        +3  -3      rpm/scripts/brp-compress
    1.1         +34 -0      rpm/scripts/brp-implant-ident-static
    1.1         +95 -0      rpm/scripts/brp-java-repack-jars
    1.6         +4  -1      rpm/scripts/brp-strip
    1.5         +7  -2      rpm/scripts/brp-strip-comment-note
    1.4         +4  -1      rpm/scripts/brp-strip-shared
    1.3         +4  -1      rpm/scripts/brp-strip-static-archive
    1.8         +1  -1      rpm/scripts/find-lang.sh
    1.1         +9  -0      rpm/scripts/find-provides.ksyms
    1.1         +48 -0      rpm/scripts/find-requires.ksyms
    1.1         +258 -0     rpm/scripts/kmodtool
    1.1         +76 -0      rpm/scripts/rpmsort
    1.1         +40 -0      rpm/scripts/symset-table
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1379 -r1.1380 CHANGES
  --- rpm/CHANGES       20 Jun 2007 15:58:14 -0000      1.1379
  +++ rpm/CHANGES       20 Jun 2007 16:56:47 -0000      1.1380
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: collect CentOS5 redhat-rpm-config changes for reference 
composting.
       - rse: calculate timezone directly, don't rely on timezone variable.
       - rse: remove the hysterical bzip2 interface.
       - rse: add the missing Autoconf glue code for using mmap(2) in the code
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.37 -r1.38 Makefile.am
  --- rpm/scripts/Makefile.am   17 Jun 2007 01:21:39 -0000      1.37
  +++ rpm/scripts/Makefile.am   20 Jun 2007 16:56:47 -0000      1.38
  @@ -6,8 +6,10 @@
        brp-compress brp-python-bytecompile brp-java-gcjcompile \
        brp-strip brp-strip-comment-note brp-nobuildrootpath \
        brp-strip-shared brp-strip-static-archive brp-sparc64-linux \
  +     brp-implant-ident-static brp-java-repack-jars \
        check-files cross-build executabledeps.sh \
        find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
  +     find-provides.ksyms find-requires.ksyms kmodtool \
        cpanflute cpanflute2 Specfile.pm find-provides.perl \
        find-requires.perl freshen.sh gendiff getpo.sh http.req \
        check-java-closure.sh java.prov.sh java.req.sh \
  @@ -16,6 +18,7 @@
        php.prov php.req rpm2cpio \
        rpmdb_loadcvt rpmdiff rpmdiff.cgi \
        rpm.daily rpm.log rpm.xinetd \
  +     rpmsort symset-table \
        sql.prov sql.req symclash.py symclash.sh tcl.req tgpg trpm u_pkg.sh \
        vpkg-provides.sh vpkg-provides2.sh \
        macros.perl* macros.python* \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-compress
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 brp-compress
  --- rpm/scripts/brp-compress  17 Oct 2004 18:49:52 -0000      1.12
  +++ rpm/scripts/brp-compress  20 Jun 2007 16:56:47 -0000      1.13
  @@ -23,9 +23,9 @@
        [ "`basename $f`" = "dir" ] && continue
   
        case "$f" in
  -      *.Z) gunzip $f; b=`echo $f | sed -e 's/\.Z$//'`;;
  -      *.gz) gunzip $f; b=`echo $f | sed -e 's/\.gz$//'`;;
  -      *.bz2) bunzip2 $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
  +      *.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.Z$//'`;;
  +      *.gz) gunzip -f $f; b=`echo $f | sed -e 's/\.gz$//'`;;
  +      *.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
         *) b=$f;;
        esac
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-implant-ident-static
  ============================================================================
  $ cvs diff -u -r0 -r1.1 brp-implant-ident-static
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ brp-implant-ident-static  2007-06-20 18:56:48 +0200
  @@ -0,0 +1,34 @@
  +#!/bin/bash
  +
  +# If using normal root, avoid changing anything.
  +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
  +        exit 0
  +fi
  +
  +tempdir=`mktemp -d /tmp/implant-ident-XXXXXX`
  +if test -z "$tempdir" ; then
  +     exit 1
  +fi
  +
  +cleanup() {
  +     rm -f $tempdir/*
  +     rmdir $tempdir
  +}
  +trap cleanup 0 1 2 3 4 5 6 7 8 9 11 13 14 15
  +
  +for library in `find $RPM_BUILD_ROOT -type f -exec file \{\} \; | grep 
'current ar archive' | sed 's,:.*,,g' ` ; do
  +     pushd $tempdir > /dev/null
  +     if test -n "$RPM_BUILD_ROOT" ; then
  +             cleanedlibrary=`echo "$library" | sed s,"$RPM_BUILD_ROOT",,g`
  +     else
  +             cleanedlibrary="$library"
  +     fi
  +     ar x "$library"
  +     for object in *.o ; do
  +             echo '$RPM: 
'${RPM_PACKAGE_NAME:-UNKNOWN_NAME}-${RPM_PACKAGE_VERSION:-UNKNOWN_VERSION}-${RPM_PACKAGE_RELEASE:-UNKNOWN_RELEASE}:"$cleanedlibrary":"$object"'
 $' > __x_rpm_ident_string.txt
  +             objcopy --add-section .rodata=__x_rpm_ident_string.txt "$object"
  +             ar r "$library" "$object"
  +     done
  +     rm -f *.o
  +     popd > /dev/null
  +done
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-java-repack-jars
  ============================================================================
  $ cvs diff -u -r0 -r1.1 brp-java-repack-jars
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ brp-java-repack-jars      2007-06-20 18:56:48 +0200
  @@ -0,0 +1,95 @@
  +#!/bin/sh
  +
  +# If using normal root, avoid changing anything.
  +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
  +     exit 0
  +fi
  +
  +# If zip is not installed, we can't repack the jars.
  +if [ ! -x /usr/bin/zip ]; then
  +     exit 0
  +fi
  +if [ ! -x /usr/bin/unzip ]; then
  +     exit 0
  +fi
  +
  +JARS=`find $RPM_BUILD_ROOT -type f -name \*.jar`
  +if [ ! -z "$JARS" ]; then 
  +     
  +     # make $RPM_BUILD_ROOT/tmp if it doesn't exist
  +     rmtmp=0
  +     if [ ! -x "$RPM_BUILD_ROOT/tmp" ]; then
  +             mkdir -p $RPM_BUILD_ROOT/tmp
  +             rmtmp=1
  +     fi
  +     
  +     # unpack every jar, set the date of the files and directories and 
  +     # repack the jar
  +     for j in $JARS ; do
  +             JARNAME=`basename $j`
  +             TMPDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp 
$JARNAME.tmpdir.XXXXXXXXXX` || exit 1
  +             JARDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp 
$JARNAME.jardir.XXXXXXXXXX` || exit 1
  +             TIMEREF=`mktemp -p $RPM_BUILD_ROOT/tmp 
$JARNAME.timeref.XXXXXXXXXX` || exit 1
  +             
  +             pushd $TMPDIR > /dev/null
  +             /usr/bin/unzip -qq -o $j
  +             rm -f $j
  +             
  +             # Create the directories first.
  +             for d in `find -type d | LC_ALL=C sort`; do
  +                     mkdir -p $JARDIR/$d
  +             done 
  +
  +             # Get the modtime from the newest ChangeLog. If the project
  +             # doesn't have a ChangeLog, Jan 1, 1970 will be used.
  +             DATE="1970-01-01 UTC"
  +
  +             if [ -z $_PACKAGE_BUILD_DIR ]; then
  +                     
_PACKAGE_BUILD_DIR=$RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION
  +             fi
  +
  +             if [ -d $_PACKAGE_BUILD_DIR ]; then
  +                     CHANGELOGS=`find $_PACKAGE_BUILD_DIR -type f -name 
ChangeLog`
  +                     if [ ! -z "$CHANGELOGS" ]; then
  +                             for c in $CHANGELOGS; do
  +                                     TMPDATE=`stat -c %y $c | cut -d " " -f 
1-2`
  +                                     if [ `date --date="$TMPDATE" +%s` -gt 
`date --date="$DATE" +%s` ]; then
  +                                             DATE="$TMPDATE"
  +                                     fi
  +                             done
  +                     fi 
  +             fi
  +
  +             # move the contents over to the a new directory in order and set
  +             # the times. 
  +             for f in `find -type f | LC_ALL=C sort`; do 
  +                     cp $f $JARDIR/$f
  +                     touch --date="$DATE" $JARDIR/$f
  +             done
  +             popd > /dev/null
  +
  +             # Set the times of the directories.
  +             touch --date="$DATE" `find $JARDIR -type d`
  +
  +             # make the jar
  +             pushd $JARDIR > /dev/null
  +
  +             if [ -n "`find -type f`" ]; then
  +                     find -type f -print | LC_ALL=C sort | /usr/bin/zip -q 
-X -9 $j -@
  +             else
  +                     # Put the empty jar back
  +                     touch $j
  +             fi
  +             popd > /dev/null
  +
  +             # Cleanup.
  +             rm -rf $TMPDIR
  +             rm -rf $JARDIR
  +             rm -f $TIMEREF
  +     done
  +
  +     # remove $RPM_BUILD_ROOT/tmp if we created it
  +     if [ $rmtmp -eq 1 ]; then
  +             rm -rf $RPM_BUILD_ROOT/tmp
  +     fi
  +fi
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-strip
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 brp-strip
  --- rpm/scripts/brp-strip     30 May 2005 06:43:45 -0000      1.5
  +++ rpm/scripts/brp-strip     20 Jun 2007 16:56:47 -0000      1.6
  @@ -9,10 +9,13 @@
   *) ;;
   esac
   
  +[ -z "$STRIP" -a -n "$1" ] && STRIP="$1"
  +[ -z "$STRIP" ] && STRIP=strip
  +
   # Strip ELF binaries
   for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or 
-perm -0001 \) -exec file {} \; | \
           grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
        grep -v ' shared object,' | \
        sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped/\1/p'`; do
  -     strip -g "$f" || :
  +     $STRIP -g "$f" || :
   done
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-strip-comment-note
  ============================================================================
  $ cvs diff -u -r1.4 -r1.5 brp-strip-comment-note
  --- rpm/scripts/brp-strip-comment-note        30 May 2005 06:43:45 -0000      
1.4
  +++ rpm/scripts/brp-strip-comment-note        20 Jun 2007 16:56:47 -0000      
1.5
  @@ -9,15 +9,20 @@
   *) ;;
   esac
   
  +[ -z "$STRIP" -a -n "$1" ] && STRIP="$1"
  +[ -z "$OBJDUMP" -a -n "$2" ] && OBJDUMP="$2"
  +[ -z "$STRIP" ] && STRIP=strip
  +[ -z "$OBJDUMP" ] && OBJDUMP=objdump
  +
   # Strip .comment and .note sections (the latter only if it is not allocated)
   # for already stripped elf files in the build root
   for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or 
-perm -0001 \) -exec file {} \; | \
           grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
        sed -n -e 's/^\(.*\):[  ]*ELF.*, stripped/\1/p'`; do
        note="-R .note"
  -     if objdump -h $f | grep '^[     ]*[0-9]*[       ]*.note[        ]' -A 1 
| \
  +     if $OBJDUMP -h $f | grep '^[    ]*[0-9]*[       ]*.note[        ]' -A 1 
| \
                grep ALLOC >/dev/null; then
                note=
        fi
  -     strip -R .comment $note "$f" || :
  +     $STRIP -R .comment $note "$f" || :
   done
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-strip-shared
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 brp-strip-shared
  --- rpm/scripts/brp-strip-shared      30 May 2005 06:43:45 -0000      1.3
  +++ rpm/scripts/brp-strip-shared      20 Jun 2007 16:56:47 -0000      1.4
  @@ -12,6 +12,9 @@
   *) ;;
   esac
   
  +[ -z "$STRIP" -a -n "$1" ] && STRIP="$1"
  +[ -z "$STRIP" ] && STRIP=strip
  +
   # Strip ELF shared objects
   # Please note we don't restrict our search to executable files because
   # our libraries are not (should not be, at least) +x.
  @@ -19,5 +22,5 @@
           grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
        grep ' shared object,' | \
        sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped/\1/p'`; do
  -     strip --strip-unneeded "$f"
  +     $STRIP --strip-unneeded "$f"
   done
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/brp-strip-static-archive
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 brp-strip-static-archive
  --- rpm/scripts/brp-strip-static-archive      30 May 2005 06:43:45 -0000      
1.2
  +++ rpm/scripts/brp-strip-static-archive      20 Jun 2007 16:56:47 -0000      
1.3
  @@ -9,10 +9,13 @@
   *) ;;
   esac
   
  +[ -z "$STRIP" -a -n "$1" ] && STRIP="$1"
  +[ -z "$STRIP" ] && STRIP=strip
  +
   # Strip static libraries.
   for f in `find $RPM_BUILD_ROOT -type f -a -exec file {} \; | \
           grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
        grep 'current ar archive' | \
        sed -n -e 's/^\(.*\):[  ]*current ar archive/\1/p'`; do
  -     strip -g "$f"
  +     $STRIP -g "$f"
   done
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/find-lang.sh
  ============================================================================
  $ cvs diff -u -r1.7 -r1.8 find-lang.sh
  --- rpm/scripts/find-lang.sh  20 Jun 2004 18:55:19 -0000      1.7
  +++ rpm/scripts/find-lang.sh  20 Jun 2007 16:56:47 -0000      1.8
  @@ -85,7 +85,7 @@
       esac
   done    
   
  -find $TOP_DIR -type f|sed '
  +find $TOP_DIR -type f -or -type l|sed '
   s:'"$TOP_DIR"'::
   '"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) 
\1\2\3:
   
'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2)
 \1\2\3:
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/find-provides.ksyms
  ============================================================================
  $ cvs diff -u -r0 -r1.1 find-provides.ksyms
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ find-provides.ksyms       2007-06-20 18:56:48 +0200
  @@ -0,0 +1,9 @@
  +#! /bin/sh
  +
  +IFS=$'\n'
  +
  +for module in $(grep -E '/lib/modules/.+\.ko$'); do
  +    nm $module \
  +    | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):ksym(\2) = \1:p'
  +done \
  +| sort -u
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/find-requires.ksyms
  ============================================================================
  $ cvs diff -u -r0 -r1.1 find-requires.ksyms
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ find-requires.ksyms       2007-06-20 18:56:48 +0200
  @@ -0,0 +1,48 @@
  +#! /bin/bash
  +
  +IFS=$'\n'
  +
  +all_provides() {
  +    nm "$@" \
  +    | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):\1\t\2:p' \
  +    | sort -k2 -u
  +}
  +
  +all_requires() {
  +    for module in "$@"; do
  +        set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q)
  +        /sbin/modprobe --dump-modversions "$module" \
  +        | sed -r -e 's:^0x0*::' -e 's:$:\t'"$1"':'
  +    done \
  +    | sort -k2 -u
  +}
  +
  +if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then
  +    cat > /dev/null
  +    exit 0
  +fi
  +
  +modules=($(grep -E '/lib/modules/.+\.ko$'))
  +if [ [EMAIL PROTECTED] -gt 0 ]; then
  +    symset_table=$(mktemp -t ${0##*/}.XXXXX)
  +    /usr/lib/rpm/redhat/symset-table | sort > $symset_table
  +
  +    join -t $'\t' -j 1 -a 2 $symset_table <(
  +        # Filter out requirements that we fulfill ourself.
  +        join -t $'\t' -j 2 -v 1 \
  +            <(all_requires "[EMAIL PROTECTED]") \
  +            <(all_provides "[EMAIL PROTECTED]") \
  +        | awk '
  +        BEGIN { FS = "\t" ; OFS = "\t" }
  +        { print $3 "/" $2 "/" $1 }
  +        ' \
  +        | sort -u) \
  +    | sort -u \
  +    | awk '
  +    { FS = "\t" ; OFS = "\t" }
  +    NF == 3 { print "kernel(" $2 ") = " $3
  +              next }
  +            { split($1, arr, "/")
  +              print "ksym(" arr[3] ") = " arr[2] }
  +    '
  +fi
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/kmodtool
  ============================================================================
  $ cvs diff -u -r0 -r1.1 kmodtool
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ kmodtool  2007-06-20 18:56:48 +0200
  @@ -0,0 +1,258 @@
  +#!/bin/bash
  +
  +# kmodtool - Helper script for building kernel module RPMs
  +# Copyright (c) 2003-2006 Ville Skyttä <[EMAIL PROTECTED]>,
  +#                         Thorsten Leemhuis <[EMAIL PROTECTED]>
  +#                         Jon Masters <[EMAIL PROTECTED]>
  +#
  +# 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)|xen)
  +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}" ;;
  +        *.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;;
  +        *)     kdep="kernel-%{_target_cpu} = ${verrel}${variant}"     ;;
  +    esac
  +
  +    echo "%package       -n kmod-${kmod_name}${dashvariant}"
  +
  +    if [ -z "$kmp_provides_summary" ]; then
  +        echo "Summary:          ${kmod_name} kernel module(s)"
  +    fi
  +
  +    if [ -z "$kmp_provides_group" ]; then
  +        echo "Group:            System Environment/Kernel"
  +    fi
  +
  +    if [ ! -z "$kmp" ]; then
  +        echo "Version: %{kmp_version}"
  +        echo "Release: %{kmp_release}"
  +    fi
  +    
  +    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
  +EOF
  +
  +if [ "no" != "$kmp_nobuildreqs" ]
  +then
  +    echo "BuildRequires: kernel${dashvariant}-devel-%{_target_cpu} = 
${verrel}"
  +fi
  +
  +if [ "" != "$kmp_override_preamble" ]
  +then
  +    cat "$kmp_override_preamble"
  +fi
  +
  +cat <<EOF
  +%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' "[EMAIL PROTECTED]" \
  +    | /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' "[EMAIL PROTECTED]" \
  +    | /sbin/weak-modules --remove-modules
  +fi
  +EOF
  +    fi
  +
  +echo "%files         -n kmod-${kmod_name}${dashvariant}"
  +
  +if [ "" == "$kmp_override_filelist" ];
  +then
  +    echo "%defattr(644,root,root,755)"
  +    echo "/lib/modules/${verrel}${variant}/"
  +else
  +    cat "$kmp_override_filelist"
  +fi
  +}
  +
  +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
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/rpmsort
  ============================================================================
  $ cvs diff -u -r0 -r1.1 rpmsort
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ rpmsort   2007-06-20 18:56:48 +0200
  @@ -0,0 +1,76 @@
  +#! /usr/bin/perl -w
  +
  +# This program is free software; you can redistribute it and/or
  +# modify it under the terms of the GNU General Public License
  +# as published by the Free Software Foundation; either version 2
  +# of the License, or (at your option) any later version.
  +#
  +# This program is distributed in the hope that it will be useful,
  +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  +# GNU General Public License for more details.
  +#
  +# You should have received a copy of the GNU General Public License
  +# along with this program; if not, write to the Free Software
  +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  +# USA.
  +
  +use Getopt::Long qw(:config gnu_getopt);
  +
  +sub rpm_cmp_versions {
  +    my ($evr1, $evr2) = @_;
  +
  +    sub _rpm_cmp {
  +     my ($s1, $s2) = @_;
  +
  +     return defined $s1 <=> defined $s2
  +         unless defined $s1 && defined $s2;
  +
  +     my ($r, $x1, $x2);
  +     do {
  +         $s1 =~ s/^[^a-zA-Z0-9]+//;
  +         $s2 =~ s/^[^a-zA-Z0-9]+//;
  +         if ($s1 =~ /^\d/ || $s2 =~ /^\d/) {
  +             $s1 =~ s/^0*(\d*)//;  $x1 = $1;
  +             $s2 =~ s/^0*(\d*)//;  $x2 = $1;
  +             $r = length $x1 <=> length $x2 || $x1 cmp $x2;
  +         } else {
  +             $s1 =~ s/^([a-zA-Z]*)//;  $x1 = $1;
  +             $s2 =~ s/^([a-zA-Z]*)//;  $x2 = $1;
  +             return 0
  +                 if $x1 eq '' && $x2 eq '';
  +             $r = $x1 cmp $x2;
  +         }
  +     } until $r;
  +     return $r;
  +    }
  +
  +    my ($e1, $v1, $r1) = $evr1 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
  +    my ($e2, $v2, $r2) = $evr2 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
  +    my $r = _rpm_cmp($e1 || 0, $e2 || 0);
  +    $r = _rpm_cmp($v1, $v2)
  +     unless $r;
  +    $r = _rpm_cmp($r1, $r2)
  +     unless $r;
  +    return $r;
  +}
  +
  +my $reorder = sub { return @_ };
  +my $key = 0;
  +
  +GetOptions ("r|reverse"          => sub { $reorder = sub { return reverse @_ 
} },
  +         "k|key=i"       => \$key)
  +or do {
  +    print STDERR "Usage\n";
  +    exit 1;
  +};
  +
  +if ($key == 0) {
  +    # Sort by entire lines
  +    map { print } &$reorder(sort { rpm_cmp_versions($a, $b) } <>);
  +} else {
  +    # Sort by field $key
  +    my @data = map { [(split)[$key-1], $_] } <>;
  +    map { print } &$reorder(map { $_->[1] }
  +        sort { rpm_cmp_versions($a->[0], $b->[0]) } @data);
  +}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/symset-table
  ============================================================================
  $ cvs diff -u -r0 -r1.1 symset-table
  --- /dev/null 2007-06-20 18:55:00 +0200
  +++ symset-table      2007-06-20 18:56:48 +0200
  @@ -0,0 +1,40 @@
  +#! /bin/sh
  +
  +# Create a table of all symbol sets defined in all /boot/symsets*.tar.gz
  +# files.
  +#
  +# Format:
  +#   kernelrelease/modver/symbol <tab> symset <tab> symset_hash
  +#
  +# This table is needed for computing the appropriate Requires: tags for
  +# kernel module packages.
  +
  +tmpdir=$(mktemp -t -d ${0##*/}.XXXXXX)
  +trap "cd / ; rm -rf $tmpdir" EXIT
  +cd $tmpdir
  +
  +shopt -s nullglob
  +for symsets in /boot/symsets-*.tar.gz; do
  +    zcat $symsets \
  +    | tar xf -
  +done
  +
  +for symsets in /usr/src/kernels/*/symsets-*.tar.gz; do
  +    zcat $symsets \
  +    | tar xf -
  +done
  +
  +for symsets in *; do
  +    krel=${symsets#symsets-}
  +    for symset in $symsets/*; do
  +     class=${symset##*/} ; class=${class%.*}
  +     hash=${symset##*.}
  +     awk '
  +     BEGIN { FS = "\t" ; OFS = "\t" }
  +     { sub(/0x0*/, "", $1)
  +       print krel "/" $1 "/" $2, class, hash }
  +     ' krel="$krel" class="$class" hash="$hash" $symset
  +    done
  +done
  +
  +# vim:shiftwidth=4 softtabstop=4
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to