]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-exclude.patch
- check_files patch was OK, rpm was broken.
[packages/rpm.git] / rpm-exclude.patch
1 --- rpm-4.0.2/lib/rpmlib.h~     Sun May 26 07:47:04 2002
2 +++ rpm-4.0.2/lib/rpmlib.h      Sun May 26 07:55:51 2002
3 @@ -320,6 +320,7 @@
4      RPMFILE_GHOST      = (1 << 6),     /*!< from %%ghost */
5      RPMFILE_LICENSE    = (1 << 7),     /*!< from %%license */
6 -    RPMFILE_README     = (1 << 8)      /*!< from %%readme */
7 +    RPMFILE_README     = (1 << 8),     /*!< from %%readme */
8 +    RPMFILE_EXCLUDE    = (1 << 9)      /*!< from %%exclude */
9  } rpmfileAttrs;
10  #define        RPMFILE_MULTILIB_SHIFT          9
11  #define        RPMFILE_MULTILIB(N)             ((N) << RPMFILE_MULTILIB_SHIFT)
12 --- rpm-4.0.2/build/files.c~    Sun May 26 07:47:04 2002
13 +++ rpm-4.0.2/build/files.c     Sun May 26 08:19:18 2002
14 @@ -685,6 +685,7 @@
15         { "%dir",       0 },    /* XXX why not RPMFILE_DIR? */
16         { "%doc",       RPMFILE_DOC },
17         { "%ghost",     RPMFILE_GHOST },
18 +       { "%exclude",   RPMFILE_EXCLUDE },
19         { "%readme",    RPMFILE_README },
20         { "%license",   RPMFILE_LICENSE },
21         { "%multilib",  0 },
22 @@ -986,12 +987,20 @@
23      clp = *cpioList = xmalloc(sizeof(**cpioList) * fl->fileListRecsUsed);
24  
25      for (flp = fl->fileList, count = fl->fileListRecsUsed; count > 0; flp++, count--) {
26 -       if ((count > 1) && !strcmp(flp->fileURL, flp[1].fileURL)) {
27 -           rpmError(RPMERR_BADSPEC, _("File listed twice: %s\n"),
28 -               flp->fileURL);
29 -           fl->processingFailed = 1;
30 -       }
31 +       if ((count > 1) && !strcmp(flp->fileURL, flp[1].fileURL)) {
32 +           if (!((flp->flags | flp[1].flags) & RPMFILE_EXCLUDE)) {
33 +               rpmError(RPMERR_BADSPEC, _("File listed twice: %s\n"),
34 +                   flp->fileURL);
35 +               fl->processingFailed = 1;
36 +           } else {
37 +               flp->flags |= RPMFILE_EXCLUDE;
38 +               flp[1].flags |= RPMFILE_EXCLUDE;
39 +           }
40 +       }
41  
42 +       /* Skip files that were marked with %exclude. */
43 +       if (flp->flags & RPMFILE_EXCLUDE) continue;
44 +       
45         if (flp->flags & RPMFILE_MULTILIB_MASK)
46             multiLibMask |=
47                 (1 << ((flp->flags & RPMFILE_MULTILIB_MASK))
This page took 0.025706 seconds and 3 git commands to generate.