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:   01-Apr-2011 07:08:12
  Branch: HEAD                             Handle: 2011040105081101

  Added files:
    rpm/macros              gstreamer.in
    rpm/scripts             gstreamer.sh
  Modified files:
    rpm                     CHANGES Makefile.am configure.ac
    rpm/lib                 rpmfc.c

  Log:
    add classifiers for gstreamer plugins & dep generator. (a bit dirty
    for now.. :/)

  Summary:
    Revision    Changes     Path
    1.3591      +1  -0      rpm/CHANGES
    2.265       +2  -2      rpm/Makefile.am
    2.481       +1  -0      rpm/configure.ac
    1.78        +10 -0      rpm/lib/rpmfc.c
    1.1         +12 -0      rpm/macros/gstreamer.in
    1.1         +71 -0      rpm/scripts/gstreamer.sh
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3590 -r1.3591 CHANGES
  --- rpm/CHANGES       1 Apr 2011 02:11:13 -0000       1.3590
  +++ rpm/CHANGES       1 Apr 2011 05:08:11 -0000       1.3591
  @@ -1,4 +1,5 @@
   5.4.0 -> 5.4.1:
  +    - proyvind: rpmfc: add classifiers for gstreamer plugins & dep generator.
       - proyvind: use pythoneggs.py for python deps generated by internal 
generator.
       - proyvind: rpmfc: enable ruby file classifier & internal dep generator.
       - devzero2000: misread the review, repost as the original patch
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/Makefile.am
  ============================================================================
  $ cvs diff -u -r2.264 -r2.265 Makefile.am
  --- rpm/Makefile.am   25 Jan 2011 14:41:47 -0000      2.264
  +++ rpm/Makefile.am   1 Apr 2011 05:08:11 -0000       2.265
  @@ -112,8 +112,8 @@
   
   pkgcfgdir =  $(pkglibdir)/macros.d
   pkgcfg_DATA = \
  -     macros/cmake macros/java macros/libtool macros/mandriva macros/mono \
  -     macros/perl macros/pkgconfig macros/php macros/python macros/ruby \
  +     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
   
   noinst_HEADERS = build.h debug.h system.h
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.480 -r2.481 configure.ac
  --- rpm/configure.ac  24 Mar 2011 22:42:54 -0000      2.480
  +++ rpm/configure.ac  1 Apr 2011 05:08:11 -0000       2.481
  @@ -508,6 +508,7 @@
   AC_PATH_PROG(__GIT, git, %{_bindir}/git, $MYPATH)
   AC_PATH_PROG(__GPG, gpg2, %{_bindir}/gpg2, $MYPATH)
   AC_PATH_PROG(__GSR, gsr, %{_bindir}/gsr, $MYPATH)
  +AC_PATH_PROG(__GST_INSPECT, gst-inspect-0.10, %{_bindir}/gst-inspect-0.10, 
$MYPATH)
   AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
   AC_PATH_PROG(__HG, hg, %{_bindir}/hg, $MYPATH)
   AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.77 -r1.78 rpmfc.c
  --- rpm/lib/rpmfc.c   1 Apr 2011 03:21:03 -0000       1.77
  +++ rpm/lib/rpmfc.c   1 Apr 2011 05:08:12 -0000       1.78
  @@ -878,6 +878,12 @@
   #endif
            xx = rpmfcHelper(fc, 'R', "ruby");
       } else
  +    if ((fc->fcolor->vals[fc->ix] & (RPMFC_MODULE|RPMFC_LIBRARY)) &&
  +         strstr(fn, "/gstreamer")) {
  +     xx = rpmfcHelper(fc, 'P', "gstreamer");
  +     /* XXX: currently of no use, but for the sake of consistency... */
  +     xx = rpmfcHelper(fc, 'R', "gstreamer");
  +    }
   
   /*@-observertrans@*/
       defaultdocdir = _free(defaultdocdir) ;
  @@ -1041,6 +1047,10 @@
                        (fn = rindex(fn, '.')) && !strcmp(fn, ".gemspec"))
                        fc->fcolor->vals[fc->ix] |= RPMFC_MODULE;
                }
  +             /* XXX: lacking better, more generic classifier... */
  +             else if (!strncmp(fn, "/gstreamer", sizeof("/gstreamer")-1) &&
  +                     fc->fcolor->vals[fc->ix] & RPMFC_LIBRARY)
  +                 fc->fcolor->vals[fc->ix] |= (RPMFC_MODULE|RPMFC_SCRIPT);
            }
        }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros/gstreamer.in
  ============================================================================
  $ cvs diff -u -r0 -r1.1 gstreamer.in
  --- /dev/null 2011-04-01 07:08:03.000000000 +0200
  +++ gstreamer.in      2011-04-01 07:08:12.373923426 +0200
  @@ -0,0 +1,12 @@
  +# Gstreamer specific macro definitions.
  +# To make use of these macros insert the following line into your spec file:
  +# %{load:%{_usrlibrpm}/macros.d/gstreamer}
  +
  +%__gst_inspect               @__GST_INSPECT
  +
  +# 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}.
  +%__gstreamer_provides        %{_rpmhome}/gstreamer.sh --provides 
