On Apr 10, 2011, at 10:30 AM, Hatle, Mark wrote: > See below inline >
Yep: MHO is "Ick." I will rearrange this code soonestly under #ifdef RPM_VENDOR_MANDRIVA until Per Oyvind gets with the "vendor-neutral" program @rpm5.org. 73 de Jeff > > > On Apr 9, 2011, at 11:57 PM, "Per Øyvind Karlsen" <pkarl...@rpm5.org> wrote: > >> 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:24 >> Branch: rpm-5_4 Handle: 2011041006572300 >> >> Modified files: (Branch: rpm-5_4) >> rpm/lib rpmds.c >> >> Log: >> filter out some redundant devel(...) dependencies >> >> Summary: >> Revision Changes Path >> 2.170.2.7 +23 -10 rpm/lib/rpmds.c >> ____________________________________________________________________________ >> >> patch -p0 <<'@@ .' >> Index: rpm/lib/rpmds.c >> ============================================================================ >> $ cvs diff -u -r2.170.2.6 -r2.170.2.7 rpmds.c >> --- rpm/lib/rpmds.c 10 Apr 2011 06:05:58 -0000 2.170.2.6 >> +++ rpm/lib/rpmds.c 10 Apr 2011 06:57:23 -0000 2.170.2.7 >> @@ -2904,21 +2904,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; >> @@ -3282,8 +3280,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); >> > > Filtering out the items below on embedded systems can break things (if I'm > understanding the code right)... In many embedded systems we use eglibc > which is configurable, we also some times break up the libc package into many > small sub packages so that we can only bring in the libraries that are > actually being used. > > This type of filtering should be done in a distribution specific way, or at a > minimum contain a way to disable it. > >> /* Filename must end with ".so" to be devel(...) dependency. */ >> s = rindex(fn, '.'); >> @@ -3357,7 +3363,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; >> @@ -3365,6 +3377,7 @@ >> assert(s != NULL); >> /* Add next provide dependency. */ >> buf[0] = '\0'; >> + >> if (!skipP) { >> ds = rpmdsSingle(RPMTAG_PROVIDENAME, >> sonameDep(buf, s, isElf64, 1), >> @@ -3383,7 +3396,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______________________________________________________________________ > RPM Package Manager http://rpm5.org > Developer Communication List rpm-devel@rpm5.org >
smime.p7s
Description: S/MIME cryptographic signature