]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm-pld-autodep.patch
- the add %lua_ prefixed /etc/shell edit macros for cleaner specs
[packages/rpm.git] / rpm-pld-autodep.patch
index 7ca03d9a465c94aabc783e592ed21ca1cac5575c..14d2f41b0bcb31438b3a8ece66242f335c66d87d 100644 (file)
@@ -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 <signal.h>   /* getOutputFrom() */
-+#include <regex.h>
+ AC_MSG_HEADER([INSTALLATION PARAMETERS])
  
- #include <rpmbuild.h>
- #include <argv.h>
-@@ -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 <stdio.h>
+--- 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 <rpmds.h>
  #include <rpmfi.h>
 +#include <rpmts.h>
 +#include <rpmdb.h>
  
- #if HAVE_GELF_H
- #include <gelf.h>
-@@ -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);
 +{
 +    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(&regexps[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;
 +      }
        /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
        /*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/
  {
-@@ -394,6 +466,8 @@
+@@ -404,6 +475,8 @@
            }
  /*@=branchstate@*/
  
  
            /* 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,19 +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");
--      if (is_executable)
++      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;
 +    rpmds ds;
 +    const char * N;
 +    const char * EVR;
-+    int_32 Flags;
++    int32_t Flags;
 +    unsigned char deptype;
 +    int nddict;
 +    int previx;
 +    regex_t *noautoreqdep;
 +    int noautoreqdep_c;
 +
-+    noautoreqdep=rpmfcExpandRegexps("%{_noautoreqdep}",&noautoreqdep_c);
++    noautoreqdep=rpmfcExpandRegexps("%{__noautoreqdep}", &noautoreqdep_c);
 +    
 +    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;
 +
 +        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<noautoreqdep_c;j++) 
 +            if (!regexec(&noautoreqdep[j],N,0,NULL,0)) {
-+                rpmMessage(RPMMESS_NORMAL
++                rpmlog(RPMLOG_NOTICE
 +                        _("skipping %s requirement processing"
 +                      " (matches noautoreqdep pattern #%i)\n"),N,j);
 +                break;
 +            }
 +        if (j<noautoreqdep_c) continue;
 +        if (N[0]=='/') {
-+            rpmMessage(RPMMESS_DEBUG, _("skipping #%i require (is file requirement)\n"));
++            rpmlog(RPMLOG_DEBUG, _("skipping #%i require (is file requirement)\n"));
 +            continue;
 +        }
 +        it=rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, N, 0);
 +        if (!it) {
-+            rpmMessage(RPMMESS_DEBUG, _("%s -> 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);
 +        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);
++    noautoprovfiles = rpmfcExpandRegexps("%{__noautoprovfiles}", &noautoprovfiles_c);
++    noautoreqfiles = rpmfcExpandRegexps("%{__noautoreqfiles}", &noautoreqfiles_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);
++    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
  
-+    noautoprovfiles = rpmfcFreeRegexps(noautoprovfiles,noautoprovfiles_c);
-+    noautoreqfiles = rpmfcFreeRegexps(noautoreqfiles,noautoreqfiles_c);
-+    noautoprov = rpmfcFreeRegexps(noautoprov, noautoprov_c);
-+    noautoreq = rpmfcFreeRegexps(noautoreq, noautoreq_c);
-+
-+    
-+
  /*@-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"
++    int findprov, findreq;
++    regex_t *noautoprov;
++    int noautoprov_c;
++    regex_t *noautoreq;
++    int noautoreq_c;
+ };
+ /**
+--- 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)
 +
-+#: build/rpmfc.c:1648 build/rpmfc.c:1657
-+#, c-format
-+msgid "Failed to find %s:\n"
-+msgstr "Nie uda³o siê odnale¼æ %s:\n"
++#if defined(WITH_PCRE) && defined(HAVE_PCREPOSIX_H)
++#include <pcreposix.h>
++#else
++#include <regex.h>
++#endif
 +
- #: build/spec.c:237
- #, c-format
- msgid "line %d: Bad number: %s\n"
+ /**
+  */
+ struct rpmfc_s {
This page took 0.316295 seconds and 4 git commands to generate.