Put the under a "RPM_VENDOR_FOO" (or any other AutoFu enabler,
default behavior is "disabled").

I do not see __ANY__ consensus @rpm5.org that the patch is desired,
in fact quite the opposite, you have 2 negative comments on your proposal.

I'm strongly opposed to the patch because I have __ALREADY__ seen
Epoch: and then Arch: and Disttag: and Repotag: being added to packaging
for "identification" purposes (I did the implementations) and no problem was
usefully solved.

Noone (until now, yes you are using Disttag:, but you are still only a
single person) finds the functionality useful. The homily
        Build and they shall use.
does not apply in this case there is no consensus on the intended
"identification".

73 de Jeff
On Dec 22, 2008, at 10:46 AM, Per Øyvind Karlsen 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: 22-Dec-2008 16:46:46
  Branch: HEAD                             Handle: 2008122215464401

  Modified files:
    rpm                     CHANGES macros.in
    rpm/build               files.c pack.c parsePreamble.c
rpm/lib psm.c rpmds.c rpmte.c rpmte.h transaction.c
    rpm/python              header-py.c
    rpm/rpmdb               hdrNVR.c rpmevr.c rpmevr.h rpmtag.h

  Log:
    add new DistEpoch tag

  Summary:
    Revision    Changes     Path
    1.2700      +1  -0      rpm/CHANGES
    1.349       +1  -0      rpm/build/files.c
    2.304       +13 -4      rpm/build/pack.c
    2.184       +4  -0      rpm/build/parsePreamble.c
    2.342       +2  -0      rpm/lib/psm.c
    2.115       +23 -6      rpm/lib/rpmds.c
    2.89        +13 -0      rpm/lib/rpmte.c
    2.56        +11 -0      rpm/lib/rpmte.h
    1.392       +4  -1      rpm/lib/transaction.c
    1.265       +6  -2      rpm/macros.in
    1.100       +1  -0      rpm/python/header-py.c
    1.46        +1  -0      rpm/rpmdb/hdrNVR.c
    1.13        +19 -4      rpm/rpmdb/rpmevr.c
    1.4         +2  -0      rpm/rpmdb/rpmevr.h
    1.56        +2  -0      rpm/rpmdb/rpmtag.h
______________________________________________________________________ ______

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
====================================================================== ======
  $ cvs diff -u -r1.2699 -r1.2700 CHANGES
  --- rpm/CHANGES       21 Dec 2008 17:16:47 -0000      1.2699
  +++ rpm/CHANGES       22 Dec 2008 15:46:45 -0000      1.2700
  @@ -1,5 +1,6 @@

   5.2a2 -> 5.2a3:
  +    - proyvind: add new DistEpoch tag.
- jbj: merge "support-wildcards-in-EVR-comparison" patch (OpenPKG). - jbj: invert the sense of a <-> b comparison, change sign of Mandriva override.
       - jbj: bury MDV file triggers under RPM_VENDOR_MANDRIVA.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
