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 08:57:34 Branch: rpm-5_3 Handle: 2011041006573400 Modified files: (Branch: rpm-5_3) rpm/lib rpmds.c Log: filter out some redundant devel(...) dependencies Summary: Revision Changes Path 2.167.2.10 +23 -10 rpm/lib/rpmds.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/lib/rpmds.c ============================================================================ $ cvs diff -u -r2.167.2.9 -r2.167.2.10 rpmds.c --- rpm/lib/rpmds.c 10 Apr 2011 06:06:17 -0000 2.167.2.9 +++ rpm/lib/rpmds.c 10 Apr 2011 06:57:34 -0000 2.167.2.10 @@ -2905,21 +2905,19 @@ if (!devel && s[strlen(s)-1] != ')') (void) stpcpy( stpcpy(tmp, s), "()(64bit)"); else { - char *suffix; tmp = stpcpy(tmp, s); - if (devel && (suffix = strstr(t, ".so"))) - tmp = suffix; + if (devel) + tmp = strstr(t, ".so"); tmp = stpcpy(tmp, "(64bit)"); } }else #endif tmp = stpcpy(tmp, s); if (devel) { - char *suffix; - tmp = stpcpy(tmp, s); - if (devel && (suffix = strstr(t, ".so"))) + char *suffix = strstr(t, ".so"); + if (suffix) tmp = suffix; - (void) stpcpy(tmp, ")"); + tmp = stpcpy(tmp, ")"); } return t; @@ -3283,8 +3281,16 @@ int skipR = (flags & RPMELF_FLAG_SKIPREQUIRES); int lnklen; char path[MAXPATHLEN]; + /* + * We filter out these as they come with glibc, making dependencies on + * them rather redundant. + */ + const char *filterRequires[] = {"ld-linux", "ld64-linux" "libBrokenLocale.so", + "libanl.so", "libc.so", "libcidn.so", "libcrypt.so", "libdl.so", "libm.so", + "libnsl.so", "libnss_compat.so", "libnss_dns.so", "libnss_files.so", + "libnss_hesiod.so", "libnss_nis.so", "libnss_nisplus.so", "libpthread.so", + "libresolv.so", "librt.so", "libutil.so", "libthread_db.so"}; ARGV_t deps = NULL; - size_t nb = strlen(fn); /* Filename must end with ".so" to be devel(...) dependency. */ s = rindex(fn, '.'); @@ -3358,7 +3364,13 @@ s = elf_strptr(elf, shdr->sh_link, dyn->d_un.d_val); assert(s != NULL); buf[0] = '\0'; - argvAdd(&deps, s); + + for (i = 0; i < (int)(sizeof(filterRequires)/sizeof(filterRequires[0])); i++) + if (!strncmp(s, filterRequires[i], strlen(filterRequires[i]))) + break; + + if (sizeof(filterRequires)/sizeof(filterRequires[0]) == i) + argvAdd(&deps, s); /*@switchbreak@*/ break; case DT_SONAME: gotSONAME = 1; @@ -3366,6 +3378,7 @@ assert(s != NULL); /* Add next provide dependency. */ buf[0] = '\0'; + if (!skipP) { ds = rpmdsSingle(RPMTAG_PROVIDENAME, sonameDep(buf, s, isElf64, 1), @@ -3384,7 +3397,7 @@ /*@=uniondef @*/ exit: - if (gotSONAME) + if (gotSONAME && !skipR) for (i = 0, cnt = argvCount(deps); i < cnt; i++) { ds = rpmdsSingle(RPMTAG_REQUIRENAME, sonameDep(buf, deps[i], isElf64, 1), @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org