X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=rpm-pld-autodep.patch;h=14d2f41b0bcb31438b3a8ece66242f335c66d87d;hp=30b2c9b77c94f4a6878f6b8959186234db5367bf;hb=ec981489a40c2d52307031add06983fdbad9f312;hpb=777cf177c10a9d9f673467893f360c7307e1a21c diff --git a/rpm-pld-autodep.patch b/rpm-pld-autodep.patch index 30b2c9b..14d2f41 100644 --- a/rpm-pld-autodep.patch +++ b/rpm-pld-autodep.patch @@ -1,23 +1,33 @@ ---- rpm-4.3/build/rpmfc.c.orig Wed May 19 11:30:29 2004 -+++ rpm-4.3/build/rpmfc.c Wed May 19 17:03:01 2004 -@@ -1,6 +1,7 @@ - #include "system.h" +diff -ur rpm.org/configure.ac rpm/configure.ac +--- rpm.org/configure.ac 2007-10-02 14:48:58.200734000 +0200 ++++ rpm/configure.ac 2007-10-02 14:49:18.697896240 +0200 +@@ -979,6 +979,14 @@ - #include /* getOutputFrom() */ -+#include + AC_MSG_HEADER([INSTALLATION PARAMETERS]) - #include - #include -@@ -9,6 +10,8 @@ ++dnl enable generating autorequires containing packages names ++dnl ++AC_ARG_ENABLE([adding-packages-names-in-autogenerated-dependancies], ++ [ --enable-adding-packages-names-in-autogenerated-dependancies Add packages names for autogenerated dependancies to requires], ++ AC_MSG_RESULT([Using packages names in autogerated requires is enabled]) ++ AC_DEFINE_UNQUOTED([AUTODEP_PKGNAMES], [1], ["Generating autorequires containing packages names."])) ++dnl ++ + dnl # figure out what root's primary group is + AC_MSG_CHECKING([root's primary group]) + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +--- rpm.org/lib/rpmfc.c 2007-10-02 14:48:58.244068000 +0200 ++++ rpm/lib/rpmfc.c 2007-10-02 14:52:24.222380740 +0200 +@@ -17,6 +17,8 @@ #define _RPMDS_INTERNAL #include #include +#include +#include - #if HAVE_GELF_H - #include -@@ -301,14 +304,83 @@ + #include "debug.h" + +@@ -311,14 +313,83 @@ return buf; }; @@ -47,7 +57,7 @@ + r=regcomp(&compiled[j],patterns[i],REG_NOSUB); + if (r==0) j++; + else { -+ rpmMessage(RPMMESS_NORMAL, ++ rpmlog(RPMLOG_NOTICE, + _("Compilation of regular expresion '%s'" + " (expanded from '%s') failed. Skipping it.\n"), + patterns[i],str); @@ -67,10 +77,10 @@ +{ + int j; + for(j = 0; j < count; j++) { -+ rpmMessage(RPMMESS_DEBUG, ++ rpmlog(RPMLOG_DEBUG, + _("Checking %c: '%s' against _noauto expr. #%i\n"), deptype, str, j); + if (!regexec(®exps[j], str, 0, NULL, 0)) { -+ rpmMessage(RPMMESS_NORMAL, ++ rpmlog(RPMLOG_NOTICE, + _("Skipping %c: '%s' as it matches _noauto expr. #%i\n"), deptype, str, j); + return 1; + } @@ -102,7 +112,7 @@ /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/ { -@@ -394,6 +466,8 @@ +@@ -404,6 +475,8 @@ } /*@=branchstate@*/ @@ -111,238 +121,125 @@ /* Add tracking dependency for versioned Provides: */ if (!fc->tracked && deptype == 'P' && *EVR != '\0') { -@@ -637,9 +711,16 @@ - /** - * Extract script dependencies. - * @param fc file classifier -+ * @param findprov 1 to enable provides -+ * @param findreq 1 to enable requires -+ * @param noautoprov _noautoprov regexps -+ * @param noautoprov_c # of _noautoprov regexps -+ * @param noautoreq _noautoreq regexps -+ * @param noautoreq_c # of _noautoreq regexps - * @return 0 on success - */ --static int rpmfcSCRIPT(rpmfc fc) -+static int rpmfcSCRIPT(rpmfc fc, int findprov, int findreq, -+ regex_t *noautoprov, int noautoprov_c, regex_t *noautoreq, int noautoreq_c) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/ - { -@@ -691,7 +772,7 @@ +@@ -718,7 +791,7 @@ *se = '\0'; se++; - if (is_executable) { -+ if (is_executable && findreq && !rpmfcMatchRegexps(noautoreq, noautoreq_c, s, 'R')) { ++ if (is_executable && fc->findreq && !rpmfcMatchRegexps(fc->noautoreq, fc->noautoreq_c, s, 'R')) { /* Add to package requires. */ ds = rpmdsSingle(RPMTAG_REQUIRENAME, s, "", RPMSENSE_FIND_REQUIRES); xx = rpmdsMerge(&fc->requires, ds); -@@ -718,21 +799,22 @@ - (void) fclose(fp); +@@ -747,49 +820,61 @@ if (fc->fcolor->vals[fc->ix] & RPMFC_PERL) { -- if (fc->fcolor->vals[fc->ix] & RPMFC_MODULE) -- xx = rpmfcHelper(fc, 'P', "perl"); -- if (is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE)) -- xx = rpmfcHelper(fc, 'R', "perl"); -+ if (findprov && fc->fcolor->vals[fc->ix] & RPMFC_MODULE) -+ xx = rpmfcHelper(fc, 'P', "perl", noautoprov, noautoprov_c); -+ if (findreq && (is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE))) -+ xx = rpmfcHelper(fc, 'R', "perl", noautoreq, noautoreq_c); - } + if (strncmp(fn, "/usr/share/doc/", sizeof("/usr/share/doc/")-1)) { +- if (fc->fcolor->vals[fc->ix] & RPMFC_MODULE) +- xx = rpmfcHelper(fc, 'P', "perl"); +- if (is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE)) +- xx = rpmfcHelper(fc, 'R', "perl"); ++ if (fc->findprov && fc->fcolor->vals[fc->ix] & RPMFC_MODULE) ++ xx = rpmfcHelper(fc, 'P', "perl", fc->noautoprov, fc->noautoprov_c); ++ if (fc->findreq && is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE)) ++ xx = rpmfcHelper(fc, 'R', "perl", fc->noautoreq, fc->noautoreq_c); + } + } else if (fc->fcolor->vals[fc->ix] & RPMFC_PYTHON) { - xx = rpmfcHelper(fc, 'P', "python"); --#ifdef NOTYET -- if (is_executable) --#endif ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "python", fc->noautoprov, fc->noautoprov_c); + #ifdef NOTYET + if (is_executable) + #endif - xx = rpmfcHelper(fc, 'R', "python"); -+ if (findprov) -+ xx = rpmfcHelper(fc, 'P', "python", noautoprov, noautoprov_c); -+ if (findreq && is_executable) -+ xx = rpmfcHelper(fc, 'R', "python", noautoreq, noautoreq_c); - } - if (fc->fcolor->vals[fc->ix] & RPMFC_PHP) { -- xx = rpmfcHelper(fc, 'P', "php"); -- xx = rpmfcHelper(fc, 'R', "php"); -+ if (findprov) -+ xx = rpmfcHelper(fc, 'P', "php", noautoprov, noautoprov_c); -+ if (findreq) -+ xx = rpmfcHelper(fc, 'R', "php", noautoreq, noautoreq_c); - } - - return 0; -@@ -739,9 +823,16 @@ - /** - * Extract Elf dependencies. - * @param fc file classifier -+ * @param findprov 1 to enable provides -+ * @param findreq 1 to enable requires -+ * @param noautoprov _noautoprov regexps -+ * @param noautoprov_c # of _noautoprov regexps -+ * @param noautoreq _noautoreq regexps -+ * @param noautoreq_c # of _noautoreq regexps - * @return 0 on success - */ --static int rpmfcELF(rpmfc fc) -+static int rpmfcELF(rpmfc fc, int findprov, int findreq, -+ regex_t *noautoprov, int noautoprov_c, regex_t *noautoreq, int noautoreq_c) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/ - { -@@ -844,26 +935,31 @@ - && !(filter_GLIBC_PRIVATE != 0 - && !strcmp(s, "GLIBC_PRIVATE"))) - { -+ int doauto; -+ - buf[0] = '\0'; - t = buf; - t = stpcpy( stpcpy( stpcpy( stpcpy(t, soname), "("), s), ")"); - -+ doauto = findprov && !rpmfcMatchRegexps(noautoprov, noautoprov_c, buf, 'P'); - #if !defined(__alpha__) - if (isElf64) - t = stpcpy(t, "(64bit)"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "python", fc->noautoreq, fc->noautoreq_c); + } else + if (fc->fcolor->vals[fc->ix] & RPMFC_LIBTOOL) { +- xx = rpmfcHelper(fc, 'P', "libtool"); ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "libtool", fc->noautoprov, fc->noautoprov_c); + #ifdef NOTYET + if (is_executable) #endif - t++; -+ -+ if (doauto) { -+ /* Add to package provides. */ -+ ds = rpmdsSingle(RPMTAG_PROVIDES, -+ buf, "", RPMSENSE_FIND_PROVIDES); -+ xx = rpmdsMerge(&fc->provides, ds); -+ -+ /* Add to file dependencies. */ -+ xx = rpmfcSaveArg(&fc->ddict, -+ rpmfcFileDep(t, fc->ix, ds)); - -- /* Add to package provides. */ -- ds = rpmdsSingle(RPMTAG_PROVIDES, -- buf, "", RPMSENSE_FIND_PROVIDES); -- xx = rpmdsMerge(&fc->provides, ds); -- -- /* Add to file dependencies. */ -- xx = rpmfcSaveArg(&fc->ddict, -- rpmfcFileDep(t, fc->ix, ds)); -- -- ds = rpmdsFree(ds); -+ ds = rpmdsFree(ds); -+ } - } - auxoffset += aux->vda_next; - } -@@ -904,25 +1000,30 @@ - && !(filter_GLIBC_PRIVATE != 0 - && !strcmp(s, "GLIBC_PRIVATE"))) - { -+ int doauto; -+ - buf[0] = '\0'; - t = buf; - t = stpcpy( stpcpy( stpcpy( stpcpy(t, soname), "("), s), ")"); - -+ doauto = findreq && !rpmfcMatchRegexps(noautoreq, noautoreq_c, buf, 'R'); - #if !defined(__alpha__) - if (isElf64) - t = stpcpy(t, "(64bit)"); +- xx = rpmfcHelper(fc, 'R', "libtool"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "libtool", fc->noautoreq, fc->noautoreq_c); + } else + if (fc->fcolor->vals[fc->ix] & RPMFC_PKGCONFIG) { +- xx = rpmfcHelper(fc, 'P', "pkgconfig"); ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "pkgconfig", fc->noautoprov, fc->noautoprov_c); + #ifdef NOTYET + if (is_executable) #endif - t++; - -- /* Add to package dependencies. */ -- ds = rpmdsSingle(RPMTAG_REQUIRENAME, -- buf, "", RPMSENSE_FIND_REQUIRES); -- xx = rpmdsMerge(&fc->requires, ds); -- -- /* Add to file dependencies. */ -- xx = rpmfcSaveArg(&fc->ddict, -- rpmfcFileDep(t, fc->ix, ds)); -- ds = rpmdsFree(ds); -+ if (doauto) { -+ /* Add to package dependencies. */ -+ ds = rpmdsSingle(RPMTAG_REQUIRENAME, -+ buf, "", RPMSENSE_FIND_REQUIRES); -+ xx = rpmdsMerge(&fc->requires, ds); -+ -+ /* Add to file dependencies. */ -+ xx = rpmfcSaveArg(&fc->ddict, -+ rpmfcFileDep(t, fc->ix, ds)); -+ ds = rpmdsFree(ds); -+ } - } - auxoffset += aux->vna_next; - } -@@ -947,23 +1048,30 @@ - /* Files with executable bit set only. */ - if (fc->skipReq || !(st->st_mode & (S_IXUSR|S_IXGRP|S_IXOTH))) - /*@innercontinue@*/ continue; -+ if (!findreq) -+ continue; - /* Add to package requires. */ - depsp = &fc->requires; - tagN = RPMTAG_REQUIRENAME; - dsContext = RPMSENSE_FIND_REQUIRES; - s = elf_strptr(elf, shdr->sh_link, dyn->d_un.d_val); - assert(s != NULL); -+ if(rpmfcMatchRegexps(noautoreq, noautoreq_c, s, 'R')) -+ continue; - /*@switchbreak@*/ break; - case DT_SONAME: - gotSONAME = 1; - /* Add to package provides. */ - if (fc->skipProv) - /*@innercontinue@*/ continue; -+ if (!findprov) continue; - depsp = &fc->provides; - tagN = RPMTAG_PROVIDENAME; - dsContext = RPMSENSE_FIND_PROVIDES; - s = elf_strptr(elf, shdr->sh_link, dyn->d_un.d_val); - assert(s != NULL); -+ if(rpmfcMatchRegexps(noautoprov, noautoprov_c, s, 'P')) -+ continue; - /*@switchbreak@*/ break; - } - if (s == NULL) -@@ -997,7 +1105,7 @@ - /*@=branchstate =uniondef @*/ - - /* For DSO's, provide the basename of the file if DT_SONAME not found. */ -- if (!fc->skipProv && isDSO && !gotDEBUG && !gotSONAME) { -+ if (findprov && !fc->skipProv && isDSO && !gotDEBUG && !gotSONAME) { - depsp = &fc->provides; - tagN = RPMTAG_PROVIDENAME; - dsContext = RPMSENSE_FIND_PROVIDES; -@@ -1015,6 +1123,8 @@ - t = stpcpy(t, s); - /*@=nullpass@*/ - -+ if(!rpmfcMatchRegexps(noautoprov, noautoprov_c, buf, 'P')) { -+ - #if !defined(__alpha__) - if (isElf64) - t = stpcpy(t, "()(64bit)"); -@@ -1032,6 +1142,7 @@ - /*@=boundswrite@*/ - - ds = rpmdsFree(ds); -+ } +- xx = rpmfcHelper(fc, 'R', "pkgconfig"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "pkgconfig", fc->noautoreq, fc->noautoreq_c); + } else + if (fc->fcolor->vals[fc->ix] & RPMFC_BOURNE) { + #ifdef NOTYET +- xx = rpmfcHelper(fc, 'P', "executable"); ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "executable", fc->noautoprov, fc->noautoprov_c); + #endif + if (is_executable) +- xx = rpmfcHelper(fc, 'R', "executable"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "executable", fc->noautoreq, fc->noautoreq_c); + } else + if (fc->fcolor->vals[fc->ix] & RPMFC_PHP) { +- xx = rpmfcHelper(fc, 'P', "php"); ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "php", fc->noautoprov, fc->noautoprov_c); + /* not only executable, files run by httpd usually are not */ +- xx = rpmfcHelper(fc, 'R', "php"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "php", fc->noautoreq, fc->noautoreq_c); + } else + if (fc->fcolor->vals[fc->ix] & RPMFC_MONO) { +- xx = rpmfcHelper(fc, 'P', "mono"); ++ if (fc->findprov) ++ xx = rpmfcHelper(fc, 'P', "mono", fc->noautoprov, fc->noautoprov_c); + if (is_executable) +- xx = rpmfcHelper(fc, 'R', "mono"); ++ if (fc->findreq) ++ xx = rpmfcHelper(fc, 'R', "mono", fc->noautoreq, fc->noautoreq_c); } - - exit: -@@ -1045,7 +1156,8 @@ + return 0; } +@@ -816,20 +901,26 @@ + default: + break; + case RPMTAG_PROVIDENAME: ++ if (fc->findprov && !rpmfcMatchRegexps(fc->noautoprov, fc->noautoprov_c, ds->N[0], 'P')) { + /* Add to package provides. */ + rc = rpmdsMerge(&fc->provides, ds); - typedef struct rpmfcApplyTbl_s { -- int (*func) (rpmfc fc); -+ int (*func) (rpmfc fc, int findprov, int findreq, -+ regex_t *noautoprov, int noautoprov_c, regex_t *noautoreq, int noautoreq_c); - int colormask; - } * rpmfcApplyTbl; + /* Add to file dependencies. */ + buf[0] = '\0'; + rc = rpmfcSaveArg(&fc->ddict, rpmfcFileDep(buf, fc->ix, ds)); ++ } else ++ rc = 0; + break; + case RPMTAG_REQUIRENAME: ++ if (fc->findreq && !rpmfcMatchRegexps(fc->noautoreq, fc->noautoreq_c, ds->N[0], 'R')) { + /* Add to package requires. */ + rc = rpmdsMerge(&fc->requires, ds); -@@ -1058,6 +1170,109 @@ + /* Add to file dependencies. */ + buf[0] = '\0'; + rc = rpmfcSaveArg(&fc->ddict, rpmfcFileDep(buf, fc->ix, ds)); ++ } else ++ rc = 0; + break; + } + return rc; +@@ -870,6 +961,111 @@ { NULL, 0 } }; ++#ifdef AUTODEP_PKGNAMES /* define to use package names in R */ +static int rpmfcFindRequiredPackages(rpmfc fc) +{ + rpmts ts=NULL; @@ -351,7 +248,7 @@ + rpmds ds; + const char * N; + const char * EVR; -+ int_32 Flags; ++ int32_t Flags; + unsigned char deptype; + int nddict; + int previx; @@ -370,7 +267,7 @@ + + ts = rpmtsCreate(); /* XXX ts created in main() should be used */ + -+ rpmMessage(RPMMESS_NORMAL, _("Searching for required packages....\n")); ++ rpmlog(RPMLOG_NOTICE, _("Searching for required packages....\n")); + + nddict = argvCount(fc->ddict); + previx = -1; @@ -394,45 +291,45 @@ + + if (deptype!='R') continue; + -+ rpmMessage(RPMMESS_DEBUG, _("#%i requires: %s,%s,%i\n"),ix,N,EVR,Flags); ++ rpmlog(RPMLOG_DEBUG, _("#%i requires: %s,%s,%i\n"),ix,N,EVR,Flags); + if (EVR && EVR[0]) { -+ rpmMessage(RPMMESS_DEBUG, _("skipping #%i require\n")); ++ rpmlog(RPMLOG_DEBUG, _("skipping #%i require\n")); + continue; + } + for(j=0;j not found\n"),N); ++ rpmlog(RPMLOG_DEBUG, _("%s -> not found\n"),N); + continue; + } -+ rpmMessage(RPMMESS_DEBUG, _("Iterator: %p\n"),it); ++ rpmlog(RPMLOG_DEBUG, _("Iterator: %p\n"),it); + if (rpmdbGetIteratorCount(it)>1) { -+ rpmMessage(RPMMESS_DEBUG, _("%s -> multiple (skipping)\n"),N); ++ rpmlog(RPMLOG_DEBUG, _("%s -> multiple (skipping)\n"),N); + rpmdbFreeIterator(it); + continue; + } + hdr=rpmdbNextIterator(it); + assert(hdr!=NULL); -+ r=rpmHeaderGetEntry(hdr,RPMTAG_NAME,NULL,(void **)&hname, NULL); ++ r=headerGetEntry(hdr,RPMTAG_NAME,NULL,(void **)&hname, NULL); + assert(r<2); + if (!strcmp(hname,N)) { -+ rpmMessage(RPMMESS_DEBUG, _("%s -> %s (skipping)\n"),N,hname); ++ rpmlog(RPMLOG_DEBUG, _("%s -> %s (skipping)\n"),N,hname); + rpmdbFreeIterator(it); + continue; + } + -+ rpmMessage(RPMMESS_DEBUG, "%s -> %s\n",N,hname); ++ rpmlog(RPMLOG_DEBUG, "%s -> %s\n",N,hname); + + ds = rpmdsSingle(RPMTAG_REQUIRENAME, hname, "", RPMSENSE_FIND_REQUIRES); + xx = rpmdsMerge(&fc->requires, ds); @@ -441,248 +338,113 @@ + rpmdbFreeIterator(it); + } + -+ noautoreqdep=rpmfcFreeRegexps(noautoreqdep,noautoreqdep_c); ++ noautoreqdep = rpmfcFreeRegexps(noautoreqdep, noautoreqdep_c); + ts = rpmtsFree(ts); + return 0; +} ++#endif + - int rpmfcApply(rpmfc fc) + rpmRC rpmfcApply(rpmfc fc) { rpmfcApplyTbl fcat; -@@ -1075,6 +1290,29 @@ - int ix; +@@ -888,6 +1084,26 @@ int i; int xx; + int skipping; + int j; -+ int findprov; -+ int findreq; + regex_t *noautoprovfiles = NULL; + int noautoprovfiles_c; + regex_t *noautoreqfiles = NULL; + int noautoreqfiles_c; -+ regex_t *noautoprov = NULL; -+ int noautoprov_c; -+ regex_t *noautoreq = NULL; -+ int noautoreq_c; + const char *buildroot; + int buildroot_l; + ++ fc->noautoprov = NULL; ++ fc->noautoreq = NULL; ++ + buildroot = rpmExpand("%{buildroot}",NULL); + buildroot_l = strlen(buildroot); + + noautoprovfiles = rpmfcExpandRegexps("%{__noautoprovfiles}", &noautoprovfiles_c); + noautoreqfiles = rpmfcExpandRegexps("%{__noautoreqfiles}", &noautoreqfiles_c); -+ noautoprov = rpmfcExpandRegexps("%{__noautoprov}", &noautoprov_c); -+ noautoreq = rpmfcExpandRegexps("%{__noautoreq}", &noautoreq_c); -+ rpmMessage(RPMMESS_DEBUG, _("%i _noautoprov patterns.\n"), noautoprov_c); -+ rpmMessage(RPMMESS_DEBUG, _("%i _noautoreq patterns.\n"), noautoreq_c); ++ fc->noautoprov = rpmfcExpandRegexps("%{__noautoprov}", &fc->noautoprov_c); ++ fc->noautoreq = rpmfcExpandRegexps("%{__noautoreq}", &fc->noautoreq_c); ++ rpmlog(RPMLOG_DEBUG, _("%i _noautoprov patterns.\n"), fc->noautoprov_c); ++ rpmlog(RPMLOG_DEBUG, _("%i _noautoreq patterns.\n"), fc->noautoreq_c); - /* Generate package and per-file dependencies. */ - for (fc->ix = 0; fc->fn[fc->ix] != NULL; fc->ix++) { -@@ -1082,10 +1320,44 @@ + /* Make sure something didn't go wrong previously! */ + assert(fc->fn != NULL); +@@ -911,9 +1127,43 @@ for (fcat = rpmfcApplyTable; fcat->func != NULL; fcat++) { if (!(fc->fcolor->vals[fc->ix] & fcat->colormask)) /*@innercontinue@*/ continue; -- xx = (*fcat->func) (fc); -+ findprov = 1; -+ findreq = 1; ++ fc->findprov = 1; ++ fc->findreq = 1; + if (strncmp(fc->fn[fc->ix],buildroot,buildroot_l)==0) {/* sanity check */ -+ for(j = 0; j < noautoprovfiles_c; j++) { -+ if (!regexec(&noautoprovfiles[j], -+ fc->fn[fc->ix] + buildroot_l, 0, NULL, 0)) { -+ rpmMessage(RPMMESS_NORMAL, -+ _("skipping %s provides detection" -+ " (matches noautoprovfiles pattern #%i)\n"), -+ fc->fn[fc->ix], j); -+ findprov = 0; -+ break; ++ for(j = 0; j < noautoprovfiles_c; j++) { ++ if (!regexec(&noautoprovfiles[j], ++ fc->fn[fc->ix] + buildroot_l, 0, NULL, 0)) { ++ rpmlog(RPMLOG_NOTICE, ++ _("skipping %s provides detection" ++ " (matches noautoprovfiles pattern #%i)\n"), ++ fc->fn[fc->ix], j); ++ fc->findprov = 0; ++ break; ++ } + } -+ } -+ for(j = 0; j < noautoreqfiles_c; j++) { -+ if (!regexec(&noautoreqfiles[j], -+ fc->fn[fc->ix] + buildroot_l, 0, NULL, 0)) { -+ rpmMessage(RPMMESS_NORMAL, -+ _("skipping %s requires detection" -+ " (matches noautoreqfiles pattern #%i)\n"), -+ fc->fn[fc->ix], j); -+ findreq = 0; -+ break; ++ for(j = 0; j < noautoreqfiles_c; j++) { ++ if (!regexec(&noautoreqfiles[j], ++ fc->fn[fc->ix] + buildroot_l, 0, NULL, 0)) { ++ rpmlog(RPMLOG_NOTICE, ++ _("skipping %s requires detection" ++ " (matches noautoreqfiles pattern #%i)\n"), ++ fc->fn[fc->ix], j); ++ fc->findreq = 0; ++ break; ++ } + } -+ } + } -+ xx = (*fcat->func) (fc, findprov, findreq, -+ noautoprov, noautoprov_c, noautoreq, noautoreq_c); ++ + xx = (*fcat->func) (fc); } } - + noautoprovfiles = rpmfcFreeRegexps(noautoprovfiles, noautoprovfiles_c); + noautoreqfiles = rpmfcFreeRegexps(noautoreqfiles, noautoreqfiles_c); -+ noautoprov = rpmfcFreeRegexps(noautoprov, noautoprov_c); -+ noautoreq = rpmfcFreeRegexps(noautoreq, noautoreq_c); ++ fc->noautoprov = rpmfcFreeRegexps(fc->noautoprov, fc->noautoprov_c); ++ fc->noautoreq = rpmfcFreeRegexps(fc->noautoreq, fc->noautoreq_c); +#ifdef AUTODEP_PKGNAMES /* define to use package names in R */ + rpmfcFindRequiredPackages(fc); +#endif + /*@-boundswrite@*/ /* Generate per-file indices into package dependencies. */ - nddict = argvCount(fc->ddict); ---- rpm-4.3/po/POTFILES.in.orig 2004-01-04 03:13:02.000000000 +0100 -+++ rpm-4.3/po/POTFILES.in 2004-02-01 21:05:50.567248776 +0100 -@@ -22,6 +22,7 @@ - build/parseSpec.c - build/poptBT.c - build/reqprov.c -+build/rpmfc.c - build/spec.c - lib/cpio.c - lib/depends.c ---- rpm-4.3/po/pl.po.orig 2004-02-01 20:53:10.000000000 +0100 -+++ rpm-4.3/po/pl.po 2004-02-01 21:20:36.532561576 +0100 -@@ -1295,6 +1295,127 @@ - msgid "lookup i18N strings in specfile catalog" - msgstr "wyszukaj wpisy I18N w katalogu pliku spec" +--- rpm.org/lib/rpmfc.h 2007-07-14 05:22:44.000000000 +0200 ++++ rpm/lib/rpmfc.h 2007-10-02 14:49:18.731230377 +0200 +@@ -98,6 +98,11 @@ + StringBuf sb_python;/*!< concatenated list of python colored files. */ + StringBuf sb_php; /*!< concatenated list of php colored files. */ -+#: build/rpmfc.c:94 -+#, c-format -+msgid "\texecv(%s) pid %d\n" -+msgstr "\texecv(%s) pid %d\n" -+ -+#. XXX this error message is probably not seen. -+#: build/rpmfc.c:100 -+#, c-format -+msgid "Couldn't exec %s: %s\n" -+msgstr "Nie mo¿na uruchomiæ %s: %s\n" -+ -+#: build/rpmfc.c:105 -+#, c-format -+msgid "Couldn't fork %s: %s\n" -+msgstr "Nie mo¿na wykonaæ fork %s: %s\n" -+ -+#: build/rpmfc.c:190 -+#, c-format -+msgid "\twaitpid(%d) rc %d status %x\n" -+msgstr "\twaitpid(%d) rc %d status %x\n" -+ -+#: build/rpmfc.c:194 -+#, c-format -+msgid "%s failed\n" -+msgstr "%s nie powiod³o siê\n" -+ -+#: build/rpmfc.c:198 -+#, c-format -+msgid "failed to write all data to %s\n" -+msgstr "Nie uda³o siê zapisaæ wszystkich danych do %s\n" -+ -+#: build/rpmfc.c:334 -+#, c-format -+msgid "Compilation of regular expresion '%s' (expanded from '%s') failed. Skipping it.\n" -+msgstr "Kompilacja wyra¿enia regularnego '%s' (powsta³ego z '%s') nie powiod³a siê; pominiêto.\n" -+ -+#: build/rpmfc.c:395 -+#, c-format -+msgid "%i _noautoprov patterns.\n" -+msgstr "%i wzorców _noautoprov.\n" -+ -+#: build/rpmfc.c:405 -+#, c-format -+msgid "%i _noautoreq patterns.\n" -+msgstr "%i wzorców _noautoreq.\n" -+ -+#: build/rpmfc.c:459 -+#, c-format -+msgid "Checking %c: '%s' against _noauto expr. #%i\n" -+msgstr "Sprawdzanie %c: '%s' z wyra¿eniem _noauto #%i\n" -+ -+#: build/rpmfc.c:462 -+#, c-format -+msgid "Skipping %c: '%s' as it matches _noauto expr. #%i\n" -+msgstr "Pominiêto %c: '%s' pasuj±ce do wyra¿enia _noauto #%i\n" -+ -+#. XXX ts created in main() should be used -+#: build/rpmfc.c:1173 -+msgid "Searching for required packages....\n" -+msgstr "Poszukiwanie wymaganych pakietów...\n" -+ -+#: build/rpmfc.c:1197 -+#, c-format -+msgid "#%i requires: %s,%s,%i\n" -+msgstr "#%i wymaga: %s,%s,%i\n" -+ -+#: build/rpmfc.c:1199 -+#, c-format -+msgid "skipping #%i require\n" -+msgstr "pominiêto zale¿no¶æ #%i\n" -+ -+#: build/rpmfc.c:1205 -+#, c-format -+msgid "skipping %s requirement processing (matches noautoreqdep pattern #%i)\n" -+msgstr "pominiêto przetwarzanie zale¿no¶ci %s (pasuje do wzorca noautoreqdep #%i)\n" -+ -+#: build/rpmfc.c:1211 -+#, c-format -+msgid "skipping #%i require (is file requirement)\n" -+msgstr "pominiêto zale¿no¶æ #%i (zale¿no¶æ od pliku)\n" -+ -+#: build/rpmfc.c:1216 -+#, c-format -+msgid "%s -> not found\n" -+msgstr "%s -> nie znaleziono\n" -+ -+#: build/rpmfc.c:1219 -+#, c-format -+msgid "Iterator: %p\n" -+msgstr "Iterator: %p\n" -+ -+#: build/rpmfc.c:1221 -+#, c-format -+msgid "%s -> multiple (skipping)\n" -+msgstr "%s -> wiele (pominiêto)\n" -+ -+#: build/rpmfc.c:1230 -+#, c-format -+msgid "%s -> %s (skipping)\n" -+msgstr "%s -> %s (pominiêto)\n" -+ -+#: build/rpmfc.c:1295 -+#, c-format -+msgid "skipping %s provides detection (matches noautoprovfiles pattern #%i)\n" -+msgstr "pominiêto wykrywanie w³asno¶ci %s (pasuje do wzorca noautoprovfiles #%i)\n" -+ -+#: build/rpmfc.c:1306 -+#, c-format -+msgid "skipping %s requires detection (matches noautoreqfiles pattern #%i)\n" -+msgstr "pominiêto wykrywanie w³asno¶ci %s (pasuje do wzorca noautoreqfiles #%i)\n" -+ -+#: build/rpmfc.c:1642 -+#, c-format -+msgid "Finding %s: %s\n" -+msgstr "Poszukiwanie %s: %s\n" -+ -+#: build/rpmfc.c:1648 build/rpmfc.c:1657 -+#, c-format -+msgid "Failed to find %s:\n" -+msgstr "Nie uda³o siê odnale¼æ %s:\n" -+ - #: build/spec.c:237 - #, c-format - msgid "line %d: Bad number: %s\n" ---- rpm/configure.ac.orig 2004-08-22 13:02:30.000000000 +0200 -+++ rpm/configure.ac 2004-08-22 13:25:37.000000000 +0200 -@@ -971,6 +971,18 @@ - AC_SUBST(__CHGRP_RHF) ++ int findprov, findreq; ++ regex_t *noautoprov; ++ int noautoprov_c; ++ regex_t *noautoreq; ++ int noautoreq_c; + }; - dnl -+dnl enable generating autorequires containing packages names -+dnl -+AC_ARG_ENABLE([adding-packages-names-in-autogenerated-dependancies], -+ [ --enable-adding-packages-names-in-autogenerated-dependancies Add packages names for autogenerated dependancies to requires], -+ -+ AC_MSG_RESULT([Using packages names in autogerated requires is enabled]) -+ AC_DEFINE(AUTODEP_PKGNAMES, 1, "Generating autorequires containing packages names.") -+ -+ ) + /** +--- rpm/lib/rpmfc.h.org 2007-10-02 15:05:48.028299804 +0200 ++++ rpm/lib/rpmfc.h 2007-10-02 15:06:03.052024633 +0200 +@@ -67,6 +67,13 @@ + }; + + #if defined(_RPMFC_INTERNAL) + ++#if defined(WITH_PCRE) && defined(HAVE_PCREPOSIX_H) ++#include ++#else ++#include ++#endif + -+dnl - dnl figure out what root's primary group is - dnl - AC_MSG_CHECKING(root's primary group) + /** + */ + struct rpmfc_s {