From ae9bea02d8bcb01f17e1d91e441d7553cebb4e48 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 20 Mar 2012 11:55:51 +0200 Subject: [PATCH] - update to pre-4.10 upstream snapshot - drop/adjust patches as necessary --- .gitignore | 1 + rpm-4.8.0-no-man-dirs.patch | 13 --- rpm-4.9.0-debuginfo-allnames.patch | 55 ----------- rpm-4.9.1.2-perl-python-attr.patch | 35 ------- rpm-4.9.1.2-perl-script.patch | 12 --- ....0-armhfp.patch => rpm-4.9.90-armhfp.patch | 12 --- ...o.patch => rpm-4.9.90-fedora-specspo.patch | 2 +- rpm-4.9.90-no-man-dirs.patch | 12 +++ rpm-4.9.x-debugedit-stabs-warn.patch | 13 --- rpm-4.9.x-elfattr.patch | 16 --- rpm-4.9.x-exclude-warn.patch | 59 ----------- rpm-4.9.x-fontattr.patch | 15 --- rpm-4.9.x-gnome-help.patch | 19 ---- rpm-4.9.x-include-cond.patch | 21 ---- rpm-4.9.x-mpsize.patch | 28 ------ rpm-4.9.x-python-memleaks.patch | 66 ------------- rpm-4.9.x-rpmdb-dsi.patch | 98 ------------------- rpm-4.9.x-tstest-fileinfo.patch | 43 -------- rpm-4.9.x-verify-output.patch | 62 ------------ rpm.spec | 53 +++------- sources | 2 +- 21 files changed, 28 insertions(+), 609 deletions(-) delete mode 100644 rpm-4.8.0-no-man-dirs.patch delete mode 100644 rpm-4.9.0-debuginfo-allnames.patch delete mode 100644 rpm-4.9.1.2-perl-python-attr.patch delete mode 100644 rpm-4.9.1.2-perl-script.patch rename rpm-4.9.0-armhfp.patch => rpm-4.9.90-armhfp.patch (64%) rename rpm-4.8.90-fedora-specspo.patch => rpm-4.9.90-fedora-specspo.patch (98%) create mode 100644 rpm-4.9.90-no-man-dirs.patch delete mode 100644 rpm-4.9.x-debugedit-stabs-warn.patch delete mode 100644 rpm-4.9.x-elfattr.patch delete mode 100644 rpm-4.9.x-exclude-warn.patch delete mode 100644 rpm-4.9.x-fontattr.patch delete mode 100644 rpm-4.9.x-gnome-help.patch delete mode 100644 rpm-4.9.x-include-cond.patch delete mode 100644 rpm-4.9.x-mpsize.patch delete mode 100644 rpm-4.9.x-python-memleaks.patch delete mode 100644 rpm-4.9.x-rpmdb-dsi.patch delete mode 100644 rpm-4.9.x-tstest-fileinfo.patch delete mode 100644 rpm-4.9.x-verify-output.patch diff --git a/.gitignore b/.gitignore index 568136d..d757575 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ rpm-4.8.1.tar.bz2 /rpm-4.9.1.tar.bz2 /rpm-4.9.1.1.tar.bz2 /rpm-4.9.1.2.tar.bz2 +/rpm-4.9.90.git11505.tar.bz2 diff --git a/rpm-4.8.0-no-man-dirs.patch b/rpm-4.8.0-no-man-dirs.patch deleted file mode 100644 index 8539ac2..0000000 --- a/rpm-4.8.0-no-man-dirs.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/scripts/find-lang.sh b/scripts/find-lang.sh -index bb25b31..e4a22db 100755 ---- a/scripts/find-lang.sh -+++ b/scripts/find-lang.sh -@@ -173,7 +173,7 @@ s:%lang(C) :: - find $TOP_DIR -type d|sed ' - s:'"$TOP_DIR"':: - '"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\):: --'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*: -+'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1/*: - s:^\([^%].*\):: - s:%lang(C) :: - /^$/d' >> $MO_NAME diff --git a/rpm-4.9.0-debuginfo-allnames.patch b/rpm-4.9.0-debuginfo-allnames.patch deleted file mode 100644 index 125c85c..0000000 --- a/rpm-4.9.0-debuginfo-allnames.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- rpm-4.9.0/scripts/find-debuginfo.sh 2011-02-19 07:57:21.000000000 +0100 -+++ rpm-4.9.0/scripts/find-debuginfo.sh.orig 2011-02-19 08:50:23.000000000 +0100 -@@ -127,6 +127,23 @@ debug_link() - link_relative "$t" "$l" "$RPM_BUILD_ROOT" - } - -+# Provide .2, .3, ... symlinks to all filename instances of this build-id. -+make_id_dup_link() -+{ -+ local id="$1" file="$2" idfile -+ -+ local n=1 -+ while true; do -+ idfile=".build-id/${id:0:2}/${id:2}.$n" -+ [ $# -eq 3 ] && idfile="${idfile}$3" -+ if [ ! -L "$RPM_BUILD_ROOT/usr/lib/debug/$idfile" ]; then -+ break -+ fi -+ n=$[$n+1] -+ done -+ debug_link "$file" "/$idfile" -+} -+ - # Make a build-id symlink for id $1 with suffix $3 to file $2. - make_id_link() - { -@@ -140,6 +157,8 @@ make_id_link() - return - fi - -+ make_id_dup_link "$@" -+ - [ $# -eq 3 ] && return 0 - - local other=$(readlink -m "$root_idfile") -@@ -188,6 +207,9 @@ while read nlinks inum f; do - if [ $nlinks -gt 1 ]; then - eval linked=\$linked_$inum - if [ -n "$linked" ]; then -+ eval id=\$linkedid_$inum -+ make_id_dup_link "$id" "$dn/$(basename $f)" -+ make_id_dup_link "$id" "/usr/lib/debug$dn/$bn" .debug - link=$debugfn - get_debugfn "$linked" - echo "hard linked $link to $debugfn" -@@ -202,6 +224,9 @@ while read nlinks inum f; do - echo "extracting debug info from $f" - id=$(/usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug \ - -i -l "$SOURCEFILE" "$f") || exit -+ if [ $nlinks -gt 1 ]; then -+ eval linkedid_$inum=\$id -+ fi - if [ -z "$id" ]; then - echo >&2 "*** ${strict_error}: No build ID note found in $f" - $strict && exit 2 diff --git a/rpm-4.9.1.2-perl-python-attr.patch b/rpm-4.9.1.2-perl-python-attr.patch deleted file mode 100644 index b0221cb..0000000 --- a/rpm-4.9.1.2-perl-python-attr.patch +++ /dev/null @@ -1,35 +0,0 @@ -commit 9ddcc23d2b7ecaf5336530dbe37195b0057d0396 -Author: Ville Skyttä -Date: Tue Jan 10 10:48:13 2012 +0200 - - Adapt perl and python fileattrs to file 5.10 magics - - - file 5.10 has changed magics at least for perl and python scripts, samples: - - 5.09: a /usr/bin/perl -w script, ASCII text executable, with very long lines - 5.10: Perl script, ASCII text executable, with very long lines - - 5.09: a /usr/bin/python script, ASCII text executable - 5.10: Python script, ASCII text executable - - Signed-off-by: Panu Matilainen - -diff --git a/fileattrs/perl.attr b/fileattrs/perl.attr -index 23b873f..0daef58 100644 ---- a/fileattrs/perl.attr -+++ b/fileattrs/perl.attr -@@ -1,3 +1,3 @@ - %__perl_requires %{_rpmconfigdir}/perl.req --%__perl_magic ^.*perl .*$ -+%__perl_magic ^.*[Pp]erl .*$ - %__perl_flags exeonly -diff --git a/fileattrs/python.attr b/fileattrs/python.attr -index 5b48f75..4eaad76 100644 ---- a/fileattrs/python.attr -+++ b/fileattrs/python.attr -@@ -1,4 +1,4 @@ - %__python_provides %{_rpmconfigdir}/pythondeps.sh --provides - %__python_requires %{_rpmconfigdir}/pythondeps.sh --requires - %__python_path ^((/usr/lib(64)?/python[[:digit:]]\\.[[:digit:]]/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]\\.[[:digit:]]))$ --%__python_magic ^python.*(executable|byte-compiled)$ -+%__python_magic ^[Pp]ython.*(executable|byte-compiled)$ diff --git a/rpm-4.9.1.2-perl-script.patch b/rpm-4.9.1.2-perl-script.patch deleted file mode 100644 index 90178ff..0000000 --- a/rpm-4.9.1.2-perl-script.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/build/rpmfc.c b/build/rpmfc.c -index 60ab0e3..5b6ddb5 100644 ---- a/build/rpmfc.c -+++ b/build/rpmfc.c -@@ -557,6 +557,7 @@ static const struct rpmfcTokens_s rpmfcTokens[] = { - - { "perl ", RPMFC_INCLUDE }, - { "Perl5 module source text", RPMFC_INCLUDE }, -+ { "Perl script", RPMFC_INCLUDE }, - { "python ", RPMFC_INCLUDE }, - - { "libtool library ", RPMFC_INCLUDE }, diff --git a/rpm-4.9.0-armhfp.patch b/rpm-4.9.90-armhfp.patch similarity index 64% rename from rpm-4.9.0-armhfp.patch rename to rpm-4.9.90-armhfp.patch index 03f171b..95b452e 100644 --- a/rpm-4.9.0-armhfp.patch +++ b/rpm-4.9.90-armhfp.patch @@ -1,15 +1,3 @@ -diff -uNr rpm-4.9.0-orig//installplatform rpm-4.9.0/installplatform ---- rpm-4.9.0-orig//installplatform 2010-12-03 06:11:57.000000000 -0600 -+++ rpm-4.9.0/installplatform 2011-08-05 12:25:13.000000000 -0500 -@@ -19,7 +19,7 @@ - case "$arch" in - i[3456]86|pentium[34]|athlon|geode) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_pentium3_ s_i386_pentium4_ s_i386_athlon_ s_i386_geode_' ;; - alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;; -- arm*) SUBSTS='s_arm_arm_ s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_ s_arm_armv7l_' ;; -+ arm*) SUBSTS='s_arm_arm_ s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_ s_arm_armv7l_ s_arm_armv7hl_ s_arm_armv7hnl_' ;; - sh4*) SUBSTS='s_sh4_sh4_ s_sh4_sh4a_' ;; - sparc*) SUBSTS='s_sparc\(64\|64v\|v9v\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;; - powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;; diff -uNr rpm-4.9.0-orig//macros.in rpm-4.9.0/macros.in --- rpm-4.9.0-orig//macros.in 2011-08-05 12:23:04.000000000 -0500 +++ rpm-4.9.0/macros.in 2011-08-05 12:25:13.000000000 -0500 diff --git a/rpm-4.8.90-fedora-specspo.patch b/rpm-4.9.90-fedora-specspo.patch similarity index 98% rename from rpm-4.8.90-fedora-specspo.patch rename to rpm-4.9.90-fedora-specspo.patch index 6920e75..61394cf 100644 --- a/rpm-4.8.90-fedora-specspo.patch +++ b/rpm-4.9.90-fedora-specspo.patch @@ -69,7 +69,7 @@ index dc0e0fb..e0a5d1f 100644 + free(dstring); } - -- dstring = _free(dstring); +- free(dstring); #endif - rc = headerGet(h, tag, td, HEADERGET_ALLOC); diff --git a/rpm-4.9.90-no-man-dirs.patch b/rpm-4.9.90-no-man-dirs.patch new file mode 100644 index 0000000..04f276a --- /dev/null +++ b/rpm-4.9.90-no-man-dirs.patch @@ -0,0 +1,12 @@ +diff -up rpm-4.9.90.git11486/scripts/find-lang.sh.no-man-dirs rpm-4.9.90.git11486/scripts/find-lang.sh +--- rpm-4.9.90.git11486/scripts/find-lang.sh.no-man-dirs 2012-03-07 11:31:10.000000000 +0200 ++++ rpm-4.9.90.git11486/scripts/find-lang.sh 2012-03-07 15:11:57.465801075 +0200 +@@ -181,7 +181,7 @@ s:%lang(C) :: + find "$TOP_DIR" -type d|sed ' + s:'"$TOP_DIR"':: + '"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\):: +-'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*: ++'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1/*: + s:^\([^%].*\):: + s:%lang(C) :: + /^$/d' >> $MO_NAME diff --git a/rpm-4.9.x-debugedit-stabs-warn.patch b/rpm-4.9.x-debugedit-stabs-warn.patch deleted file mode 100644 index c4eba81..0000000 --- a/rpm-4.9.x-debugedit-stabs-warn.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/tools/debugedit.c b/tools/debugedit.c -index 89d0428..dc424d3 100644 ---- a/tools/debugedit.c -+++ b/tools/debugedit.c -@@ -1586,7 +1586,7 @@ main (int argc, char *argv[]) - if (strcmp (name, ".stab") == 0) - { - fprintf (stderr, "Stabs debuginfo not supported: %s\n", file); -- exit (1); -+ break; - } - if (strcmp (name, ".debug_info") == 0) - edit_dwarf2 (dso); diff --git a/rpm-4.9.x-elfattr.patch b/rpm-4.9.x-elfattr.patch deleted file mode 100644 index 7d6ed4f..0000000 --- a/rpm-4.9.x-elfattr.patch +++ /dev/null @@ -1,16 +0,0 @@ -commit 87d9e3c4adac92ff544440dd1239a4ae4fe05bb4 -Author: Panu Matilainen -Date: Mon Nov 28 14:00:45 2011 +0200 - - Fix classification of ELF binaries with setuid/setgid bit, oops... - -diff --git a/fileattrs/elf.attr b/fileattrs/elf.attr -index bc6ce83..595b33e 100644 ---- a/fileattrs/elf.attr -+++ b/fileattrs/elf.attr -@@ -1,4 +1,4 @@ - %__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private} - %__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private} --%__elf_magic ^(sticky )?ELF (32|64)-bit.*$ -+%__elf_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*$ - %__elf_flags exeonly diff --git a/rpm-4.9.x-exclude-warn.patch b/rpm-4.9.x-exclude-warn.patch deleted file mode 100644 index 3a299b4..0000000 --- a/rpm-4.9.x-exclude-warn.patch +++ /dev/null @@ -1,59 +0,0 @@ -commit cce686b2129e4e8dc27f1a640f7c4746f9ffb032 -Author: Panu Matilainen -Date: Sun Oct 23 13:59:46 2011 +0300 - - Warn but don't fail the build on missing excluded files (RhBug:745629) - - - If a file/directory is not to be packaged, there's not a whole lot - point making the build fail if its missing. In case exclude is - used to leave certain files to sub-packages, the sub-package file - lists will catch out missing files that are really missing as a - result of actual build failure or such (except perhaps for some - glob cases but missing files can go unnoticed in those cases anyway) - - backported from commit 084a00bf51a941ec85c094a436bda401fccf7d3a - -diff --git a/build/files.c b/build/files.c -index e0747f8..a520410 100644 ---- a/build/files.c -+++ b/build/files.c -@@ -1393,12 +1393,19 @@ static rpmRC addFile(FileList fl, const char * diskPath, - statp->st_mtime = now; - statp->st_ctime = now; - } else { -+ int rc = RPMRC_FAIL; -+ int lvl = RPMLOG_ERR; - const char *msg = fl->isDir ? - _("Directory not found: %s\n") : - _("File not found: %s\n"); -- rpmlog(RPMLOG_ERR, msg, diskPath); -- fl->processingFailed = 1; -- return RPMRC_FAIL; -+ if (fl->currentFlags & RPMFILE_EXCLUDE) { -+ lvl = RPMLOG_WARNING; -+ rc = RPMRC_OK; -+ } else { -+ fl->processingFailed = 1; -+ } -+ rpmlog(lvl, msg, diskPath); -+ return rc; - } - } - } -@@ -1702,11 +1707,15 @@ static rpmRC processBinaryFile(Package pkg, FileList fl, const char * fileName) - } - argvFree(argv); - } else { -+ int lvl = RPMLOG_WARNING; - const char *msg = (fl->isDir) ? - _("Directory not found by glob: %s\n") : - _("File not found by glob: %s\n"); -- rpmlog(RPMLOG_ERR, msg, diskPath); -- rc = RPMRC_FAIL; -+ if (!(fl->currentFlags & RPMFILE_EXCLUDE)) { -+ lvl = RPMLOG_ERR; -+ rc = RPMRC_FAIL; -+ } -+ rpmlog(lvl, msg, diskPath); - goto exit; - } - } else { diff --git a/rpm-4.9.x-fontattr.patch b/rpm-4.9.x-fontattr.patch deleted file mode 100644 index efc8d97..0000000 --- a/rpm-4.9.x-fontattr.patch +++ /dev/null @@ -1,15 +0,0 @@ -commit fb30c0aac8b3da8c75a8cb1578a719ce38db59eb -Author: Panu Matilainen -Date: Fri Nov 25 16:07:38 2011 +0200 - - Identify "font collection" (data etc) as fonts also (RhBug:757105) - -diff --git a/fileattrs/font.attr b/fileattrs/font.attr -index 5c4c78f..8c19383 100644 ---- a/fileattrs/font.attr -+++ b/fileattrs/font.attr -@@ -1,3 +1,3 @@ - %__font_provides %{_rpmconfigdir}/fontconfig.prov - %__font_requires %{nil} --%__font_magic ^.* [Ff]ont (program )?(text|data).*$ -+%__font_magic ^.* [Ff]ont (program|collection )?(text|data).*$ diff --git a/rpm-4.9.x-gnome-help.patch b/rpm-4.9.x-gnome-help.patch deleted file mode 100644 index 50527ad..0000000 --- a/rpm-4.9.x-gnome-help.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/scripts/find-lang.sh b/scripts/find-lang.sh -index c3dbdbe..c8f4612 100755 ---- a/scripts/find-lang.sh -+++ b/scripts/find-lang.sh -@@ -107,6 +107,14 @@ s:%lang(C) :: - - find $TOP_DIR -type d|sed ' - s:'"$TOP_DIR"':: -+'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\(/'"$NAME"'\)$:%lang(\2) %doc \1\2\3/: -+'"$ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\(/[a-zA-Z0-9.\_\-]\+\)$:%lang(\2) %doc \1\2\3/: -+s:^\([^%].*\):: -+s:%lang(C) :: -+/^$/d' >> $MO_NAME -+ -+find "$TOP_DIR" -type d|sed ' -+s:'"$TOP_DIR"':: - '"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir \1: - '"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\):: - '"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) \1\2: diff --git a/rpm-4.9.x-include-cond.patch b/rpm-4.9.x-include-cond.patch deleted file mode 100644 index 50be6f3..0000000 --- a/rpm-4.9.x-include-cond.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit bf92b843fabd6c9881b19efb0cae1578d16e4f7b -Author: Panu Matilainen -Date: Tue Feb 28 12:18:10 2012 +0200 - - Don't process spec %include in false branch of %if clauses (RhBug:782970) - (backported from commit 9defc922e971d98203890f1557ab951ec94f2a3f) - -diff --git a/build/parseSpec.c b/build/parseSpec.c -index 01620bd..01c3c08 100644 ---- a/build/parseSpec.c -+++ b/build/parseSpec.c -@@ -374,7 +374,8 @@ int readLine(rpmSpec spec, int strip) - spec->readStack = spec->readStack->next; - free(rl); - spec->line[0] = '\0'; -- } else if (rstreqn("%include", s, sizeof("%include")-1)) { -+ } else if (spec->readStack->reading && -+ rstreqn("%include", s, sizeof("%include")-1)) { - char *fileName, *endFileName, *p; - - s += 8; diff --git a/rpm-4.9.x-mpsize.patch b/rpm-4.9.x-mpsize.patch deleted file mode 100644 index b18688f..0000000 --- a/rpm-4.9.x-mpsize.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit d8cd36058b528f56bd579204426143be1e1eac6d -Author: Panu Matilainen -Date: Wed Feb 8 10:56:09 2012 +0200 - - Switch back to former, much smaller BDB memory pool size (RhBug:752897) - - - A larger cache is beneficial in various scenarios, but triggers - horrible worst-case performance under memory pressure (or so my - current theory goes, there might be other factors too). The - worst-case degration is orders of magnitude bigger than the best-case - improvements from the larger cache and for many use-cases doesn't - make a whole lot difference. We could/should tune the cache with - priorizing indexes and all, and perhaps dynamically select the - cache size but for now, the 1Mb cache size is known to "just work". - -diff --git a/macros.in b/macros.in -index f835fec..6034721 100644 ---- a/macros.in -+++ b/macros.in -@@ -535,7 +535,7 @@ print (t)\ - # - - # Misc BDB tuning options --%__dbi_other mp_mmapsize=128Mb mp_size=64Mb -+%__dbi_other mp_mmapsize=128Mb mp_size=1Mb - - %_dbi_config %{?__dbi_other} - diff --git a/rpm-4.9.x-python-memleaks.patch b/rpm-4.9.x-python-memleaks.patch deleted file mode 100644 index 795294a..0000000 --- a/rpm-4.9.x-python-memleaks.patch +++ /dev/null @@ -1,66 +0,0 @@ -commit 59807943af5c10c892b239f11b8fafb209254a4a -Author: David Malcolm -Date: Thu Dec 15 22:22:56 2011 -0500 - - fix memory leaks in invocations of PyObject_Call - - - Various functions in the Python bindings have expressions of the form: - - PyObject_Call(callable, - Py_BuildValue(fmtstring, ...), NULL); - - This leaks memory for the case when Py_BuildValue succeeds (it returns a - new reference, which is never freed; PyObject_Call doesn't steal the - reference): the argument tuple and all of its components will not be - freed (until the process exits). - - Signed-off-by: Ales Kozumplik - -diff --git a/python/header-py.c b/python/header-py.c -index 96cf200..cef457b 100644 ---- a/python/header-py.c -+++ b/python/header-py.c -@@ -295,8 +295,7 @@ static PyObject * hdrWrite(hdrObject *s, PyObject *args, PyObject *kwds) - */ - static PyObject * hdr_fiFromHeader(PyObject * s, PyObject * args, PyObject * kwds) - { -- return PyObject_Call((PyObject *) &rpmfi_Type, -- Py_BuildValue("(O)", s), NULL); -+ return PyObject_CallFunctionObjArgs((PyObject *) &rpmfi_Type, s, NULL); - } - - /* Backwards compatibility. Flags argument is just a dummy and discarded. */ -@@ -309,14 +308,14 @@ static PyObject * hdr_dsFromHeader(PyObject * s, PyObject * args, PyObject * kwd - tagNumFromPyObject, &tag, &flags)) - return NULL; - -- return PyObject_Call((PyObject *) &rpmds_Type, -- Py_BuildValue("(Oi)", s, tag), NULL); -+ return PyObject_CallFunction((PyObject *) &rpmds_Type, -+ "(Oi)", s, tag); - } - - static PyObject * hdr_dsOfHeader(PyObject * s) - { -- return PyObject_Call((PyObject *) &rpmds_Type, -- Py_BuildValue("(Oi)", s, RPMTAG_NEVR), NULL); -+ return PyObject_CallFunction((PyObject *) &rpmds_Type, -+ "(Oi)", s, RPMTAG_NEVR); - } - - static long hdr_hash(PyObject * h) -diff --git a/python/rpmfd-py.c b/python/rpmfd-py.c -index 89a70cd..1150aa1 100644 ---- a/python/rpmfd-py.c -+++ b/python/rpmfd-py.c -@@ -23,8 +23,8 @@ int rpmfdFromPyObject(PyObject *obj, rpmfdObject **fdop) - Py_INCREF(obj); - fdo = (rpmfdObject *) obj; - } else { -- fdo = (rpmfdObject *) PyObject_Call((PyObject *)&rpmfd_Type, -- Py_BuildValue("(O)", obj), NULL); -+ fdo = (rpmfdObject *) PyObject_CallFunctionObjArgs((PyObject *)&rpmfd_Type, -+ obj, NULL); - } - if (fdo == NULL) return 0; - diff --git a/rpm-4.9.x-rpmdb-dsi.patch b/rpm-4.9.x-rpmdb-dsi.patch deleted file mode 100644 index 8157a86..0000000 --- a/rpm-4.9.x-rpmdb-dsi.patch +++ /dev/null @@ -1,98 +0,0 @@ -diff --git a/lib/transaction.c b/lib/transaction.c -index 7adf60b..5acc08e 100644 ---- a/lib/transaction.c -+++ b/lib/transaction.c -@@ -227,46 +227,12 @@ static void rpmtsUpdateDSI(const rpmts ts, dev_t dev, const char *dirName, - if (dsi->ineeded < dsi->oineeded) dsi->oineeded = dsi->ineeded; - } - --/* return DSI of the device the rpmdb lives on */ --static rpmDiskSpaceInfo rpmtsDbDSI(const rpmts ts) { -- const char *dbhome = rpmdbHome(rpmtsGetRdb(ts)); -- struct stat sb; -- int rc; -- -- rc = stat(dbhome, &sb); -- if (rc) { -- return NULL; -- } -- return rpmtsGetDSI(ts, sb.st_dev, dbhome); --} -- --/* Update DSI for changing size of the rpmdb */ --static void rpmtsUpdateDSIrpmDBSize(const rpmte p, -- rpmDiskSpaceInfo dsi) { -- rpm_loff_t headerSize; -- int64_t bneeded; -- -- /* XXX somehow we can end up here with bsize 0 (RhBug:671056) */ -- if (dsi == NULL || dsi->bsize == 0) return; -- -- headerSize = rpmteHeaderSize(p); -- bneeded = BLOCK_ROUND(headerSize, dsi->bsize); -- /* REMOVE doesn't neccessarily shrink the database */ -- if (rpmteType(p) == TR_ADDED) { -- /* guessing that db grows 4 times more than the header size */ -- dsi->bneeded += (bneeded * 4); -- } --} -- -- - static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te) - { - rpmDiskSpaceInfo dsi = ts->dsi; - - if (dsi == NULL || !dsi->bsize) - return; -- if (rpmfiFC(rpmteFI(te)) <= 0) -- return; - - for (; dsi->bsize; dsi++) { - -@@ -1294,11 +1260,12 @@ static int rpmtsPrepare(rpmts ts) - rpmfi fi; - int rc = 0; - uint64_t fileCount = countFiles(ts); -+ const char *dbhome = NULL; -+ struct stat dbstat; - - fingerPrintCache fpc = fpCacheCreate(fileCount/2 + 10001); - rpmFpHash ht = rpmFpHashCreate(fileCount/2+1, fpHashFunction, fpEqual, - NULL, NULL); -- rpmDiskSpaceInfo dsi; - - rpmlog(RPMLOG_DEBUG, "computing %" PRIu64 " file fingerprints\n", fileCount); - -@@ -1326,7 +1293,10 @@ static int rpmtsPrepare(rpmts ts) - /* check against files in the rpmdb */ - checkInstalledFiles(ts, fileCount, ht, fpc); - -- dsi = rpmtsDbDSI(ts); -+ dbhome = rpmdbHome(rpmtsGetRdb(ts)); -+ /* If we can't stat, ignore db growth. Probably not right but... */ -+ if (dbhome && stat(dbhome, &dbstat)) -+ dbhome = NULL; - - pi = rpmtsiInit(ts); - while ((p = rpmtsiNext(pi, 0)) != NULL) { -@@ -1338,10 +1308,18 @@ static int rpmtsPrepare(rpmts ts) - needs on each partition for this package. */ - handleOverlappedFiles(ts, ht, p, fi); - -- rpmtsUpdateDSIrpmDBSize(p, dsi); -- - /* Check added package has sufficient space on each partition used. */ - if (rpmteType(p) == TR_ADDED) { -+ /* -+ * Try to estimate space needed for rpmdb growth: guess that the -+ * db grows 4 times the header size (indexes and all). -+ */ -+ if (dbhome) { -+ int64_t hsize = rpmteHeaderSize(p) * 4; -+ rpmtsUpdateDSI(ts, dbstat.st_dev, dbhome, -+ hsize, 0, 0, FA_CREATE); -+ } -+ - rpmtsCheckDSIProblems(ts, p); - } - (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), 0); diff --git a/rpm-4.9.x-tstest-fileinfo.patch b/rpm-4.9.x-tstest-fileinfo.patch deleted file mode 100644 index 60250d4..0000000 --- a/rpm-4.9.x-tstest-fileinfo.patch +++ /dev/null @@ -1,43 +0,0 @@ -commit 7d88d5e54a9c3fa2b7fb443921c8adb799051784 -Author: Panu Matilainen -Date: Wed Feb 1 17:48:20 2012 +0200 - - Don't free up file info sets on transaction test-runs - - - We'd like to get rid of the potentially huge amounts of memory - eaten by file info sets as early as possible, but when there's a - chance that we'll get called again with either added transacation - elements or on-disk changes, such as %pretrans changing something - underneath us, we need to (be able to) recalculate everything - from scratch. Only free up the memory when we know we dont need - it anymore, ie on an actual transaction run. - - This doesn't change anything for rpm itself, for yum and others - which do a separate test-transaction first, it means %pretrans - directory<->symlink replacement hacks and the like have a chance - of working again. I'm sure there's a bug filed on this somewhere but... - (cherry picked from commit cef18c94807af0935b7796c462aab8ed39f0f376) - -diff --git a/lib/transaction.c b/lib/transaction.c -index 56ebc17..8d29ab9 100644 ---- a/lib/transaction.c -+++ b/lib/transaction.c -@@ -1355,12 +1355,14 @@ static int rpmtsPrepare(rpmts ts) - if (rpmChrootOut()) - rc = -1; - -- /* File info sets, fp caches etc not needed beyond here, free 'em up. */ -- pi = rpmtsiInit(ts); -- while ((p = rpmtsiNext(pi, 0)) != NULL) { -- rpmteSetFI(p, NULL); -+ /* On actual transaction, file info sets are not needed after this */ -+ if (!(rpmtsFlags(ts) & (RPMTRANS_FLAG_TEST|RPMTRANS_FLAG_BUILD_PROBS))) { -+ pi = rpmtsiInit(ts); -+ while ((p = rpmtsiNext(pi, 0)) != NULL) { -+ rpmteSetFI(p, NULL); -+ } -+ rpmtsiFree(pi); - } -- pi = rpmtsiFree(pi); - - exit: - ht = rpmFpHashFree(ht); diff --git a/rpm-4.9.x-verify-output.patch b/rpm-4.9.x-verify-output.patch deleted file mode 100644 index c70a04b..0000000 --- a/rpm-4.9.x-verify-output.patch +++ /dev/null @@ -1,62 +0,0 @@ -commit 4e207bfdfce434a6484babc14fe86aeadeec5329 -Author: Panu Matilainen -Date: Tue Feb 28 10:31:28 2012 +0200 - - Unbreak rpm -V output (RhBug:797964) - - - Commit ac0ab016a5ec31e65eb0c0910a5a6f1199aae3e7 unintentionally - changed the order of the problems shown in verify strings due to - a dumb oversight (greetings to self, duh). In other words, this - fixes a verify output regression in rpm >= 4.9.x by restoring - the long-standing (and documented) order of the verify output chars. - - Also fix the testcase which unfortunately was only added after - the output-changing commit so it didn't catch the breakage either :-/ - -diff --git a/lib/verify.c b/lib/verify.c -index 35612fe..1edb27f 100644 ---- a/lib/verify.c -+++ b/lib/verify.c -@@ -292,14 +292,14 @@ char * rpmVerifyString(uint32_t verifyResult, const char *pad) - { - char *fmt = NULL; - rasprintf(&fmt, "%s%s%s%s%s%s%s%s%s", -- _verifyfile(RPMVERIFY_FILEDIGEST, "5", pad), - _verify(RPMVERIFY_FILESIZE, "S", pad), -- _verifylink(RPMVERIFY_LINKTO, "L", pad), -- _verify(RPMVERIFY_MTIME, "T", pad), -+ _verify(RPMVERIFY_MODE, "M", pad), -+ _verifyfile(RPMVERIFY_FILEDIGEST, "5", pad), - _verify(RPMVERIFY_RDEV, "D", pad), -+ _verifylink(RPMVERIFY_LINKTO, "L", pad), - _verify(RPMVERIFY_USER, "U", pad), - _verify(RPMVERIFY_GROUP, "G", pad), -- _verify(RPMVERIFY_MODE, "M", pad), -+ _verify(RPMVERIFY_MTIME, "T", pad), - _verify(RPMVERIFY_CAPS, "P", pad)); - - return fmt; -diff --git a/tests/rpmverify.at b/tests/rpmverify.at -index dd23a4a..77d6bfe 100644 ---- a/tests/rpmverify.at -+++ b/tests/rpmverify.at -@@ -79,7 +79,7 @@ dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \ - runroot rpm -Va --nodeps --nouser --nogroup - ], - [1], --[5..T...M. /usr/local/bin/hello -+[.M5....T. /usr/local/bin/hello - missing d /usr/share/doc/hello-1.0/FAQ - ], - []) -diff -up rpm-4.9.1.2/tests/rpmtests.verify-output rpm-4.9.1.2/tests/rpmtests ---- rpm-4.9.1.2/tests/rpmtests.verify-output 2012-03-07 12:20:31.889830559 +0200 -+++ rpm-4.9.1.2/tests/rpmtests 2012-03-07 12:21:01.651753987 +0200 -@@ -3619,7 +3619,7 @@ runroot rpm -Va --nodeps --nouser --nogr - at_status=$? at_failed=false - $at_check_filter - at_fn_diff_devnull "$at_stderr" || at_failed=: --echo >>"$at_stdout"; $as_echo "5..T...M. /usr/local/bin/hello -+echo >>"$at_stdout"; $as_echo ".M5....T. /usr/local/bin/hello - missing d /usr/share/doc/hello-1.0/FAQ - " | \ - $at_diff - "$at_stdout" || at_failed=: diff --git a/rpm.spec b/rpm.spec index fe92207..41f5c93 100644 --- a/rpm.spec +++ b/rpm.spec @@ -11,8 +11,9 @@ %define rpmhome /usr/lib/rpm -%define rpmver 4.9.1.2 -%define srcver %{rpmver}%{?snapver:-%{snapver}} +%define rpmver 4.9.90 +%define snapver git11505 +%define srcver %{rpmver}%{?snapver:.%{snapver}} %define bdbname libdb %define bdbver 5.2.36 @@ -21,10 +22,10 @@ Summary: The RPM package management system Name: rpm Version: %{rpmver} -Release: %{?snapver:0.%{snapver}.}14%{?dist} +Release: %{?snapver:0.%{snapver}.}1%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ -Source0: http://rpm.org/releases/rpm-4.9.x/%{name}-%{srcver}.tar.bz2 +Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2 %if %{with int_bdb} Source1: db-%{bdbver}.tar.gz %endif @@ -33,42 +34,24 @@ Source10: libsymlink.attr Patch1: rpm-4.5.90-pkgconfig-path.patch # Fedora specspo is setup differently than what rpm expects, considering # this as Fedora-specific patch for now -Patch2: rpm-4.8.90-fedora-specspo.patch +Patch2: rpm-4.9.90-fedora-specspo.patch # In current Fedora, man-pages pkg owns all the localized man directories -Patch3: rpm-4.8.0-no-man-dirs.patch +Patch3: rpm-4.9.90-no-man-dirs.patch # gnupg2 comes installed by default, avoid need to drag in gnupg too Patch4: rpm-4.8.1-use-gpg2.patch -Patch5: rpm-4.9.0-armhfp.patch +Patch5: rpm-4.9.90-armhfp.patch #conditionally applied patch for arm hardware floating point Patch6: rpm-4.9.0-armhfp-logic.patch # Patches already in upstream -Patch100: rpm-4.9.x-fontattr.patch -Patch101: rpm-4.9.x-elfattr.patch -Patch102: rpm-4.9.1.2-perl-python-attr.patch -Patch103: rpm-4.9.x-mpsize.patch -Patch104: rpm-4.9.x-rpmdb-dsi.patch -Patch105: rpm-4.9.x-python-memleaks.patch -Patch106: rpm-4.9.x-verify-output.patch -Patch107: rpm-4.9.x-include-cond.patch -Patch108: rpm-4.9.x-exclude-warn.patch -Patch109: rpm-4.9.x-tstest-fileinfo.patch # These are not yet upstream Patch301: rpm-4.6.0-niagara.patch Patch302: rpm-4.7.1-geode-i686.patch -# To be upstreamed after rawhide-testdrive (#641377) -Patch303: rpm-4.9.0-debuginfo-allnames.patch # Probably to be upstreamed in slightly different form Patch304: rpm-4.9.1.1-ld-flags.patch -# Based on patch from OpenSUSE, without the C-lang related enhancements -Patch305: rpm-4.9.x-gnome-help.patch -# Just warn on STABS instead of failing for now -Patch306: rpm-4.9.x-debugedit-stabs-warn.patch # Temporary Patch to provide support for updates Patch400: rpm-4.9.1.2-rpmlib-filesystem-check.patch -# Recognize Perl script as Perl code -Patch401: rpm-4.9.1.2-perl-script.patch # Partially GPL/LGPL dual-licensed and some bits with BSD # SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD @@ -230,26 +213,11 @@ packages on a system. %patch3 -p1 -b .no-man-dirs %patch4 -p1 -b .use-gpg2 -%patch100 -p1 -b .fontattr -%patch101 -p1 -b .elfattr -%patch102 -p1 -b .perl-python-attr -%patch103 -p1 -b .mpsize -%patch104 -p1 -b .rpmdb-dsi -%patch105 -p1 -b .python-memleaks -%patch106 -p1 -b .verify-output -%patch107 -p1 -b .include-cond -%patch108 -p1 -b .exclude-warn -%patch109 -p1 -b .tstest-fileinfo - %patch301 -p1 -b .niagara %patch302 -p1 -b .geode -%patch303 -p1 -b .debuginfo-allnames %patch304 -p1 -b .ldflags -%patch305 -p1 -b .gnome-help -%patch306 -p1 -b .debugedit-stabs-warn %patch400 -p1 -b .rpmlib-filesystem-check -%patch401 -p1 -b .perl-script %patch5 -p1 -b .armhfp # this patch cant be applied on softfp builds @@ -278,6 +246,7 @@ export CPPFLAGS CFLAGS LDFLAGS --localstatedir=%{_var} \ --sharedstatedir=%{_var}/lib \ --libdir=%{_libdir} \ + --with-vendor=redhat \ %{!?with_int_bdb: --with-external-db} \ %{!?with_plugins: --disable-plugins} \ --with-lua \ @@ -469,6 +438,10 @@ exit 0 %doc COPYING doc/librpm/html/* %changelog +* Tue Mar 20 2012 Panu Matilainen - 4.9.90-0.git11505.1 +- update to 4.10.0 alpha (http://rpm.org/wiki/Releases/4.10.0) +- drop/adjust patches as necessary + * Wed Mar 07 2012 Panu Matilainen - 4.9.1.2-14 - fix backport thinko in the exclude patch diff --git a/sources b/sources index 65ac0c9..3db9f2d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -85cc5b7adb5806b5abf5b538b088dbdc rpm-4.9.1.2.tar.bz2 +9206167147441cda84a56c338de9ebaa rpm-4.9.90.git11505.tar.bz2