====================================================================== ======
  $ cvs diff -u -r1.348 -r1.349 files.c
  --- rpm/build/files.c 19 Dec 2008 02:51:10 -0000      1.348
  +++ rpm/build/files.c 22 Dec 2008 15:46:44 -0000      1.349
  @@ -2537,6 +2537,7 @@
        case RPMTAG_NAME:
        case RPMTAG_VERSION:
        case RPMTAG_RELEASE:
  +     case RPMTAG_DISTEPOCH:
        case RPMTAG_EPOCH:
        case RPMTAG_SUMMARY:
        case RPMTAG_DESCRIPTION:
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
====================================================================== ======
  $ cvs diff -u -r2.303 -r2.304 pack.c
  --- rpm/build/pack.c  15 Dec 2008 22:43:43 -0000      2.303
  +++ rpm/build/pack.c  22 Dec 2008 15:46:44 -0000      2.304
  @@ -449,9 +449,9 @@
   void providePackageNVR(Header h)
   {
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  -    const char *N, *V, *R;
  +    const char *N, *V, *R, *D;
       rpmuint32_t E;
  -    int gotE;
  +    int gotE, gotD;
       const char *pEVR;
       char *p;
       rpmuint32_t pFlags = RPMSENSE_EQUAL;
  @@ -466,7 +466,12 @@
       xx = headerNEVRA(h, &N, NULL, &V, &R, NULL);
       if (!(N && V && R))
        return;
  -    pEVR = p = alloca(21 + strlen(V) + 1 + strlen(R) + 1);
  +
  +    he->tag = RPMTAG_DISTEPOCH;
  +    gotD = headerGet(h, he, 0);
  +    D = (he->p.str ? he->p.str : NULL);
  +
+ pEVR = p = alloca(21 + strlen(V) + 1 + strlen(R) + 1 + (gotD ? strlen(D) + 1 : 0));
       *p = '\0';
       he->tag = RPMTAG_EPOCH;
       gotE = headerGet(h, he, 0);
  @@ -476,7 +481,11 @@
        sprintf(p, "%d:", E);
        p += strlen(p);
       }
  -    (void) stpcpy( stpcpy( stpcpy(p, V) , "-") , R);
  +    p = stpcpy( stpcpy( stpcpy(p, V) , "-") , R);
  +    if (gotD) {
  +     p = stpcpy( stpcpy( p, ":"), D);
  +     D = _free(D);
  +    }
       V = _free(V);
       R = _free(R);

  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
====================================================================== ======
  $ cvs diff -u -r2.183 -r2.184 parsePreamble.c
  --- rpm/build/parsePreamble.c 19 Dec 2008 01:13:19 -0000      2.183
  +++ rpm/build/parsePreamble.c 22 Dec 2008 15:46:44 -0000      2.184
  @@ -26,6 +26,7 @@
       RPMTAG_EPOCH,
       RPMTAG_VERSION,
       RPMTAG_RELEASE,
  +    RPMTAG_DISTEPOCH,
       RPMTAG_LICENSE,
       RPMTAG_GROUP,            /* XXX permissive. */
       RPMTAG_SUMMARY,          /* XXX permissive. */
  @@ -363,6 +364,7 @@
   } optionalTags[] = {
       { RPMTAG_VENDOR,         "%{vendor}" },
       { RPMTAG_PACKAGER,               "%{packager}" },
  +    { RPMTAG_DISTEPOCH,      "%{distepoch}" },
       { RPMTAG_DISTRIBUTION,   "%{distribution}" },
       { RPMTAG_DISTTAG,                "%{disttag}" },
       { RPMTAG_DISTURL,                "%{disturl}" },
  @@ -609,6 +611,7 @@
       case RPMTAG_NAME:
       case RPMTAG_VERSION:
       case RPMTAG_RELEASE:
  +    case RPMTAG_DISTEPOCH:
       case RPMTAG_URL:
       case RPMTAG_DISTTAG:
       case RPMTAG_REPOTAG:
  @@ -881,6 +884,7 @@
       {RPMTAG_NAME,            0, 0, "name"},
       {RPMTAG_VERSION,         0, 0, "version"},
       {RPMTAG_RELEASE,         0, 0, "release"},
  +    {RPMTAG_DISTEPOCH,               0, 0, "distepoch"},
       {RPMTAG_EPOCH,           0, 0, "epoch"},
       {RPMTAG_EPOCH,           0, 1, "serial"},
       {RPMTAG_SUMMARY,         1, 0, "summary"},
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
====================================================================== ======
  $ cvs diff -u -r2.341 -r2.342 psm.c
  --- rpm/lib/psm.c     15 Dec 2008 22:43:44 -0000      2.341
  +++ rpm/lib/psm.c     22 Dec 2008 15:46:44 -0000      2.342
  @@ -2018,6 +2018,8 @@
                        rpmteV(psm->te));
                xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_RELEASE, RPMMIRE_STRCMP,
                        rpmteR(psm->te));
