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:58:00 Branch: rpm-5_3 Handle: 2011041010575901 Added files: (Branch: rpm-5_3) rpm/macros kernel.in rpm/scripts kmod-deps.sh Modified files: (Branch: rpm-5_3) rpm CHANGES Makefile.am configure.ac Log: rpmfc: add internel dep generator helper for kernel modules. kmod-deps.sh: add dependency extractor from mandriva. Summary: Revision Changes Path 1.3296.2.205+2 -0 rpm/CHANGES 2.247.2.17 +3 -3 rpm/Makefile.am 2.432.2.54 +4 -3 rpm/configure.ac 1.1.4.2 +12 -0 rpm/macros/kernel.in 1.1.4.2 +61 -0 rpm/scripts/kmod-deps.sh ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3296.2.204 -r1.3296.2.205 CHANGES --- rpm/CHANGES 10 Apr 2011 05:25:05 -0000 1.3296.2.204 +++ rpm/CHANGES 10 Apr 2011 10:57:59 -0000 1.3296.2.205 @@ -1,4 +1,6 @@ 5.3.10 -> 5.3.11 + - 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: add a --nofsync popt alias (caveat: experimental & risky). @@ . patch -p0 <<'@@ .' Index: rpm/Makefile.am ============================================================================ $ cvs diff -u -r2.247.2.16 -r2.247.2.17 Makefile.am --- rpm/Makefile.am 1 Apr 2011 05:22:44 -0000 2.247.2.16 +++ rpm/Makefile.am 10 Apr 2011 10:57:59 -0000 2.247.2.17 @@ -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.432.2.53 -r2.432.2.54 configure.ac --- rpm/configure.ac 2 Apr 2011 03:20:14 -0000 2.432.2.53 +++ rpm/configure.ac 10 Apr 2011 10:57:59 -0000 2.432.2.54 @@ -520,6 +520,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) @@ -2291,9 +2292,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.4.2 kernel.in --- /dev/null 2011-04-10 12:55:00.000000000 +0200 +++ kernel.in 2011-04-10 12:57:59.362249011 +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/kmod-deps.sh ============================================================================ $ cvs diff -u -r0 -r1.1.4.2 kmod-deps.sh --- /dev/null 2011-04-10 12:55:00.000000000 +0200 +++ kmod-deps.sh 2011-04-10 12:58:00.702307180 +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