RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm-5_0: rpm/ CHANGES rpm/lib/ depends.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Thu 07 Feb 2008 - 23:15:32 CET
Message-Id: <20080207221532.B6DC5348479@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:   07-Feb-2008 23:15:32
  Branch: rpm-5_0                          Handle: 2008020722153101

  Modified files:           (Branch: rpm-5_0)
    rpm                     CHANGES
    rpm/lib                 depends.c

  Log:
    - jbj: fix: (again) rpmtsCheck() needs to return 1 when problems
    exist.

  Summary:
    Revision    Changes     Path
    1.2054.2.41 +1  -0      rpm/CHANGES
    1.377.2.2   +15 -14     rpm/lib/depends.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2054.2.40 -r1.2054.2.41 CHANGES
  --- rpm/CHANGES	7 Feb 2008 18:09:54 -0000	1.2054.2.40
  +++ rpm/CHANGES	7 Feb 2008 22:15:31 -0000	1.2054.2.41
  @@ -1,4 +1,5 @@
   5.0.2 -> 5.0.3:
  +    - jbj: fix: (again) rpmtsCheck() needs to return 1 when problems exist.
       - rse: add support for QNX by adjusting to its 3-parameter based makedev(2)
       - proyvind: add sparcv9v2 (Niagara 2) architecture
       - proyvind: add arch macros for alpha and sparc
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/depends.c
  ============================================================================
  $ cvs diff -u -r1.377.2.1 -r1.377.2.2 depends.c
  --- rpm/lib/depends.c	29 Jan 2008 13:42:58 -0000	1.377.2.1
  +++ rpm/lib/depends.c	7 Feb 2008 22:15:32 -0000	1.377.2.2
  @@ -2416,6 +2416,7 @@
       int xx;
       int terminate = 2;		/* XXX terminate if rc >= terminate */
       int rc = 0;
  +    int ourrc = 0;
   
       (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_CHECK), 0);
   
  @@ -2424,7 +2425,7 @@
   	rc = (rpmtsOpenDB(ts, rpmtsDBMode(ts)) ? 2 : 0);
   	closeatexit = (rc == 0);
       }
  -    if (rc >= terminate)
  +    if (rc && (ourrc = rc) >= terminate)
   	goto exit;
   
       ts->probs = rpmpsFree(ts->probs);
  @@ -2437,7 +2438,7 @@
        * are satisfied.
        */
       pi = rpmtsiInit(ts);
  -    while (rc < terminate && (p = rpmtsiNext(pi, TR_ADDED)) != NULL) {
  +    while (ourrc < terminate && (p = rpmtsiNext(pi, TR_ADDED)) != NULL) {
   	rpmds provides, requires, conflicts, dirnames, linktos;
   
   /*@-nullpass@*/	/* FIX: rpmts{A,O} can return null. */
  @@ -2462,13 +2463,13 @@
   	rc = checkPackageDeps(ts, rpmteNEVRA(p),
   			requires, conflicts, dirnames, linktos,
   			NULL, tscolor, 1);
  -	if (rc >= terminate)
  +	if (rc && (ourrc = rc) >= terminate)
   	    break;
   
   	provides = rpmteDS(p, RPMTAG_PROVIDENAME);
   	provides = rpmdsInit(provides);
   	if (provides != NULL)
  -	while (rc < terminate && rpmdsNext(provides) >= 0) {
  +	while (ourrc < terminate && rpmdsNext(provides) >= 0) {
   	    depName = _free(depName);
   	    depName = xstrdup(rpmdsN(provides));
   
  @@ -2486,18 +2487,18 @@
   	    if (checkDependentConflicts(ts, depName))
   	    rc = 1;
   	}
  -	if (rc >= terminate)
  +	if (rc && (ourrc = rc) >= terminate)
   	    break;
       }
       pi = rpmtsiFree(pi);
  -    if (rc >= terminate)
  +    if (rc && (ourrc = rc) >= terminate)
   	goto exit;
   
       /*
        * Look at the removed packages and make sure they aren't critical.
        */
       pi = rpmtsiInit(ts);
  -    while (rc < terminate && (p = rpmtsiNext(pi, TR_REMOVED)) != NULL) {
  +    while (ourrc < terminate && (p = rpmtsiNext(pi, TR_REMOVED)) != NULL) {
   	rpmds provides;
   	rpmfi fi;
   
  @@ -2509,7 +2510,7 @@
   	provides = rpmteDS(p, RPMTAG_PROVIDENAME);
   	provides = rpmdsInit(provides);
   	if (provides != NULL)
  -	while (rc < terminate && rpmdsNext(provides) >= 0) {
  +	while (ourrc < terminate && rpmdsNext(provides) >= 0) {
   	    depName = _free(depName);
   	    depName = xstrdup(rpmdsN(provides));
   
  @@ -2517,23 +2518,23 @@
   	    if (checkDependentPackages(ts, depName))
   	    rc = 1;
   	}
  -	if (rc >= terminate)
  +	if (rc && (ourrc = rc) >= terminate)
   	    break;
   
   	fi = rpmteFI(p, RPMTAG_BASENAMES);
   	fi = rpmfiInit(fi, 0);
  -	while (rc < terminate && rpmfiNext(fi) >= 0) {
  +	while (ourrc < terminate && rpmfiNext(fi) >= 0) {
   	    depName = _free(depName);
   	    depName = xstrdup(rpmfiFN(fi));
   	    /* Erasing: check filename against requiredby matches. */
   	    if (checkDependentPackages(ts, depName))
   	    rc = 1;
   	}
  -	if (rc >= terminate)
  +	if (rc && (ourrc = rc) >= terminate)
   	    break;
       }
       pi = rpmtsiFree(pi);
  -    if (rc >= terminate)
  +    if (rc && (ourrc = rc) >= terminate)
   	goto exit;
   
       /*
  @@ -2549,7 +2550,7 @@
   	tscolor = 0;	/* XXX no coloring for transaction dependencies. */
   	rc = checkPackageDeps(ts, tsNEVRA, R, C, D, L, dep, tscolor, adding);
       }
  -    if (rc >= terminate)
  +    if (rc && (ourrc = rc) >= terminate)
   	goto exit;
   
   exit:
  @@ -2575,5 +2576,5 @@
       }
   #endif
   
  -    return rc;
  +    return ourrc;
   }
  @@ .
Received on Thu Feb 7 23:15:32 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.