+ xx = rpmdbSetIteratorRE(psm->mi, RPMTAG_DISTEPOCH, RPMMIRE_STRCMP,
  +                     rpmteD(psm->te));
                if (tscolor) {
                    xx = rpmdbSetIteratorRE(psm->mi,RPMTAG_ARCH, RPMMIRE_STRCMP,
                        rpmteA(psm->te));
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.c
====================================================================== ======
  $ cvs diff -u -r2.114 -r2.115 rpmds.c
  --- rpm/lib/rpmds.c   15 Dec 2008 22:43:44 -0000      2.114
  +++ rpm/lib/rpmds.c   22 Dec 2008 15:46:44 -0000      2.115
  @@ -524,7 +524,7 @@
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmds ds = NULL;
       const char * Type;
  -    const char * Name, * V, * R;
  +    const char * Name, * V, * R, * D;
       rpmuint32_t E;
       const char ** N, ** EVR;
       char * t;
  @@ -540,6 +540,9 @@
       E = (he->p.ui32p ? he->p.ui32p[0] : 0);
       he->p.ptr = _free(he->p.ptr);

  +    he->tag = RPMTAG_DISTEPOCH;
  +    xx = headerGet(h, he, 0);
  +    D = (he->p.str ? he->p.str : NULL);
   /*...@-mods@*/
       xx = headerNEVRA(h, &Name, NULL, &V, &R, NULL);
   /*...@=mods@*/
  @@ -552,14 +555,17 @@
       t = stpcpy(t, Name);
       Name = _free(Name);

- t = xmalloc(sizeof(*EVR) + 20 + strlen(V) + strlen(R) + sizeof("-")); + t = xmalloc(sizeof(*EVR) + 20 + strlen(V) + strlen(R) + sizeof("-") + (D ? strlen(D) + sizeof(":") : 0));
       EVR = (const char **) t;
       t += sizeof(*EVR);
       *t = '\0';
       EVR[0] = t;
  -    sprintf(t, "%d:", E);
       t += strlen(t);
       t = stpcpy( stpcpy( stpcpy( t, V), "-"), R);
  +    if (D != NULL) {
  +     t = stpcpy( stpcpy( t, ":"), D);
  +     D = _free(D);
  +    }
       V = _free(V);
       R = _free(R);

  @@ -3638,6 +3644,8 @@
   /*...@i@*/   sense = EVRcmp(a->V, b->V);
        if (sense == 0 && a->R && *a->R && b->R && *b->R)
   /*...@i@*/       sense = EVRcmp(a->R, b->R);
  +     if (sense == 0 && a->D && *a->D && b->D && *b->D)
  +/*...@i@*/       sense = EVRcmp(a->D, b->D);
       }
       a->str = _free(a->str);
       b->str = _free(b->str);
  @@ -3762,9 +3770,9 @@
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
   {
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  -    const char * pkgN, * V, * R;
  +    const char * pkgN, * V, * R, * D;
       rpmuint32_t E;
  -    int gotE = 0;
  +    int gotE = 0, gotD = 0;
       const char * pkgEVR;
       char * t;
       evrFlags reqFlags = req->ns.Flags;
  @@ -3790,16 +3798,25 @@
       E = (he->p.ui32p ? he->p.ui32p[0] : 0);
       he->p.ptr = _free(he->p.ptr);

  +    he->tag = RPMTAG_DISTEPOCH;
  +    gotD = headerGet(h, he, 0);
  +    D = (he->p.str ? he->p.str : NULL);
  +
       nb = 21 + 1 + 1;
       if (V) nb += strlen(V);
       if (R) nb += strlen(R);
  +    if (D) nb += strlen(D) + 1;
       pkgEVR = t = alloca(nb);
       *t = '\0';
       if (gotE) {
        sprintf(t, "%d:", E);
        t += strlen(t);
       }
  -    (void) stpcpy( stpcpy( stpcpy(t, V) , "-") , R);
  +    t = stpcpy( stpcpy( stpcpy(t, V) , "-") , R);
  +    if (gotD) {
  +     t =  stpcpy( stpcpy( t, ":"), D);
  +     D = _free(D);
  +    }
       V = _free(V);
       R = _free(R);

  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmte.c
====================================================================== ======
  $ cvs diff -u -r2.88 -r2.89 rpmte.c
  --- rpm/lib/rpmte.c   2 Aug 2008 00:38:04 -0000       2.88
  +++ rpm/lib/rpmte.c   22 Dec 2008 15:46:44 -0000      2.89
  @@ -57,6 +57,7 @@
       p->name = _free(p->name);
       p->version = _free(p->version);
       p->release = _free(p->release);
  +    p->distepoch = _free(p->distepoch);
       p->NEVR = _free(p->NEVR);
       p->NEVRA = _free(p->NEVRA);
       p->pkgid = _free(p->pkgid);
  @@ -164,6 +165,13 @@
       } else
        p->epoch = NULL;

  +    he->tag = RPMTAG_DISTEPOCH;
  +    xx = headerGet(h, he, 0);
  +    if (he->p.str != NULL) {
+ p->distepoch = (char*)(xx ? he->p.str : xstrdup("? RPMTAG_DISTEPOCH?"));
  +    } else
  +     p->distepoch = NULL;
  +
       p->installed = 0;

       p->relocs = rpmfiDupeRelocations(relocs, &p->nrelocs);
  @@ -288,6 +296,11 @@
       return (te != NULL ? te->release : NULL);
   }

  +const char * rpmteD(rpmte te)
  +{
  +    return (te != NULL ? te->distepoch : NULL);
  +}
  +
   const char * rpmteA(rpmte te)
   {
       return (te != NULL ? te->arch : NULL);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmte.h
====================================================================== ======
  $ cvs diff -u -r2.55 -r2.56 rpmte.h
  --- rpm/lib/rpmte.h   8 Dec 2008 04:04:24 -0000       2.55
  +++ rpm/lib/rpmte.h   22 Dec 2008 15:46:44 -0000      2.56
  @@ -112,6 +112,8 @@
   /*...@only@*/ /*...@null@*/
       char * release;          /*!< Release: */
   /*...@only@*/ /*...@null@*/
  +    char * distepoch;
  +/*...@only@*/ /*...@null@*/
       const char * arch;               /*!< Architecture hint. */
   /*...@only@*/ /*...@null@*/
       const char * os;         /*!< Operating system hint. */
  @@ -284,6 +286,15 @@
        /*...@*/;

   /** \ingroup rpmte
  + * Retrieve distepoch string of transaction element.
  + * @param te         transaction element
  + * @return           distepoch string
  + */
  +/*...@observer@*/ /*...@null@*/
  +extern const char * rpmteD(rpmte te)
  +     /*...@*/;
  +
  +/** \ingroup rpmte
    * Retrieve arch string of transaction element.
    * @param te         transaction element
    * @return           arch string
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/transaction.c
====================================================================== ======
  $ cvs diff -u -r1.391 -r1.392 transaction.c
  --- rpm/lib/transaction.c     20 Dec 2008 23:14:51 -0000      1.391
  +++ rpm/lib/transaction.c     22 Dec 2008 15:46:44 -0000      1.392
  @@ -619,7 +619,7 @@
       if (p == NULL || h == NULL)
        return 1;

- nb = strlen(rpmteNEVR(p)) + (rpmteE(p) != NULL ? strlen (rpmteE(p)) : 0) + 1; + nb = strlen(rpmteNEVR(p)) + (rpmteE(p) != NULL ? strlen (rpmteE(p)) : 0) + (rpmteD(p) != NULL ? strlen(rpmteD(p)) + 1 : 0) + 1;
       t = alloca(nb);
       *t = '\0';
       reqEVR = t;
  @@ -627,6 +627,7 @@
       if (rpmteV(p) != NULL)   t = stpcpy(t, rpmteV(p));
       *t++ = '-';
       if (rpmteR(p) != NULL)   t = stpcpy(t, rpmteR(p));
  +    if (rpmteD(p) != NULL)   *t++ = ':', t = stpcpy(t, rpmteD(p));

req = rpmdsSingle(RPMTAG_REQUIRENAME, rpmteN(p), reqEVR, reqFlags);
       rc = rpmdsNVRMatchesDep(h, req, _rpmds_nopromote);
  @@ -1277,6 +1278,8 @@
                                rpmteV(p));
            xx = rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP,
                                rpmteR(p));
  +         xx = rpmdbSetIteratorRE(mi, RPMTAG_DISTEPOCH, RPMMIRE_STRCMP,
  +                             rpmteD(p));
            if (tscolor) {
                xx = rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_STRCMP,
                                rpmteA(p));
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros.in
====================================================================== ======
  $ cvs diff -u -r1.264 -r1.265 macros.in
  --- rpm/macros.in     18 Dec 2008 17:11:34 -0000      1.264
  +++ rpm/macros.in     22 Dec 2008 15:46:45 -0000      1.265
  @@ -1,7 +1,7 @@
   #/*! \page config_macros Default configuration: @USRLIBRPM@/macros
   # \verbatim
   #
  -# $Id: macros.in,v 1.264 2008/12/18 17:11:34 afb Exp $
  +# $Id: macros.in,v 1.265 2008/12/22 15:46:45 pkarlsen Exp $
   #
# This is a global RPM configuration file. All changes made here will # be lost when the rpm package is upgraded. Any per-system configuration
  @@ -857,7 +857,7 @@
   #    binary packages.
   #
   # XXX        Note: escaped %% for use in headerSprintf()
  -%_build_name_fmt     %%{ARCH}/%{___NVRA}.rpm
  +%_build_name_fmt     %%{ARCH}/%{___NVRDA}.rpm

   #    The default transaction color. This value is a set of bits to
   #    determine file and dependency affinity for this arch.
  @@ -1009,6 +1009,10 @@
# Default query format string for displaying package names everywhere %___NVRA %%{NAME}-%%{VERSION}-%%{RELEASE}%%|ARCH?{.%%|SOURCERPM? {%%{ARCH}}:{src}|}:{}|

  +# Format string including DistTag & DistEpoch if defined
+%___NVRDA %%{NAME}-%%{VERSION}-%%{RELEASE}%%|DISTTAG?{-%% {DISTTAG}%%|DISTEPOCH?{%%{DISTEPOCH}}|}|%%|ARCH?{.%%|SOURCERPM?{%% {ARCH}}:{src}|}:{}|
  +
  +
   # Default headerSprintf() output format string for rpm -qa
   #
   # XXX        Note: escaped %% for use in headerSprintf()
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/python/header-py.c
====================================================================== ======
  $ cvs diff -u -r1.99 -r1.100 header-py.c
  --- rpm/python/header-py.c    8 Dec 2008 01:46:36 -0000       1.99
  +++ rpm/python/header-py.c    22 Dec 2008 15:46:45 -0000      1.100
  @@ -405,6 +405,7 @@
            case RPMTAG_NAME:
            case RPMTAG_VERSION:
            case RPMTAG_RELEASE:
  +         case RPMTAG_DISTEPOCH:
            case RPMTAG_ARCH:
            case RPMTAG_OS:
                Py_INCREF(Py_None);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
====================================================================== ======
  $ cvs diff -u -r1.45 -r1.46 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c        1 Aug 2008 18:24:55 -0000       1.45
  +++ rpm/rpmdb/hdrNVR.c        22 Dec 2008 15:46:45 -0000      1.46
  @@ -25,6 +25,7 @@
       { "name",              RPMTAG_NAME },
       { "version",   RPMTAG_VERSION },
       { "release",   RPMTAG_RELEASE },
  +    { "distepoch", RPMTAG_DISTEPOCH },
       { "epoch",             RPMTAG_EPOCH },
       { "arch",              RPMTAG_ARCH },
       { "os",                RPMTAG_OS },
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmevr.c
====================================================================== ======
  $ cvs diff -u -r1.12 -r1.13 rpmevr.c
  --- rpm/rpmdb/rpmevr.c        21 Dec 2008 17:16:48 -0000      1.12
  +++ rpm/rpmdb/rpmevr.c        22 Dec 2008 15:46:45 -0000      1.13
  @@ -110,15 +110,15 @@
        /*...@modifies evrstr, evr @*/
   {
       char *s = xstrdup(evrstr);
  -    char *se;
  +    char *se, *se2;

  -    evr->str = se = s;
  +    evr->str = se2 = se = s;
while (*se && xisdigit((int)*se)) se++; /* se points to epoch terminator */

       if (*se == ':') {
        evr->E = s;
        *se++ = '\0';
  -     evr->V = se;
  +     evr->V = se2 = se;
        if (*evr->E == '\0') evr->E = "0";
        evr->Elong = strtoul(evr->E, NULL, 10);
       } else {
  @@ -126,7 +126,14 @@
        evr->V = s;
        evr->Elong = 0;
       }
  -    se = strrchr(se, '-');           /* se points to version terminator */
  +    se = strrchr(se, ':');           /* se points to release terminator */
  +    if (se) {
  +     *se++ = '\0';
  +     evr->D = se;
  +    } else {
  +     evr->D = NULL;
  +    }
  +    se = strrchr(se2, '-');          /* se points to version terminator */
       if (se) {
        *se++ = '\0';
        evr->R = se;
  @@ -255,6 +262,14 @@
       two = he->p.str;
       rc = rpmvercmp(one, two);

  +    he->tag = RPMTAG_DISTEPOCH;
  +    xx = headerGet(first, he, 0);
  +    one = he->p.str;
  +    he->tag = RPMTAG_DISTEPOCH;
  +    xx = headerGet(second, he, 0);
  +    two = he->p.str;
  +    rc = rpmvercmp(one, two);
  +
   exit:
       one = _free(one);
   /*...@-usereleased@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmevr.h
====================================================================== ======
  $ cvs diff -u -r1.3 -r1.4 rpmevr.h
  --- rpm/rpmdb/rpmevr.h        2 Aug 2008 16:36:10 -0000       1.3
  +++ rpm/rpmdb/rpmevr.h        22 Dec 2008 15:46:45 -0000      1.4
  @@ -88,6 +88,8 @@
       const char * V;          /*!< Version */
   /*...@observer@*/ /*...@null@*/
       const char * R;          /*!< Release */
  +/*...@observer@*/ /*...@null@*/
  +    const char * D;          /*!< DistEpoch */
       evrFlags Flags;          /*!< EVR comparison flags. */
   };

  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
====================================================================== ======
  $ cvs diff -u -r1.55 -r1.56 rpmtag.h
  --- rpm/rpmdb/rpmtag.h        11 Dec 2008 23:31:57 -0000      1.55
  +++ rpm/rpmdb/rpmtag.h        22 Dec 2008 15:46:45 -0000      1.56
  @@ -421,6 +421,8 @@
       RPMTAG_PACKAGEDIGEST     = 1215, /* s */
       RPMTAG_PACKAGESTAT               = 1216, /* x */
       RPMTAG_PACKAGEBASEURL    = 1217, /* s */
  +    RPMTAG_DISTEPOCH         = 1218, /* s */
  +#define      RPMTAG_D        RPMTAG_DISTEPOCH        /* s */

   /*...@-enummemuse@*/
       RPMTAG_FIRSTFREE_TAG,    /*!< internal */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-...@rpm5.org

______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to