[packages/rpm] - added rpm-double_check_unpackaged_subdirs patch (do a strict check when Bloom filter succeeds al

qboosh qboosh at pld-linux.org
Sun Oct 13 10:34:56 CEST 2013


commit 3a3e476fe0827a323ce07845970b327eebbc5488
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Oct 13 10:34:04 2013 +0200

    - added rpm-double_check_unpackaged_subdirs patch (do a strict check when Bloom filter succeeds
      also when checking for unpackaged subdirs)
    - disable silent-rules
    - release 3

 rpm-double_check_unpackaged_subdirs.patch | 46 ++++++++++++++++++++++++
 rpm.spec                                  | 59 ++++++++++++++++---------------
 2 files changed, 77 insertions(+), 28 deletions(-)
---
diff --git a/rpm.spec b/rpm.spec
index 6a9b8ed..358c353 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -50,7 +50,7 @@ Summary(ru.UTF-8):	Менеджер пакетов от RPM
 Summary(uk.UTF-8):	Менеджер пакетів від RPM
 Name:		rpm
 Version:	5.4.13
-Release:	2
+Release:	3
 License:	LGPL v2.1
 Group:		Base
 # http://rpm5.org/files/rpm/rpm-5.4/rpm-5.4.13-0.20130819.src.rpm
@@ -164,6 +164,7 @@ Patch74:	%{name}-fix-internal-lua-build.patch
 Patch75:	%{name}-double_check_file_deps.patch
 Patch76:	%{name}-revert-debugedit-breakage.patch
 Patch77:	%{name}-lua-expat.patch
+Patch78:	%{name}-double_check_unpackaged_subdirs.patch
 
 # Patches imported from Mandriva
 
@@ -910,6 +911,7 @@ Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze
 %patch75 -p1
 %patch76 -p0
 %patch77 -p0
+%patch78 -p1
 
 %patch1000 -p1
 %patch1001 -p1
@@ -1002,34 +1004,35 @@ sed -i \
 	CPP="%{__newcpp}" \
 	WITH_PERL_VERSION=no \
 	__GST_INSPECT=%{_bindir}/gst-inspect-1.0 \
+	--disable-silent-rules \
 	--enable-shared \
 	--enable-static \
 	%{!?with_apidocs:--without-apidocs} \
-	%{?with_python:--with-python=%{py_ver} --with-python-lib-dir=%{py_sitedir}} \
-	%{!?with_python:--without-python} \
-	--with-selinux=%{!?with_selinux:no}%{?with_selinux:external} \
-	--with-sepol=%{!?with_selinux:no}%{?with_selinux:external} \
-	--with-semanage=%{!?with_selinux:no}%{?with_selinux:external} \
-	--with-libelf \
-	--with-zlib=external \
-	--with-bzip2=external \
 	--with-beecrypt=external \
-	--with-lzma=external \
-	--with-xz=external \
-	--with-neon=%{?with_neon:external}%{!?with_neon:no} \
-	--with-file=external \
-	--with-popt=external \
+	--with-bugreport="http://bugs.pld-linux.org/" \
+	--with-bzip2=external \
 	--with-db=external \
 	--with-dbapi=db \
-	--with-sqlite=%{?with_sqlite:yes}%{!?with_sqlite:no} \
+	--with-file=external \
+	--with-keyutils=%{?with_keyutils:external}%{!?with_keyutils:no} \
+	--with-libelf \
 	--with-lua=%{!?with_system_lua:internal}%{?with_system_lua:external} \
+	--with-lzma=external \
+	--with-neon=%{?with_neon:external}%{!?with_neon:no} \
+	--with-path-macros='%{_rpmlibdir}/macros:%{_rpmlibdir}/%{_target}/macros:%{_rpmlibdir}/macros.d/pld:%{_rpmlibdir}/macros.build:%{_sysconfdir}/rpm/macros.*:%{_sysconfdir}/rpm/macros:%{_sysconfdir}/rpm/%{_target}/macros:%{_sysconfdir}/rpm/macros.d/*.macros:~/etc/.rpmmacros:~/.rpmmacros' \
+	--without-path-versioned \
 	--with-pcre=external \
-	--with-keyutils=%{?with_keyutils:external}%{!?with_keyutils:no} \
+	--with-popt=external \
+	%{?with_python:--with-python=%{py_ver} --with-python-lib-dir=%{py_sitedir}} \
+	%{!?with_python:--without-python} \
+	--with-selinux=%{!?with_selinux:no}%{?with_selinux:external} \
+	--with-semanage=%{!?with_selinux:no}%{?with_selinux:external} \
+	--with-sepol=%{!?with_selinux:no}%{?with_selinux:external} \
+	--with-sqlite=%{?with_sqlite:yes}%{!?with_sqlite:no} \
 	--with-uuid=%{_libdir}:%{_includedir}/ossp-uuid \
-	--without-path-versioned \
-	--with-path-macros='%{_rpmlibdir}/macros:%{_rpmlibdir}/%{_target}/macros:%{_rpmlibdir}/macros.d/pld:%{_rpmlibdir}/macros.build:%{_sysconfdir}/rpm/macros.*:%{_sysconfdir}/rpm/macros:%{_sysconfdir}/rpm/%{_target}/macros:%{_sysconfdir}/rpm/macros.d/*.macros:~/etc/.rpmmacros:~/.rpmmacros' \
-	--with-bugreport="http://bugs.pld-linux.org/" \
-	--with-vendor=pld
+	--with-vendor=pld \
+	--with-xz=external \
+	--with-zlib=external
 
 %{__make} -j1 \
 	CC="%{__cc}" \
@@ -1172,14 +1175,14 @@ sparc-[^-]*-[Ll]inux(-gnu)?
 noarch-[^-]*-.*
 EOF
 
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/vpkg-provides*
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{prov,req}.pl
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{provides,requires}.perl
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.a
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.la
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-provides
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-requires
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/vpkg-provides*
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-{prov,req}.pl
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-{provides,requires}.perl
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.a
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.la
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-provides
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-requires
 
 # not installed since 4.4.8 (-tools-perl subpackage)
 install scripts/rpmdiff scripts/rpmdiff.cgi $RPM_BUILD_ROOT%{_rpmlibdir}
diff --git a/rpm-double_check_unpackaged_subdirs.patch b/rpm-double_check_unpackaged_subdirs.patch
new file mode 100644
index 0000000..b83f7de
--- /dev/null
+++ b/rpm-double_check_unpackaged_subdirs.patch
@@ -0,0 +1,46 @@
+Let packagedDir do a strict check when Bloom filter returns true.
+Also, don't try to check dirs over buildroot to avoid wasting time
+for useless checks (note that before packagedDir() could succeed on
+some dir over buildroot, leading to log some junk, after the end of
+string shorter than buildrootL).
+
+--- rpm-5.4.13/build/files.c.orig	2013-10-04 21:31:18.840898688 +0200
++++ rpm-5.4.13/build/files.c	2013-10-13 09:09:23.406411763 +0200
+@@ -3032,12 +3032,26 @@
+ }
+ 
+ /* auxiliary function: check if directory d is packaged */
+-static inline int packagedDir(Package pkg, const char *d)
++static int packagedDir(Package pkg, const char *d)
+ 	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
+ 	/*@modifies pkg->header,
+ 		rpmGlobalMacroContext, fileSystem, internalState @*/
+ {
+-    return rpmbfChk(rpmfiFNBF(pkg->fi), d, strlen(d));
++    if(!rpmbfChk(rpmfiFNBF(pkg->fi), d, strlen(d)))
++	return 0;
++    char * fifn = (char *) xmalloc(pkg->fi->fnlen + 1);
++    rpmuint32_t j;
++    for(j = 0; j < pkg->fi->fc; j++) {
++	const char * dn = NULL;
++	(void) urlPath(pkg->fi->dnl[pkg->fi->dil[j]], &dn);
++	strcpy(stpcpy(fifn, dn), pkg->fi->bnl[j]);
++	if (!strcmp(d, fifn)) {
++	    free(fifn);
++	    return 1;
++	}
++    }
++    free(fifn);
++    return 0;
+ }
+ 
+ /* auxiliary function: find unpackaged subdirectories
+@@ -3076,6 +3090,8 @@
+ 	strcpy(fn, rpmfiFN(fi));
+ 	/* find the first path component that is packaged */
+ 	while ((p = strchr(p + 1, '/'))) {
++	    if (p - fn < buildrootL)
++		continue; /* don't try to check components over buildroot */
+ 	    *p = '\0';
+ 	    found = packagedDir(pkg, fn);
+ 	    *p = '/';
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/3a3e476fe0827a323ce07845970b327eebbc5488



More information about the pld-cvs-commit mailing list