--gst-inspect %__gst_inspect
  +#%__gstreamer_requires       %{_rpmhome}/gstreamer.sh --requires
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/scripts/gstreamer.sh
  ============================================================================
  $ cvs diff -u -r0 -r1.1 gstreamer.sh
  --- /dev/null 2011-04-01 07:08:03.000000000 +0200
  +++ gstreamer.sh      2011-04-01 07:08:12.093909899 +0200
  @@ -0,0 +1,71 @@
  +#!/bin/sh
  +#
  +# Script to install in:
  +# /usr/lib/rpm/redhat/find-provides.d
  +#
  +# Transform GStreamer auto install info into RPM provides
  +#
  +# Author: Bastien Nocera <had...@hadess.net>
  +# Based on other provides scripts from RPM
  +#
  +
  +[ $# -ge 1 ] || {
  +    cat > /dev/null
  +    exit 0
  +}
  +
  +filelist=`grep -e '.so$' | sed "s/['\"]/\\\&/g"`
  +provides=0
  +gst_inspect=$(which gst-inspect 2>/dev/null)
  +
  +# --- Alpha does not mark 64bit dependencies•
  +case `uname -m` in
  +  alpha*)    mark64="" ;;
  +  *)         mark64="()(64bit)" ;;
  +esac
  +
  +solist=$(echo $filelist | grep "libgst" | \
  +     xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1 )
  +
  +function getmark()
  +{
  +     lib64=`if file -L $1 2>/dev/null | \
  +             grep "ELF 64-bit" >/dev/null; then echo -n "$mark64"; fi`
  +}
  +
  +function libdir()
  +{
  +     buildlibdir=`dirname $1`
  +     buildlibdir=`dirname $buildlibdir`
  +}
  +
  +while [ "$#" -ne 0 ]; do
  +    case $1 in
  +     -P|--provides)
  +         provides=1
  +         ;;
  +     --gst-inspect)
  +         shift
  +         gst_inspect=$1
  +         ;;
  +    esac
  +    shift
  +done
  +
  +if [ -z "$gst_inspect" ]; then
  +    exit 1
  +fi
  +
  +if [ $provides -eq 1 ]; then
  +    for so in $solist ; do
  +     getmark $so
  +     libdir $so
  +     LD_LIBRARY_PATH=$buildlibdir $gst_inspect 
--print-plugin-auto-install-info --rpm $so 2> /dev/null | while read line ; do
  +         echo -n "$line";
  +         echo -n "$lib64"
  +         echo
  +     done
  +    done
  +fi
  +exit 0
  +
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to