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:57:28 Branch: rpm-5_3 Handle: 2011041022572601 Modified files: (Branch: rpm-5_3) 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.3296.2.208+1 -0 rpm/CHANGES 1.76.2.3 +0 -1 rpm/lib/librpm.vers 2.167.2.11 +69 -30 rpm/lib/rpmds.c 2.81.2.2 +0 -13 rpm/lib/rpmds.h 1.73.2.6 +18 -0 rpm/lib/rpmfc.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3296.2.207 -r1.3296.2.208 CHANGES --- rpm/CHANGES 10 Apr 2011 13:54:20 -0000 1.3296.2.207 +++ rpm/CHANGES 10 Apr 2011 22:57:26 -0000 1.3296.2.208 @@ -1,4 +1,5 @@ 5.3.10 -> 5.3.11 + - 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.76.2.2 -r1.76.2.3 librpm.vers --- rpm/lib/librpm.vers 10 Apr 2011 05:25:06 -0000 1.76.2.2 +++ rpm/lib/librpm.vers 10 Apr 2011 22:57:27 -0000 1.76.2.3 @@ -125,7 +125,6 @@ rpmdsSetRefs; rpmdsSetResult; rpmdsSingle; - rpmdsSymlink; rpmdsSysinfo; rpmdsTagN; rpmdsThis; @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmds.c ============================================================================ $ cvs diff -u -r2.167.2.10 -r2.167.2.11 rpmds.c --- rpm/lib/rpmds.c 10 Apr 2011 06:57:34 -0000 2.167.2.10 +++ rpm/lib/rpmds.c 10 Apr 2011 22:57:27 -0000 2.167.2.11 @@ -2891,35 +2891,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 @@ -3091,7 +3075,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); @@ -3144,7 +3128,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); @@ -3186,7 +3170,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); @@ -3201,7 +3185,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); @@ -3237,7 +3221,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; @@ -3256,6 +3240,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) { @@ -3381,7 +3419,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); @@ -3400,7 +3438,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); @@ -3416,6 +3454,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.81.2.1 -r2.81.2.2 rpmds.h --- rpm/lib/rpmds.h 10 Apr 2011 05:25:06 -0000 2.81.2.1 +++ rpm/lib/rpmds.h 10 Apr 2011 22:57:27 -0000 2.81.2.2 @@ -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.73.2.5 -r1.73.2.6 rpmfc.c --- rpm/lib/rpmfc.c 10 Apr 2011 05:25:06 -0000 1.73.2.5 +++ rpm/lib/rpmfc.c 10 Apr 2011 22:57:27 -0000 1.73.2.6 @@ -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