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

  Server: rpm5.org                         Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs                       Email:  pkarl...@rpm5.org
  Module: rpm                              Date:   10-Apr-2011 12:50:14
  Branch: HEAD                             Handle: 2011041010501301

  Added files:
    rpm/macros              kernel.in
    rpm/scripts             kmod-deps.sh
  Modified files:
    rpm                     CHANGES Makefile.am configure.ac
    rpm/scripts             Makefile.am

  Log:
    rpmfc: add internel dep generator helper for kernel modules.
    kmod-deps.sh: add dependency extractor from mandriva.

  Summary:
    Revision    Changes     Path
    1.3608      +2  -0      rpm/CHANGES
    2.266       +3  -3      rpm/Makefile.am
    2.485       +4  -3      rpm/configure.ac
    1.1         +12 -0      rpm/macros/kernel.in
    1.78        +1  -1      rpm/scripts/Makefile.am
    1.1         +61 -0      rpm/scripts/kmod-deps.sh
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3607 -r1.3608 CHANGES
  --- rpm/CHANGES       10 Apr 2011 05:23:25 -0000      1.3607
  +++ rpm/CHANGES       10 Apr 2011 10:50:13 -0000      1.3608
  @@ -1,4 +1,6 @@
   5.4.0 -> 5.4.1:
  +    - proyvind: rpmfc: add internel dep generator helper for kernel modules.
  +    - provyind: kmod-deps.sh: add dependency extractor from mandriva.
       - proyvind: rpmds: implement devel(libfoo) symlink dependencies from
        Mandriva, but with proper ELF SONAME checking.
       - jbj: mongo: stub-in a /usr/lib/rpm/bin mongo shell wrapper.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/Makefile.am
  ============================================================================
  $ cvs diff -u -r2.265 -r2.266 Makefile.am
  --- rpm/Makefile.am   1 Apr 2011 05:08:11 -0000       2.265
  +++ rpm/Makefile.am   10 Apr 2011 10:50:13 -0000      2.266
  @@ -112,9 +112,9 @@
   
   pkgcfgdir =  $(pkglibdir)/macros.d
   pkgcfg_DATA = \
  -     macros/cmake macros/gstreamer macros/java macros/libtool 
macros/mandriva \
  -     macros/mono macros/perl macros/pkgconfig macros/php macros/python 
macros/ruby \
  -     macros/selinux macros/tcl
  +     macros/cmake macros/gstreamer macros/java macros/kernel macros/libtool \
  +     macros/mandriva macros/mono macros/perl macros/pkgconfig macros/php \
  +     macros/python macros/ruby macros/selinux macros/tcl
   
   noinst_HEADERS = build.h debug.h system.h
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.484 -r2.485 configure.ac
  --- rpm/configure.ac  3 Apr 2011 19:22:00 -0000       2.484
  +++ rpm/configure.ac  10 Apr 2011 10:50:13 -0000      2.485
  @@ -521,6 +521,7 @@
   AC_PATH_PROG(__MAKE, make, %{_bindir}/make, $MYPATH)
   AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
   AC_PATH_PROG(__MONGO, mongo, %{_bindir}/mongo, $MYPATH)
  +AC_PATH_PROG(__MODINFO, modinfo, /sbin/modinfo, $MYPATH)
   AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
   AC_PATH_PROG(__PATCH, patch, %{_bindir}/patch, $MYPATH)
   AC_PATH_PROG(__PAX, pax, %{_bindir}/pax, $MYPATH)
  @@ -2307,9 +2308,9 @@
       scripts/Makefile
       rpmdb/DB_CONFIG
       macros/macros macros/macros.rpmbuild
  -    macros/cmake macros/gstreamer macros/java macros/libtool macros/mandriva
  -    macros/mono macros/perl macros/pkgconfig macros/php macros/python 
