---- rpm-4.4.3/build/rpmfc.h.orig 2005-11-18 23:08:14.231293000 +0100
-+++ rpm-4.4.3/build/rpmfc.h 2005-11-18 23:55:16.694214392 +0100
-@@ -44,6 +44,11 @@
+--- rpm-4.4.8/lib/rpmfc.h.orig 2005-11-18 23:08:14.231293000 +0100
++++ rpm-4.4.8/lib/rpmfc.h 2005-11-18 23:55:16.694214392 +0100
+@@ -1,6 +1,7 @@
+ #ifndef _H_RPMFC_
+ #define _H_RPMFC_
+
++#include <regex.h>
+ #undef FILE_RCSID
+ #include "magic.h"
+
+@@ -44,6 +45,11 @@
StringBuf sb_python;/*!< concatenated list of python colored files. */
StringBuf sb_php; /*!< concatenated list of php colored files. */
};
/**
---- rpm-4.4.3/build/rpmfc.c.orig 2005-11-18 23:08:14.332278624 +0100
-+++ rpm-4.4.3/build/rpmfc.c 2005-11-19 00:15:40.643145872 +0100
-@@ -1,6 +1,7 @@
- #include "system.h"
-
- #include <signal.h> /* getOutputFrom() */
-+#include <regex.h>
-
- #include <rpmbuild.h>
- #include <argv.h>
-@@ -9,6 +10,8 @@
+--- rpm-4.4.9/lib/rpmfc.c.orig 2007-05-22 08:11:41.155736775 +0200
++++ rpm-4.4.9/lib/rpmfc.c 2007-05-22 08:23:39.964699364 +0200
+@@ -15,6 +15,8 @@
#define _RPMDS_INTERNAL
#include <rpmds.h>
#include <rpmfi.h>
#include "debug.h"
-@@ -299,14 +302,83 @@
+@@ -309,14 +311,83 @@
return buf;
};
/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
/*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/
{
-@@ -392,6 +464,8 @@
+@@ -402,6 +473,8 @@
}
/*@=branchstate@*/
/* Add tracking dependency for versioned Provides: */
if (!fc->tracked && deptype == 'P' && *EVR != '\0') {
-@@ -703,7 +777,7 @@
+@@ -714,7 +787,7 @@
*se = '\0';
se++;
/* Add to package requires. */
ds = rpmdsSingle(RPMTAG_REQUIRENAME, s, "", RPMSENSE_FIND_REQUIRES);
xx = rpmdsMerge(&fc->requires, ds);
-@@ -731,42 +805,50 @@
- (void) fclose(fp);
+@@ -743,44 +816,52 @@
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 (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);
+ 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");
- xx = rpmfcHelper(fc, 'R', "executable");
+ if (fc->findreq && is_executable)
+ xx = rpmfcHelper(fc, 'R', "executable", fc->noautoreq, fc->noautoreq_c);
- }
+ } else
if (fc->fcolor->vals[fc->ix] & RPMFC_PHP) {
-- xx = rpmfcHelper(fc, 'P', "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->findprov)
-+ xx = rpmfcHelper(fc, 'P', "php", fc->noautoprov, fc->noautoprov_c);
-+ if (fc->findreq)
++ if (fc->findreq)
+ xx = rpmfcHelper(fc, 'R', "php", fc->noautoreq, fc->noautoreq_c);
- }
+ }
return 0;
-@@ -794,14 +876,18 @@
+@@ -808,20 +889,26 @@
default:
break;
case RPMTAG_PROVIDENAME:
-+ if (fc->findprov && !rpmfcMatchRegexps(fc->noautoprov, fc->noautoprov_c, ds->N[0])) {
++ if (fc->findprov && !rpmfcMatchRegexps(fc->noautoprov, fc->noautoprov_c, ds->N[0], 'P')) {
/* Add to package provides. */
rc = rpmdsMerge(&fc->provides, ds);
+ rc = 0;
break;
case RPMTAG_REQUIRENAME:
-+ if (fc->findreq && !rpmfcMatchRegexps(fc->noautoreq, fc->noautoreq_c, ds->N[0])) {
++ if (fc->findreq && !rpmfcMatchRegexps(fc->noautoreq, fc->noautoreq_c, ds->N[0], 'R')) {
/* Add to package requires. */
rc = rpmdsMerge(&fc->requires, ds);
-@@ -848,6 +934,109 @@
+ /* Add to file dependencies. */
+ buf[0] = '\0';
+ rc = rpmfcSaveArg(&fc->ddict, rpmfcFileDep(buf, fc->ix, ds));
++ } else
++ rc = 0;
+ break;
+ }
+ return rc;
+@@ -862,6 +949,109 @@
{ NULL, 0 }
};
+ }
+ 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);
int rpmfcApply(rpmfc fc)
{
rpmfcApplyTbl fcat;
-@@ -865,6 +1054,26 @@
- int ix;
+@@ -880,6 +1070,26 @@
int i;
int xx;
+ int skipping;
+ int j;
+ regex_t *noautoprovfiles = NULL;
+ int noautoprovfiles_c;
/* Generate package and per-file dependencies. */
for (fc->ix = 0; fc->fn[fc->ix] != NULL; fc->ix++) {
-@@ -885,10 +1094,43 @@
+@@ -900,9 +1110,43 @@
for (fcat = rpmfcApplyTable; fcat->func != NULL; fcat++) {
if (!(fc->fcolor->vals[fc->ix] & fcat->colormask))
/*@innercontinue@*/ continue;
+ 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);
-+ fc->findprov = 0;
-+ break;
++ 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);
++ 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);
-+ fc->findreq = 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);
++ fc->findreq = 0;
++ break;
++ }
+ }
-+ }
+ }
++
xx = (*fcat->func) (fc);
}
}
-
+ noautoprovfiles = rpmfcFreeRegexps(noautoprovfiles, noautoprovfiles_c);
+ noautoreqfiles = rpmfcFreeRegexps(noautoreqfiles, noautoreqfiles_c);
+ fc->noautoprov = rpmfcFreeRegexps(fc->noautoprov, fc->noautoprov_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-4.4.9/po/pl.po.orig 2007-05-22 08:11:40.947724921 +0200
++++ rpm-4.4.9/po/pl.po 2007-05-22 08:24:24.091213990 +0200
+@@ -2937,6 +2937,86 @@
+ msgid "Failed to find %s:\n"
+ msgstr "Nie uda³o siê odnale¼æ %s:\n"
-+#: 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
++#: lib/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
++#: lib/rpmfc.c:395
+#, c-format
+msgid "%i _noautoprov patterns.\n"
+msgstr "%i wzorców _noautoprov.\n"
+
-+#: build/rpmfc.c:405
++#: lib/rpmfc.c:405
+#, c-format
+msgid "%i _noautoreq patterns.\n"
+msgstr "%i wzorców _noautoreq.\n"
+
-+#: build/rpmfc.c:459
++#: lib/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
++#: lib/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
++#: lib/rpmfc.c:1173
+msgid "Searching for required packages....\n"
+msgstr "Poszukiwanie wymaganych pakietów...\n"
+
-+#: build/rpmfc.c:1197
++#: lib/rpmfc.c:1197
+#, c-format
+msgid "#%i requires: %s,%s,%i\n"
+msgstr "#%i wymaga: %s,%s,%i\n"
+
-+#: build/rpmfc.c:1199
++#: lib/rpmfc.c:1199
+#, c-format
+msgid "skipping #%i require\n"
+msgstr "pominiêto zale¿no¶æ #%i\n"
+
-+#: build/rpmfc.c:1205
++#: lib/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
++#: lib/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
++#: lib/rpmfc.c:1216
+#, c-format
+msgid "%s -> not found\n"
+msgstr "%s -> nie znaleziono\n"
+
-+#: build/rpmfc.c:1219
++#: lib/rpmfc.c:1219
+#, c-format
+msgid "Iterator: %p\n"
+msgstr "Iterator: %p\n"
+
-+#: build/rpmfc.c:1221
++#: lib/rpmfc.c:1221
+#, c-format
+msgid "%s -> multiple (skipping)\n"
+msgstr "%s -> wiele (pominiêto)\n"
+
-+#: build/rpmfc.c:1230
++#: lib/rpmfc.c:1230
+#, c-format
+msgid "%s -> %s (skipping)\n"
+msgstr "%s -> %s (pominiêto)\n"
+
-+#: build/rpmfc.c:1295
++#: lib/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
++#: lib/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
+ #: lib/rpmfi.c:622
#, c-format
- msgid "line %d: Bad number: %s\n"
+ msgid "%s skipped due to missingok flag\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 @@