rpms/rpm/F-11 rpm-4.7.1-abs-filelist.patch, NONE, 1.1 rpm-4.7.1-chroot-env-paths.patch, NONE, 1.1 rpm-4.7.1-chroot-remove-env.patch, NONE, 1.1 rpm-4.7.1-debug-perms.patch, NONE, 1.1 rpm-4.7.1-duplicate-deps.patch, NONE, 1.1 rpm-4.7.1-filedep-dnevr.patch, NONE, 1.1 rpm-4.7.1-perl-heredoc.patch, NONE, 1.1 rpm-4.7.1-rpm2cpio-init.patch, NONE, 1.1 rpm.spec, 1.354, 1.355

Panu Matilainen pmatilai at fedoraproject.org
Thu Oct 8 09:48:25 UTC 2009


Author: pmatilai

Update of /cvs/pkgs/rpms/rpm/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv11055

Modified Files:
	rpm.spec 
Added Files:
	rpm-4.7.1-abs-filelist.patch rpm-4.7.1-chroot-env-paths.patch 
	rpm-4.7.1-chroot-remove-env.patch rpm-4.7.1-debug-perms.patch 
	rpm-4.7.1-duplicate-deps.patch rpm-4.7.1-filedep-dnevr.patch 
	rpm-4.7.1-perl-heredoc.patch rpm-4.7.1-rpm2cpio-init.patch 
