RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ depends.c rpmns.c rpmns.h

From: Jeff Johnson <jbj@rpm5.org>
Date: Sat 26 Jan 2008 - 18:44:18 CET
Message-Id: <20080126174418.1E0AE348464@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   26-Jan-2008 18:44:18
  Branch: HEAD                             Handle: 2008012617441700

  Modified files:
    rpm                     CHANGES
    rpm/lib                 depends.c rpmns.c rpmns.h

  Log:
    - jbj: add verify(N) = E:V-R runtime dependency probe. more to do ...

  Summary:
    Revision    Changes     Path
    1.2100      +1  -0      rpm/CHANGES
    1.378       +24 -0      rpm/lib/depends.c
    1.15        +2  -0      rpm/lib/rpmns.c
    1.13        +1  -0      rpm/lib/rpmns.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2099 -r1.2100 CHANGES
  --- rpm/CHANGES	26 Jan 2008 17:05:02 -0000	1.2099
  +++ rpm/CHANGES	26 Jan 2008 17:44:17 -0000	1.2100
  @@ -1,4 +1,5 @@
   5.0.0 -> 5.1a1:
  +    - jbj: add verify(N) = E:V-R runtime dependency probe. more to do ...
       - jbj: stub in RPMTAG_FILESTAT and RPMTAG_STAT extensions, w-i-p.
       - jbj: re-add PayloadFilesHavePrefix/CompressedFileNames w --lsb.
       - rse: provide %{shrink:<body>} macro for removing leading+trailing and removing intermediate whitespaces
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/depends.c
  ============================================================================
  $ cvs diff -u -r1.377 -r1.378 depends.c
  --- rpm/lib/depends.c	30 Dec 2007 14:33:06 -0000	1.377
  +++ rpm/lib/depends.c	26 Jan 2008 17:44:17 -0000	1.378
  @@ -845,6 +845,30 @@
   	goto exit;
       }
   
  +    if (NSType == RPMNS_TYPE_VERIFY) {
  +	QVA_t qva = memset(alloca(sizeof(*qva)), 0, sizeof(*qva));
  +
  +	qva->qva_flags = VERIFY_ALL & ~(VERIFY_DEPS|VERIFY_SCRIPT);
  +	rc = 0;		/* assume success */
  +	if (rpmtsGetRdb(ts) != NULL) {
  +	    mi = rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, Name, 0);
  +	    while ((h = rpmdbNextIterator(mi)) != NULL) {
  +		if (!rpmdsAnyMatchesDep(h, dep, _rpmds_nopromote))
  +		    continue;
  +		xx = (showVerifyPackage(qva, ts, h) ? 1 : 0);
  +fprintf(stderr, "==> xx %d\n", xx);
  +		if (xx)
  +		    rc = 1;
  +	    }
  +	    mi = rpmdbFreeIterator(mi);
  +	}
  +
  +	if (Flags & RPMSENSE_MISSINGOK)
  +	    goto unsatisfied;
  +	rpmdsNotify(dep, _("(verify probe)"), rc);
  +	goto exit;
  +    }
  +
       if (NSType == RPMNS_TYPE_GNUPG) {
   	const char * EVR = rpmdsEVR(dep);
   	if (!(EVR && *EVR)) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmns.c
  ============================================================================
  $ cvs diff -u -r1.14 -r1.15 rpmns.c
  --- rpm/lib/rpmns.c	12 Jan 2008 22:29:32 -0000	1.14
  +++ rpm/lib/rpmns.c	26 Jan 2008 17:44:17 -0000	1.15
  @@ -90,6 +90,7 @@
       { "sanitycheck",	RPMNS_TYPE_SANITY },
       { "vcheck",		RPMNS_TYPE_VCHECK },
       { "signature",	RPMNS_TYPE_SIGNATURE },
  +    { "verify",		RPMNS_TYPE_VERIFY },
       { "exists",		RPMNS_TYPE_ACCESS },
       { "executable",	RPMNS_TYPE_ACCESS },
       { "readable",	RPMNS_TYPE_ACCESS },
  @@ -208,6 +209,7 @@
       case RPMNS_TYPE_SANITY:
       case RPMNS_TYPE_VCHECK:
       case RPMNS_TYPE_SIGNATURE:
  +    case RPMNS_TYPE_VERIFY:
   	ns->NS = ns->str;
   	if (ns->NS[0] == '!')
   	    ns->NS++;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmns.h
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 rpmns.h
  --- rpm/lib/rpmns.h	30 Dec 2007 14:33:06 -0000	1.12
  +++ rpm/lib/rpmns.h	26 Jan 2008 17:44:17 -0000	1.13
  @@ -51,6 +51,7 @@
       RPMNS_TYPE_SANITY	=  (1 << 25),	/*!< sanitycheck(foo) */
       RPMNS_TYPE_VCHECK	=  (1 << 26),	/*!< vcheck(foo) */
       RPMNS_TYPE_SIGNATURE=  (1 << 27),	/*!< signature(/text:/sig) = /pub:id */
  +    RPMNS_TYPE_VERIFY	=  (1 << 28),	/*!< verify(N) = E:V-R */
   } nsType;
   
   #if defined(_RPMNS_INTERNAL)
  @@ .
Received on Sat Jan 26 18:44:18 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.