- update to pre-4.10 upstream snapshot
- drop/adjust patches as necessary
This commit is contained in:
parent
a709ae3098
commit
ae9bea02d8
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -1,35 +0,0 @@
|
||||
commit 9ddcc23d2b7ecaf5336530dbe37195b0057d0396
|
||||
Author: Ville Skyttä <ville.skytta@iki.fi>
|
||||
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 <pmatilai@redhat.com>
|
||||
|
||||
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)$
|
@ -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 },
|
@ -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
|
@ -69,7 +69,7 @@ index dc0e0fb..e0a5d1f 100644
|
||||
+ free(dstring);
|
||||
}
|
||||
-
|
||||
- dstring = _free(dstring);
|
||||
- free(dstring);
|
||||
#endif
|
||||
|
||||
- rc = headerGet(h, tag, td, HEADERGET_ALLOC);
|
12
rpm-4.9.90-no-man-dirs.patch
Normal file
12
rpm-4.9.90-no-man-dirs.patch
Normal file
@ -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
|
@ -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);
|
@ -1,16 +0,0 @@
|
||||
commit 87d9e3c4adac92ff544440dd1239a4ae4fe05bb4
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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
|
@ -1,59 +0,0 @@
|
||||
commit cce686b2129e4e8dc27f1a640f7c4746f9ffb032
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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 {
|
@ -1,15 +0,0 @@
|
||||
commit fb30c0aac8b3da8c75a8cb1578a719ce38db59eb
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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).*$
|
@ -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:
|
@ -1,21 +0,0 @@
|
||||
commit bf92b843fabd6c9881b19efb0cae1578d16e4f7b
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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;
|
@ -1,28 +0,0 @@
|
||||
commit d8cd36058b528f56bd579204426143be1e1eac6d
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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}
|
||||
|
@ -1,66 +0,0 @@
|
||||
commit 59807943af5c10c892b239f11b8fafb209254a4a
|
||||
Author: David Malcolm <dmalcolm@redhat.com>
|
||||
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 <akozumpl@redhat.com>
|
||||
|
||||
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;
|
||||
|
@ -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);
|
@ -1,43 +0,0 @@
|
||||
commit 7d88d5e54a9c3fa2b7fb443921c8adb799051784
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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);
|
@ -1,62 +0,0 @@
|
||||
commit 4e207bfdfce434a6484babc14fe86aeadeec5329
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
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=:
|
53
rpm.spec
53
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 <pmatilai@redhat.com> - 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 <pmatilai@redhat.com> - 4.9.1.2-14
|
||||
- fix backport thinko in the exclude patch
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user