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