RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpminstall.c rpmte.c transaction.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 19 Aug 2007 - 04:34:49 CEST
Message-Id: <20070819023449.61B48348458@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:   19-Aug-2007 04:34:49
  Branch: HEAD                             Handle: 2007081903344801

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpminstall.c rpmte.c transaction.c

  Log:
    - don't open rpmdb O_RDWR iff srpm to permit non-root installs

  Summary:
    Revision    Changes     Path
    1.1588      +1  -0      rpm/CHANGES
    1.161       +0  -1      rpm/lib/rpminstall.c
    2.50        +2  -2      rpm/lib/rpmte.c
    1.331       +11 -2      rpm/lib/transaction.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1587 -r1.1588 CHANGES
  --- rpm/CHANGES	18 Aug 2007 23:40:29 -0000	1.1587
  +++ rpm/CHANGES	19 Aug 2007 02:34:48 -0000	1.1588
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: don't open rpmdb O_RDWR iff srpm to permit non-root installs.
       - jbj: prepare for open as a macro in bleeding edge glibc-2.6.90+.
       - jbj: permit mixed binary/source installation transactions.
       - jbj: re-add rpmcache/rpmcmp/rpmdigest tools.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpminstall.c
  ============================================================================
  $ cvs diff -u -r1.160 -r1.161 rpminstall.c
  --- rpm/lib/rpminstall.c	18 Aug 2007 21:32:29 -0000	1.160
  +++ rpm/lib/rpminstall.c	19 Aug 2007 02:34:49 -0000	1.161
  @@ -635,7 +635,6 @@
       FD_t fd;
       int rc;
   
  -
       fd = Fopen(arg, "r.fdio");
       if (fd == NULL || Ferror(fd)) {
   	rpmMessage(RPMMESS_ERROR, _("cannot open %s: %s\n"), arg, Fstrerror(fd));
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmte.c
  ============================================================================
  $ cvs diff -u -r2.49 -r2.50 rpmte.c
  --- rpm/lib/rpmte.c	17 Aug 2007 18:11:43 -0000	2.49
  +++ rpm/lib/rpmte.c	19 Aug 2007 02:34:49 -0000	2.50
  @@ -153,11 +153,11 @@
       p->isSource = (headerIsEntry(h, RPMTAG_SOURCERPM) == 0);
   
       nb = strlen(p->NEVR) + 1;
  +#ifdef	DYING	/* p->NEVR includes arch now. */
       if (p->arch == NULL)
   	nb += sizeof("pubkey");
       else if (p->isSource)
   	nb += sizeof("src");
  -#ifdef	DYING	/* p->NEVRA includes arch now. */
       else
   	nb += strlen(p->arch) + 1;
   #endif
  @@ -165,11 +165,11 @@
       p->NEVRA = t;
       *t = '\0';
       t = stpcpy(t, p->NEVR);
  +#ifdef	DYING	/* p->NEVR includes arch now. */
       if (p->arch == NULL)
   	t = stpcpy( t, ".pubkey");
       else if (p->isSource)
   	t = stpcpy( t, ".src");
  -#ifdef	DYING	/* p->NEVRA includes arch now. */
       else
   	t = stpcpy( stpcpy( t, "."), p->arch);
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/transaction.c
  ============================================================================
  $ cvs diff -u -r1.330 -r1.331 transaction.c
  --- rpm/lib/transaction.c	18 Aug 2007 21:32:29 -0000	1.330
  +++ rpm/lib/transaction.c	19 Aug 2007 02:34:49 -0000	1.331
  @@ -1201,8 +1201,17 @@
       ts->probs = rpmpsCreate();
   
       /* XXX Make sure the database is open RDWR for package install/erase. */
  -    {	int dbmode = (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST)
  -		? O_RDONLY : (O_RDWR|O_CREAT);
  +    {	int dbmode = O_RDONLY;
  +
  +	if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_TEST)) {
  +	    pi = rpmtsiInit(ts);
  +	    while ((p = rpmtsiNext(pi, 0)) != NULL) {
  +		if (p->isSource) continue;
  +		dbmode = (O_RDWR|O_CREAT);
  +		break;
  +	    }
  +	    pi = rpmtsiFree(pi);
  +	}
   
   	/* Open database RDWR for installing packages. */
   	if (rpmtsOpenDB(ts, dbmode)) {
  @@ .
Received on Sun Aug 19 04:34:49 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.