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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   11-Apr-2011 00:53:06
  Branch: HEAD                             Handle: 2011041022530301

  Modified files:
    rpm                     CHANGES
    rpm/lib                 librpm.vers rpmds.c rpmds.h rpmfc.c

  Log:
    - put "devel(libfoo)" deps under RPM_VENDOR_MANDRIVA.

  Summary:
    Revision    Changes     Path
    1.3611      +1  -0      rpm/CHANGES
    1.79        +0  -1      rpm/lib/librpm.vers
    2.178       +69 -30     rpm/lib/rpmds.c
    2.83        +0  -13     rpm/lib/rpmds.h
    1.81        +18 -0      rpm/lib/rpmfc.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3610 -r1.3611 CHANGES
  --- rpm/CHANGES       10 Apr 2011 13:50:29 -0000      1.3610
  +++ rpm/CHANGES       10 Apr 2011 22:53:03 -0000      1.3611
  @@ -1,4 +1,5 @@
   5.4.0 -> 5.4.1:
  +    - jbj: put "devel(libfoo)" deps under RPM_VENDOR_MANDRIVA.
       - proyvind: merge multiarch-utils from mandriva.
       - proyvind: macros: sync with updated python macros from mandriva.
       - proyvind: rpmfc: add internel dep generator helper for kernel modules.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/librpm.vers
  ============================================================================
  $ cvs diff -u -r1.78 -r1.79 librpm.vers
  --- rpm/lib/librpm.vers       10 Apr 2011 05:23:25 -0000      1.78
  +++ rpm/lib/librpm.vers       10 Apr 2011 22:53:04 -0000      1.79
  @@ -125,7 +125,6 @@
       rpmdsSetRefs;
       rpmdsSetResult;
       rpmdsSingle;
  -    rpmdsSymlink;
       rpmdsSysinfo;
       rpmdsTagN;
       rpmdsThis;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.c
  ============================================================================
  $ cvs diff -u -r2.177 -r2.178 rpmds.c
  --- rpm/lib/rpmds.c   10 Apr 2011 06:57:09 -0000      2.177
  +++ rpm/lib/rpmds.c   10 Apr 2011 22:53:04 -0000      2.178
  @@ -2890,35 +2890,19 @@
    * @param isElf64    is this an ELF64 symbol?
    */
   #if defined(HAVE_GELF_H) && defined(HAVE_LIBELF) && !defined(__FreeBSD__)
  -static char * sonameDep(/*@returned@*/ char * t, const char * s, int 
isElf64, int devel)
  +static char * sonameDep(/*@returned@*/ char * t, const char * s, int isElf64)
        /*@modifies t @*/
   {
  -    char *tmp = t;
       *t = '\0';
  -    if (devel) {
  -     tmp = stpcpy(t, "devel(");
  -    }
   #if !defined(__alpha__) && !defined(__sun)
  -    if (!isElf64) {
  -     /* XXX: eehhk, would've been nice with consistency, mandriva legacy... 
:| */
  -     if (!devel && s[strlen(s)-1] != ')')
  -     (void) stpcpy( stpcpy(tmp, s), "()(64bit)");
  -    else {
  -         tmp = stpcpy(tmp, s);
  -         if (devel)
  -             tmp = strstr(t, ".so");
  -         tmp = stpcpy(tmp, "(64bit)");
  -        }
  +    if (isElf64) {
  +     if (s[strlen(s)-1] != ')')
  +     (void) stpcpy( stpcpy(t, s), "()(64bit)");
  +    else
  +         (void) stpcpy( stpcpy(t, s), "(64bit)");
       }else
   #endif
  -     tmp = stpcpy(tmp, s);
  -    if (devel) {
  -     char *suffix = strstr(t, ".so");
  -     if (suffix)
  -         tmp = suffix;
  -     tmp = stpcpy(tmp, ")");
  -    }
  -
  +     (void) stpcpy(t, s);
       return t;
   }
   #endif
  @@ -3090,7 +3074,7 @@
   
                            /* Add next provide dependency. */
                            ds = rpmdsSingle(RPMTAG_PROVIDES,
  -                                     sonameDep(t, buf, isElf64, 0),
  +                                     sonameDep(t, buf, isElf64),
                                        "", RPMSENSE_FIND_PROVIDES);
                            xx = add(context, ds);
                            (void)rpmdsFree(ds);
  @@ -3143,7 +3127,7 @@
   
                            /* Add next require dependency. */
                            ds = rpmdsSingle(RPMTAG_REQUIRENAME,
  -                                     sonameDep(t, buf, isElf64, 0),
  +                                     sonameDep(t, buf, isElf64),
                                        "", RPMSENSE_FIND_REQUIRES);
                            xx = add(context, ds);
                            (void)rpmdsFree(ds);
  @@ -3185,7 +3169,7 @@
   assert(s != NULL);
                        buf[0] = '\0';
                        ds = rpmdsSingle(RPMTAG_REQUIRENAME,
  -                             sonameDep(buf, s, isElf64, 0),
  +                             sonameDep(buf, s, isElf64),
                                "", RPMSENSE_FIND_REQUIRES);
                        xx = add(context, ds);
                        (void)rpmdsFree(ds);
  @@ -3200,7 +3184,7 @@
                        /* Add next provide dependency. */
                        buf[0] = '\0';
                        ds = rpmdsSingle(RPMTAG_PROVIDENAME,
  -                             sonameDep(buf, s, isElf64, 0),
  +                             sonameDep(buf, s, isElf64),
                                "", RPMSENSE_FIND_PROVIDES);
                        xx = add(context, ds);
                        (void)rpmdsFree(ds);
  @@ -3236,7 +3220,7 @@
        /* Add next provide dependency. */
        buf[0] = '\0';
        ds = rpmdsSingle(RPMTAG_PROVIDENAME,
  -             sonameDep(buf, s, isElf64, 0), "", RPMSENSE_FIND_PROVIDES);
  +             sonameDep(buf, s, isElf64), "", RPMSENSE_FIND_PROVIDES);
        xx = add(context, ds);
        (void)rpmdsFree(ds);
        ds = NULL;
  @@ -3255,6 +3239,60 @@
   /*@=moduncon =noeffectuncon @*/
   
   
  +#if defined(RPM_VENDOR_MANDRIVA)
  +/**
  + * Return a soname dependency constructed from an elf string, Mandriva-style.
  + * @retval t         soname dependency
  + * @param s          elf string (NULL uses "")
  + * @param isElf64    is this an ELF64 symbol?
  + */
  +#if defined(HAVE_GELF_H) && defined(HAVE_LIBELF) && !defined(__FreeBSD__)
  +static char * mdvSonameDep(/*@returned@*/ char * t, const char * s, int 
isElf64, int devel)
  +     /*@modifies t @*/
  +{
  +    char *tmp = t;
  +    *t = '\0';
  +    if (devel) {
  +     tmp = stpcpy(t, "devel(");
  +    }
  +#if !defined(__alpha__) && !defined(__sun)
  +    if (!isElf64) {
  +     /* XXX: eehhk, would've been nice with consistency, mandriva legacy... 
:| */
  +     if (!devel && s[strlen(s)-1] != ')')
  +     (void) stpcpy( stpcpy(tmp, s), "()(64bit)");
  +    else {
  +         tmp = stpcpy(tmp, s);
  +         if (devel)
  +             tmp = strstr(t, ".so");
  +         tmp = stpcpy(tmp, "(64bit)");
  +        }
  +    }else
  +#endif
  +     tmp = stpcpy(tmp, s);
  +    if (devel) {
  +     char *suffix = strstr(t, ".so");
  +     if (suffix)
  +         tmp = suffix;
  +     tmp = stpcpy(tmp, ")");
  +    }
  +
  +    return t;
  +}
  +#endif
  +
  +/** \ingroup rpmds
  + * Extract dependencies from a symlink.
  + * XXX Prototype added to keep GCC quite and avoid adding a symbol.
  + * @param fn         file name
  + * @param flags              1: skip provides 2: skip requires
  + * @param *add               add(arg, ds) saves next provide/require symlink 
dependency.
  + * @param context    add() callback context
  + * @return           0 on success
  + */
  +int rpmdsSymlink(const char * fn, int flags,
  +             int (*add) (void * context, rpmds ds), void * context)
  +     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  +     /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
   int rpmdsSymlink(const char * fn, int flags,
                int (*add) (void * context, rpmds ds), void * context)
   {
  @@ -3380,7 +3418,7 @@
   
                        if (!skipP) {
                            ds = rpmdsSingle(RPMTAG_PROVIDENAME,
  -                                 sonameDep(buf, s, isElf64, 1),
  +                                 mdvSonameDep(buf, s, isElf64, 1),
                                    "", RPMSENSE_FIND_PROVIDES);
                            xx = add(context, ds);
                            (void)rpmdsFree(ds);
  @@ -3399,7 +3437,7 @@
       if (gotSONAME && !skipR)
        for (i = 0, cnt = argvCount(deps); i < cnt; i++) {
            ds = rpmdsSingle(RPMTAG_REQUIRENAME,
  -                 sonameDep(buf, deps[i], isElf64, 1),
  +                 mdvSonameDep(buf, deps[i], isElf64, 1),
                    "", RPMSENSE_FIND_REQUIRES);
            xx = add(context, ds);
            (void)rpmdsFree(ds);
  @@ -3415,6 +3453,7 @@
       return -1;
   #endif
   }
  +#endif       /* RPM_VENDOR_MANDRIVA */
   
   #define      _SBIN_LDCONFIG_P        "/sbin/ldconfig -p"
   /*@unchecked@*/ /*@observer@*/ /*@owned@*/ /*@relnull@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.h
  ============================================================================
  $ cvs diff -u -r2.82 -r2.83 rpmds.h
  --- rpm/lib/rpmds.h   10 Apr 2011 05:23:25 -0000      2.82
  +++ rpm/lib/rpmds.h   10 Apr 2011 22:53:04 -0000      2.83
  @@ -616,19 +616,6 @@
   #define RPMELF_FLAG_SKIPREQUIRES     0x2     /*<! rpmdsELF: skip requires */
   
   /** \ingroup rpmds
  - * Extract dependencies from a symlink.
  - * @param fn         file name
  - * @param flags              1: skip provides 2: skip requires
  - * @param *add               add(arg, ds) saves next provide/require symlink 
dependency.
  - * @param context    add() callback context
  - * @return           0 on success
  - */
  -int rpmdsSymlink(const char * fn, int flags,
  -             int (*add) (void * context, rpmds ds), void * context)
  -     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
  -
  -/** \ingroup rpmds
    * Load /etc/ld.so.cache provides into a dependency set.
    * @todo Add dependency colors, and attach to file.
    * @retval *PRCO     provides/requires/conflicts/obsoletes depedency set(s)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.80 -r1.81 rpmfc.c
  --- rpm/lib/rpmfc.c   10 Apr 2011 05:23:25 -0000      1.80
  +++ rpm/lib/rpmfc.c   10 Apr 2011 22:53:04 -0000      1.81
  @@ -987,6 +987,21 @@
       return rpmdsELF(fn, flags, rpmfcMergePR, fc);
   }
   
  +#if defined(RPM_VENDOR_MANDRIVA)
  +/** \ingroup rpmds
  + * Extract dependencies from a symlink.
  + * XXX Prototype added to keep GCC quite and avoid adding a symbol.
  + * @param fn         file name
  + * @param flags              1: skip provides 2: skip requires
  + * @param *add               add(arg, ds) saves next provide/require symlink 
dependency.
  + * @param context    add() callback context
  + * @return           0 on success
  + */
  +extern int rpmdsSymlink(const char * fn, int flags,
  +             int (*add) (void * context, rpmds ds), void * context)
  +     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  +     /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
  +
   static int rpmfcSYMLINK(rpmfc fc)
        /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
        /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/
  @@ -1001,6 +1016,7 @@
   
       return rpmdsSymlink(fn, flags, rpmfcMergePR, fc);
   }
  +#endif       /* RPM_VENDOR_MANDRIVA */
   
   typedef struct rpmfcApplyTbl_s {
       int (*func) (rpmfc fc);
  @@ -1015,7 +1031,9 @@
   static struct rpmfcApplyTbl_s rpmfcApplyTable[] = {
       { rpmfcELF,              RPMFC_ELF },
       { rpmfcSCRIPT,   
(RPMFC_SCRIPT|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP|RPMFC_MONO)
 },
  +#if defined(RPM_VENDOR_MANDRIVA)
       { rpmfcSYMLINK,  RPMFC_SYMLINK },
  +#endif
       { NULL, 0 }
   };
   /*@=nullassign@*/
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to