diff --git a/.rpm.metadata b/.rpm.metadata new file mode 100644 index 0000000..b9fbaf0 --- /dev/null +++ b/.rpm.metadata @@ -0,0 +1 @@ +31ddc4185137ce3f718c99e91dcb040614fe820c SOURCES/rpm-4.11.1.tar.bz2 diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/libsymlink.attr b/SOURCES/libsymlink.attr new file mode 100644 index 0000000..8bb6404 --- /dev/null +++ b/SOURCES/libsymlink.attr @@ -0,0 +1,4 @@ +# Make libfoo.so symlinks require the soname-provide of the target library +%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only +%__libsymlink_magic ^symbolic link to `.*lib.*\.so\..*'$ +%__libsymlink_exclude_path ^.*[[:digit:]]$ diff --git a/SOURCES/rpm-4.10.0-dwz-debuginfo.patch b/SOURCES/rpm-4.10.0-dwz-debuginfo.patch new file mode 100644 index 0000000..41d783b --- /dev/null +++ b/SOURCES/rpm-4.10.0-dwz-debuginfo.patch @@ -0,0 +1,101 @@ +--- rpm-4.10.0/scripts/find-debuginfo.sh 2012-03-20 09:07:25.000000000 +0100 ++++ rpm-4.10.0/scripts/find-debuginfo.sh.jj 2012-06-19 12:32:33.147503858 +0200 +@@ -4,6 +4,8 @@ + # + # Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] + # [-o debugfiles.list] ++# [--run-dwz] [--dwz-low-mem-die-limit N] ++# [--dwz-max-die-limit N] + # [[-l filelist]... [-p 'pattern'] -o debuginfo.list] + # [builddir] + # +@@ -20,6 +22,10 @@ + # The -p argument is an grep -E -style regexp matching the a file name, + # and must not use anchors (^ or $). + # ++# The --run-dwz flag instructs find-debuginfo.sh to run the dwz utility ++# if available, and --dwz-low-mem-die-limit and --dwz-max-die-limit ++# provide detailed limits. See dwz(1) -l and -L option for details. ++# + # All file names in switches are relative to builddir (. if not given). + # + +@@ -32,6 +38,11 @@ strip_r=false + # Barf on missing build IDs. + strict=false + ++# DWZ parameters. ++run_dwz=false ++dwz_low_mem_die_limit= ++dwz_max_die_limit= ++ + BUILDDIR=. + out=debugfiles.list + nout=0 +@@ -40,6 +51,17 @@ while [ $# -gt 0 ]; do + --strict-build-id) + strict=true + ;; ++ --run-dwz) ++ run_dwz=true ++ ;; ++ --dwz-low-mem-die-limit) ++ dwz_low_mem_die_limit=$2 ++ shift ++ ;; ++ --dwz-max-die-limit) ++ dwz_max_die_limit=$2 ++ shift ++ ;; + -g) + strip_g=true + ;; +@@ -266,6 +288,37 @@ while read nlinks inum f; do + fi + done || exit + ++# Invoke the DWARF Compressor utility. ++if $run_dwz && type dwz >/dev/null 2>&1 \ ++ && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then ++ dwz_files="`cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug`" ++ if [ -n "${dwz_files}" ]; then ++ dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}" ++ dwz_multifile_suffix= ++ dwz_multifile_idx=0 ++ while [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}${dwz_multifile_suffix}" ]; do ++ let ++dwz_multifile_idx ++ dwz_multifile_suffix=".${dwz_multifile_idx}" ++ done ++ dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}" ++ dwz_opts="-h -q -r -m .dwz/${dwz_multifile_name}" ++ mkdir -p "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" ++ [ -n "${dwz_low_mem_die_limit}" ] \ ++ && dwz_opts="${dwz_opts} -l ${dwz_low_mem_die_limit}" ++ [ -n "${dwz_max_die_limit}" ] \ ++ && dwz_opts="${dwz_opts} -L ${dwz_max_die_limit}" ++ ( cd "${RPM_BUILD_ROOT}/usr/lib/debug" && dwz $dwz_opts $dwz_files ) ++ # Remove .dwz directory if empty ++ rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null ++ if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then ++ id="`readelf -Wn "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" \ ++ 2>/dev/null | sed -n 's/^ Build ID: \([0-9a-f]\+\)/\1/p'`" ++ [ -n "$id" ] \ ++ && make_id_link "$id" "/usr/lib/debug/.dwz/${dwz_multifile_name}" .debug ++ fi ++ fi ++fi ++ + # For each symlink whose target has a .debug file, + # make a .debug symlink to that file. + find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*" -type l -print | +--- rpm-4.10.0/macros.in 2012-03-20 09:07:25.000000000 +0100 ++++ rpm-4.10.0/macros.in.jj 2012-06-19 12:32:33.147503858 +0200 +@@ -176,7 +176,7 @@ + # the script. See the script for details. + # + %__debug_install_post \ +- %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ ++ %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ + %{nil} + + # Template for debug information sub-package. diff --git a/SOURCES/rpm-4.10.0-minidebuginfo.patch b/SOURCES/rpm-4.10.0-minidebuginfo.patch new file mode 100644 index 0000000..54c0e32 --- /dev/null +++ b/SOURCES/rpm-4.10.0-minidebuginfo.patch @@ -0,0 +1,98 @@ +--- rpm-4.10.0/macros.in 2012-06-11 11:16:21.216952339 +0200 ++++ rpm-4.10.0/macros.in.minidebug 2012-06-11 11:16:23.686912455 +0200 +@@ -175,7 +175,7 @@ + # the script. See the script for details. + # + %__debug_install_post \ +- %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ ++ %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ + %{nil} + + # Template for debug information sub-package. +@@ -418,6 +418,12 @@ package or when debugging this package.\ + #%_missing_build_ids_terminate_build 1 + + # ++# Include minimal debug information in build binaries. ++# Requires _enable_debug_packages. ++# ++#%_include_minidebuginfo 1 ++ ++# + # Use internal dependency generator rather than external helpers? + %_use_internal_dependency_generator 1 + +--- rpm-4.10.0/scripts/find-debuginfo.sh 2012-06-11 11:16:09.698138273 +0200 ++++ rpm-4.10.0/scripts/find-debuginfo.sh.minidebug 2012-06-11 11:16:13.399078526 +0200 +@@ -2,7 +2,7 @@ + #find-debuginfo.sh - automagically generate debug info and file list + #for inclusion in an rpm spec file. + # +-# Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] ++# Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] [-m] + # [-o debugfiles.list] + # [--run-dwz] [--dwz-low-mem-die-limit N] + # [--dwz-max-die-limit N] +@@ -29,6 +29,9 @@ strip_g=false + # with -r arg, pass --reloc-debug-sections to eu-strip. + strip_r=false + ++# with -m arg, add minimal debuginfo to binary. ++include_minidebug=false ++ + # Barf on missing build IDs. + strict=false + +@@ -43,6 +46,9 @@ while [ $# -gt 0 ]; do + -g) + strip_g=true + ;; ++ -m) ++ include_minidebug=true ++ ;; + -o) + if [ -z "${lists[$nout]}" -a -z "${ptns[$nout]}" ]; then + out=$2 +@@ -105,6 +111,32 @@ strip_to_debug() + chmod 444 "$1" || exit + } + ++add_minidebug() ++{ ++ local debuginfo="$1" ++ local binary="$2" ++ ++ local dynsyms=`mktemp` ++ local funcsyms=`mktemp` ++ local keep_symbols=`mktemp` ++ local mini_debuginfo=`mktemp` ++ ++ # Extract the dynamic symbols from the main binary, there is no need to also have these ++ # in the normal symbol table ++ nm -D "$binary" --format=posix --defined-only | awk '{ print $1 }' | sort > "$dynsyms" ++ # Extract all the text (i.e. function) symbols from the debuginfo ++ nm "$debuginfo" --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > "$funcsyms" ++ # Keep all the function symbols not already in the dynamic symbol table ++ comm -13 "$dynsyms" "$funcsyms" > "$keep_symbols" ++ # Copy the full debuginfo, keeping only a minumal set of symbols and removing some unnecessary sections ++ objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols="$keep_symbols" "$debuginfo" "$mini_debuginfo" &> /dev/null ++ #Inject the compressed data into the .gnu_debugdata section of the original binary ++ xz "$mini_debuginfo" ++ mini_debuginfo="${mini_debuginfo}.xz" ++ objcopy --add-section .gnu_debugdata="$mini_debuginfo" "$binary" ++ rm -f "$dynsyms" "$funcsyms" "$keep_symbols" "$mini_debuginfo" ++} ++ + # Make a relative symlink to $1 called $3$2 + shopt -s extglob + link_relative() +@@ -260,6 +292,9 @@ while read nlinks inum f; do + chmod u-w "$f" + fi + ++ $include_minidebug && add_minidebug "${debugfn}" "$f" ++ ++ + if [ -n "$id" ]; then + make_id_link "$id" "$dn/$(basename $f)" + make_id_link "$id" "/usr/lib/debug$dn/$bn" .debug diff --git a/SOURCES/rpm-4.10.90-rpmlib-filesystem-check.patch b/SOURCES/rpm-4.10.90-rpmlib-filesystem-check.patch new file mode 100644 index 0000000..ec4324c --- /dev/null +++ b/SOURCES/rpm-4.10.90-rpmlib-filesystem-check.patch @@ -0,0 +1,125 @@ +diff -up rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check rpm-4.10.90.git11978/lib/depends.c +--- rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check 2012-11-01 09:40:26.000000000 +0200 ++++ rpm-4.10.90.git11978/lib/depends.c 2012-11-05 10:53:42.294733695 +0200 +@@ -537,6 +537,109 @@ static int rpmdbProvides(rpmts ts, depCa + return rc; + } + ++/* ++ * Temporary support for live-conversion of the filesystem hierarchy ++ * mailto: kay@redhat.com, harald@redhat.com ++ * https://fedoraproject.org/wiki/Features/UsrMove ++ * ++ * X-CheckUnifiedSystemdir: ++ * /bin, /sbin, /lib, /lib64 --> /usr ++ * ++ * X-CheckUnifiedBindir: ++ * /usr/sbin -> /usr/bin ++ * ++ * X-CheckMultiArchLibdir: ++ * /usr/lib64 /usr/lib/ (e.g. x86_64-linux-gnu) ++ * ++ * This code is not needed for new installations, it can be removed after ++ * updates from older systems are no longer supported: Fedora 19 / RHEL 8. ++ */ ++ ++static int CheckLink(const char *dir, const char *root) ++{ ++ char *d = NULL; ++ struct stat sbuf; ++ int rc = 0; ++ ++ if (!root) ++ root = "/"; ++ ++ rasprintf(&d, "%s%s", root, dir); ++ if (!d) { ++ rc = -1; ++ goto exit; ++ } ++ ++ /* directory or symlink does not exist, all is fine */ ++ if (lstat(d, &sbuf) < 0) { ++ rc = 1; ++ goto exit; ++ } ++ ++ /* if it is a symlink, all is fine */ ++ if (S_ISLNK(sbuf.st_mode)) ++ rc = 1; ++ ++exit: ++ free(d); ++ return rc; ++} ++ ++static int CheckFilesystemHierarchy(rpmds * dsp, const char *root) ++{ ++ static const char *dirs[] = { "bin", "sbin", "lib", "lib64" }; ++ int check; ++ int i; ++ rpmds ds; ++ rpmstrPool pool = rpmdsPool(*dsp); ++ int rc = 0; ++ ++ for (i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) { ++ check = CheckLink(dirs[i], root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ ++ if (check == 0) ++ goto exit; ++ } ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckUnifiedSystemdir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ ++ check = CheckLink("usr/lib64", root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ if (check > 0) { ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckMultiArchLibdir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ } ++ ++ check = CheckLink("usr/sbin", root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ if (check > 0) { ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckUnifiedBindir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ } ++ ++exit: ++ return rc; ++} ++ + /** + * Check dep for an unsatisfied dependency. + * @param ts transaction set +@@ -560,8 +663,10 @@ retry: + * Check those dependencies now. + */ + if (dsflags & RPMSENSE_RPMLIB) { +- if (tsmem->rpmlib == NULL) ++ if (tsmem->rpmlib == NULL) { + rpmdsRpmlibPool(rpmtsPool(ts), &(tsmem->rpmlib), NULL); ++ CheckFilesystemHierarchy(&(tsmem->rpmlib), rpmtsRootDir(ts)); ++ } + + if (tsmem->rpmlib != NULL && rpmdsSearch(tsmem->rpmlib, dep) >= 0) { + rpmdsNotify(dep, "(rpmlib provides)", rc); diff --git a/SOURCES/rpm-4.11.1-caps-doublefree.patch b/SOURCES/rpm-4.11.1-caps-doublefree.patch new file mode 100644 index 0000000..e5d9051 --- /dev/null +++ b/SOURCES/rpm-4.11.1-caps-doublefree.patch @@ -0,0 +1,19 @@ +commit 65eec62cb7796dad6fbf1d5436251e176449f522 +Author: Panu Matilainen +Date: Thu Aug 29 16:32:32 2013 +0300 + + Fix double-free on %caps() wildcard %files entry (RhBug:956190) + +diff --git a/build/files.c b/build/files.c +index 20f452f..eed5696 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -1448,7 +1448,7 @@ static rpmRC addFile(FileList fl, const char * diskPath, + } + + if (fl->cur.caps) { +- flp->caps = fl->cur.caps; ++ flp->caps = xstrdup(fl->cur.caps); + } else { + flp->caps = xstrdup(""); + } diff --git a/SOURCES/rpm-4.11.1-empty-lua-script.patch b/SOURCES/rpm-4.11.1-empty-lua-script.patch new file mode 100644 index 0000000..2c4a590 --- /dev/null +++ b/SOURCES/rpm-4.11.1-empty-lua-script.patch @@ -0,0 +1,23 @@ +commit 5f3598a700e8e028f9140682262869ca319597ee +Author: Panu Matilainen +Date: Fri Sep 6 16:31:25 2013 +0300 + + Fix segfault executing a -p scriptlet without a body (RhBug:1004062) + + - There are any number of places where this could be fixed, but + to keep the behavior similar to eg /bin/sh scriptlet without a body, + just turn a non-existent script into an empty string. + +diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c +index 0576318..921cc37 100644 +--- a/rpmio/rpmlua.c ++++ b/rpmio/rpmlua.c +@@ -526,6 +526,8 @@ int rpmluaRunScript(rpmlua _lua, const char *script, const char *name) + int ret = 0; + if (name == NULL) + name = ""; ++ if (script == NULL) ++ script = ""; + if (luaL_loadbuffer(L, script, strlen(script), name) != 0) { + rpmlog(RPMLOG_ERR, _("invalid syntax in lua script: %s\n"), + lua_tostring(L, -1)); diff --git a/SOURCES/rpm-4.11.1-instprefix.patch b/SOURCES/rpm-4.11.1-instprefix.patch new file mode 100644 index 0000000..54c6ae7 --- /dev/null +++ b/SOURCES/rpm-4.11.1-instprefix.patch @@ -0,0 +1,55 @@ +commit 1ac9e84d9a4a04df7c8f659a8df676fc4f8544f0 +Author: Panu Matilainen +Date: Fri Jul 5 10:27:18 2013 +0300 + + Ensure relocatable packages always get install-prefix(es) set (RhBug:979443) + + - Scriptlets from relocatable packages should always run with + $RPM_INSTALL_PREFIX* defined, whether actually being relocated or not. + - Fixes regression introduced by the optimization in commit + 5d3018c4ed476b1b7ac18e2573af517f872cb303. We always need to call + addPrefixes() but return early from rpmRelocateFileList() when + no relocations are taking place, fixing the performance regression + introduced all the way back in cb8241dda783f7e8c143b08fecf57fe89a39c3a6 + which is what 5d3018c4ed476b1b7ac18e2573af517f872cb303 was trying + to fix. Pooh :) + + (cherry picked from commit 88d24b14a8e0e33e768cb74a3487acf0925b012a) + +diff --git a/lib/rpmfi.c b/lib/rpmfi.c +index 0bfb5dd..185deae 100644 +--- a/lib/rpmfi.c ++++ b/lib/rpmfi.c +@@ -793,7 +793,8 @@ static int addPrefixes(Header h, rpmRelocation *relocations, int numRelocations) + headerPutStringArray(h, RPMTAG_INSTPREFIXES, actualRelocations, numActual); + } + free(actualRelocations); +- return numActual; ++ /* When any relocations are present there'll be more work to do */ ++ return 1; + } + + static void saveRelocs(Header h, rpmtd bnames, rpmtd dnames, rpmtd dindexes) +@@ -835,7 +836,8 @@ void rpmRelocateFileList(rpmRelocation *relocations, int numRelocations, + int i, j; + struct rpmtd_s bnames, dnames, dindexes, fmodes; + +- addPrefixes(h, relocations, numRelocations); ++ if (!addPrefixes(h, relocations, numRelocations)) ++ return; + + if (!_printed) { + _printed = 1; +diff --git a/lib/rpmte.c b/lib/rpmte.c +index 6afd69e..87fb391 100644 +--- a/lib/rpmte.c ++++ b/lib/rpmte.c +@@ -98,7 +98,7 @@ static rpmfi getFI(rpmte p, Header h) + (RPMFI_NOHEADER | RPMFI_FLAGS_ERASE); + + /* relocate stuff in header if necessary */ +- if (rpmteType(p) == TR_ADDED && rpmfsFC(p->fs) > 0 && p->nrelocs) { ++ if (rpmteType(p) == TR_ADDED && rpmfsFC(p->fs) > 0) { + if (!headerIsSource(h) && !headerIsEntry(h, RPMTAG_ORIGBASENAMES)) { + rpmRelocateFileList(p->relocs, p->nrelocs, p->fs, h); + } diff --git a/SOURCES/rpm-4.11.1-reloc-sanity-check.patch b/SOURCES/rpm-4.11.1-reloc-sanity-check.patch new file mode 100644 index 0000000..10c5dcc --- /dev/null +++ b/SOURCES/rpm-4.11.1-reloc-sanity-check.patch @@ -0,0 +1,27 @@ +commit 65c7cc17664358051f0358de272e616dd88ab624 +Author: Panu Matilainen +Date: Tue Aug 27 15:15:40 2013 +0300 + + Relax the filename triplet sanity check a bit (RhBug:1001553) + + - At least unowned directories can cause orphans to be left around + in RPMTAG_DIRNAMES, in which case its possible for number of + dirnames to be larger than the number of basenames. This is + arguably a bug in the relocation code but doesn't seem worth + the trouble... so just relax the check to simply permit non-empty + dirnames array, the index bound checking is far more important. + +diff --git a/lib/rpmfi.c b/lib/rpmfi.c +index 30663d0..00506ce 100644 +--- a/lib/rpmfi.c ++++ b/lib/rpmfi.c +@@ -1128,7 +1128,8 @@ static int indexSane(rpmtd xd, rpmtd yd, rpmtd zd) + uint32_t zc = rpmtdCount(zd); + + /* check that the amount of data in each is sane */ +- if (xc > 0 && yc > 0 && yc <= xc && zc == xc) { ++ /* normally yc <= xc but larger values are not fatal (RhBug:1001553) */ ++ if (xc > 0 && yc > 0 && zc == xc) { + uint32_t * i; + /* ...and that the indexes are within bounds */ + while ((i = rpmtdNextUint32(zd))) { diff --git a/SOURCES/rpm-4.11.1-sepdebugcrcfix.patch b/SOURCES/rpm-4.11.1-sepdebugcrcfix.patch new file mode 100644 index 0000000..74e8445 --- /dev/null +++ b/SOURCES/rpm-4.11.1-sepdebugcrcfix.patch @@ -0,0 +1,472 @@ +--- rpm-4.11.1-rc1-orig/Makefile.am 2013-06-07 12:19:21.000000000 +0200 ++++ rpm-4.11.1-rc1/Makefile.am 2013-06-24 18:34:06.342894002 +0200 +@@ -162,6 +162,10 @@ rpmlibexec_PROGRAMS += elfdeps + elfdeps_SOURCES = tools/elfdeps.c + elfdeps_LDADD = rpmio/librpmio.la + elfdeps_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@ ++ ++rpmlibexec_PROGRAMS += sepdebugcrcfix ++sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c ++sepdebugcrcfix_LDADD = @WITH_LIBELF_LIB@ + endif + endif + +--- rpm-4.11.1-rc1-orig/Makefile.in 2013-06-10 08:38:51.000000000 +0200 ++++ rpm-4.11.1-rc1/Makefile.in 2013-06-24 18:34:06.342894002 +0200 +@@ -74,7 +74,8 @@ bin_PROGRAMS = rpm2cpio$(EXEEXT) rpmbuil + rpmgraph$(EXEEXT) + rpmlibexec_PROGRAMS = $(am__EXEEXT_1) rpmdeps$(EXEEXT) + @LIBDWARF_TRUE@@LIBELF_TRUE@am__append_6 = scripts/find-debuginfo.sh +-@LIBDWARF_TRUE@@LIBELF_TRUE@am__append_7 = debugedit elfdeps ++@LIBDWARF_TRUE@@LIBELF_TRUE@am__append_7 = debugedit elfdeps \ ++@LIBDWARF_TRUE@@LIBELF_TRUE@ sepdebugcrcfix + @DOXYGEN_TRUE@@HACKINGDOCS_TRUE@am__append_8 = doc/hacking/html/index.html + @DOXYGEN_TRUE@am__append_9 = doc/librpm/html/index.html + @WITH_INTERNAL_DB_TRUE@am__append_10 = db.h +@@ -110,7 +111,8 @@ am__installdirs = "$(DESTDIR)$(bindir)" + "$(DESTDIR)$(rpmconfigdir)" "$(DESTDIR)$(rpmvardir)" \ + "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)" + @LIBDWARF_TRUE@@LIBELF_TRUE@am__EXEEXT_1 = debugedit$(EXEEXT) \ +-@LIBDWARF_TRUE@@LIBELF_TRUE@ elfdeps$(EXEEXT) ++@LIBDWARF_TRUE@@LIBELF_TRUE@ elfdeps$(EXEEXT) \ ++@LIBDWARF_TRUE@@LIBELF_TRUE@ sepdebugcrcfix$(EXEEXT) + PROGRAMS = $(bin_PROGRAMS) $(rpmbin_PROGRAMS) $(rpmlibexec_PROGRAMS) + am__debugedit_SOURCES_DIST = tools/debugedit.c tools/hashtab.c \ + tools/hashtab.h +@@ -157,6 +159,11 @@ am_rpmspec_OBJECTS = rpmspec-rpmspec.$(O + rpmspec_OBJECTS = $(am_rpmspec_OBJECTS) + rpmspec_DEPENDENCIES = libcliutils.la build/librpmbuild.la \ + lib/librpm.la rpmio/librpmio.la ++am__sepdebugcrcfix_SOURCES_DIST = tools/sepdebugcrcfix.c ++@LIBDWARF_TRUE@@LIBELF_TRUE@am_sepdebugcrcfix_OBJECTS = \ ++@LIBDWARF_TRUE@@LIBELF_TRUE@ tools/sepdebugcrcfix.$(OBJEXT) ++sepdebugcrcfix_OBJECTS = $(am_sepdebugcrcfix_OBJECTS) ++sepdebugcrcfix_DEPENDENCIES = + am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; + am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +@@ -223,12 +230,12 @@ SOURCES = $(libcliutils_la_SOURCES) $(de + $(elfdeps_SOURCES) $(rpm_SOURCES) $(rpm2cpio_SOURCES) \ + $(rpmbuild_SOURCES) $(rpmdb_SOURCES) $(rpmdeps_SOURCES) \ + $(rpmgraph_SOURCES) $(rpmkeys_SOURCES) $(rpmsign_SOURCES) \ +- $(rpmspec_SOURCES) ++ $(rpmspec_SOURCES) $(sepdebugcrcfix_SOURCES) + DIST_SOURCES = $(libcliutils_la_SOURCES) $(am__debugedit_SOURCES_DIST) \ + $(am__elfdeps_SOURCES_DIST) $(rpm_SOURCES) $(rpm2cpio_SOURCES) \ + $(rpmbuild_SOURCES) $(rpmdb_SOURCES) $(rpmdeps_SOURCES) \ + $(rpmgraph_SOURCES) $(rpmkeys_SOURCES) $(rpmsign_SOURCES) \ +- $(rpmspec_SOURCES) ++ $(rpmspec_SOURCES) $(am__sepdebugcrcfix_SOURCES_DIST) + RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ +@@ -636,6 +643,8 @@ rpm2cpio_LDADD = lib/librpm.la rpmio/lib + @LIBDWARF_TRUE@@LIBELF_TRUE@elfdeps_LDADD = rpmio/librpmio.la \ + @LIBDWARF_TRUE@@LIBELF_TRUE@ @WITH_LIBELF_LIB@ @WITH_POPT_LIB@ \ + @LIBDWARF_TRUE@@LIBELF_TRUE@ $(am__empty) ++@LIBDWARF_TRUE@@LIBELF_TRUE@sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c ++@LIBDWARF_TRUE@@LIBELF_TRUE@sepdebugcrcfix_LDADD = @WITH_LIBELF_LIB@ + rpmdeps_SOURCES = tools/rpmdeps.c + rpmdeps_LDADD = lib/librpm.la rpmio/librpmio.la build/librpmbuild.la @WITH_POPT_LIB@ + rpmgraph_SOURCES = tools/rpmgraph.c +@@ -903,6 +912,11 @@ rpmsign$(EXEEXT): $(rpmsign_OBJECTS) $(r + rpmspec$(EXEEXT): $(rpmspec_OBJECTS) $(rpmspec_DEPENDENCIES) $(EXTRA_rpmspec_DEPENDENCIES) + @rm -f rpmspec$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rpmspec_OBJECTS) $(rpmspec_LDADD) $(LIBS) ++tools/sepdebugcrcfix.$(OBJEXT): tools/$(am__dirstamp) \ ++ tools/$(DEPDIR)/$(am__dirstamp) ++sepdebugcrcfix$(EXEEXT): $(sepdebugcrcfix_OBJECTS) $(sepdebugcrcfix_DEPENDENCIES) $(EXTRA_sepdebugcrcfix_DEPENDENCIES) ++ @rm -f sepdebugcrcfix$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(sepdebugcrcfix_OBJECTS) $(sepdebugcrcfix_LDADD) $(LIBS) + install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ +@@ -994,6 +1008,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/hashtab.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/rpmdeps.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/rpmgraph.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/sepdebugcrcfix.Po@am__quote@ + + .c.o: + @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +--- rpm-4.11.1-rc1-orig/scripts/find-debuginfo.sh 2013-06-24 17:20:55.407538301 +0200 ++++ rpm-4.11.1-rc1/scripts/find-debuginfo.sh 2013-06-24 18:34:41.270897302 +0200 +@@ -114,10 +114,12 @@ done + LISTFILE="$BUILDDIR/$out" + SOURCEFILE="$BUILDDIR/debugsources.list" + LINKSFILE="$BUILDDIR/debuglinks.list" ++ELFBINSFILE="$BUILDDIR/elfbins.list" + + > "$SOURCEFILE" + > "$LISTFILE" + > "$LINKSFILE" ++> "$ELFBINSFILE" + + debugdir="${RPM_BUILD_ROOT}/usr/lib/debug" + +@@ -316,6 +318,7 @@ while read nlinks inum f; do + + $include_minidebug && add_minidebug "${debugfn}" "$f" + ++ echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" + + if [ -n "$id" ]; then + make_id_link "$id" "$dn/$(basename $f)" +@@ -354,6 +357,10 @@ if $run_dwz && type dwz >/dev/null 2>&1 + fi + fi + ++# dwz invalidates .gnu_debuglink CRC32 in the main files. ++cat "$ELFBINSFILE" | ++(cd "$RPM_BUILD_ROOT"; xargs -d '\n' /usr/lib/rpm/sepdebugcrcfix usr/lib/debug) ++ + # For each symlink whose target has a .debug file, + # make a .debug symlink to that file. + find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*" -type l -print | +--- rpm-4.11.1-rc1-orig/tools/sepdebugcrcfix.c 1970-01-01 01:00:00.000000000 +0100 ++++ rpm-4.11.1-rc1/tools/sepdebugcrcfix.c 2013-06-24 18:31:54.927881439 +0200 +@@ -0,0 +1,344 @@ ++/* Copyright (C) 2013 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* Version 2013-06-24. */ ++ ++#define _GNU_SOURCE ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define _(x) x ++#define static_assert(expr) \ ++ extern int never_defined_just_used_for_checking[(expr) ? 1 : -1] ++#ifndef min ++# define min(a, b) ((a) < (b) ? (a) : (b)) ++#endif ++ ++static_assert (sizeof (unsigned long) >= sizeof (uint32_t)); ++ ++typedef int bool; ++static const bool false = 0, true = 1; ++ ++/* This is bfd_calc_gnu_debuglink_crc32 from bfd/opncls.c. */ ++static unsigned long ++ calc_gnu_debuglink_crc32 (unsigned long crc, ++ const unsigned char *buf, ++ bfd_size_type len) ++{ ++ static const unsigned long crc32_table[256] = ++ { ++ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, ++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, ++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, ++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, ++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, ++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, ++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, ++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, ++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, ++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, ++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, ++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, ++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, ++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, ++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, ++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, ++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, ++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, ++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, ++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, ++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, ++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, ++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, ++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, ++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, ++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, ++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, ++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, ++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, ++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, ++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, ++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, ++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, ++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, ++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, ++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, ++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, ++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, ++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, ++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, ++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, ++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, ++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, ++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, ++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, ++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, ++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, ++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, ++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, ++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, ++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, ++ 0x2d02ef8d ++ }; ++ const unsigned char *end; ++ ++ crc = ~crc & 0xffffffff; ++ for (end = buf + len; buf < end; ++ buf) ++ crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); ++ return ~crc & 0xffffffff; ++} ++ ++static size_t updated_count, matched_count, failed_count; ++ ++static const char *usr_lib_debug; ++ ++static bool ++crc32 (const char *fname, const char *base_fname, uint32_t *crcp) ++{ ++ char *reldir = strdup (base_fname); ++ if (reldir == NULL) ++ error (1, 0, _("out of memory")); ++ char *s = reldir + strlen (reldir); ++ while (s > reldir && s[-1] != '/') ++ *--s = '\0'; ++ char *debugname; ++ if (asprintf (&debugname, "%s/%s/%s", usr_lib_debug, reldir, fname) <= 0) ++ error (1, 0, _("out of memory")); ++ free (reldir); ++ int fd = open (debugname, O_RDONLY); ++ if (fd == -1) ++ { ++ error (0, errno, _("cannot open \"%s\""), debugname); ++ return false; ++ } ++ off64_t size = lseek64 (fd, 0, SEEK_END); ++ if (size == -1) ++ { ++ error (0, errno, _("cannot get size of \"%s\""), debugname); ++ return false; ++ } ++ off_t offset = 0; ++ uint32_t crc = 0; ++ void *buf = NULL; ++ while (offset < size) ++ { ++ const size_t maplen = min (0x10000, size - offset); ++ void *map = NULL; ++ if (buf == NULL) ++ { ++ map = mmap (NULL, maplen, PROT_READ, MAP_PRIVATE | MAP_POPULATE, ++ fd, offset); ++ if (map == MAP_FAILED) ++ { ++ error (0, errno, _("cannot map 0x%llx bytes at offset 0x%llx " ++ "of file \"%s\""), ++ (unsigned long long) maplen, (unsigned long long) offset, ++ debugname); ++ map = NULL; ++ } ++ } ++ if (map == NULL) ++ { ++ if (buf == NULL) ++ { ++ buf = malloc (maplen); ++ if (buf == NULL) ++ error (1, 0, _("out of memory")); ++ } ++ ssize_t got = pread (fd, buf, maplen, offset); ++ if (got != maplen) ++ { ++ error (0, errno, _("cannot read 0x%llx bytes at offset 0x%llx " ++ "of file \"%s\""), ++ (unsigned long long) maplen, (unsigned long long) offset, ++ debugname); ++ free (buf); ++ free (debugname); ++ return false; ++ } ++ } ++ crc = calc_gnu_debuglink_crc32 (crc, map ?: buf, maplen); ++ if (map && munmap (map, maplen) != 0) ++ error (1, errno, _("cannot unmap 0x%llx bytes at offset 0x%llx " ++ "of file \"%s\""), ++ (unsigned long long) maplen, (unsigned long long) offset, ++ debugname); ++ offset += maplen; ++ } ++ free (buf); ++ if (close (fd) != 0) ++ { ++ error (0, errno, _("cannot close \"%s\""), debugname); ++ free (debugname); ++ return false; ++ } ++ free (debugname); ++ *crcp = crc; ++ return true; ++} ++ ++static bool ++process (Elf *elf, int fd, const char *fname) ++{ ++ GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem); ++ if (ehdr == NULL) ++ { ++ error (0, 0, _("cannot get ELF header of \"%s\""), fname); ++ return false; ++ } ++ if (ehdr->e_ident[EI_DATA] != ELFDATA2LSB ++ && ehdr->e_ident[EI_DATA] != ELFDATA2MSB) ++ { ++ error (0, 0, _("invalid ELF endianity of \"%s\""), fname); ++ return false; ++ } ++ Elf_Scn *scn = NULL; ++ const char scnname[] = ".gnu_debuglink"; ++ while ((scn = elf_nextscn (elf, scn)) != NULL) ++ { ++ GElf_Shdr shdr_mem, *shdr = gelf_getshdr (scn, &shdr_mem); ++ if (shdr == NULL) ++ { ++ error (0, 0, _("cannot get section # %zu in \"%s\""), ++ elf_ndxscn (scn), fname); ++ continue; ++ } ++ const char *sname = elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name); ++ if (sname == NULL) ++ { ++ error (0, 0, _("cannot get name of section # %zu in \"%s\""), ++ elf_ndxscn (scn), fname); ++ continue; ++ } ++ if (strcmp (sname, scnname) != 0) ++ continue; ++ Elf_Data *data = elf_getdata (scn, NULL); ++ if (data == NULL) ++ { ++ error (0, 0, _("cannot get data of section \"%s\" # %zu in \"%s\""), ++ scnname, elf_ndxscn (scn), fname); ++ continue; ++ } ++ if ((data->d_size & 3) != 0) ++ { ++ error (0, 0, _("invalid size of section \"%s\" # %zu in \"%s\""), ++ scnname, elf_ndxscn (scn), fname); ++ continue; ++ } ++ const uint8_t *zerop = memchr (data->d_buf, '\0', data->d_size); ++ const uint8_t *crcp = (zerop == NULL ++ ? NULL ++ : (const uint8_t *) ((uintptr_t) (zerop + 1 + 3) ++ & -4)); ++ if (crcp + 4 != (uint8_t *) data->d_buf + data->d_size) ++ { ++ error (0, 0, _("invalid format of section \"%s\" # %zu in \"%s\""), ++ scnname, elf_ndxscn (scn), fname); ++ continue; ++ } ++ uint32_t had_crc_targetendian = *(const uint32_t *) crcp; ++ uint32_t had_crc = (ehdr->e_ident[EI_DATA] == ELFDATA2LSB ++ ? le32toh (had_crc_targetendian) ++ : be32toh (had_crc_targetendian)); ++ uint32_t crc; ++ if (! crc32 (data->d_buf, fname, &crc)) ++ return false; ++ if (crc == had_crc) ++ { ++ matched_count++; ++ return true; ++ } ++ updated_count++; ++ off64_t seekto = (shdr->sh_offset + data->d_off ++ + (crcp - (const uint8_t *) data->d_buf)); ++ uint32_t crc_targetendian = (ehdr->e_ident[EI_DATA] == ELFDATA2LSB ++ ? htole32 (crc) : htobe32 (crc)); ++ ssize_t wrote = pwrite (fd, &crc_targetendian, sizeof (crc_targetendian), ++ seekto); ++ if (wrote != sizeof (crc_targetendian)) ++ { ++ error (0, 0, _("cannot write new CRC to 0x%llx " ++ "inside section \"%s\" # %zu in \"%s\""), ++ (unsigned long long) seekto, scnname, elf_ndxscn (scn), fname); ++ return false; ++ } ++ return true; ++ } ++ error (0, 0, _("cannot find section \"%s\" in \"%s\""), scnname, fname); ++ return false; ++} ++ ++int ++main (int argc, char **argv) ++{ ++ if (argc < 2) ++ error (1, 0, _("usr/lib/debug [...]")); ++ usr_lib_debug = argv[1]; ++ if (elf_version (EV_CURRENT) == EV_NONE) ++ error (1, 0, _("error initializing libelf: %s"), elf_errmsg (-1)); ++ for (int argi = 2; argi < argc; argi++) ++ { ++ const char *fname = argv[argi]; ++ int fd = open64 (fname, O_RDWR); ++ if (fd == -1) ++ { ++ error (0, errno, _("cannot open \"%s\""), fname); ++ failed_count++; ++ continue; ++ } ++ bool failed = false; ++ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); ++ if (elf == NULL) ++ { ++ error (0, 0, _("cannot open \"%s\" as ELF: %s"), fname, ++ elf_errmsg (-1)); ++ failed = true; ++ } ++ else ++ { ++ if (! process (elf, fd, fname)) ++ failed = true; ++ if (elf_end (elf) != 0) ++ { ++ error (0, 0, _("cannot close \"%s\" as ELF: %s"), fname, ++ elf_errmsg (-1)); ++ failed = true; ++ } ++ } ++ if (close (fd) != 0) ++ { ++ error (0, errno, _("cannot close \"%s\""), fname); ++ failed = true; ++ } ++ if (failed) ++ failed_count++; ++ } ++ printf ("%s: Updated %zu CRC32s, %zu CRC32s did match.\n", argv[0], ++ updated_count, matched_count); ++ if (failed_count) ++ printf ("%s: Failed for %zu files.\n", argv[0], failed_count); ++ return failed_count == 0 ? EXIT_SUCCESS : EXIT_FAILURE; ++} diff --git a/SOURCES/rpm-4.11.x-64-bit-big-endian.patch b/SOURCES/rpm-4.11.x-64-bit-big-endian.patch new file mode 100644 index 0000000..dca3c82 --- /dev/null +++ b/SOURCES/rpm-4.11.x-64-bit-big-endian.patch @@ -0,0 +1,30 @@ +From 09fb3830b66fa88162d2e16eeb6c4a63eec9fdfe Mon Sep 17 00:00:00 2001 +From: Florian Festi +Date: Mon, 30 Sep 2013 14:17:33 +0200 +Subject: [PATCH 1/2] Fix byteorder for 64 bit tags on big endian machines + (rh#1012946) + +--- + lib/header.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/header.c b/lib/header.c +index b24d16e..ceffb32 100644 +--- a/lib/header.c ++++ b/lib/header.c +@@ -105,10 +105,12 @@ static const size_t headerMaxbytes = (32*1024*1024); + RPM_GNUC_CONST + static uint64_t htonll(uint64_t n) + { ++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + uint32_t *i = (uint32_t*)&n; + uint32_t b = i[0]; + i[0] = htonl(i[1]); + i[1] = htonl(b); ++#endif + return n; + } + +-- +1.8.3.1 + diff --git a/SOURCES/rpm-4.11.x-RPMSIGTAG_LONGSIZE-detection.patch b/SOURCES/rpm-4.11.x-RPMSIGTAG_LONGSIZE-detection.patch new file mode 100644 index 0000000..a696d02 --- /dev/null +++ b/SOURCES/rpm-4.11.x-RPMSIGTAG_LONGSIZE-detection.patch @@ -0,0 +1,88 @@ +From 116a6f7105414819944c3347b12a21d2af4a26de Mon Sep 17 00:00:00 2001 +From: Florian Festi +Date: Mon, 30 Sep 2013 16:08:57 +0200 +Subject: [PATCH 2/2] Move RPMSIGTAG_SIZE vs PMSIGTAG_LONGSIZE detection to + rpmGenDigest() + +Fixes problem with rpmSign() only using RPMSIGTAG_SIZE +Fixes rh#1012595 for now as we are only moving to PMSIGTAG_LONGSIZE when needed +--- + build/pack.c | 5 +---- + lib/signature.c | 32 ++++++++++++++++---------------- + 2 files changed, 17 insertions(+), 20 deletions(-) + +diff --git a/build/pack.c b/build/pack.c +index 40bf9dc..81eee37 100644 +--- a/build/pack.c ++++ b/build/pack.c +@@ -257,7 +257,6 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp, + int xx; + rpmRC rc = RPMRC_OK; + struct rpmtd_s td; +- rpmTagVal sizetag; + rpmTagVal payloadtag; + + if (pkgidp) +@@ -377,13 +376,11 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp, + * such a package. + */ + if (pkg->cpioArchiveSize < UINT32_MAX) { +- sizetag = RPMSIGTAG_SIZE; + payloadtag = RPMSIGTAG_PAYLOADSIZE; + } else { +- sizetag = RPMSIGTAG_LONGSIZE; + payloadtag = RPMSIGTAG_LONGARCHIVESIZE; + } +- (void) rpmGenDigest(sig, sigtarget, sizetag); ++ (void) rpmGenDigest(sig, sigtarget, RPMSIGTAG_SIZE); + (void) rpmGenDigest(sig, sigtarget, RPMSIGTAG_MD5); + + if (SHA1) { +diff --git a/lib/signature.c b/lib/signature.c +index 4acce7a..f17e47f 100644 +--- a/lib/signature.c ++++ b/lib/signature.c +@@ -347,24 +347,24 @@ int rpmGenDigest(Header sigh, const char * file, rpmTagVal sigTag) + int ret = -1; /* assume failure. */ + + switch (sigTag) { +- case RPMSIGTAG_SIZE: { +- rpm_off_t size; ++ case RPMSIGTAG_SIZE: ++ case RPMSIGTAG_LONGSIZE: + if (stat(file, &st) != 0) + break; +- size = st.st_size; +- if (!sighdrPut(sigh, sigTag, RPM_INT32_TYPE, &size, 1)) +- break; +- ret = 0; +- } break; +- case RPMSIGTAG_LONGSIZE: { +- rpm_loff_t size; +- if (stat(file, &st) != 0) +- break; +- size = st.st_size; +- if (!sighdrPut(sigh, sigTag, RPM_INT64_TYPE, &size, 1)) +- break; +- ret = 0; +- } break; ++ if (st.st_size>UINT32_MAX || sigTag==RPMSIGTAG_LONGSIZE) { ++ rpm_loff_t size; ++ size = st.st_size; ++ if (!sighdrPut(sigh, RPMSIGTAG_LONGSIZE, RPM_INT64_TYPE, &size, 1)) ++ break; ++ ret = 0; ++ } else { ++ rpm_off_t size; ++ size = st.st_size; ++ if (!sighdrPut(sigh, RPMSIGTAG_SIZE, RPM_INT32_TYPE, &size, 1)) ++ break; ++ ret = 0; ++ } ++ break; + case RPMSIGTAG_MD5: + pktlen = 16; + pkt = xcalloc(pktlen, sizeof(*pkt)); +-- +1.8.3.1 + diff --git a/SOURCES/rpm-4.11.x-do-not-filter-ld64.patch b/SOURCES/rpm-4.11.x-do-not-filter-ld64.patch new file mode 100644 index 0000000..422bc67 --- /dev/null +++ b/SOURCES/rpm-4.11.x-do-not-filter-ld64.patch @@ -0,0 +1,27 @@ +From f6771b6722f0df097f9c61fc1b487f6f0ee402e8 Mon Sep 17 00:00:00 2001 +From: Florian Festi +Date: Tue, 30 Jul 2013 16:35:21 +0200 +Subject: [PATCH] Do not filter ld64.* and ld64-* provides and requires Fixes + #988373 + +--- + tools/elfdeps.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/elfdeps.c b/tools/elfdeps.c +index 906de10..8679f89 100644 +--- a/tools/elfdeps.c ++++ b/tools/elfdeps.c +@@ -52,7 +52,8 @@ static int skipSoname(const char *soname) + if (!strstr(soname, ".so")) + return 1; + +- if (rstreqn(soname, "ld.", 3) || rstreqn(soname, "ld-", 3)) ++ if (rstreqn(soname, "ld.", 3) || rstreqn(soname, "ld-", 3) || ++ rstreqn(soname, "ld64.", 3) || rstreqn(soname, "ld64-", 3)) + return 0; + + if (rstreqn(soname, "lib", 3)) +-- +1.7.11.7 + diff --git a/SOURCES/rpm-4.11.x-filter-soname-deps.patch b/SOURCES/rpm-4.11.x-filter-soname-deps.patch new file mode 100644 index 0000000..c52e11e --- /dev/null +++ b/SOURCES/rpm-4.11.x-filter-soname-deps.patch @@ -0,0 +1,80 @@ +commit 73bd9636d0e76a4d255776b7733667198b9ef585 +Author: Panu Matilainen +Date: Mon Jan 7 15:52:43 2013 +0200 + + Filter ELF dependencies by name + + - Instead of vain heuristics on DT_SONAME presence, filter out + irregular sonames from all dependencies: linkable library names generally + must contain ".so" and start with "lib" for the linker to find it at all, + anything else is an exception of one kind or another (the prime exception + of ld.so variants we handle here). This weeds out provides for most + dlopen()'ed modules etc, and filtering both provides and requires + by the same rules means we wont generate requires for things that wont be + provided. Of course this also means we can omit things that are in + DT_NEEDED, but these should be rare exceptions which the new + --no-filter-soname switch is for. + +diff --git a/tools/elfdeps.c b/tools/elfdeps.c +index fc9a905..a0db9f7 100644 +--- a/tools/elfdeps.c ++++ b/tools/elfdeps.c +@@ -15,6 +15,7 @@ + int filter_private = 0; + int soname_only = 0; + int fake_soname = 1; ++int filter_soname = 1; + + typedef struct elfInfo_s { + Elf *elf; +@@ -36,6 +37,31 @@ static int skipPrivate(const char *s) + return (filter_private && rstreq(s, "GLIBC_PRIVATE")); + } + ++/* ++ * Rough soname sanity filtering: all sane soname's dependencies need to ++ * contain ".so", and normal linkable libraries start with "lib", ++ * everything else is an exception of some sort. The most notable ++ * and common exception is the dynamic linker itself, which we allow ++ * here, the rest can use --no-filter-soname. ++ */ ++static int skipSoname(const char *soname) ++{ ++ if (filter_soname) { ++ if (!strstr(soname, ".so")) ++ return 1; ++ ++ if (rstreqn(soname, "ld.", 3) || rstreqn(soname, "ld-", 3)) ++ return 0; ++ ++ if (rstreqn(soname, "lib", 3)) ++ return 0; ++ else ++ return 1; ++ } ++ ++ return 0; ++} ++ + static const char *mkmarker(GElf_Ehdr *ehdr) + { + const char *marker = NULL; +@@ -58,6 +84,10 @@ static void addDep(ARGV_t *deps, + const char *soname, const char *ver, const char *marker) + { + char *dep = NULL; ++ ++ if (skipSoname(soname)) ++ return; ++ + if (ver || marker) { + rasprintf(&dep, + "%s(%s)%s", soname, ver ? ver : "", marker ? marker : ""); +@@ -293,6 +323,7 @@ int main(int argc, char *argv[]) + { "filter-private", 0, POPT_ARG_VAL, &filter_private, -1, NULL, NULL }, + { "soname-only", 0, POPT_ARG_VAL, &soname_only, -1, NULL, NULL }, + { "no-fake-soname", 0, POPT_ARG_VAL, &fake_soname, 0, NULL, NULL }, ++ { "no-filter-soname", 0, POPT_ARG_VAL, &filter_soname, 0, NULL, NULL }, + POPT_AUTOHELP + POPT_TABLEEND + }; diff --git a/SOURCES/rpm-4.6.0-niagara.patch b/SOURCES/rpm-4.6.0-niagara.patch new file mode 100644 index 0000000..c465b65 --- /dev/null +++ b/SOURCES/rpm-4.6.0-niagara.patch @@ -0,0 +1,61 @@ +diff -up rpm-4.9.1.3/lib/rpmrc.c.niagara rpm-4.9.1.3/lib/rpmrc.c +--- rpm-4.9.1.3/lib/rpmrc.c.niagara 2012-04-19 17:06:23.130595223 +0200 ++++ rpm-4.9.1.3/lib/rpmrc.c 2012-04-19 17:06:23.134739249 +0200 +@@ -718,6 +718,31 @@ exit: + return rc; + } + ++#if defined(__linux__) && defined(__sparc__) ++static int is_sun4v() ++{ ++ char buffer[4096], *p; ++ int fd = open("/proc/cpuinfo", O_RDONLY); ++ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) { ++ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n")); ++ close(fd); ++ return 0; ++ } ++ close(fd); ++ ++ p = strstr(buffer, "type"); ++ p = strtok(p, "\n"); ++ p = strstr(p, "sun"); ++ if (p == NULL) { ++ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'type' line\n")); ++ return 0; ++ } else if (strcmp(p, "sun4v") == 0) { ++ return 1; ++ } ++ return 0; ++} ++#endif ++ + + # if defined(__linux__) && defined(__i386__) + #include +@@ -1178,6 +1203,13 @@ static void defaultMachine(const char ** + personality(oldpers); + } + } ++ if (is_sun4v()){ ++ if (strcmp(un.machine, "sparcv9") == 0 || strcmp(un.machine, "sparc") == 0 ) { ++ strcpy(un.machine, "sparcv9v"); ++ } else if (strcmp(un.machine, "sparc64") == 0 ) { ++ strcpy(un.machine, "sparc64v"); ++ } ++ } + # endif /* sparc*-linux */ + + # if defined(__linux__) && defined(__powerpc__) +diff -up rpm-4.9.1.3/rpmrc.in.niagara rpm-4.9.1.3/rpmrc.in +--- rpm-4.9.1.3/rpmrc.in.niagara 2012-04-19 17:06:23.131476769 +0200 ++++ rpm-4.9.1.3/rpmrc.in 2012-04-19 17:06:23.135738996 +0200 +@@ -316,7 +316,7 @@ arch_compat: sun4c: sparc + arch_compat: sun4d: sparc + arch_compat: sun4m: sparc + arch_compat: sun4u: sparc64 +-arch_compat: sparc64v: sparc64 ++arch_compat: sparc64v: sparc64 sparcv9v + arch_compat: sparc64: sparcv9 + arch_compat: sparcv9v: sparcv9 + arch_compat: sparcv9: sparcv8 diff --git a/SOURCES/rpm-4.7.1-geode-i686.patch b/SOURCES/rpm-4.7.1-geode-i686.patch new file mode 100644 index 0000000..2e8692a --- /dev/null +++ b/SOURCES/rpm-4.7.1-geode-i686.patch @@ -0,0 +1,14 @@ +diff --git a/rpmrc.in b/rpmrc.in +index 4a6cca9..d62ddaf 100644 +--- a/rpmrc.in ++++ b/rpmrc.in +@@ -281,7 +281,7 @@ arch_compat: alphaev5: alpha + arch_compat: alpha: axp noarch + + arch_compat: athlon: i686 +-arch_compat: geode: i586 ++arch_compat: geode: i686 + arch_compat: pentium4: pentium3 + arch_compat: pentium3: i686 + arch_compat: i686: i586 + diff --git a/SOURCES/rpm-4.8.1-use-gpg2.patch b/SOURCES/rpm-4.8.1-use-gpg2.patch new file mode 100644 index 0000000..f1dbb56 --- /dev/null +++ b/SOURCES/rpm-4.8.1-use-gpg2.patch @@ -0,0 +1,12 @@ +diff -up rpm-4.8.1/macros.in.gpg2 rpm-4.8.1/macros.in +--- rpm-4.8.0/macros.in.gpg2 2011-01-17 12:17:38.000000000 +0200 ++++ rpm-4.8.0/macros.in 2011-01-17 12:17:59.000000000 +0200 +@@ -40,7 +40,7 @@ + %__cp @__CP@ + %__cpio @__CPIO@ + %__file @__FILE@ +-%__gpg @__GPG@ ++%__gpg %{_bindir}/gpg2 + %__grep @__GREP@ + %__gzip @__GZIP@ + %__id @__ID@ diff --git a/SOURCES/rpm-4.9.0-armhfp-logic.patch b/SOURCES/rpm-4.9.0-armhfp-logic.patch new file mode 100644 index 0000000..be00bba --- /dev/null +++ b/SOURCES/rpm-4.9.0-armhfp-logic.patch @@ -0,0 +1,83 @@ +diff -up rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic rpm-4.9.1.3/lib/rpmrc.c +--- rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic 2012-04-19 17:11:32.728750591 +0200 ++++ rpm-4.9.1.3/lib/rpmrc.c 2012-04-19 17:11:32.754738455 +0200 +@@ -743,6 +743,56 @@ static int is_sun4v() + } + #endif + ++#if defined(__linux__) && defined(__arm__) ++static int has_neon() ++{ ++ char buffer[4096], *p; ++ int fd = open("/proc/cpuinfo", O_RDONLY); ++ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) { ++ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n")); ++ close(fd); ++ return 0; ++ } ++ close(fd); ++ ++ p = strstr(buffer, "Features"); ++ p = strtok(p, "\n"); ++ p = strstr(p, "neon"); ++ p = strtok(p, " "); ++ if (p == NULL) { ++ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'Features' line\n")); ++ return 0; ++ } else if (strcmp(p, "neon") == 0) { ++ return 1; ++ } ++ return 0; ++} ++ ++static int has_hfp() ++{ ++ char buffer[4096], *p; ++ int fd = open("/proc/cpuinfo", O_RDONLY); ++ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) { ++ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n")); ++ close(fd); ++ return 0; ++ } ++ close(fd); ++ ++ p = strstr(buffer, "Features"); ++ p = strtok(p, "\n"); ++ p = strstr(p, "vfpv3"); ++ p = strtok(p, " "); ++ if (p == NULL) { ++ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'Features' line\n")); ++ return 0; ++ } else if (strcmp(p, "vfpv3") == 0) { ++ return 1; ++ } ++ return 0; ++} ++#endif ++ + + # if defined(__linux__) && defined(__i386__) + #include +@@ -1220,6 +1270,22 @@ static void defaultMachine(const char ** + } + # endif /* ppc64*-linux */ + ++# if defined(__linux__) && defined(__arm__) ++ { ++ if (strcmp(un.machine, "armv7l") == 0 ) { ++ if (has_neon() && has_hfp()) ++ strcpy(un.machine, "armv7hnl"); ++ else if (has_hfp()) ++ strcpy(un.machine, "armv7hl"); ++ } else if (strcmp(un.machine, "armv6l") == 0 ) { ++ if (has_neon() && has_hfp()) ++ strcpy(un.machine, "armv6hnl"); ++ else if (has_hfp()) ++ strcpy(un.machine, "armv6hl"); ++ } ++ } ++# endif /* arm*-linux */ ++ + # if defined(__GNUC__) && defined(__alpha__) + { + unsigned long amask, implver; diff --git a/SOURCES/rpm-4.9.1.1-ld-flags.patch b/SOURCES/rpm-4.9.1.1-ld-flags.patch new file mode 100644 index 0000000..f8b2524 --- /dev/null +++ b/SOURCES/rpm-4.9.1.1-ld-flags.patch @@ -0,0 +1,15 @@ +diff -up rpm-4.9.1.1/macros.in.jx rpm-4.9.1.1/macros.in +--- rpm-4.9.1.1/macros.in.jx 2011-08-03 16:19:05.000000000 -0400 ++++ rpm-4.9.1.1/macros.in 2011-08-08 09:41:52.981064316 -0400 +@@ -674,9 +674,10 @@ print (t)\ + RPM_SOURCE_DIR=\"%{u2p:%{_sourcedir}}\"\ + RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\ + RPM_OPT_FLAGS=\"%{optflags}\"\ ++ RPM_LD_FLAGS=\"%{?__global_ldflags}\"\ + RPM_ARCH=\"%{_arch}\"\ + RPM_OS=\"%{_os}\"\ +- export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\ ++ export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_LD_FLAGS RPM_ARCH RPM_OS\ + RPM_DOC_DIR=\"%{_docdir}\"\ + export RPM_DOC_DIR\ + RPM_PACKAGE_NAME=\"%{name}\"\ diff --git a/SOURCES/rpm-4.9.90-armhfp.patch b/SOURCES/rpm-4.9.90-armhfp.patch new file mode 100644 index 0000000..869ab26 --- /dev/null +++ b/SOURCES/rpm-4.9.90-armhfp.patch @@ -0,0 +1,61 @@ +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 +@@ -1032,7 +1032,7 @@ + + #------------------------------------------------------------------------------ + # arch macro for all supported ARM processors +-%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l ++%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l armv7hl armv7hnl + + #------------------------------------------------------------------------------ + # arch macro for all supported Sparc processors +diff -uNr rpm-4.9.0-orig//rpmrc.in rpm-4.9.0/rpmrc.in +--- rpm-4.9.0-orig//rpmrc.in 2011-08-05 12:23:04.000000000 -0500 ++++ rpm-4.9.0/rpmrc.in 2011-08-05 12:26:34.000000000 -0500 +@@ -66,6 +66,8 @@ + optflags: armv5tejl -O2 -g -march=armv5te + optflags: armv6l -O2 -g -march=armv6 + optflags: armv7l -O2 -g -march=armv7 ++optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 ++optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon + + optflags: atarist -O2 -g -fomit-frame-pointer + optflags: atariste -O2 -g -fomit-frame-pointer +@@ -140,6 +142,8 @@ + arch_canon: armv5tejl: armv5tejl 12 + arch_canon: armv6l: armv6l 12 + arch_canon: armv7l: armv7l 12 ++arch_canon: armv7hl: armv7hl 12 ++arch_canon: armv7hnl: armv7hnl 12 + + arch_canon: m68kmint: m68kmint 13 + arch_canon: atarist: m68kmint 13 +@@ -248,6 +252,8 @@ + buildarchtranslate: armv5tejl: armv5tejl + buildarchtranslate: armv6l: armv6l + buildarchtranslate: armv7l: armv7l ++buildarchtranslate: armv7hl: armv7hl ++buildarchtranslate: armv7hnl: armv7hnl + + buildarchtranslate: atarist: m68kmint + buildarchtranslate: atariste: m68kmint +@@ -336,6 +342,8 @@ + arch_compat: armv4tl: armv4l + arch_compat: armv4l: armv3l + arch_compat: armv3l: noarch ++arch_compat: armv7hnl: armv7hl ++arch_compat: armv7hl: noarch + + arch_compat: atarist: m68kmint noarch + arch_compat: atariste: m68kmint noarch +@@ -441,6 +449,9 @@ + buildarch_compat: armv4l: armv3l + buildarch_compat: armv3l: noarch + ++buildarch_compat: armv7hnl: armv7hl ++buildarch_compat: armv7hl: noarch ++ + buildarch_compat: hppa2.0: hppa1.2 + buildarch_compat: hppa1.2: hppa1.1 + buildarch_compat: hppa1.1: hppa1.0 diff --git a/SOURCES/rpm-4.9.90-fedora-specspo.patch b/SOURCES/rpm-4.9.90-fedora-specspo.patch new file mode 100644 index 0000000..61394cf --- /dev/null +++ b/SOURCES/rpm-4.9.90-fedora-specspo.patch @@ -0,0 +1,78 @@ +diff --git a/lib/tagexts.c b/lib/tagexts.c +index dc0e0fb..e0a5d1f 100644 +--- a/lib/tagexts.c ++++ b/lib/tagexts.c +@@ -478,59 +478,29 @@ static const char * const _macro_i18ndomains = "%{?_i18ndomains}"; + */ + static int i18nTag(Header h, rpmTag tag, rpmtd td, headerGetFlags hgflags) + { +- int rc; ++ int rc = headerGet(h, tag, td, HEADERGET_ALLOC); + #if defined(ENABLE_NLS) +- char * dstring = rpmExpand(_macro_i18ndomains, NULL); +- +- td->type = RPM_STRING_TYPE; +- td->data = NULL; +- td->count = 0; +- +- if (dstring && *dstring) { +- char *domain, *de; +- const char * langval; +- char * msgkey; +- const char * msgid; +- +- rasprintf(&msgkey, "%s(%s)", headerGetString(h, RPMTAG_NAME), +- rpmTagGetName(tag)); +- +- /* change to en_US for msgkey -> msgid resolution */ +- langval = getenv(language); +- (void) setenv(language, "en_US", 1); +- ++_nl_msg_cat_cntr; ++ if (rc) { ++ char *de, *dstring = rpmExpand(_macro_i18ndomains, NULL); ++ const char *domain; + +- msgid = NULL; + for (domain = dstring; domain != NULL; domain = de) { ++ const char *msgid = td->data; ++ const char *msg = NULL; ++ + de = strchr(domain, ':'); + if (de) *de++ = '\0'; +- msgid = dgettext(domain, msgkey); +- if (msgid != msgkey) break; +- } +- +- /* restore previous environment for msgid -> msgstr resolution */ +- if (langval) +- (void) setenv(language, langval, 1); +- else +- unsetenv(language); +- ++_nl_msg_cat_cntr; +- +- if (domain && msgid) { +- td->data = dgettext(domain, msgid); +- td->data = xstrdup(td->data); /* XXX xstrdup has side effects. */ +- td->count = 1; +- td->flags = RPMTD_ALLOCED; ++ msg = dgettext(domain, td->data); ++ if (msg != msgid) { ++ free(td->data); ++ td->data = xstrdup(msg); ++ break; ++ } + } +- dstring = _free(dstring); +- free(msgkey); +- if (td->data) +- return 1; ++ free(dstring); + } +- +- free(dstring); + #endif + +- rc = headerGet(h, tag, td, HEADERGET_ALLOC); + return rc; + } + diff --git a/SOURCES/rpm-4.9.90-no-man-dirs.patch b/SOURCES/rpm-4.9.90-no-man-dirs.patch new file mode 100644 index 0000000..04f276a --- /dev/null +++ b/SOURCES/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/SPECS/rpm.spec b/SPECS/rpm.spec new file mode 100644 index 0000000..fac3698 --- /dev/null +++ b/SPECS/rpm.spec @@ -0,0 +1,1247 @@ +# build against xz? +%bcond_without xz +# just for giggles, option to build with internal Berkeley DB +%bcond_with int_bdb +# run internal testsuite? +%bcond_with check +# disable plugins initially +%bcond_with plugins + +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} + +%define rpmhome /usr/lib/rpm + +%define rpmver 4.11.1 +%define srcver %{rpmver}%{?snapver:-%{snapver}} + +%define bdbname libdb +%define bdbver 5.3.15 +%define dbprefix db + +Summary: The RPM package management system +Name: rpm +Version: %{rpmver} +Release: %{?snapver:0.%{snapver}.}9%{?dist} +Group: System Environment/Base +Url: http://www.rpm.org/ +Source0: http://rpm.org/releases/rpm-4.11.x/%{name}-%{srcver}.tar.bz2 +%if %{with int_bdb} +Source1: db-%{bdbver}.tar.gz +%else +BuildRequires: libdb-devel +%endif +Source10: libsymlink.attr + +# Fedora specspo is setup differently than what rpm expects, considering +# this as Fedora-specific patch for now +Patch2: rpm-4.9.90-fedora-specspo.patch +# In current Fedora, man-pages pkg owns all the localized man directories +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.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.11.1-instprefix.patch +Patch101: rpm-4.11.1-reloc-sanity-check.patch +Patch102: rpm-4.11.1-caps-doublefree.patch +Patch103: rpm-4.11.1-empty-lua-script.patch + +# Patches already in upstream but not in 4.11.x branch +# Filter soname dependencies by name +Patch200: rpm-4.11.x-filter-soname-deps.patch +Patch201: rpm-4.11.x-do-not-filter-ld64.patch +Patch202: rpm-4.11.x-64-bit-big-endian.patch +Patch203: rpm-4.11.x-RPMSIGTAG_LONGSIZE-detection.patch + +# These are not yet upstream +Patch301: rpm-4.6.0-niagara.patch +Patch302: rpm-4.7.1-geode-i686.patch +# Probably to be upstreamed in slightly different form +Patch304: rpm-4.9.1.1-ld-flags.patch +# Compressed debuginfo support (#833311) +Patch305: rpm-4.10.0-dwz-debuginfo.patch +# Minidebuginfo support (#834073) +Patch306: rpm-4.10.0-minidebuginfo.patch +# Fix CRC32 after dwz (#971119) +Patch307: rpm-4.11.1-sepdebugcrcfix.patch +# Temporary Patch to provide support for updates +Patch400: rpm-4.10.90-rpmlib-filesystem-check.patch + +# Partially GPL/LGPL dual-licensed and some bits with BSD +# SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD +License: GPLv2+ + +Requires: coreutils +%if %{without int_bdb} +# db recovery tools, rpmdb_util symlinks +Requires: %{_bindir}/%{dbprefix}_stat +%endif +Requires: popt%{_isa} >= 1.10.2.1 +Requires: curl + +%if %{without int_bdb} +BuildRequires: %{bdbname}-devel%{_isa} +%endif + +%if %{with check} +BuildRequires: fakechroot +%endif + +# XXX generally assumed to be installed but make it explicit as rpm +# is a bit special... +BuildRequires: redhat-rpm-config +BuildRequires: gawk +BuildRequires: elfutils-devel%{_isa} >= 0.112 +BuildRequires: elfutils-libelf-devel%{_isa} +BuildRequires: readline-devel%{_isa} zlib-devel%{_isa} +BuildRequires: nss-devel%{_isa} +BuildRequires: nss-softokn-freebl-devel%{_isa} +# The popt version here just documents an older known-good version +BuildRequires: popt-devel%{_isa} >= 1.10.2 +BuildRequires: file-devel%{_isa} +BuildRequires: gettext-devel%{_isa} +BuildRequires: libselinux-devel%{_isa} +# XXX semanage is only used by sepolicy plugin but configure requires it... +BuildRequires: libsemanage-devel%{_isa} +BuildRequires: ncurses-devel%{_isa} +BuildRequires: bzip2-devel%{_isa} >= 0.9.0c-2 +BuildRequires: python-devel%{_isa} >= 2.6 +BuildRequires: lua-devel%{_isa} >= 5.1 +BuildRequires: libcap-devel%{_isa} +BuildRequires: libacl-devel%{_isa} +%if ! %{without xz} +BuildRequires: xz-devel%{_isa} >= 4.999.8 +%endif +# Only required by sepdebugcrcfix patch +BuildRequires: binutils-devel + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +%description +The RPM Package Manager (RPM) is a powerful command line driven +package management system capable of installing, uninstalling, +verifying, querying, and updating software packages. Each software +package consists of an archive of files along with information about +the package like its version, a description, etc. + +%package libs +Summary: Libraries for manipulating RPM packages +Group: Development/Libraries +License: GPLv2+ and LGPLv2+ with exceptions +Requires: rpm = %{version}-%{release} +# librpm uses cap_compare, introduced sometimes between libcap 2.10 and 2.16. +# A manual require is needed, see #505596 +Requires: libcap%{_isa} >= 2.16 + +%description libs +This package contains the RPM shared libraries. + +%package build-libs +Summary: Libraries for building and signing RPM packages +Group: Development/Libraries +License: GPLv2+ and LGPLv2+ with exceptions +Requires: rpm-libs%{_isa} = %{version}-%{release} +Requires: %{_bindir}/gpg2 + +%description build-libs +This package contains the RPM shared libraries for building and signing +packages. + +%package devel +Summary: Development files for manipulating RPM packages +Group: Development/Libraries +License: GPLv2+ and LGPLv2+ with exceptions +Requires: rpm = %{version}-%{release} +Requires: rpm-libs%{_isa} = %{version}-%{release} +Requires: rpm-build-libs%{_isa} = %{version}-%{release} +Requires: popt-devel%{_isa} + +%description devel +This package contains the RPM C library and header files. These +development files will simplify the process of writing programs that +manipulate RPM packages and databases. These files are intended to +simplify the process of creating graphical package managers or any +other tools that need an intimate knowledge of RPM packages in order +to function. + +This package should be installed if you want to develop programs that +will manipulate RPM packages and databases. + +%package build +Summary: Scripts and executable programs used to build packages +Group: Development/Tools +Requires: rpm = %{version}-%{release} +Requires: elfutils >= 0.128 binutils +Requires: findutils sed grep gawk diffutils file patch >= 2.5 +Requires: unzip gzip bzip2 cpio xz tar +Requires: pkgconfig >= 1:0.24 +Requires: /usr/bin/gdb-add-index +Conflicts: ocaml-runtime < 3.11.1-7 + +%description build +The rpm-build package contains the scripts and executable programs +that are used to build packages using the RPM Package Manager. + +%package sign +Summary: Package signing support +Group: System Environment/Base +Requires: rpm-build-libs%{_isa} = %{version}-%{release} + +%description sign +This package contains support for digitally signing RPM packages. + +%package python +Summary: Python bindings for apps which will manipulate RPM packages +Group: Development/Libraries +Requires: rpm = %{version}-%{release} + +%description python +The rpm-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by RPM Package Manager libraries. + +This package should be installed if you want to develop Python +programs that will manipulate RPM packages and databases. + +%package apidocs +Summary: API documentation for RPM libraries +Group: Documentation +BuildArch: noarch + +%description apidocs +This package contains API documentation for developing applications +that will manipulate RPM packages and databases. + +%package cron +Summary: Create daily logs of installed packages. +Group: System Environment/Base +BuildArch: noarch +Requires: crontabs logrotate rpm = %{version}-%{release} + +%description cron +This package contains a cron job which creates daily logs of installed +packages on a system. + +%prep +%setup -q -n %{name}-%{srcver} %{?with_int_bdb:-a 1} +%patch2 -p1 -b .fedora-specspo +%patch3 -p1 -b .no-man-dirs +%patch4 -p1 -b .use-gpg2 + +%patch100 -p1 -b .instprefix +%patch101 -p1 -b .reloc-sanity-check +%patch102 -p1 -b .caps-doublefree +%patch103 -p1 -b .empty-lua-script + +%patch200 -p1 -b .filter-soname-deps +%patch201 -p1 -b .dont-filter-ld64 +%patch202 -p1 -b .64bit-big-endian +%patch203 -p1 -b .RPMSIGTAG_LONGSIZE + +%patch301 -p1 -b .niagara +%patch302 -p1 -b .geode +%patch304 -p1 -b .ldflags +%patch305 -p1 -b .dwz-debuginfo +%patch306 -p1 -b .minidebuginfo +%patch307 -p1 -b .sepdebugcrcfix + +%patch400 -p1 -b .rpmlib-filesystem-check + +%patch5 -p1 -b .armhfp +# this patch cant be applied on softfp builds +%ifnarch armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l +%patch6 -p1 -b .armhfp-logic +%endif + +%if %{with int_bdb} +ln -s db-%{bdbver} db +%endif + +%build +%if %{without int_bdb} +#CPPFLAGS=-I%{_includedir}/db%{bdbver} +#LDFLAGS=-L%{_libdir}/db%{bdbver} +%endif +CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`" +CFLAGS="$RPM_OPT_FLAGS" +export CPPFLAGS CFLAGS LDFLAGS + +# Using configure macro has some unwanted side-effects on rpm platform +# setup, use the old-fashioned way for now only defining minimal paths. +./configure \ + --prefix=%{_usr} \ + --sysconfdir=%{_sysconfdir} \ + --localstatedir=%{_var} \ + --sharedstatedir=%{_var}/lib \ + --libdir=%{_libdir} \ + --build=%{_target_platform} \ + --host=%{_target_platform} \ + --with-vendor=redhat \ + %{!?with_int_bdb: --with-external-db} \ + %{!?with_plugins: --disable-plugins} \ + --with-lua \ + --with-selinux \ + --with-cap \ + --with-acl \ + --enable-python + +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT + +make DESTDIR="$RPM_BUILD_ROOT" install + +# Save list of packages through cron +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily +install -m 755 scripts/rpm.daily ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily/rpm + +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d +install -m 644 scripts/rpm.log ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/rpm + +mkdir -p ${RPM_BUILD_ROOT}/usr/lib/tmpfiles.d +echo "r /var/lib/rpm/__db.*" > ${RPM_BUILD_ROOT}/usr/lib/tmpfiles.d/rpm.conf + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm +mkdir -p $RPM_BUILD_ROOT%{rpmhome}/macros.d + +install -m 644 %{SOURCE10} ${RPM_BUILD_ROOT}%{rpmhome}/fileattrs/libsymlink.attr + +mkdir -p $RPM_BUILD_ROOT/var/lib/rpm +for dbi in \ + Basenames Conflictname Dirnames Group Installtid Name Obsoletename \ + Packages Providename Requirename Triggername Sha1header Sigmd5 \ + __db.001 __db.002 __db.003 __db.004 __db.005 __db.006 __db.007 \ + __db.008 __db.009 +do + touch $RPM_BUILD_ROOT/var/lib/rpm/$dbi +done + +# plant links to relevant db utils as rpmdb_foo for documention compatibility +%if %{without int_bdb} +for dbutil in dump load recover stat upgrade verify +do + ln -s ../../bin/%{dbprefix}_${dbutil} $RPM_BUILD_ROOT/%{rpmhome}/rpmdb_${dbutil} +done +%endif + +%find_lang %{name} + +find $RPM_BUILD_ROOT -name "*.la"|xargs rm -f + +# avoid dragging in tonne of perl libs for an unused script +chmod 0644 $RPM_BUILD_ROOT/%{rpmhome}/perldeps.pl + +# compress our ChangeLog, it's fairly big... +bzip2 -9 ChangeLog + +%clean +rm -rf $RPM_BUILD_ROOT + +%if %{with check} +%check +make check +[ "$(ls -A tests/rpmtests.dir)" ] && cat tests/rpmtests.log +%endif + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%post build-libs -p /sbin/ldconfig +%postun build-libs -p /sbin/ldconfig + +%posttrans +# XXX this is klunky and ugly, rpm itself should handle this +dbstat=/usr/lib/rpm/rpmdb_stat +if [ -x "$dbstat" ]; then + if "$dbstat" -e -h /var/lib/rpm 2>&1 | grep -q "doesn't match library version \| Invalid argument"; then + rm -f /var/lib/rpm/__db.* + fi +fi +exit 0 + +%files -f %{name}.lang +%defattr(-,root,root,-) +%doc GROUPS COPYING CREDITS ChangeLog.bz2 doc/manual/[a-z]* + +/usr/lib/tmpfiles.d/rpm.conf +%dir %{_sysconfdir}/rpm + +%attr(0755, root, root) %dir /var/lib/rpm +%attr(0644, root, root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/lib/rpm/* + +/bin/rpm +%{_bindir}/rpm2cpio +%{_bindir}/rpmdb +%{_bindir}/rpmkeys +%{_bindir}/rpmquery +%{_bindir}/rpmverify + +%{_mandir}/man8/rpm.8* +%{_mandir}/man8/rpmdb.8* +%{_mandir}/man8/rpmkeys.8* +%{_mandir}/man8/rpm2cpio.8* + +# XXX this places translated manuals to wrong package wrt eg rpmbuild +%lang(fr) %{_mandir}/fr/man[18]/*.[18]* +%lang(ko) %{_mandir}/ko/man[18]/*.[18]* +%lang(ja) %{_mandir}/ja/man[18]/*.[18]* +%lang(pl) %{_mandir}/pl/man[18]/*.[18]* +%lang(ru) %{_mandir}/ru/man[18]/*.[18]* +%lang(sk) %{_mandir}/sk/man[18]/*.[18]* + +%attr(0755, root, root) %dir %{rpmhome} +%{rpmhome}/macros +%{rpmhome}/macros.d +%{rpmhome}/rpmpopt* +%{rpmhome}/rpmrc + +%{rpmhome}/rpmdb_* +%{rpmhome}/rpm.daily +%{rpmhome}/rpm.log +%{rpmhome}/rpm.supp +%{rpmhome}/rpm2cpio.sh +%{rpmhome}/tgpg + +%{rpmhome}/platform + +%files libs +%defattr(-,root,root) +%{_libdir}/librpmio.so.* +%{_libdir}/librpm.so.* +%if %{with plugins} +%{_libdir}/rpm-plugins +%endif + +%files build-libs +%defattr(-,root,root) +%{_libdir}/librpmbuild.so.* +%{_libdir}/librpmsign.so.* + +%files build +%defattr(-,root,root) +%{_bindir}/rpmbuild +%{_bindir}/gendiff +%{_bindir}/rpmspec + +%{_mandir}/man1/gendiff.1* +%{_mandir}/man8/rpmbuild.8* +%{_mandir}/man8/rpmdeps.8* +%{_mandir}/man8/rpmspec.8* + +%{rpmhome}/brp-* +%{rpmhome}/check-* +%{rpmhome}/debugedit +%{rpmhome}/sepdebugcrcfix +%{rpmhome}/find-debuginfo.sh +%{rpmhome}/find-lang.sh +%{rpmhome}/*provides* +%{rpmhome}/*requires* +%{rpmhome}/*deps* +%{rpmhome}/*.prov +%{rpmhome}/*.req +%{rpmhome}/config.* +%{rpmhome}/mkinstalldirs +%{rpmhome}/macros.p* +%{rpmhome}/fileattrs + +%files sign +%defattr(-,root,root) +%{_bindir}/rpmsign +%{_mandir}/man8/rpmsign.8* + +%files python +%defattr(-,root,root) +%{python_sitearch}/rpm + +%files devel +%defattr(-,root,root) +%{_mandir}/man8/rpmgraph.8* +%{_bindir}/rpmgraph +%{_libdir}/librp*[a-z].so +%{_libdir}/pkgconfig/rpm.pc +%{_includedir}/rpm + +%files cron +%defattr(-,root,root) +%{_sysconfdir}/cron.daily/rpm +%config(noreplace) %{_sysconfdir}/logrotate.d/rpm + +%files apidocs +%defattr(-,root,root) +%doc COPYING doc/librpm/html/* + +%changelog +* Mon Sep 30 2013 Florian Festi - 4.11.1-9 + - Fix byteorder for 64 bit tags on big endian machines (#1012946) + - Better RPMSIGTAG_SIZE vs PMSIGTAG_LONGSIZE detection (#1012595) + +* Wed Sep 11 2013 Panu Matilainen - 4.11.1-8 +- Fix segfault on empty -p scriptlet body (#1004062) +- Add missing dependency on tar to rpm-build (#986539) + +* Thu Aug 29 2013 Panu Matilainen - 4.11.1-7 +- Fix relocation regression wrt unowned directories (#1001553) +- Fix build-time double-free wrt %%caps() on wildcard file entry (#1002089) +- Fix source URL in spec + +* Fri Aug 02 2013 Florian Festi - 4.11.1-6 + - Disable test suite as fakechroot is not longer in the distribution + +* Fri Aug 02 2013 Florian Festi - 4.11.1-5 +- Revert: Clarify man page about mutually exclusive options (#969505) +- Revert: Move translated rpmgraph man pages to devel sub package (#948861) + +* Thu Aug 01 2013 Florian Festi - 4.11.1-4 +- Clarify man page about mutually exclusive options (#969505) +- Move translated rpmgraph man pages to devel sub package (#948861) + +* Tue Jul 30 2013 Florian Festi - 4.11.1-3 +- Do not filter out lib64.* dependencies (#988373) + +* Fri Jul 05 2013 Panu Matilainen - 4.11.1-2 +- filter out non-library soname dependencies by default + +* Fri Jul 05 2013 Panu Matilainen - 4.11.1-1 +- update to 4.11.1 (http://rpm.org/wiki/Releases/4.11.1) +- drop upstreamed patches +- fix .gnu_debuglink CRC32 after dwz, buildrequire binutils-devel (#971119) +- ensure relocatable packages always get install-prefix(es) set (#979443) + +* Tue May 28 2013 Panu Matilainen - 4.11.0.1-2 +- check for stale locks when opening write-cursors (#860500, #962750...) +- serialize BDB environment open/close (#924417) + +* Mon Feb 04 2013 Panu Matilainen - 4.11.0.1-1 +- update to 4.11.0.1 (http://rpm.org/wiki/Releases/4.11.0.1) + +* Tue Jan 29 2013 Panu Matilainen - 4.11.0-0.beta1.3 +- revert yesterdays ghost-fix, it eats rpmdb's on upgrades + +* Mon Jan 28 2013 Panu Matilainen - 4.11.0-0.beta1.2 +- armv7hl and armv7hnl should not have -mthumb (#901901) +- fix duplicate directory ownership between rpm and rpm-build (#894201) +- fix regression on paths shared between a real file/dir and a ghost + +* Mon Dec 10 2012 Panu Matilainen - 4.11.0-0.beta1.1 +- update to 4.11 beta + +* Mon Nov 19 2012 Panu Matilainen - 4.10.90-0.git11989.3 +- package /usr/lib/rpm/macros.d directory (related to #846679) +- fixup a bunch of old incorrect dates in spec changelog + +* Sat Nov 17 2012 Panu Matilainen - 4.10.90-0.git11989.2 +- fix double-free on %caps in spec (#877512) + +* Thu Nov 15 2012 Panu Matilainen - 4.10.90-0.git11989.1 +- update to 4.11 (http://rpm.org/wiki/Releases/4.11.0) post-alpha snapshot +- drop/adjust patches as necessary + +* Thu Oct 11 2012 Panu Matilainen - 4.10.1-3 +- fix noarch __isa_* macro filter in installplatform (#865436) + +* Wed Oct 10 2012 Panu Matilainen - 4.10.1-2 +- account for intentionally skipped files when verifying hardlinks (#864622) + +* Wed Oct 03 2012 Panu Matilainen - 4.10.1-1 +- update to 4.10.1 ((http://rpm.org/wiki/Releases/4.10.1) + +* Mon Jul 30 2012 Panu Matilainen - 4.10.0-6 +- move our tmpfiles config to more politically correct location (#840192) + +* Sat Jul 21 2012 Fedora Release Engineering - 4.10.0-5.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 02 2012 Panu Matilainen - 4.10.0-5 +- force _host_vendor to redhat to better match toolchain etc (#485203) + +* Thu Jun 28 2012 Panu Matilainen - 4.10.0-4 +- merge ppc64p7 related fixes that only went into f17 (#835978) + +* Wed Jun 27 2012 Panu Matilainen - 4.10.0-3 +- add support for minidebuginfo generation (#834073) + +* Mon Jun 25 2012 Panu Matilainen - 4.10.0-2 +- add dwarf compression support to debuginfo generation (#833311) + +* Thu May 24 2012 Panu Matilainen - 4.10.0-1 +- update to 4.10.0 final + +* Mon Apr 23 2012 Panu Matilainen - 4.10.0-0.beta1.1 +- update to 4.10.0-beta1 + +* Mon Apr 16 2012 Panu Matilainen - 4.9.90-0.git11536.1 +- newer git snapshot (#809402, #808750) +- adjust posttrans script wrt bdb string change (#803866, #805613) + +* Thu Apr 05 2012 Panu Matilainen - 4.9.90-0.git11519.1 +- newer git snapshot to keep patch-count down +- fixes CVE-2012-0060, CVE-2012-0061 and CVE-2012-0815 +- fix obsoletes in installing set getting matched on provides (#810077) + +* Wed Apr 04 2012 Jindrich Novy - 4.9.90-0.git11505.12 +- rebuild against new libdb + +* Tue Apr 03 2012 Jindrich Novy - 4.9.90-0.git11505.11 +- build with internal libdb to allow libdb build with higher soname + +* Fri Mar 30 2012 Panu Matilainen - 4.9.90-0.git11505.10 +- fix base arch macro generation (#808250) + +* Thu Mar 29 2012 Panu Matilainen - 4.9.90-0.git11505.9 +- accept files as command line arguments to rpmdeps again (#807767) + +* Mon Mar 26 2012 Panu Matilainen - 4.9.90-0.git11505.8 +- remove fake library provide hacks now that deltarpm got rebuilt + +* Fri Mar 23 2012 Panu Matilainen - 4.9.90-0.git11505.7 +- fix header data length calculation breakage + +* Thu Mar 22 2012 Panu Matilainen - 4.9.90-0.git11505.6 +- fix keyid size bogosity causing breakage on 32bit systems + +* Wed Mar 21 2012 Panu Matilainen - 4.9.90-0.git11505.5 +- add temporary fake library provides to get around deltarpm "bootstrap" + dependency (yes its dirty) + +* Wed Mar 21 2012 Panu Matilainen - 4.9.90-0.git11505.4 +- fix overzealous sanity check breaking posttrans scripts + +* Tue Mar 20 2012 Panu Matilainen - 4.9.90-0.git11505.3 +- fix bad interaction with yum's test-transaction and pretrans scripts + +* Tue Mar 20 2012 Jindrich Novy - 4.9.90-0.git11505.2 +- rebuild + +* 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 + +* Wed Mar 07 2012 Panu Matilainen - 4.9.1.2-13 +- fix memory corruption on rpmdb size estimation (#766260) +- fix couple of memleaks in python bindings (#782147) +- fix regression in verify output formatting (#797964) +- dont process spec include in false branch of if (#782970) +- only warn on missing excluded files on build (#745629) +- dont free up file info sets on test transactions + +* Thu Feb 09 2012 Panu Matilainen - 4.9.1.2-12 +- switch back to smaller BDB cache default (#752897) + +* Sun Jan 15 2012 Dennis Gilmore - 4.9.1.2-11 +- always apply arm hfp macros, conditionally apply the logic to detect hfp + +* Tue Jan 10 2012 Panu Matilainen - 4.9.1.2-10 +- adjust perl and python detection rules for libmagic change (#772699) + +* Mon Jan 09 2012 Jindrich Novy - 4.9.1.2-9 +- recognize perl script as perl code (#772632) + +* Tue Dec 20 2011 Kay Sievers - 4.9.1.2-8 +- add temporary rpmlib patch to support filesystem transition + https://fedoraproject.org/wiki/Features/UsrMove + +* Fri Dec 02 2011 Panu Matilainen - 4.9.1.2-7 +- switch over to libdb, aka Berkeley DB 5.x + +* Thu Dec 01 2011 Panu Matilainen - 4.9.1.2-6 +- fix classification of ELF binaries with setuid/setgid bit (#758251) + +* Fri Nov 25 2011 Panu Matilainen - 4.9.1.2-5 +- adjust font detection rules for libmagic change (#757105) + +* Wed Nov 09 2011 Dennis Gilmore - 4.9.1.2-4 +- conditionally apply arm patch for hardfp on all arches but arm softfp ones + +* Fri Oct 28 2011 Panu Matilainen - 4.9.1.2-3 +- adjust db util prefix & dependency due to #749293 +- warn but dont fail the build if STABS encountered by debugedit (#725378) + +* Wed Oct 12 2011 Panu Matilainen - 4.9.1.2-2 +- try teaching find-lang about the new gnome help layout (#736523) + +* Thu Sep 29 2011 Panu Matilainen - 4.9.1.2-1 +- update to 4.9.1.2 (CVE-2011-3378) +- drop upstreamed rpmdb signal patch + +* Mon Sep 19 2011 Panu Matilainen - 4.9.1.1-3 +- fix signal blocking/unblocking regression on rpmdb open/close (#739492) + +* Mon Aug 08 2011 Adam Jackson 4.9.1.1-2 +- Add RPM_LD_FLAGS to build environment (#728974) + +* Tue Aug 02 2011 Panu Matilainen - 4.9.1.1-1 +- update to 4.9.1.1 + +* Tue Jul 19 2011 Panu Matilainen - 4.9.1-2 +- fix recursion of directories with trailing slash in file list (#722474) + +* Fri Jul 15 2011 Panu Matilainen - 4.9.1-1 +- update to 4.9.1 (http://rpm.org/wiki/Releases/4.9.1) +- drop no longer needed patches + +* Thu Jun 16 2011 Panu Matilainen - 4.9.0-10 +- rebuild to fix a missing interpreter dependency due to bug #712251 + +* Fri Jun 10 2011 Panu Matilainen - 4.9.0-9 +- fix crash if prep or changelog section in spec is empty (#706959) +- fix crash on macro which undefines itself +- fix script dependency generation with file 5.07 string changes (#712251) + +* Thu May 26 2011 Panu Matilainen - 4.9.0-8 +- add dwarf-4 support to debugedit (#707677) +- generate build-id symlinks for all filenames sharing a build-id (#641377) + +* Thu Apr 07 2011 Panu Matilainen - 4.9.0-7 +- add missing ldconfig calls to build-libs sub-package +- fix source url + +* Thu Apr 07 2011 Panu Matilainen - 4.9.0-6 +- revert the spec query change (#693338) for now, it breaks fedpkg + +* Tue Apr 05 2011 Panu Matilainen - 4.9.0-5 +- verify some properties of replaced and wrong-colored files (#528383) +- only list packages that would be generated on spec query (#693338) +- preferred color packages should be erased last (#680261) +- fix leaks when freeing a populated transaction set +- take file state into account for file dependencies + +* Tue Mar 22 2011 Panu Matilainen - 4.9.0-4 +- fix classification of elf executables with sticky bit set (#689182) + +* Wed Mar 16 2011 Jindirch Novy - 4.9.0-3 +- fix crash in package manifest check (#688091) + +* Fri Mar 04 2011 Panu Matilainen - 4.9.0-2 +- fix duplicate rpmsign binary in rpm main package dragging in build-libs + +* Wed Mar 02 2011 Panu Matilainen - 4.9.0-1 +- update to 4.9.0 final +- drop upstreamed patches + +* Tue Mar 01 2011 Panu Matilainen - 4.9.0-0.rc1.4 +- spec cosmetics clean up extra whitespace + group more logically +- wipe out BDB environment at boot via tmpfiles.d + +* Mon Feb 21 2011 Panu Matilainen - 4.9.0-0.rc1.3 +- fix erronous double cursor open, causing yum reinstall hang (#678644) + +* Mon Feb 21 2011 Panu Matilainen - 4.9.0-0.rc1.2 +- fix broken logic in depgen collector, hopefully curing #675002 + +* Tue Feb 15 2011 Panu Matilainen - 4.9.0-0.rc1.1 +- update to 4.9.0-rc1 +- drop upstream patches +- nss packaging has changed, buildrequire nss-softokn-freebl-devel + +* Wed Feb 09 2011 Fedora Release Engineering - 4.9.0-0.beta1.7.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Feb 07 2011 Panu Matilainen - 4.9.0-0.beta1.7 +- fix segfault when building more than one package at a time (#675565) + +* Sun Feb 06 2011 Panu Matilainen - 4.9.0-0.beta1.6 +- adjust ocaml rule for libmagic string change + +* Mon Jan 31 2011 Panu Matilainen - 4.9.0-0.beta1.5 +- dont try to remove environment files if private env used (related to #671200) +- unbreak mono dependency extraction (#673663) +- complain instead of silent abort if cwd is not readable (#672576) + +* Tue Jan 25 2011 Panu Matilainen - 4.9.0-0.beta1.4 +- add support for Requires(posttrans) dependencies + +* Fri Jan 21 2011 Panu Matilainen - 4.9.0-0.beta1.3 +- avoid division by zero in rpmdb size calculation (#671056) +- fix secondary index iteration returing duplicate at end (#671149) +- fix rebuilddb creating duplicate indexes for first header + +* Fri Jan 21 2011 Panu Matilainen - 4.9.0-0.beta1.2 +- permit queries from rpmdb on read-only media (#671200) + +* Tue Jan 18 2011 Panu Matilainen - 4.9.0-0.beta1.1 +- rpm 4.9.0-beta1 (http://rpm.org/wiki/Releases/4.9.0) + - drop no longer needed patches + - adjust requires + buildrequires to match current needs + - adjust rpmdb index ghosts to match the new release + - split librpmbuild and librpmsign to a separate rpm-build-libs package + - split rpmsign to its own package to allow signing without all the build goo + - build-conditionalize plugins, disabled for now + - gstreamer and printer dependency generation moving out + - handle .so symlink dependencies with fileattrs + - use gnupg2 for signing as that's what typically installed by default + +* Tue Jan 18 2011 Panu Matilainen - 4.8.1-7 +- bunch of spec tweaks, cleanups + corrections: + - shorten rpm-build filelist a bit with glob use, reorder for saner grouping + - missing isa in popt version dependency + - only add rpmdb_foo symlinks for actually relevant db_* utils + - drop no longer necessary file-devel dependency from rpm-devel + - drop sqlite backend build-conditional + - preliminaries for moving from db4 to libdb +- use gnupg2 for signing as that's more likely to be installed by default + +* Mon Oct 25 2010 Jindrich Novy - 4.8.1-6 +- rebuild with new xz-5.0.0 + +* Tue Aug 10 2010 Panu Matilainen - 4.8.1-5 +- create gdb index on debuginfo generation (#617166) +- rpm-build now requires /usr/bin/gdb-add-index for consistent index creation +- include COPYING in -apidocs for licensing guidelines compliance + +* Thu Jul 22 2010 David Malcolm - 4.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Fri Jul 02 2010 Panu Matilainen - 4.8.1-3 +- ugh, reversed condition braindamage in the font provide extractor "fix" + +* Wed Jun 30 2010 Panu Matilainen - 4.8.1-2 +- fix a potential getOutputFrom() error from font provide extraction +- debug-friendlier message to aid finding other similar cases (#565223) + +* Fri Jun 11 2010 Panu Matilainen - 4.8.1-1 +- update to 4.8.1 (http://rpm.org/wiki/Releases/4.8.1) +- drop no longer needed patches +- fix source url pointing to testing directory + +* Thu Jun 03 2010 Panu Matilainen - 4.8.0-19 +- also strip POSIX file capabilities from hardlinks on upgrade/erase (#598775) + +* Wed Jun 02 2010 Panu Matilainen - 4.8.0-18 +- remove s-bits on upgrade too (#598775) + +* Thu May 27 2010 Panu Matilainen - 4.8.0-17 +- fix segfault in spec parser (#597835) + +* Thu May 27 2010 Panu Matilainen - 4.8.0-16 +- adjust to new pkg-config behavior wrt private dependencies (#596433) +- rpm-build now requires pkgconfig >= 0.24 + +* Fri May 21 2010 Panu Matilainen - 4.8.0-15 +- handle non-existent dependency sets correctly in python (#593553) +- make find-lang look in all locale dirs (#584866) + +* Fri Apr 23 2010 Panu Matilainen - 4.8.0-14 +- lose dangling symlink to extinct (and useless) berkeley_db_svc (#585174) + +* Wed Mar 24 2010 Panu Matilainen - 4.8.0-13 +- fix python match iterator regression wrt boolean representation + +* Wed Mar 17 2010 Panu Matilainen - 4.8.0-12 +- unbreak find-lang --with-man from yesterdays braindamage + +* Tue Mar 16 2010 Panu Matilainen - 4.8.0-11 +- support single PPD providing driver for devices (#568351) +- merge the psdriver patch pile into one +- preserve empty lines in spec prep section (#573339) +- teach python bindings about RPMTRANS_FLAG_NOCONTEXTS (related to #573111) +- dont own localized man directories through find_lang (#569536) + +* Mon Feb 15 2010 Panu Matilainen - 4.8.0-10 +- drop bogus dependency on lzma, xz is used to handle the lzma format too + +* Fri Feb 05 2010 Panu Matilainen - 4.8.0-9 +- unbreak python(abi) requires generation (#562906) + +* Fri Feb 05 2010 Panu Matilainen - 4.8.0-8 +- more fixes to postscript provides extractor (#562228) +- avoid accessing unrelated mount points in disk space checking (#547548) +- fix disk space checking with erasures present in transaction (#561160) + +* Fri Feb 05 2010 Panu Matilainen - 4.8.0-7 +- couple of fixes to the postscript provides extractor (#538101) + +* Thu Feb 04 2010 Panu Matilainen - 4.8.0-6 +- extract provides for postscript printer drivers (#538101) + +* Wed Feb 03 2010 Panu Matilainen - 4.8.0-5 +- python byte-compilation fixes + improvements (#558997) + +* Sat Jan 30 2010 Panu Matilainen - 4.8.0-4 +- support parallel python versions in python dependency extractor (#532118) + +* Thu Jan 21 2010 Panu Matilainen - 4.8.0-3 +- fix segfault on failed url retrieval +- fix verification error code depending on verbosity level +- if anything in testsuite fails, dump out the log + +* Fri Jan 08 2010 Panu Matilainen - 4.8.0-2 +- put disttag back, accidentally nuked in 4.8.0 final update + +* Fri Jan 08 2010 Panu Matilainen - 4.8.0-1 +- update to 4.8.0 final (http://rpm.org/wiki/Releases/4.8.0) + +* Thu Jan 07 2010 Panu Matilainen - 4.8.0-0.beta1.6 +- pull out macro scoping "fix" for now, it breaks font package macros + +* Mon Jan 04 2010 Panu Matilainen - 4.8.0-0.beta1.5 +- always clear locally defined macros when they go out of scope + +* Thu Dec 17 2009 Panu Matilainen - 4.8.0-0.beta1.4 +- permit unexpanded macros when parsing spec (#547997) + +* Wed Dec 09 2009 Panu Matilainen - 4.8.0-0.beta1.3 +- fix a bunch of python refcount-errors causing major memory leaks + +* Mon Dec 07 2009 Panu Matilainen - 4.8.0-0.beta1.2 +- fix noise from python bytecompile on non-python packages (#539635) +- make all our -devel [build]requires isa-specific +- trim out superfluous -devel dependencies from rpm-devel + +* Mon Dec 07 2009 Panu Matilainen - 4.8.0-0.beta1.1 +- update to 4.8.0-beta1 (http://rpm.org/wiki/Releases/4.8.0) +- rpm-build conflicts with current ocaml-runtime + +* Fri Dec 04 2009 Panu Matilainen - 4.7.2-2 +- missing error exit code from signing password checking (#496754) +- dont fail build on unrecognized data files (#532489) +- dont try to parse subkeys and secret keys (#436812) +- fix chmod test on selinux, breaking %%{_fixperms} macro (#543035) + +* Wed Nov 25 2009 Panu Matilainen - 4.7.2-1 +- update to 4.7.2 (http://rpm.org/wiki/Releases/4.7.2) +- fixes #464750, #529214 + +* Wed Nov 18 2009 Jindrich Novy - 4.7.1-10 +- rebuild against BDB-4.8.24 + +* Wed Nov 18 2009 Jindrich Novy - 4.7.1-9 +- drop versioned dependency to BDB + +* Wed Oct 28 2009 Panu Matilainen - 4.7.1-8 +- support multiple python implementations in brp-python-bytecompile (#531117) +- make disk space problem reporting a bit saner (#517418) + +* Tue Oct 06 2009 Panu Matilainen - 4.7.1-7 +- fix build with BDB 4.8.x by removing XA "support" from BDB backend +- perl dep extractor heredoc parsing improvements (#524929) + +* Mon Sep 21 2009 Panu Matilainen - 4.7.1-6 +- 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) + +* Tue Sep 15 2009 Panu Matilainen - 4.7.1-5 +- fix duplicate dependency filtering on build (#490378) +- permit absolute paths in file lists again (#521760) +- use permissions 444 for all .debug files (#522194) +- add support for optional bugurl tag (#512774) + +* Fri Aug 14 2009 Jesse Keating - 4.7.1-4 +- Patch to make geode appear as i686 (#517475) + +* Thu Aug 06 2009 Jindrich Novy - 4.7.1-3 +- rebuild because of the new xz + +* Sun Jul 26 2009 Fedora Release Engineering - 4.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jul 21 2009 Panu Matilainen - 4.7.1-1 +- update to 4.7.1 ((http://rpm.org/wiki/Releases/4.7.1) +- fix source url + +* Mon Jul 20 2009 Bill Nottingham - 4.7.0-9 +- enable XZ support + +* Thu Jun 18 2009 Panu Matilainen - 4.7.0-8 +- updated OSGi dependency extractor (#506471) +- fix segfault in symlink fingerprinting (#505777) +- fix invalid memory access causing bogus file dependency errors (#506323) + +* Tue Jun 16 2009 Panu Matilainen - 4.7.0-7 +- add dwarf-3 support to debugedit (#505774) + +* Fri Jun 12 2009 Stepan Kasal - 4.7.0-6 +- require libcap >= 2.16 (#505596) + +* Wed Jun 03 2009 Panu Matilainen - 4.7.0-5 +- don't mess up problem altNEVR in python ts.check() (#501068) +- fix hardlink size calculation on build (#503020) + +* Thu May 14 2009 Panu Matilainen - 4.7.0-4 +- split cron-job into a sub-package to avoid silly deps on core rpm (#500722) +- rpm requires coreutils but not in %%post +- build with libcap and libacl +- fix pgp pubkey signature tag parsing + +* Tue Apr 21 2009 Panu Matilainen - 4.7.0-3 +- couple of merge-review fixes (#226377) + - eliminate bogus leftover rpm:rpm rpmdb ownership + - unescaped macro in changelog +- fix find-lang --with-kde with KDE3 (#466009) +- switch back to default file digest algorithm + +* Fri Apr 17 2009 Panu Matilainen - 4.7.0-2 +- file classification tweaks for text files (#494817) + - disable libmagic text token checks, it's way too error-prone + - consistently classify all text as such and include description + +* Thu Apr 16 2009 Panu Matilainen - 4.7.0-1 +- update to 4.7.0 final (http://rpm.org/wiki/Releases/4.7.0) +- fixes #494049, #495429 +- dont permit test-suite failure anymore + +* Thu Apr 09 2009 Panu Matilainen - 4.7.0-0.rc1.1 +- update to 4.7.0-rc1 +- fixes #493157, #493777, #493696, #491388, #487597, #493162 + +* Fri Apr 03 2009 Panu Matilainen - 4.7.0-0.beta1.9 +- fix recorded file state of otherwise skipped files (#492947) +- compress ChangeLog, drop old CHANGES file (#492440) + +* Thu Apr 2 2009 Tom "spot" Callaway - 4.7.0-0.beta1.8 +- Fix sparcv9v and sparc64v targets + +* Tue Mar 24 2009 Panu Matilainen - 4.7.0-0.beta1.7 +- prefer more specific types over generic "text" in classification (#491349) + +* Mon Mar 23 2009 Panu Matilainen - 4.7.0-0.beta1.6 +- with the fd leak gone, let libmagic look into compressed files again (#491596) + +* Mon Mar 23 2009 Panu Matilainen - 4.7.0-0.beta1.5 +- fix font provide generation on filenames with whitespace (#491597) + +* Thu Mar 12 2009 Panu Matilainen - 4.7.0-0.beta1.4 +- handle RSA V4 signatures (#436812) +- add alpha arch ISA-bits +- enable internal testsuite on build + +* Mon Mar 09 2009 Panu Matilainen - 4.7.0-0.beta1.3 +- fix _install_langs behavior (#489235) +- fix recording of file states into rpmdb on install + +* Sun Mar 08 2009 Panu Matilainen - 4.7.0-0.beta1.2 +- load macros before creating directories on src.rpm install (#489104) + +* Fri Mar 06 2009 Panu Matilainen - 4.7.0-0.beta1.1 +- update to 4.7.0-beta1 (http://rpm.org/wiki/Releases/4.7.0) + +* Fri Feb 27 2009 Panu Matilainen - 4.6.0-11 +- build rpm itself with md5 file digests for now to ensure upgradability + +* Thu Feb 26 2009 Panu Matilainen - 4.6.0-10 +- handle NULL passed as EVR in rpmdsSingle() again (#485616) + +* Wed Feb 25 2009 Panu Matilainen - 4.6.0-9 +- pull out python byte-compile syntax check for now + +* Mon Feb 23 2009 Panu Matilainen - 4.6.0-8 +- make -apidocs sub-package noarch +- fix source URL + +* Sat Feb 21 2009 Panu Matilainen - 4.6.0-7 +- loosen up restrictions on dependency names (#455119) +- handle inter-dependent pkg-config files for requires too (#473814) +- error/warn on elf binaries in noarch package in build + +* Fri Feb 20 2009 Panu Matilainen - 4.6.0-6 +- error out on uncompilable python code (Tim Waugh) + +* Tue Feb 17 2009 Jindrich Novy - 4.6.0-5 +- remove two offending hunks from anyarch patch causing that + RPMTAG_BUILDARCHS isn't written to SRPMs + +* Mon Feb 16 2009 Jindrich Novy - 4.6.0-4 +- inherit group tag from the main package (#470714) +- ignore BuildArch tags for anyarch actions (#442105) +- don't check package BuildRequires when doing --rmsource (#452477) +- don't fail because of missing sources when only spec removal + is requested (#472427) + +* Mon Feb 16 2009 Panu Matilainen - 4.6.0-3 +- updated fontconfig provide script - fc-query does all the hard work now + +* Mon Feb 09 2009 Panu Matilainen - 4.6.0-2 +- build against db 4.7.x + +* Fri Feb 06 2009 Panu Matilainen - 4.6.0-1 +- update to 4.6.0 final +- revert libmagic looking into compressed files for now, breaks ooffice build + +* Fri Feb 06 2009 Panu Matilainen - 4.6.0-0.rc4.5 +- enable fontconfig provides generation + +* Thu Feb 05 2009 Panu Matilainen - 4.6.0-0.rc4.4 +- fixup rpm translation lookup to match Fedora specspo (#436941) + +* Wed Feb 04 2009 Panu Matilainen - 4.6.0-0.rc4.3 +- extract mimehandler provides from .desktop files +- preliminaries for extracting font provides (not enabled yet) +- dont classify font metrics data as fonts +- only run script dep extraction once per file, duh + +* Sat Jan 31 2009 Panu Matilainen - 4.6.0-0.rc4.2 +- change platform sharedstatedir to something more sensible (#185862) +- add rpmdb_foo links to db utils for documentation compatibility + +* Fri Jan 30 2009 Panu Matilainen - 4.6.0-0.rc4.1 +- update to 4.6.0-rc4 +- fixes #475582, #478907, #476737, #479869, #476201 + +* Fri Dec 12 2008 Panu Matilainen - 4.6.0-0.rc3.2 +- add back defaultdocdir patch which hadn't been applied on 4.6.x branch yet + +* Fri Dec 12 2008 Panu Matilainen - 4.6.0-0.rc3.1 +- add dist-tag, rebuild + +* Tue Dec 09 2008 Panu Matilainen - 4.6.0-0.rc3.1 +- update to rpm 4.6.0-rc3 +- fixes #475214, #474550, #473239 + +* Wed Dec 3 2008 Jeremy Katz - 4.6.0-0.rc2.9 +- I built into the wrong place + +* Wed Dec 3 2008 Jeremy Katz - 4.6.0-0.rc2.8 +- python 2.6 rebuild again + +* Wed Dec 03 2008 Panu Matilainen +- make rpm-build require pkgconfig (#473978) + +* Tue Dec 02 2008 Panu Matilainen +- fix pkg-config provide generation when pc's depend on each other (#473814) + +* Mon Dec 01 2008 Jindrich Novy +- include rpmfileutil.h from rpmmacro.h, unbreaks + net-snmp (#473420) + +* Sun Nov 30 2008 Panu Matilainen +- rebuild for python 2.6 + +* Sat Nov 29 2008 Panu Matilainen +- update to 4.6.0-rc2 +- fixes #471820, #473167, #469355, #468319, #472507, #247374, #426672, #444661 +- enable automatic generation of pkg-config and libtool dependencies #465377 + +* Fri Oct 31 2008 Panu Matilainen +- adjust find-debuginfo for "file" output change (#468129) + +* Tue Oct 28 2008 Panu Matilainen +- Florian's improved fingerprinting hash algorithm from upstream + +* Sat Oct 25 2008 Panu Matilainen +- Make noarch sub-packages actually work +- Fix defaultdocdir logic in installplatform to avoid hardwiring mandir + +* Fri Oct 24 2008 Jindrich Novy +- update compat-db dependencies (#459710) + +* Wed Oct 22 2008 Panu Matilainen +- never add identical NEVRA to transaction more than once (#467822) + +* Sun Oct 19 2008 Panu Matilainen +- permit tab as macro argument separator (#467567) + +* Thu Oct 16 2008 Panu Matilainen +- update to 4.6.0-rc1 +- fixes #465586, #466597, #465409, #216221, #466503, #466009, #463447... +- avoid using %%configure macro for now, it has unwanted side-effects on rpm + +* Wed Oct 01 2008 Panu Matilainen +- update to official 4.5.90 alpha tarball +- a big pile of misc bugfixes + translation updates +- isa-macro generation fix for ppc (#464754) +- avoid pulling in pile of perl dependencies for an unused script +- handle both "invalid argument" and clear env version mismatch on posttrans + +* Thu Sep 25 2008 Jindrich Novy +- don't treat %%patch numberless if -P parameter is present (#463942) + +* Thu Sep 11 2008 Panu Matilainen +- add hack to support extracting gstreamer plugin provides (#438225) +- fix another macro argument handling regression (#461180) + +* Thu Sep 11 2008 Jindrich Novy +- create directory structure for rpmbuild prior to build if it doesn't exist (#455387) +- create _topdir if it doesn't exist when installing SRPM +- don't generate broken cpio in case of hardlink pointing on softlink, + thanks to pixel@mandriva.com + +* Sat Sep 06 2008 Jindrich Novy +- fail hard if patch isn't found (#461347) + +* Mon Sep 01 2008 Jindrich Novy +- fix parsing of boolean expressions in spec (#456103) + (unbreaks pam, jpilot and maybe other builds) + +* Tue Aug 26 2008 Jindrich Novy +- add support for noarch subpackages +- fix segfault in case of insufficient disk space detected (#460146) + +* Wed Aug 13 2008 Panu Matilainen +- 4.5.90-0.git8461.2 +- fix archivesize tag generation on ppc (#458817) + +* Fri Aug 08 2008 Panu Matilainen +- 4.5.90-0.git8461.1 +- new snapshot from upstream +- fixes #68290, #455972, #446202, #453364, #456708, #456103, #456321, #456913, + #458260, #458261 +- partial fix for #457360 + +* Thu Jul 31 2008 Florian Festi +- 4.5.90-0.git8427.1 +- new snapshot from upstream + +* Thu Jul 31 2008 Florian Festi +- 4.5.90-0.git8426.10 +- rpm-4.5.90-posttrans.patch +- use header from rpmdb in posttrans to make anaconda happy + +* Sat Jul 19 2008 Panu Matilainen +- 4.5.90-0.git8426.9 +- fix regression in patch number handling (#455872) + +* Tue Jul 15 2008 Panu Matilainen +- 4.5.90-0.git8426.8 +- fix regression in macro argument handling (#455333) + +* Mon Jul 14 2008 Panu Matilainen +- 4.5.90-0.git8426.7 +- fix mono dependency extraction (adjust for libmagic string change) + +* Sat Jul 12 2008 Panu Matilainen +- 4.5.90-0.git8426.6 +- fix type mismatch causing funky breakage on ppc64 + +* Fri Jul 11 2008 Panu Matilainen +- 4.5.90-0.git8426.5 +- flip back to external bdb +- fix tab vs spaces complaints from rpmlint +- add dep for lzma and require unzip instead of zip in build (#310694) +- add pkgconfig dependency to rpm-devel +- drop ISA-dependencies for initial introduction +- new snapshot from upstream for documentation fixes + +* Thu Jul 10 2008 Panu Matilainen +- 4.5.90-0.git8424.4 +- handle int vs external db in posttrans too + +* Wed Jul 09 2008 Panu Matilainen +- 4.5.90-0.git8424.3 +- require curl as external url helper + +* Wed Jul 09 2008 Panu Matilainen +- 4.5.90-0.git8424.2 +- add support for building with or without internal db + +* Wed Jul 09 2008 Panu Matilainen +- rpm 4.5.90-0.git8424.1 (alpha snapshot) +- adjust to build against Berkeley DB 4.5.20 from compat-db for now +- add posttrans to clean up db environment mismatch after upgrade +- forward-port devel autodeps patch + +* Tue Jul 08 2008 Panu Matilainen +- adjust for rpmdb index name change +- drop unnecessary vendor-macro patch for real +- add ISA-dependencies among rpm subpackages +- make lzma and sqlite deps conditional and disabled by default for now + +* Fri Feb 01 2008 Panu Matilainen +- spec largely rewritten, truncating changelog