macros/ruby
  -    macros/selinux macros/tcl
  +    macros/cmake macros/gstreamer macros/java macros/kernel macros/libtool
  +    macros/mandriva macros/mono macros/perl macros/pkgconfig macros/php
  +    macros/python macros/ruby macros/selinux macros/tcl
       doc/Makefile
       doc/manual/Makefile doc/fr/Makefile doc/ja/Makefile doc/ko/Makefile
       doc/pl/Makefile doc/ru/Makefile doc/sk/Makefile
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros/kernel.in
  ============================================================================
  $ cvs diff -u -r0 -r1.1 kernel.in
  --- /dev/null 2011-04-10 12:45:29.000000000 +0200
  +++ kernel.in 2011-04-10 12:50:13.231404616 +0200
  @@ -0,0 +1,12 @@
  +# Kernel specific macro definitions.
  +# To make use of these macros insert the following line into your spec file:
  +# %{load:%{_usrlibrpm}/macros.d/kernel}
  +
  +%__modinfo           @__MODINFO
  +
  +# Path to scripts to autogenerate gstreamer package dependencies,
  +#
  +# Note: Used if _use_internal_dependency_generator is non-zero. The
  +# helpers are also used by %{_rpmhome}/rpmdeps {--provides|--requires}.
  +%__kernel_provides   %{_rpmhome}/kmod-deps.sh --provides --modinfo %__modinfo
  +#%__kernel_requires  %{_rpmhome}/kmod-deps.sh --requires --modinfo %__modinfo
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.77 -r1.78 Makefile.am
  --- rpm/scripts/Makefile.am   24 Feb 2011 03:11:09 -0000      1.77
  +++ rpm/scripts/Makefile.am   10 Apr 2011 10:50:14 -0000      1.78
  @@ -15,7 +15,7 @@
        deb_control deb_md5sums deb_postinst deb_postrm deb_preinst deb_prerm \
        executabledeps.sh \
        find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
  -     find-provides.ksyms find-requires.ksyms kmodtool \
  +     find-provides.ksyms find-requires.ksyms kmod-deps.sh kmodtool \
        cpanflute cpanflute2 Specfile.pm \
        find-provides.perl find-requires.perl \
        find-provides.php find-requires.php \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/kmod-deps.sh
  ============================================================================
  $ cvs diff -u -r0 -r1.1 kmod-deps.sh
  --- /dev/null 2011-04-10 12:45:29.000000000 +0200
  +++ kmod-deps.sh      2011-04-10 12:50:14.221447549 +0200
  @@ -0,0 +1,61 @@
  +#!/bin/sh
  +
  +# Kernel module dependency extractor.
  +#
  +# Author(s): Danny Tholen <obi...@mandriva.org>
  +#            Olivier Blin <bl...@mandriva.org>
  +#            Per Øyvind Karlsen <peroyv...@mandriva.org>
  +# 
  +
  +provides=0
  +requires=0
  +modinfo=/sbin/modinfo
  +
  +while [ "$#" -ne 0 ]; do
  +    case $1 in
  +     -P|--provides)
  +         provides=1
  +         ;;
  +     -R|--requires)
  +         requires=1
  +         ;;
  +     --modinfo)
  +         shift
  +         modinfo=$1
  +         ;;
  +    esac
  +    shift
  +done
  +
  +if [ $requires -eq 1 ]; then
  +    echo "--requires not implemented!" 1>&2
  +    exit 1
  +fi
  +
  +if [ $provides -eq 1 ]; then
  +    provideslist=`sed "s/['\"]/\\\&/g"`
  +    modulelist=$(echo "$provideslist" | egrep 
'^.*(/lib/modules/|/var/lib/dkms/).*\.ko(\.gz)?$')
  +    echo $modulelist | xargs -r $modinfo | \
  +     perl -lne '
  +    $name = $1 if m!^filename:\s*(?:.*/)?([^/]+)\.k?o!;
  +    $ver = $1 if 
/^version:\s*[a-zA-Z]{0,6}\-?(\d+[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*-?[a-zA-Z]{0,6}\d?).*/;
  +    $ver =~ s/(\:|-)/_/;
  +    if (/^vermagic:/) {
  +     print "kmod\($name\)" . ($ver ? " = $ver" : "") if $name;
  +     undef $name; undef $ver;
  +    }
  +    '
  +    dkmslist=$(echo "$provideslist" | egrep 
'(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf$')
  +    [ -n "$dkmslist" ] && for d in $dkmslist; do
  +     VERSION=`sed -rne 's/^PACKAGE_VERSION="?([^"]+)"?$/\1/;T;p' $d`
  +     [ -z "$VERSION" ] && continue
  +     PACKAGE_NAME=`sed -rne 's/^PACKAGE_NAME="?([^"]+)"?$/\1/;T;p' $d`
  +     MODULES=`sed -rne 's/^DEST_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' 
$d`
  +     [ -z "$MODULES" ] && MODULES=`sed -rne 
's/^BUILT_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d`
  +     # default on PACKAGE_NAME if no BUILT_MODULE_NAME is specified
  +     [ -z "$MODULES" ] && MODULES=$PACKAGE_NAME
  +     echo "$MODULES" | sed -re "s/\\\$PACKAGE_NAME/$PACKAGE_NAME/" | while 
read m; do
  +         echo "kmod($m) = $VERSION"
  +     done
  +    done
  +fi
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to