Log Message:
- use relative paths within db environment (related to #507309, #507309...)
- remove db environment on close in chrooted operation (related to above)
- initialize rpmlib earlier in rpm2cpio (#523260)
- fix file dependency tag extension formatting (#523282)
- fix duplicate dependency filtering on build (#490378)
- permit absolute paths in file lists again (#521760)
- use permissions 444 for all .debug files (#522194)
- perl dep extractor heredoc parsing improvements (#524929)


rpm-4.7.1-abs-filelist.patch:
 files.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

--- NEW FILE rpm-4.7.1-abs-filelist.patch ---
commit 4018bbd08e84fd0cc227dcb8d2dc20693ce2296a
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Tue Sep 15 10:56:58 2009 +0300

    Allow absolute paths in file lists again (SuseBug:535594, RhBug:521760)
    - patch from OpenSUSE / Michael Schroeder
    - build-time generated file lists should be placed in the build directory,
      but at least one valid use case for this is things like %files -f %{SOURCE10}

diff --git a/build/files.c b/build/files.c
index b5c5437..061494d 100644
--- a/build/files.c
+++ b/build/files.c
@@ -1755,9 +1755,13 @@ static rpmRC processPackageFiles(rpmSpec spec, Package pkg,
 
 	argvSplit(&filelists, getStringBuf(pkg->fileFile), "\n");
 	for (fp = filelists; *fp != NULL; fp++) {
-	    ffn = rpmGetPath("%{_builddir}/",
-		(spec->buildSubdir ? spec->buildSubdir : "") ,
-		"/", *fp, NULL);
+	    if (**fp == '/') {
+		ffn = rpmGetPath(*fp, NULL);
+	    } else {
+		ffn = rpmGetPath("%{_builddir}/",
+		    (spec->buildSubdir ? spec->buildSubdir : "") ,
+		    "/", *fp, NULL);
+	    }
 	    fd = fopen(ffn, "r");
 
 	    if (fd == NULL || ferror(fd)) {

rpm-4.7.1-chroot-env-paths.patch:
 db3.c |   17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

--- NEW FILE rpm-4.7.1-chroot-env-paths.patch ---
diff --git a/lib/backend/db3.c b/lib/backend/db3.c
index 9f0f941..b0b2a86 100644
--- a/lib/backend/db3.c
+++ b/lib/backend/db3.c
@@ -1015,17 +1015,12 @@ static int db3open(rpmdb rpmdb, rpmTag rpmtag, dbiIndex * dbip)
 	    }
 
 	    if (rc == 0) {
-		char * fullpath;
-		const char * dbpath;
-		fullpath = rpmGetPath(dbhome, "/", dbfile ? dbfile : "", NULL);
-
-#ifdef	HACK	/* XXX necessary to support dbsubfile */
-		dbpath = (!dbi->dbi_use_dbenv && !dbi->dbi_temporary)
-			? fullpath : dbfile;
-#else
-		dbpath = (!dbi->dbi_temporary)
-			? fullpath : dbfile;
-#endif
+		char * fullpath = NULL;
+		const char * dbpath = dbfile;
+		if (!dbi->dbi_use_dbenv && !dbi->dbi_temporary) {
+		    fullpath = rpmGetPath(dbhome, "/", dbfile, NULL);
+		    dbpath = fullpath;
+		}
 
 		rc = (db->open)(db, txnid, dbpath, dbsubfile,
 		    dbi->dbi_type, oflags, dbi->dbi_perms);

rpm-4.7.1-chroot-remove-env.patch:
 backend/db3.c |    3 ++-
 rpmdb.c       |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

--- NEW FILE rpm-4.7.1-chroot-remove-env.patch ---
diff --git a/lib/backend/db3.c b/lib/backend/db3.c
index 9f0f941..9683100 100644
--- a/lib/backend/db3.c
+++ b/lib/backend/db3.c
@@ -181,7 +181,8 @@ static int db_fini(dbiIndex dbi, const char * dbhome,
 	xx = db_env_create(&dbenv, 0);
 	xx = cvtdberr(dbi, "db_env_create", xx, _debug);
 	xx = dbenv->remove(dbenv, dbhome, 0);
-	xx = cvtdberr(dbi, "dbenv->remove", xx, _debug);
+	/* filter out EBUSY as it just means somebody else gets to clean it */
+	xx = cvtdberr(dbi, "dbenv->remove", xx, (xx == EBUSY ? 0 : _debug));
 
 	if (dbfile)
 	    rpmlog(RPMLOG_DEBUG, "removed  db environment %s/%s\n",
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
index 0754b99..b781cfc 100644
--- a/lib/rpmdb.c
+++ b/lib/rpmdb.c
@@ -921,7 +921,8 @@ rpmdb newRpmdb(const char * root,
 	return NULL;
     }
     db->db_errpfx = rpmExpand( (epfx && *epfx ? epfx : _DB_ERRPFX), NULL);
-    db->db_remove_env = 0;
+    /* XXX remove environment after chrooted operations, for now... */
+    db->db_remove_env = ((strcmp(db->db_root, "/") != 0)? 1 : 0);
     db->db_filter_dups = _db_filter_dups;
     db->db_ndbi = dbiTags.max;
     db->_dbi = xcalloc(db->db_ndbi, sizeof(*db->_dbi));

rpm-4.7.1-debug-perms.patch:
 find-debuginfo.sh |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE rpm-4.7.1-debug-perms.patch ---
>From 6cc599de01a9835b5128b7b2a869f9f7cf3976fb Mon Sep 17 00:00:00 2001
From: Roland McGrath <roland at redhat.com>
Date: Wed, 9 Sep 2009 11:07:10 -0700
Subject: [PATCH] find-debuginfo.sh: use permissions 444 for all .debug files

Signed-off-by: Roland McGrath <roland at redhat.com>
---
 scripts/find-debuginfo.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
index 21366bf..8d86de6 100644
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -93,6 +93,7 @@ strip_to_debug()
   application/x-sharedlib*) g=-g ;;
   esac
   eu-strip --remove-comment $g -f "$1" "$2" || exit
+  chmod 444 "$1" || exit
 }
 
 # Make a relative symlink to $1 called $3$2
-- 
1.6.2.5


rpm-4.7.1-duplicate-deps.patch:
 reqprov.c |   62 ++++++++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 42 insertions(+), 20 deletions(-)

--- NEW FILE rpm-4.7.1-duplicate-deps.patch ---
commit 10772ac7dfad60cb5a20681d22cf851468d0a8f9
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Thu Aug 20 13:02:05 2009 +0300

    Fix duplicate dependency checking on build
    - Broken by commit af8b41c64af39ce07d85fcd92fa78d566747d815 which
      simplified too much.
    - There's no guarantee that rpmdsNew() returns a sorted dependency set
      so rpmdsFind() doesn't work correctly here. Walk the ds manually instead.
    - With multiple triggers of same type, identical trigger conditions on
      different trigger script were seen as duplicates (RhBug:490378)
    - Split the duplicate checking to separate helper function for clarity

diff --git a/build/reqprov.c b/build/reqprov.c
index 1e69bd2..ba6a1e8 100644
--- a/build/reqprov.c
+++ b/build/reqprov.c
@@ -9,6 +9,38 @@
 #include <rpm/rpmbuild.h>
 #include "debug.h"
 
+static int isNewDep(Header h, rpmTag nametag,
+		  const char *N, const char *EVR, rpmsenseFlags Flags,
+		  rpmTag indextag, uint32_t index)
+{
+    int new = 1;
+    struct rpmtd_s idx;
+    rpmds ads = rpmdsNew(h, nametag, 0);
+    rpmds bds = rpmdsSingle(nametag, N, EVR, Flags);
+
+    if (indextag) {
+	headerGet(h, indextag, &idx, HEADERGET_MINMEM);
+    }
+
+    /* XXX there's no guarantee the ds is sorted here so rpmdsFind() wont do */
+    rpmdsInit(ads);
+    while (new && rpmdsNext(ads) >= 0) {
+	if (strcmp(rpmdsN(ads), rpmdsN(bds))) continue;
+	if (strcmp(rpmdsEVR(ads), rpmdsEVR(bds))) continue;
+	if (rpmdsFlags(ads) != rpmdsFlags(bds)) continue;
+	if (indextag && rpmtdSetIndex(&idx, rpmdsIx(ads)) >= 0 &&
+			rpmtdGetNumber(&idx) != index) continue;
+	new = 0;
+    }
+    
+    if (indextag) {
+	rpmtdFreeData(&idx);
+    }
+    rpmdsFree(ads);
+    rpmdsFree(bds);
+    return new;
+}
+
 int addReqProv(rpmSpec spec, Header h, rpmTag tagN,
 		const char * N, const char * EVR, rpmsenseFlags Flags,
 		uint32_t index)
@@ -55,28 +87,18 @@ int addReqProv(rpmSpec spec, Header h, rpmTag tagN,
     if (EVR == NULL)
 	EVR = "";
     
-    /* Check for duplicate dependencies. */
-    rpmds hds = rpmdsNew(h, nametag, 0);
-    rpmds newds = rpmdsSingle(nametag, N, EVR, Flags);
-    /* already got it, don't bother */
-    if (rpmdsFind(hds, newds) >= 0) {
-	goto exit;
-    }
-
-    /* Add this dependency. */
-    headerPutString(h, nametag, N);
-    if (flagtag) {
-	headerPutString(h, versiontag, EVR);
-	headerPutUint32(h, flagtag, &Flags, 1);
-    }
-    if (indextag) {
-	headerPutUint32(h, indextag, &index, 1);
+    /* Avoid adding duplicate dependencies. */
+    if (isNewDep(h, nametag, N, EVR, Flags, indextag, index)) {
+	headerPutString(h, nametag, N);
+	if (flagtag) {
+	    headerPutString(h, versiontag, EVR);
+	    headerPutUint32(h, flagtag, &Flags, 1);
+	}
+	if (indextag) {
+	    headerPutUint32(h, indextag, &index, 1);
+	}
     }
 
-exit:
-    rpmdsFree(hds);
-    rpmdsFree(newds);
-	
     return 0;
 }
 

rpm-4.7.1-filedep-dnevr.patch:
 tagexts.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE rpm-4.7.1-filedep-dnevr.patch ---
commit d846e6b0f829791e6ffce4fd496c9378bff19c43
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Tue Sep 15 08:45:14 2009 +0300

    Don't add dependency type into file requires and provides (RhBug:523282)
    - unintended change in commit 3d8656f040d2c780c88d0cd63594898f0605a6fa

diff --git a/lib/tagexts.c b/lib/tagexts.c
index ec0b001..4588365 100644
--- a/lib/tagexts.c
+++ b/lib/tagexts.c
@@ -137,7 +137,7 @@ static int filedepTag(Header h, rpmTag tagN, rpmtd td, headerGetFlags hgflags)
 		    continue;
 		DNEVR = rpmdsDNEVR(ds);
 		if (DNEVR != NULL) {
-		    argvAdd(&deps, DNEVR);
+		    argvAdd(&deps, DNEVR + 2);
 		}
 	    }
 	}

rpm-4.7.1-perl-heredoc.patch:
 perl.req |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

--- NEW FILE rpm-4.7.1-perl-heredoc.patch ---
commit 007218488a33678c66b19b34ab1ef9fd2ffaec9e
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Tue Sep 22 21:11:20 2009 +0300

    Improve perl.req here-doc skipping.
    
    This version is stricter in finding the end identifier by using equality test
    instead of a regex (as a side effect, fixes rhbz#524929) as well as parsing
    quoted identifiers, and adds support for identifiers in backticks.
    (cherry picked from commit dab575b24498e2362845e7da6dc76015fa88b4a9)

diff --git a/scripts/perl.req b/scripts/perl.req
index 0d26346..4c08dcd 100755
--- a/scripts/perl.req
+++ b/scripts/perl.req
@@ -82,12 +82,14 @@ sub process_file {
     
     # skip the "= <<" block
 
-    if ( ( m/^\s*\$(.*)\s*=\s*<<\s*["'](.*)['"]/) ||
-         ( m/^\s*\$(.*)\s*=\s*<<\s*(.*);/) ) {
+    if ( ( m/^\s*\$(?:.*)\s*=\s*<<\s*(["'`])(.*)\1/) ||
+         ( m/^\s*\$(.*)\s*=\s*<<(\w*)\s*;/) ) {
       $tag = $2;
       while (<FILE>) {
-        ( $_ =~ /^$tag/) && last;
+        chomp;
+        ( $_ eq $tag ) && last;
       }
+      $_ = <FILE>;
     }
 
     # skip q{} quoted sections - just hope we don't have curly brackets

rpm-4.7.1-rpm2cpio-init.patch:
 rpm2cpio.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE rpm-4.7.1-rpm2cpio-init.patch ---
commit 63d37be6b4a854b9cbbd47306c5c383a2ad356c2
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Tue Sep 15 12:57:51 2009 +0300

    Initialize rpm earlier in rpm2cpio (RhBug:523260)
    - url retrieval requires macros to be loaded

diff --git a/rpm2cpio.c b/rpm2cpio.c
index 6c29cab..bf7f17c 100644
--- a/rpm2cpio.c
+++ b/rpm2cpio.c
@@ -21,6 +21,7 @@ int main(int argc, char *argv[])
     FD_t gzdi;
     
     setprogname(argv[0]);	/* Retrofit glibc __progname */
+    rpmReadConfigFiles(NULL, NULL);
     if (argc == 1)
 	fdi = fdDup(STDIN_FILENO);
     else {
@@ -37,7 +38,6 @@ int main(int argc, char *argv[])
 	exit(EXIT_FAILURE);
     }
     fdo = fdDup(STDOUT_FILENO);
-    rpmReadConfigFiles(NULL, NULL);
 
     {	rpmts ts = rpmtsCreate();
 	rpmVSFlags vsflags = 0;


Index: rpm.spec
===================================================================
RCS file: /cvs/pkgs/rpms/rpm/F-11/rpm.spec,v
retrieving revision 1.354
retrieving revision 1.355
diff -u -p -r1.354 -r1.355
--- rpm.spec	27 Jul 2009 19:03:33 -0000	1.354
+++ rpm.spec	8 Oct 2009 09:48:24 -0000	1.355
@@ -25,7 +25,7 @@
 Summary: The RPM package management system
 Name: rpm
 Version: %{rpmver}
-Release: 2%{?dist}
+Release: 3%{?dist}
 Group: System Environment/Base
 Url: http://www.rpm.org/
 Source0: http://rpm.org/releases/rpm-4.7.x/%{name}-%{srcver}.tar.bz2
@@ -43,6 +43,14 @@ Patch2: rpm-4.5.90-gstreamer-provides.pa
 Patch3: rpm-4.6.0-fedora-specspo.patch
 
 # Patches already in upstream
+Patch200: rpm-4.7.1-abs-filelist.patch
+Patch201: rpm-4.7.1-debug-perms.patch
+Patch202: rpm-4.7.1-duplicate-deps.patch
+Patch203: rpm-4.7.1-chroot-env-paths.patch
+Patch204: rpm-4.7.1-rpm2cpio-init.patch
+Patch205: rpm-4.7.1-filedep-dnevr.patch
+Patch206: rpm-4.7.1-chroot-remove-env.patch
+Patch207: rpm-4.7.1-perl-heredoc.patch
 
 # These are not yet upstream
 Patch300: rpm-4.7.0-extra-provides.patch
@@ -184,6 +192,15 @@ that will manipulate RPM packages and da
 %patch2 -p1 -b .gstreamer-prov
 %patch3 -p1 -b .fedora-specspo
 
+%patch200 -p1 -b .abs-filelist
+%patch201 -p1 -b .debug-perms
+%patch202 -p1 -b .duplicate-deps
+%patch203 -p1 -b .chroot-env-paths
+%patch204 -p1 -b .rpm2cpio.init
+%patch205 -p1 -b .filedep-dnevr
+%patch206 -p1 -b .chroot-remove-env
+%patch207 -p1 -b .perl-heredoc
+
 %patch300 -p1 -b .extra-prov
 %patch301 -p1 -b .niagara
 
@@ -393,6 +410,16 @@ exit 0
 %doc doc/librpm/html/*
 
 %changelog
+* Thu Oct 08 2009 Panu Matilainen <pmatilai at redhat.com> - 4.7.1-3
+- use relative paths within db environment (related to #507309, #507309...)
+- remove db environment on close in chrooted operation (related to above)
+- initialize rpmlib earlier in rpm2cpio (#523260)
+- fix file dependency tag extension formatting (#523282)
+- fix duplicate dependency filtering on build (#490378)
+- permit absolute paths in file lists again (#521760)
+- use permissions 444 for all .debug files (#522194)
+- perl dep extractor heredoc parsing improvements (#524929)
+
 * Mon Jul 27 2009 Bill Nottingham <notting at redhat.com> - 4.7.1-2
 - bump release
 




More information about the fedora-extras-commits mailing list