Hello community,

here is the log from the commit of package rpm for openSUSE:Factory checked in 
at 2018-01-13 21:33:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpm (Old)
 and      /work/SRC/openSUSE:Factory/.rpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rpm"

Sat Jan 13 21:33:10 2018 rev:254 rq:561871 version:4.14.0

Changes:
--------
New Changes file:

--- /dev/null   2018-01-05 12:14:39.755488130 +0100
+++ /work/SRC/openSUSE:Factory/.rpm.new/python-rpm.changes      2018-01-13 
21:33:15.166354674 +0100
@@ -0,0 +1,150 @@
+-------------------------------------------------------------------
+Tue Dec 19 09:39:25 UTC 2017 - [email protected]
+
+- Update RPM groups
+
+-------------------------------------------------------------------
+Sat Oct 28 12:19:34 UTC 2017 - [email protected]
+
+- Add a comment to note that prep and build stages come from rpm.spec
+
+-------------------------------------------------------------------
+Mon Oct 16 13:49:18 UTC 2017 - [email protected]
+
+- Properly quote the conditional for Obsoletes+Provides
+
+-------------------------------------------------------------------
+Sun Oct 15 04:03:00 UTC 2017 - [email protected]
+
+- Unify rpm-python and python3-rpm into singlespec
+- Switch the build to use setuptools-based build, so that
+  the Python module is properly built with all its metadata
+
+-------------------------------------------------------------------
+Wed Nov 20 14:41:34 CET 2013 - [email protected]
+
+- adapt to python-3.3, which no longer looks at XXXmodule.so
+
+-------------------------------------------------------------------
+Fri Jul 12 15:36:43 CEST 2013 - [email protected]
+
+- update to rpm-4.11.1
+
+-------------------------------------------------------------------
+Wed Jan  2 14:25:20 UTC 2013 - [email protected]
+
+- Update to 4.10.2
+
+-------------------------------------------------------------------
+Mon Apr 23 11:16:26 CEST 2012 - [email protected]
+
+- modified capsule api diff to match rpm upstream
+
+-------------------------------------------------------------------
+Wed Apr 11 16:54:02 UTC 2012 - [email protected]
+
+- Fix usage of deprecated AsVoidPtr Python/C API, 
+  replaced by Capsule API
+
+-------------------------------------------------------------------
+Tue Jan 17 10:28:42 UTC 2012 - [email protected]
+
+- Spec file cleanup:
+  * Don't rm -rf %{buildroot}
+  * Removed %clean section
+  * Removed authors from description
+
+-------------------------------------------------------------------
+Sun Dec 11 09:28:28 UTC 2011 - [email protected]
+
+- add libtool as explicit buildrequire
+
+-------------------------------------------------------------------
+Wed Feb 23 14:01:41 CET 2011 - [email protected]
+
+- drop standard python directories from filelist [bnc#229189]
+
+-------------------------------------------------------------------
+Fri Oct 22 15:52:32 UTC 2010 - [email protected]
+
+- adapt second spec file to changes done to rpm.spec
+
+-------------------------------------------------------------------
+Mon Oct 18 11:03:53 CEST 2010 - [email protected]
+
+- adapt buildrequires 
+
+-------------------------------------------------------------------
+Thu Feb 12 16:52:26 CET 2009 - [email protected]
+
+- adapt buildrequires 
+
+-------------------------------------------------------------------
+Wed Oct  8 11:24:22 CEST 2008 - [email protected]
+
+- added libelf-devel to BuildRequires to fix build
+
+-------------------------------------------------------------------
+Thu Sep 11 15:33:52 CEST 2008 - [email protected]
+
+- update to 4.4.2.3 to get rid of >50 patches
+
+-------------------------------------------------------------------
+Sat Aug 30 21:23:38 CEST 2008 - [email protected]
+
+- add libselinux-devel to BuildRequires
+
+-------------------------------------------------------------------
+Thu Aug  7 16:05:51 CEST 2008 - [email protected]
+
+- fix build against python 2.6
+
+-------------------------------------------------------------------
+Thu Mar 27 14:47:18 CET 2008 - [email protected]
+
+- fix buildrequires
+
+-------------------------------------------------------------------
+Fri May 25 16:20:53 CEST 2007 - [email protected]
+
+- fix unicode queries
+
+-------------------------------------------------------------------
+Fri Mar 30 15:06:28 CEST 2007 - [email protected]
+
+- add ncurses-devel and zlib-devel BuildRequires.
+
+-------------------------------------------------------------------
+Wed Oct 18 22:59:02 CEST 2006 - [email protected]
+
+- use rpm.spec for building instead of duplication everything
+- delete superfluous .a and .la files [#202604]
+- create .pyc and .pyo files [#205711]
+
+-------------------------------------------------------------------
+Sun Oct 15 23:41:37 CEST 2006 - [email protected]
+
+- Make sure config.rpath is present.
+
+-------------------------------------------------------------------
+Fri Sep 22 08:58:57 CEST 2006 - [email protected]
+
+- Fix for python2.5.
+
+-------------------------------------------------------------------
+Thu Sep 21 11:41:04 CEST 2006 - [email protected]
+
+- do not package beecrypt python bindings as libbeecrypt is not
+  packaged either
+- fix literal %{version} in Requires tag
+
+-------------------------------------------------------------------
+Thu Sep 21 10:58:42 CEST 2006 - [email protected]
+
+- fix build with python 2.5 by overriding autodetection
+
+-------------------------------------------------------------------
+Tue Sep 19 13:48:27 CEST 2006 - [email protected]
+
+- split from rpm package
+
--- /work/SRC/openSUSE:Factory/rpm/rpm.changes  2017-11-30 12:31:52.935390609 
+0100
+++ /work/SRC/openSUSE:Factory/.rpm.new/rpm.changes     2018-01-13 
21:33:15.342346435 +0100
@@ -1,0 +2,66 @@
+Fri Jan  5 13:26:50 CET 2018 - [email protected]
+
+- fix signature header writing if the archive size is bigger
+  than 2 GByte
+  new patch: bigarchive.diff
+
+-------------------------------------------------------------------
+Tue Jan  2 11:04:52 CET 2018 - [email protected]
+
+- remove shebang from pythondistdeps.py
+  new patch: pythondistdeps.diff
+
+-------------------------------------------------------------------
+Tue Dec 19 09:39:25 UTC 2017 - [email protected]
+
+- Update RPM groups
+
+-------------------------------------------------------------------
+Fri Dec 15 13:18:39 CET 2017 - [email protected]
+
+- patch debugedit so that it also handles the .debug.macro section
+  new patch: debugedit-macro.diff
+
+-------------------------------------------------------------------
+Thu Dec  7 17:02:52 CET 2017 - [email protected]
+
+- switch build id generation to "alldebug" mode
+
+-------------------------------------------------------------------
+Mon Dec  4 18:35:41 UTC 2017 - [email protected]
+
+- Replace PreReq fillup with Requires(post), so that we can
+  deinstall it later if we don't need it anymore
+
+-------------------------------------------------------------------
+Fri Dec  1 17:15:13 CET 2017 - [email protected]
+
+- update to rpm-4.14.0
+  * new with/without/unless rich dependencies
+  * multifile optimized debuginfo packages
+  * much improved macro engine
+- dropped patches:
+  * 0001-set-SOURCE_DATE_EPOCH-from-changelog.patch
+  * 0002-Extend-changelog-to-support-full-timestamps-903.patch
+  * 0003-Allow-SOURCE_DATE_EPOCH-to-override-file-timestamps.patch
+  * 0004-Allow-SOURCE_DATE_EPOCH-to-override-RPMTAG_BUILDTIME.patch
+  * buildidprov.diff
+  * changes-doc.diff
+  * convertdb1static.diff
+  * debugedit-canon-fix.diff
+  * debugedit-comp-dir.diff
+  * debugsource-package.diff
+  * find-lang-python.patch
+  * nobfd.diff
+  * normalize_blocksize.diff
+  * perlprov-package.diff
+  * perlprov.diff
+  * python3-abi-kind.diff
+  * rpmrctests.diff
+- new patches (backports from master):
+  * editdwarf.diff
+  * rofs.diff
+  * transfiletriggerpostun.diff
+  * hardlink.diff
+
+-------------------------------------------------------------------

Old:
----
  0001-set-SOURCE_DATE_EPOCH-from-changelog.patch
  0002-Extend-changelog-to-support-full-timestamps-903.patch
  0003-Allow-SOURCE_DATE_EPOCH-to-override-file-timestamps.patch
  0004-Allow-SOURCE_DATE_EPOCH-to-override-RPMTAG_BUILDTIME.patch
  buildidprov.diff
  changes-doc.diff
  convertdb1static.diff
  debugedit-canon-fix.diff
  debugedit-comp-dir.diff
  debugsource-package.diff
  find-lang-python.patch
  nobfd.diff
  normalize_blocksize.diff
  perlprov-package.diff
  perlprov.diff
  python3-abi-kind.diff
  python3-rpm.changes
  python3-rpm.spec
  rpm-4.13.0.1.tar.bz2
  rpm-python.changes
  rpm-python.spec
  rpmrctests.diff

New:
----
  bigarchive.diff
  debugedit-macro.diff
  editdwarf.diff
  hardlink.diff
  python-rpm.changes
  python-rpm.spec
  pythondistdeps.diff
  rofs.diff
  rpm-4.14.0.tar.bz2
  transfiletriggerpostun.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-rpm.spec ++++++
#
# spec file for package python-rpm
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 Neal Gompa <[email protected]>.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           python-rpm
Version:        4.14.0
Release:        0
#!BuildIgnore:  rpmlint-Factory
Summary:        Python Bindings for Manipulating RPM Packages
License:        GPL-2.0+
Group:          Development/Libraries/Python
Source99:       rpm.spec
BuildRequires:  file-devel
BuildRequires:  libacl-devel
BuildRequires:  libbz2-devel
BuildRequires:  libcap-devel
BuildRequires:  libelf-devel
BuildRequires:  libselinux-devel
BuildRequires:  libsemanage-devel
BuildRequires:  libtool
BuildRequires:  lua-devel
BuildRequires:  ncurses-devel
BuildRequires:  popt-devel
BuildRequires:  python-rpm-macros
BuildRequires:  python2-devel
BuildRequires:  python3-devel
BuildRequires:  xz-devel
BuildRequires:  zlib-devel
Requires:       rpm = %{version}

%if "%{python_flavor}" == "python2"
Obsoletes:      rpm-python < %{version}-%{release}
Provides:       rpm-python = %{version}-%{release}
%endif

# Enable Python build sourced from rpm spec
%global with_python 1

%{expand:%(sed -n -e '/^Source:/,/^BuildRoot:/p' <%_sourcedir/rpm.spec)}

%python_subpackages

%description
This 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.

%prep
%{expand:%(sed -n -e '/^%%prep/,/^%%install/p' <%_sourcedir/rpm.spec | sed -e 
'1d' -e '$d')}

# The build stage is already declared and pulled in from rpm.spec
pushd python
%python_build
popd

%install
pushd python
%python_install
popd

%files %{python_files}
%{python_sitearch}/rpm*

%changelog
++++++ rpm.spec ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.734234453 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.738234267 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package rpm
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,7 @@
 
 
 #Compat macro for new _fillupdir macro introduced in Nov 2017
-%if ! %{defined _fillupdir}
-  %define _fillupdir /var/adm/fillup-templates
-%endif
+%{?!_fillupdir:%define _fillupdir /var/adm/fillup-templates}
 
 Name:           rpm
 BuildRequires:  binutils
@@ -33,6 +31,7 @@
 BuildRequires:  libacl-devel
 BuildRequires:  libbz2-devel
 BuildRequires:  libcap-devel
+BuildRequires:  libdw-devel
 BuildRequires:  libelf-devel
 BuildRequires:  libselinux-devel
 BuildRequires:  libsemanage-devel
@@ -48,13 +47,13 @@
 BuildRequires:  zlib-devel
 #!BuildIgnore:  rpmlint-Factory
 Provides:       rpminst
-PreReq:         %fillup_prereq
+Requires(post): %fillup_prereq
 Summary:        The RPM Package Manager
 License:        GPL-2.0+
 Group:          System/Packages
-Version:        4.13.0.1
+Version:        4.14.0
 Release:        0
-Source:         http://ftp.rpm.org/releases/rpm-4.13.x/rpm-%{version}.tar.bz2
+Source:         http://ftp.rpm.org/releases/rpm-4.14.x/rpm-%{version}.tar.bz2
 Source1:        RPM-HOWTO.tar.bz2
 Source4:        rpm-suse_macros
 Source5:        rpmsort
@@ -78,7 +77,6 @@
 Patch16:        dbrointerruptable.diff
 Patch17:        extcond.diff
 Patch18:        refreshtestarch.diff
-Patch19:        rpmrctests.diff
 Patch20:        waitlock.diff
 Patch21:        suspendlock.diff
 Patch24:        brp.diff
@@ -94,22 +92,16 @@
 Patch34:        rpmrc.diff
 Patch35:        taggedfileindex.diff
 Patch36:        rpmqpack.diff
-Patch37:        convertdb1static.diff
 Patch38:        build.diff
-Patch41:        debugedit-comp-dir.diff
-Patch42:        perlprov.diff
 Patch43:        rpm-shorten-changelog.diff
-Patch44:        debugsource-package.diff
 Patch45:        whatrequires-doc.diff
 Patch46:        remove-brp-strips.diff
 Patch47:        requires-ge-macro.diff
-Patch48:        debugedit-canon-fix.diff
 Patch49:        finddebuginfo-absolute-links.diff
 Patch50:        firmware.diff
 Patch51:        specfilemacro.diff
 Patch52:        modalias-encode.diff
 Patch53:        disttag-macro.diff
-Patch54:        buildidprov.diff
 Patch55:        debugsubpkg.diff
 Patch56:        debuglink.diff
 Patch57:        debuginfo-mono.patch
@@ -126,29 +118,22 @@
 Patch73:        assumeexec.diff
 Patch74:        mono-find-requires.diff
 Patch75:        rpm-deptracking.patch
-Patch76:        python3-abi-kind.diff
 Patch77:        langnoc.diff
 Patch78:        headerchk2.diff
-# PATCH-FEATURE-UPSTREAM 4.14 0e87aed1785d0531c40b23889f8338744f6abb3a
-Patch80:        0001-set-SOURCE_DATE_EPOCH-from-changelog.patch
-# PATCH-FEATURE-UPSTREAM 4.14 57f94a582602f0353cdb17a02dc12c4461d4f32d
-Patch81:        0002-Extend-changelog-to-support-full-timestamps-903.patch
-# PATCH-FEATURE-UPSTREAM 4.14 8d84878ee05b2e63858af3a5a49d98e9e2933b1b
-Patch82:        0003-Allow-SOURCE_DATE_EPOCH-to-override-file-timestamps.patch
-# PATCH-FEATURE-UPSTREAM 4.14 b8a54d6a1e9bb6140b6b47e23dc707e4b967537e
-Patch83:        0004-Allow-SOURCE_DATE_EPOCH-to-override-RPMTAG_BUILDTIME.patch
 Patch85:        brp-compress-no-img.patch
-Patch92:        find-lang-python.patch
 Patch93:        weakdepscompat.diff
 Patch94:        checksepwarn.diff
-Patch98:        normalize_blocksize.diff
 Patch99:        enable-postin-scripts-error.diff
 Patch100:       rpm-findlang-inject-metainfo.patch
-Patch101:       nobfd.diff
 Patch102:       emptymanifest.diff
 Patch103:       find-lang-qt-qm.patch
-Patch104:       perlprov-package.diff
-Patch105:       changes-doc.diff
+Patch104:       editdwarf.diff
+Patch105:       rofs.diff
+Patch106:       transfiletriggerpostun.diff
+Patch107:       hardlink.diff
+Patch108:       debugedit-macro.diff
+Patch109:       pythondistdeps.diff
+Patch110:       bigarchive.diff
 Patch6464:      auto-config-update-aarch64-ppc64le.diff
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 #
@@ -165,8 +150,8 @@
 all installed packages.  RPM also supports database queries.
 
 %package devel
-Summary:        Include Files and Libraries mandatory for Development
-Group:          System/Packages
+Summary:        Development files for librpm
+Group:          Development/Libraries/C and C++
 Requires:       rpm = %{version}
 # for people confusing the one with the other
 Recommends:     rpm-build = %{version}
@@ -235,16 +220,17 @@
 %patch3 -p1
 %patch -P 4
 %patch5 -p1
-%patch       -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 17 -P 18 -P 19
+%patch       -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 17 -P 18
 %patch -P 20 -P 21             -P 24 -P 25 -P 26 -P 27 -P 28 -P 29
-%patch -P 30 -P 31 -P 32 -P 33 -P 34 -P 35 -P 36 -P 37 -P 38
-%patch       -P 41 -P 42 -P 43 -P 44 -P 45 -P 46 -P 47 -P 48 -P 49
-%patch -P 50 -P 51 -P 52 -P 53 -P 54 -P 55 -P 56 -P 57 -P 58
+%patch -P 30 -P 31 -P 32 -P 33 -P 34 -P 35 -P 36       -P 38
+%patch                   -P 43       -P 45 -P 46 -P 47       -P 49
+%patch -P 50 -P 51 -P 52 -P 53       -P 55 -P 56 -P 57 -P 58
 %patch -P 60 -P 61                   -P 65 -P 66 -P 67 -P 68 -P 69
-%patch -P 70 -P 71       -P 73 -P 74 -P 75 -P 76 -P 77 -P 78
-%patch -P 80 -P 81 -P 82 -P 83       -P 85
-%patch             -P 92 -P 93 -P 94                   -P 98 -P 99
-%patch -P 100 -P 101 -P 102 -P 103 -P 104 -P 105
+%patch -P 70 -P 71       -P 73 -P 74 -P 75       -P 77 -P 78
+%patch                               -P 85
+%patch                   -P 93 -P 94                         -P 99
+%patch -P 100        -P 102 -P 103 -P 104 -P 105 -P 106 -P 107 -P 108
+%patch -P 109 -P 110
 
 %ifarch aarch64 ppc64le
 %patch6464
@@ -288,11 +274,10 @@
 make %{?_smp_mflags}
 popd
 
-export PYTHON=python%{with_python}
 autoreconf -fi
-sed -i -e 's,{PYTHON_VERSION}mu,{PYTHON_VERSION}mu python${PYTHON_VERSION}m,' 
configure
 ./configure --disable-dependency-tracking --prefix=%{_prefix} 
--mandir=%{_mandir} --infodir=%{_infodir} \
 --libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var 
--sharedstatedir=/var/lib --with-lua \
+--without-external-db \
 --with-vendor=suse \
 --with-rundir=/run \
 --without-archive \
@@ -301,14 +286,14 @@
 
 rm po/de.gmo
 make %{?_smp_mflags}
-make convertdb1
 
 %install
 mkdir -p %{buildroot}/usr/lib
 mkdir -p %{buildroot}/usr/share/locale
 ln -s ../share/locale %{buildroot}/usr/lib/locale
 %make_install
-install -m 755 convertdb1 %{buildroot}/usr/lib/rpm
+mkdir -p %{buildroot}/bin
+ln -s /usr/bin/rpm %{buildroot}/bin/rpm
 install -m 644 db3/db.h %{buildroot}/usr/include/rpm
 # remove .la file and the static variant of libpopt
 # have to remove the dependency from other .la files as well
@@ -374,7 +359,6 @@
 install -m 755 config.guess %{buildroot}/usr/lib/rpm
 install -m 755 config.sub %{buildroot}/usr/lib/rpm
 %endif
-gzip -9 CHANGES
 rm -rf %{buildroot}/%{_libdir}/python%{py_ver}
 rm -f %{buildroot}%{_libdir}/*.la
 rm -f %{buildroot}%{_libdir}/rpm-plugins/*.la
@@ -400,12 +384,6 @@
 %posttrans
 # var/lib/rpm migration
 if test ! -L var/lib/rpm ; then
-  if test -s var/lib/rpm/packages.rpm ; then
-    echo "converting rpm-3 database to rpm-4 format..."
-    usr/lib/rpm/convertdb1 var/lib/rpm/packages.rpm
-    mv -f var/lib/rpm/packages.rpm var/lib/rpm/packages.rpm3
-    rm -f var/lib/rpm/conflictsindex.rpm var/lib/rpm/fileindex.rpm 
var/lib/rpm/groupindex.rpm var/lib/rpm/nameindex.rpm 
var/lib/rpm/providesindex.rpm var/lib/rpm/requiredby.rpm 
var/lib/rpm/triggerindex.rpm
-  fi
   # delete no longer maintained databases
   rm -f var/lib/rpm/Filemd5s var/lib/rpm/Filedigests 
var/lib/rpm/Requireversion var/lib/rpm/Provideversion
 
@@ -426,7 +404,7 @@
 
 %files -f rpm.lang
 %defattr(-,root,root)
-%doc   CHANGES.gz COPYING GROUPS
+%doc   COPYING
 %doc   doc/manual
 %doc    RPM-HOWTO
        /etc/rpm

++++++ bigarchive.diff ++++++
--- lib/signature.c.orig        2018-01-05 10:59:06.358348915 +0000
+++ lib/signature.c     2018-01-05 12:25:13.224472739 +0000
@@ -118,6 +118,8 @@ rpmRC rpmGenerateSignature(char *SHA256,
     char *reservedSpace;
     int spaceSize = 32; /* always reserve a bit of space */
     int gpgSize = rpmExpandNumeric("%{__gpg_reserved_space}");
+    rpm_off_t size32 = size;
+    rpm_off_t payloadSize32 = payloadSize;
 
     /* Prepare signature */
     if (SHA256) {
@@ -149,21 +151,32 @@ rpmRC rpmGenerateSignature(char *SHA256,
 
     rpmtdReset(&td);
     td.count = 1;
-    if (payloadSize < UINT32_MAX) {
-       rpm_off_t p = payloadSize;
-       rpm_off_t s = size;
-       td.type = RPM_INT32_TYPE;
+    td.type = RPM_INT32_TYPE;
 
-       td.tag = RPMSIGTAG_PAYLOADSIZE;
-       td.data = &p;
-       headerPut(sig, &td, HEADERPUT_DEFAULT);
+    td.tag = RPMSIGTAG_PAYLOADSIZE;
+    td.data = &payloadSize32;
+    headerPut(sig, &td, HEADERPUT_DEFAULT);
 
-       td.tag = RPMSIGTAG_SIZE;
-       td.data = &s;
-       headerPut(sig, &td, HEADERPUT_DEFAULT);
-    } else {
+    td.tag = RPMSIGTAG_SIZE;
+    td.data = &size32;
+    headerPut(sig, &td, HEADERPUT_DEFAULT);
+
+    if (payloadSize >= UINT32_MAX) {
+       /*
+        * Put the 64bit size variants into the header, but
+         * modify spaceSize so that the resulting header has
+         * the same size. Note that this only works if
+         * RPMSIGTAG_RESERVEDSPACE is the last tag in the header!
+         */
        rpm_loff_t p = payloadSize;
        rpm_loff_t s = size;
+        int newsigSize, oldsigSize;
+
+       oldsigSize = headerSizeof(sig, HEADER_MAGIC_YES);
+
+       headerDel(sig, RPMSIGTAG_PAYLOADSIZE);
+       headerDel(sig, RPMSIGTAG_SIZE);
+
        td.type = RPM_INT64_TYPE;
 
        td.tag = RPMSIGTAG_LONGARCHIVESIZE;
@@ -174,8 +187,8 @@ rpmRC rpmGenerateSignature(char *SHA256,
        td.data = &s;
        headerPut(sig, &td, HEADERPUT_DEFAULT);
 
-       /* adjust for the size difference between 64- and 32bit tags */
-       spaceSize -= 8;
+       newsigSize = headerSizeof(sig, HEADER_MAGIC_YES);
+       spaceSize -= newsigSize - oldsigSize;
     }
 
     if (gpgSize > 0)
++++++ brp.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.878227713 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.886227338 +0100
@@ -1,15 +1,15 @@
---- ./scripts/Makefile.am.orig 2016-10-13 07:12:21.467778490 +0000
-+++ ./scripts/Makefile.am      2017-01-19 12:09:27.378564186 +0000
-@@ -26,6 +26,7 @@ rpmconfig_SCRIPTS = \
-       appdata.prov \
+--- ./scripts/Makefile.am.orig 2017-10-05 10:04:57.571602038 +0000
++++ ./scripts/Makefile.am      2017-12-01 14:29:56.760975726 +0000
+@@ -27,6 +27,7 @@ EXTRA_DIST = \
+ rpmconfig_SCRIPTS = \
        brp-compress brp-python-bytecompile brp-java-gcjcompile \
        brp-strip brp-strip-comment-note brp-python-hardlink \
 +      brp-suse \
        brp-strip-shared brp-strip-static-archive \
        check-files check-prereqs \
        check-buildroot check-rpaths check-rpaths-worker \
---- ./scripts/brp-strip-comment-note.orig      2017-01-19 12:09:27.378564186 
+0000
-+++ ./scripts/brp-strip-comment-note   2017-01-19 12:13:02.079982258 +0000
+--- ./scripts/brp-strip-comment-note.orig      2017-08-10 08:08:07.150108692 
+0000
++++ ./scripts/brp-strip-comment-note   2017-12-01 14:29:56.761975721 +0000
 @@ -16,6 +16,8 @@ esac
  # for already stripped elf files in the build root
  for f in `find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or 
-perm -0001 \) -exec file {} \; | \
@@ -19,8 +19,8 @@
        sed -n -e 's/^\(.*\):[  ]*ELF.*, stripped.*/\1/p'`; do
        note="-R .note"
        if $OBJDUMP -h $f | grep '^[    ]*[0-9]*[       ]*.note[        ]' -A 1 
| \
---- ./scripts/brp-strip.orig   2017-01-19 12:09:27.379564183 +0000
-+++ ./scripts/brp-strip        2017-01-19 12:10:34.113383581 +0000
+--- ./scripts/brp-strip.orig   2017-08-10 08:08:07.150108692 +0000
++++ ./scripts/brp-strip        2017-12-01 14:29:56.761975721 +0000
 @@ -15,6 +15,7 @@ esac
  for f in `find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or 
-perm -0001 \) -exec file {} \; | \
          grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
@@ -29,8 +29,8 @@
        sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped.*/\1/p'`; do
        $STRIP -g "$f" || :
  done
---- ./scripts/brp-suse.orig    2017-01-19 12:09:27.379564183 +0000
-+++ ./scripts/brp-suse 2017-01-19 12:09:27.379564183 +0000
+--- ./scripts/brp-suse.orig    2017-12-01 14:29:56.762975717 +0000
++++ ./scripts/brp-suse 2017-12-01 14:29:56.761975721 +0000
 @@ -0,0 +1,13 @@
 +#! /bin/sh
 +

++++++ build.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.906226402 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.906226402 +0100
@@ -8,7 +8,7 @@
 +CC="$CC" CFLAGS="$CFLAGS" $db_dist/configure \
        --enable-shared --enable-static \
 -      --with-uniquename=_rpmdb --srcdir=$db_dist
-+      --with-uniquename=_rpmdb --srcdir=$db_dist $ARGS
++      --with-uniquename=_rpmdb --srcdir=$db_dist --with-pic $ARGS
  
  mv Makefile Makefile.orig
  cat Makefile.orig | sed -e '/^install[:-]/c\

++++++ checksepwarn.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.934225091 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.938224903 +0100
@@ -1,5 +1,5 @@
---- ./build/parseReqs.c.orig   2017-01-19 13:11:21.618153943 +0000
-+++ ./build/parseReqs.c        2017-01-19 13:24:32.661841405 +0000
+--- ./build/parseReqs.c.orig   2017-10-05 10:04:56.887602165 +0000
++++ ./build/parseReqs.c        2017-12-01 16:00:06.956343096 +0000
 @@ -42,7 +42,7 @@ static rpmRC checkEpoch(const char *s, c
      return RPMRC_OK;
  }
@@ -38,15 +38,15 @@
        _free(N);
        _free(EVR);
      } else if (type == RPMRICH_PARSE_OP) {
-@@ -231,6 +237,7 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
+@@ -223,6 +229,7 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
                goto exit;
            }
            data.spec = spec;
 +          data.tagflags = tagflags;
            data.sb = newStringBuf();
-           if (rpmrichParse(&r, &emsg, parseRCPOTRichCB, &data) != RPMRC_OK) {
+           if (rpmrichParseForTag(&r, &emsg, parseRCPOTRichCB, &data, nametag) 
!= RPMRC_OK) {
                freeStringBuf(data.sb);
-@@ -282,7 +289,7 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
+@@ -274,7 +281,7 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
        }
  
        /* check that dependency is well-formed */
@@ -55,9 +55,9 @@
            goto exit;
  
        if (nametag == RPMTAG_FILETRIGGERNAME ||
---- ./macros.in.orig   2017-01-19 13:15:43.113390933 +0000
-+++ ./macros.in        2017-01-19 13:15:56.263352524 +0000
-@@ -413,7 +413,7 @@ package or when debugging this package.\
+--- ./macros.in.orig   2017-12-01 16:00:02.705355493 +0000
++++ ./macros.in        2017-12-01 16:00:06.957343106 +0000
+@@ -456,7 +456,7 @@ package or when debugging this package.\
  %_invalid_encoding_terminates_build 0
  
  # Should invalid version format in requires, provides, ... terminate a build?

++++++ dbprivate.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.962223780 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.962223780 +0100
@@ -1,10 +1,7 @@
-Always use DB_PRIVATE. Unfortunately no longer configurable
-in the macros file.
-
---- ./lib/backend/db3.c.orig   2013-07-12 12:09:45.000000000 +0000
-+++ ./lib/backend/db3.c        2013-07-12 12:11:07.000000000 +0000
-@@ -164,7 +164,7 @@ static int db_init(rpmdb rdb, const char
-     int lockfd = -1;
+--- ./lib/backend/db3.c.orig   2017-12-01 15:44:53.609993968 +0000
++++ ./lib/backend/db3.c        2017-12-01 15:45:05.462959735 +0000
+@@ -416,7 +416,7 @@ static int db_init(rpmdb rdb, const char
+     int rdonly = ((rdb->db_mode & O_ACCMODE) == O_RDONLY);
      struct dbConfig_s * cfg = &rdb->cfg;
      /* This is our setup, thou shall not have other setups before us */
 -    uint32_t eflags = (DB_CREATE|DB_INIT_MPOOL|DB_INIT_CDB);

++++++ dbrointerruptable.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:17.978223031 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:17.982222843 +0100
@@ -1,6 +1,6 @@
---- ./lib/rpmdb.c.orig 2016-10-21 09:44:00.306962087 +0000
-+++ ./lib/rpmdb.c      2017-01-19 10:36:12.529219141 +0000
-@@ -450,9 +450,11 @@ int rpmdbClose(rpmdb db)
+--- ./lib/rpmdb.c.orig 2017-10-05 10:05:27.459594162 +0000
++++ ./lib/rpmdb.c      2017-12-01 14:19:12.361872712 +0000
+@@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db)
  {
      rpmdb * prev, next;
      int rc = 0;
@@ -12,21 +12,21 @@
  
      prev = &rpmdbRock;
      while ((next = *prev) != NULL && next != db)
-@@ -487,7 +489,7 @@ int rpmdbClose(rpmdb db)
+@@ -424,7 +426,7 @@ int rpmdbClose(rpmdb db)
  
      db = _free(db);
  
 -    if (rpmdbRock == NULL) {
 +    if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) {
-       (void) rpmsqEnable(-SIGHUP, NULL);
-       (void) rpmsqEnable(-SIGINT, NULL);
-       (void) rpmsqEnable(-SIGTERM, NULL);
-@@ -572,7 +574,7 @@ static int openDatabase(const char * pre
+       rpmsqActivate(0);
+     }
+ exit:
+@@ -505,7 +507,7 @@ static int openDatabase(const char * pre
      /* Try to ensure db home exists, error out if we can't even create */
      rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid());
      if (rc == 0) {
 -      if (rpmdbRock == NULL) {
 +      if (rpmdbRock == NULL && (db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
-           (void) rpmsqEnable(SIGHUP, NULL);
-           (void) rpmsqEnable(SIGINT, NULL);
-           (void) rpmsqEnable(SIGTERM, NULL);
+           rpmsqActivate(1);
+       }
+ 

++++++ debugedit-macro.diff ++++++
--- ./tools/debugedit.c.orig    2017-12-15 12:17:02.564975374 +0000
+++ ./tools/debugedit.c 2017-12-15 12:17:29.058901941 +0000
@@ -71,6 +71,14 @@
 #define DW_FORM_ref_udata      0x15
 #define DW_FORM_indirect       0x16
 
+#define DW_MACRO_GNU_define    1
+#define DW_MACRO_GNU_undef     2
+#define DW_MACRO_GNU_start_file        3
+#define DW_MACRO_GNU_end_file  4
+#define DW_MACRO_GNU_define_indirect 5
+#define DW_MACRO_GNU_undef_indirect 6
+#define DW_MACRO_GNU_transparent_include 7
+
 /* Unfortunately strtab manipulation functions were only officially added
    to elfutils libdw in 0.167.  Before that there were internal unsupported
    ebl variants.  While libebl.h isn't supported we'll try to use it anyway
@@ -2209,6 +2217,67 @@ edit_dwarf2 (DSO *dso)
                }
            }
 
+         /* the macro section also contains offsets into the str section,
+          * so we need to update those as well if we update the strings
+          */
+         if (need_strp_update && debug_sections[DEBUG_MACRO].data)
+           {
+             ptr = debug_sections[DEBUG_MACRO].data;
+             endsec = ptr + debug_sections[DEBUG_MACRO].size;
+             int op = 0, macro_version, macro_flags;
+             
+             while (ptr < endsec)
+               {
+                 if (!op)
+                   {
+                     macro_version = read_16 (ptr);
+                     macro_flags = read_8 (ptr);
+                     if (macro_version != 4 || (macro_flags & ~2) != 0)
+                       error (1, 0, "unhandled .debug_macro version/flags");
+                     if ((macro_flags & 2) != 0)
+                       ptr += 4;
+                   }
+                 op = read_8 (ptr);
+                 if (!op)
+                   continue;
+                 switch(op)
+                   {
+                   case DW_MACRO_GNU_define:
+                   case DW_MACRO_GNU_undef:
+                     read_uleb128 (ptr);
+                     ptr = (unsigned char *) strchr ((char *) ptr, '\0') + 1;
+                     break;
+                   case DW_MACRO_GNU_start_file:
+                     read_uleb128 (ptr);
+                     read_uleb128 (ptr);
+                     break;
+                   case DW_MACRO_GNU_define_indirect:
+                   case DW_MACRO_GNU_undef_indirect:
+                     read_uleb128 (ptr);
+                     if (phase == 0)
+                       {
+                         size_t idx = read_32 (ptr);
+                         record_existing_string_entry_idx (&dso->strings, idx);
+                       }
+                     else
+                       {
+                         struct stridxentry *entry;
+                         size_t idx, new_idx;
+                         idx = do_read_32 (ptr);
+                         entry = string_find_entry (&dso->strings, idx);
+                         new_idx = strent_offset (entry->entry);
+                         write_32 (ptr, new_idx);
+                       }
+                     break;
+                   case DW_MACRO_GNU_transparent_include:
+                     ptr += 4;
+                     break;
+                   default:
+                     break;
+                   }
+               }
+           }
+
          /* Same for the debug_str section. Make sure everything is
             in place for phase 1 updating of debug_info
             references. */
@@ -2238,6 +2307,8 @@ edit_dwarf2 (DSO *dso)
         new strp, strings and/or linep offsets.  */
       if (need_strp_update || need_string_replacement || need_stmt_update)
        dirty_section (DEBUG_INFO);
+      if (need_strp_update)
+       dirty_section (DEBUG_MACRO);
 
       /* Update any debug_info relocations addends we might have touched. */
       if (relbuf != NULL && reltype == SHT_RELA)
++++++ debugedit.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.002221908 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.002221908 +0100
@@ -1,26 +1,26 @@
 Make debugedit build without dwarf.h
 
---- ./Makefile.am.orig 2016-10-21 09:44:00.299962090 +0000
-+++ ./Makefile.am      2017-01-19 10:25:42.252270176 +0000
-@@ -155,7 +155,6 @@ rpm2archive_LDADD +=       @WITH_NSS_LIB@ @WIT
+--- ./Makefile.am.orig 2017-12-01 14:15:13.963574699 +0000
++++ ./Makefile.am      2017-12-01 14:16:10.634407860 +0000
+@@ -154,7 +154,6 @@ rpm2archive_LDADD +=       @WITH_POPT_LIB@ @WI
  
  
  if LIBELF
 -if LIBDWARF
+ if LIBDW
  rpmconfig_SCRIPTS += scripts/find-debuginfo.sh
  
- rpmlibexec_PROGRAMS +=        debugedit
-@@ -172,7 +171,6 @@ rpmlibexec_PROGRAMS +=     sepdebugcrcfix
- sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c
- sepdebugcrcfix_LDADD =        @WITH_LIBELF_LIB@
- endif
--endif
- 
- rpmlibexec_PROGRAMS +=        rpmdeps
- rpmdeps_SOURCES =     tools/rpmdeps.c
---- ./tools/debugedit.c.orig   2016-10-13 07:12:21.471778488 +0000
-+++ ./tools/debugedit.c        2017-01-19 10:25:42.252270176 +0000
-@@ -37,7 +37,37 @@
+@@ -168,7 +167,6 @@ else
+ debugedit_LDADD +=    @WITH_LIBDW_LIB@ -lebl
+ endif # HAVE_LIBDW_STRTAB
+ endif # LIBDW
+-endif # LIBDWARF
+ rpmlibexec_PROGRAMS +=        elfdeps
+ elfdeps_SOURCES =     tools/elfdeps.c
+ elfdeps_LDADD =               rpmio/librpmio.la
+--- ./tools/debugedit.c.orig   2017-10-05 10:04:57.714602011 +0000
++++ ./tools/debugedit.c        2017-12-01 14:15:13.965574668 +0000
+@@ -39,7 +39,37 @@
  #include <popt.h>
  
  #include <gelf.h>
@@ -57,5 +57,5 @@
 +#define DW_FORM_ref_udata     0x15
 +#define DW_FORM_indirect      0x16
  
- #include <rpm/rpmio.h>
- #include <rpm/rpmpgp.h>
+ /* Unfortunately strtab manipulation functions were only officially added
+    to elfutils libdw in 0.167.  Before that there were internal unsupported

++++++ debuginfo-mono.patch ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.026220784 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.026220784 +0100
@@ -1,6 +1,6 @@
---- ./scripts/find-debuginfo.sh.orig   2017-01-19 13:03:40.090496764 +0000
-+++ ./scripts/find-debuginfo.sh        2017-01-19 13:03:55.515451969 +0000
-@@ -315,6 +315,17 @@ while read nlinks inum f; do
+--- ./scripts/find-debuginfo.sh.orig   2017-12-01 15:40:27.006764372 +0000
++++ ./scripts/find-debuginfo.sh        2017-12-01 15:41:17.270619182 +0000
+@@ -348,6 +348,16 @@ while read nlinks inum f; do
        ;;
      *) continue ;;
    esac
@@ -10,11 +10,10 @@
 +  case $ftype in
 +    *ELF*) ;;
 +    *)
-+      echo "$f is not an ELF file, skipping"
-+      continue
-+      ;;
++       echo "$f is not an ELF file, skipping"
++       continue
++       ;;
 +  esac
-+
-   get_debugfn "$f"
-   [ -f "${debugfn}" ] && continue
- 
+   if [ $nlinks -gt 1 ]; then
+     var=seen_$inum
+     if test -n "${!var}"; then

++++++ debuglink.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.050219660 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.054219473 +0100
@@ -1,12 +1,11 @@
---- ./scripts/find-debuginfo.sh.orig   2011-05-11 15:59:44.000000000 +0000
-+++ ./scripts/find-debuginfo.sh        2011-05-11 16:10:22.000000000 +0000
-@@ -186,7 +186,8 @@ make_id_link()
+--- ./scripts/find-debuginfo.sh.orig   2017-12-01 15:39:07.239994681 +0000
++++ ./scripts/find-debuginfo.sh        2017-12-01 15:39:34.942914702 +0000
+@@ -321,7 +321,7 @@ debug_link()
  get_debugfn()
  {
    dn=$(dirname "${1#$RPM_BUILD_ROOT}")
--  bn=$(basename "$1" .debug).debug
-+# Do not strip existing .debug suffixes
-+  bn=$(basename "$1").debug
- 
+-  bn=$(basename "$1" .debug)${unique_debug_suffix}.debug
++  bn=$(basename "$1")${unique_debug_suffix}.debug
    debugdn=${debugdir}${dn}
    debugfn=${debugdn}/${bn}
+ }

++++++ debugsubpkg.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.070218724 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.074218537 +0100
@@ -1,439 +1,6 @@
---- ./build/files.c.orig       2017-02-16 09:52:49.292092380 +0000
-+++ ./build/files.c    2017-03-22 13:32:42.911865500 +0000
-@@ -21,6 +21,10 @@
- #include <rpm/rpmlog.h>
- #include <rpm/rpmbase64.h>
- 
-+#if HAVE_GELF_H
-+#include <gelf.h>
-+#endif
-+
- #include "rpmio/rpmio_internal.h"     /* XXX rpmioSlurp */
- #include "misc/fts.h"
- #include "lib/rpmfi_internal.h"       /* XXX fi->apath */
-@@ -2155,13 +2159,302 @@ exit:
-     return rc;
- }
- 
-+#if HAVE_GELF_H && HAVE_LIBELF
-+/* Query the build-id from the ELF file NAME and store it in the newly
-+   allocated *build_id array of size *build_id_size.  Returns -1 on
-+   error.  */
-+
-+static int
-+getELFBuildId (const char *name,
-+             unsigned char **id, size_t *id_size)
-+{
-+  int fd, i;
-+  Elf *elf;
-+  GElf_Ehdr ehdr;
-+  Elf_Data *build_id = NULL;
-+  size_t build_id_offset = 0, build_id_size = 0;
-+
-+  /* Now query the build-id of the file and add the
-+     corresponding links in the .build-id tree.
-+     The following code is based on tools/debugedit.c.  */
-+  fd = open (name, O_RDONLY);
-+  if (fd < 0)
-+    return -1;
-+  elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
-+  if (elf == NULL)
-+    {
-+      fprintf (stderr, "cannot open ELF file: %s",
-+             elf_errmsg (-1));
-+      close (fd);
-+      return -1;
-+    }
-+  if (elf_kind (elf) != ELF_K_ELF
-+      || gelf_getehdr (elf, &ehdr) == NULL
-+      || (ehdr.e_type != ET_DYN
-+        && ehdr.e_type != ET_EXEC
-+        && ehdr.e_type != ET_REL))
-+    {
-+      elf_end (elf);
-+      close (fd);
-+      return -1;
-+    }
-+  for (i = 0; i < ehdr.e_shnum; ++i)
-+    {
-+      Elf_Scn *s = elf_getscn (elf, i);
-+      GElf_Shdr shdr;
-+      Elf_Data *data;
-+      Elf32_Nhdr nh;
-+      Elf_Data dst =
-+      {
-+        .d_version = EV_CURRENT, .d_type = ELF_T_NHDR,
-+        .d_buf = &nh, .d_size = sizeof nh
-+      };
-+      Elf_Data src = dst;
-+
-+      gelf_getshdr (s, &shdr);
-+      /* LD creates .note.gnu.build-id with SHF_ALLOC but the DWZ
-+         common debuginfo only file only has non-allocated sections.  */
-+      if (shdr.sh_type != SHT_NOTE)
-+      continue;
-+
-+      /* Look for a build-ID note here.  */
-+      data = elf_rawdata (s, NULL);
-+      src.d_buf = data->d_buf;
-+      assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
-+      while ((unsigned char *)data->d_buf + data->d_size - (unsigned char 
*)src.d_buf > (int) sizeof nh
-+           && elf32_xlatetom (&dst, &src, ehdr.e_ident[EI_DATA]))
-+      {
-+        Elf32_Word len = sizeof nh + nh.n_namesz;
-+        len = (len + 3) & ~3;
-+
-+        if (nh.n_namesz == sizeof "GNU" && nh.n_type == 3
-+            && !memcmp ((unsigned char *)src.d_buf + sizeof nh, "GNU", sizeof 
"GNU"))
-+          {
-+            build_id = data;
-+            build_id_offset = (unsigned char *)src.d_buf + len - (unsigned 
char *)data->d_buf;
-+            build_id_size = nh.n_descsz;
-+            break;
-+          }
-+
-+        len += nh.n_descsz;
-+        len = (len + 3) & ~3;
-+        src.d_buf = (unsigned char *)src.d_buf + len;
-+      }
-+
-+      if (build_id != NULL)
-+      break;
-+    }
-+
-+  if (build_id == NULL)
-+    return -1;
-+
-+  *id = malloc (build_id_size);
-+  *id_size = build_id_size;
-+  memcpy (*id, (unsigned char *)build_id->d_buf + build_id_offset, 
build_id_size);
-+
-+  elf_end (elf);
-+  close (fd);
-+
-+  return 0;
-+}
-+
-+
-+static rpmTag copyTagsForDebug[] = {
-+    RPMTAG_EPOCH,
-+    RPMTAG_VERSION,
-+    RPMTAG_RELEASE,
-+    RPMTAG_LICENSE,
-+    RPMTAG_PACKAGER,
-+    RPMTAG_DISTRIBUTION,
-+    RPMTAG_DISTURL,
-+    RPMTAG_VENDOR,
-+    RPMTAG_ICON,
-+    RPMTAG_URL,
-+    RPMTAG_CHANGELOGTIME,
-+    RPMTAG_CHANGELOGNAME,
-+    RPMTAG_CHANGELOGTEXT,
-+    RPMTAG_PREFIXES,
-+    RPMTAG_RHNPLATFORM,
-+    RPMTAG_OS,
-+    RPMTAG_DISTTAG,
-+    RPMTAG_CVSID,
-+    RPMTAG_ARCH,
-+    0
-+};
-+
-+/* Add a new debuginfo package based on PKG with FILES.  */
-+
-+static Package addDebuginfoPackage(rpmSpec spec, Package pkg, ARGV_t files)
-+{
-+  const char *name;
-+  char tmp[1024];
-+  Package dbg = newPackage(NULL, spec->pool, &spec->packages);
-+  name = headerGetString(pkg->header, RPMTAG_NAME);
-+  /* Set name, summary and group.  */
-+  snprintf(tmp, 1024, "%s-debuginfo", name);
-+  headerPutString(dbg->header, RPMTAG_NAME, tmp);
-+  snprintf(tmp, 1024, "Debug information for package %s", name);
-+  headerPutString(dbg->header, RPMTAG_SUMMARY, tmp);
-+  snprintf(tmp, 1024, "This package provides debug information for package 
%s.\n"
-+         "Debug information is useful when developing applications that use 
this\n"
-+         "package or when debugging this package.", name);
-+  headerPutString(dbg->header, RPMTAG_DESCRIPTION, tmp);
-+  headerPutString(dbg->header, RPMTAG_GROUP, "Development/Debug");
-+  /* Inherit other tags from parent.  */
-+  headerCopyTags(spec->packages->header,
-+               dbg->header, copyTagsForDebug);
-+
-+  /* Add self-provides */
-+  dbg->ds = rpmdsThis(dbg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL);
-+  addPackageProvides(dbg);
-+
-+  /* Build up the files list.  */
-+  dbg->fileList = files;
-+  return dbg;
-+}
-+
-+/* Process the filelist of PKG and see to eventually create a debuginfo
-+   packge for it.  */
-+
-+static Package processDebuginfo(rpmSpec spec, Package pkg, char *buildroot)
-+{
-+    const char *a;
-+
-+    elf_version(EV_CURRENT);
-+    a = headerGetString(pkg->header, RPMTAG_ARCH);
-+    if (strcmp(a, "noarch") != 0)
-+      {
-+      rpmfi fi = rpmfilesIter(pkg->cpioList, RPMFI_ITER_FWD);
-+      char tmp[1024];
-+      const char *name;
-+      ARGV_t files = NULL;
-+      int seen_build_id = 0;
-+
-+      /* Check if the current package has files with debug info
-+         and record them.  */
-+      fi = rpmfiInit(fi, 0);
-+      while (rpmfiNext(fi) >= 0)
-+        {
-+          int i;
-+          unsigned char *build_id = NULL;
-+          size_t build_id_size = 0;
-+          struct stat sbuf;
-+
-+          name = rpmfiFN(fi);
-+          /* Pre-pend %buildroot/usr/lib/debug and append .debug.  */
-+          snprintf(tmp, 1024, "%s/usr/lib/debug%s.debug",
-+                    buildroot, name);
-+          /* If that file exists we have debug information for it.  */
-+          if (access(tmp, F_OK) != 0)
-+            continue;
-+
-+          /* Append the file list preamble.  */
-+          if (!files)
-+            {
-+              argvAdd(&files, "%defattr(-,root,root)");
-+              argvAdd(&files, "%dir /usr/lib/debug");
-+            }
-+          /* Add the files main debug-info file.  */
-+          snprintf(tmp, 1024, "/usr/lib/debug/%s.debug", name);
-+          argvAdd(&files, tmp);
-+
-+          snprintf(tmp, 1024, "%s%s", buildroot, name);
-+          /* Do not bother to check build-ids for symbolic links.
-+             We'll handle them for the link target.  */
-+          if (lstat(tmp, &sbuf) == -1 || S_ISLNK(sbuf.st_mode))
-+            continue;
-+
-+          /* Try to gather the build-id from the binary.  */
-+          if (getELFBuildId(tmp, &build_id, &build_id_size) == -1)
-+            continue;
-+
-+          /* If we see build-id links for the first time add the
-+             directory.  */
-+          if (!seen_build_id)
-+            {
-+              seen_build_id = 1;
-+              argvAdd(&files, "%dir /usr/lib/debug/.build-id");
-+            }
-+
-+          /* From the build-id construct the two links pointing back
-+             to the debug information file and the binary.  */
-+          snprintf(tmp, 1024, "/usr/lib/debug/.build-id/%02x/",
-+                    build_id[0]);
-+          for (i = 1; i < build_id_size; ++i)
-+            sprintf(tmp + strlen(tmp), "%02x", build_id[i]);
-+          argvAdd(&files, tmp);
-+          sprintf(tmp + strlen(tmp), ".debug");
-+          argvAdd(&files, tmp);
-+
-+          free(build_id);
-+        }
-+
-+      /* If there are debuginfo files for this package add a
-+         new debuginfo package.  */
-+      if (files)
-+        return addDebuginfoPackage (spec, pkg, files);
-+      }
-+    return NULL;
-+}
-+
-+
-+static char *addDebugDWZ(ARGV_t *filesp, char *buildroot)
-+{
-+    char tmp[1024];
-+    struct stat sbuf;
-+    char *dwz_dbg_buildid = NULL;
-+    DIR *d;
-+    struct dirent *de;
-+    int i;
-+
-+    snprintf(tmp, 1024, "%s%s", buildroot, "/usr/lib/debug/.dwz");
-+    if (lstat(tmp, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode))
-+      return NULL;
-+    d = opendir(tmp);
-+    if (!d)
-+      return NULL;
-+
-+    argvAdd(filesp, "/usr/lib/debug/.dwz");
-+    while ((de = readdir (d))) {
-+      unsigned char *build_id = NULL;
-+      size_t build_id_size = 0;
-+
-+      snprintf(tmp, 1024, "%s/usr/lib/debug/.dwz/%s", buildroot, de->d_name);
-+      if (lstat(tmp, &sbuf) == -1 || !S_ISREG(sbuf.st_mode))
-+          continue;
-+      if (getELFBuildId(tmp, &build_id, &build_id_size) == -1)
-+          continue;
-+      snprintf(tmp, 1024, "/usr/lib/debug/.build-id/%02x/", build_id[0]);
-+      for (i = 1; i < build_id_size; ++i)
-+          sprintf(tmp + strlen(tmp), "%02x", build_id[i]);
-+      sprintf(tmp + strlen(tmp), ".debug");
-+      argvAdd(filesp, tmp);
-+        if (!dwz_dbg_buildid) {
-+          for (i = 0; i < build_id_size; ++i)
-+              sprintf(tmp + 2 * i, "%02x", build_id[i]);
-+          dwz_dbg_buildid = xstrdup(tmp);
-+      }
-+      free(build_id);
-+    }
-+    closedir(d);
-+    return dwz_dbg_buildid;
-+}
-+
-+#endif
-+
- rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
-                       int installSpecialDoc, int test)
- {
-     Package pkg;
-     rpmRC rc = RPMRC_OK;
-+    char *buildroot;
-+    Package first_dbg = NULL, dwz_dbg = NULL;
-+    int processing_dbg = 0;
-+    int main_pkg_got_dbg = 0;
-+    char *dwz_dbg_buildid = NULL;
-     
-     check_fileList = newStringBuf();
-+    buildroot = rpmGenPath(spec->rootDir, spec->buildRoot, NULL);
-     genSourceRpmName(spec);
-     
-     for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-@@ -2179,8 +2472,40 @@ rpmRC processBinaryFiles(rpmSpec spec, r
-       rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
-       free(nvr);
-                  
--      if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, 
test)) != RPMRC_OK ||
--          (rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
-+#if HAVE_GELF_H && HAVE_LIBELF
-+      if (pkg == first_dbg) {
-+          /* If we have multiple debug packages then we put
-+             DWZ generated files into %name-debuginfo which
-+             may already exist.  Otherwise put the DWZ data
-+             into the only debug package.  */
-+          processing_dbg = 1;
-+          if (!first_dbg->next || main_pkg_got_dbg) {
-+              dwz_dbg_buildid = addDebugDWZ(&first_dbg->fileList, buildroot);
-+              dwz_dbg = pkg;
-+          } else {
-+              ARGV_t files = NULL;
-+              dwz_dbg_buildid = addDebugDWZ(&files, buildroot);
-+              dwz_dbg = addDebuginfoPackage(spec, spec->packages, files);
-+          }
-+      }
-+#endif
-+      if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, 
test)) != RPMRC_OK)
-+          goto exit;
-+#if HAVE_GELF_H && HAVE_LIBELF
-+      if (!processing_dbg) {
-+          Package dbg = processDebuginfo(spec, pkg, buildroot);
-+          if (dbg && !first_dbg) {
-+              first_dbg = dbg;
-+              if (pkg == spec->packages)
-+                  main_pkg_got_dbg = 1;
-+          }
-+      }
-+      /* If we have DWZ info and it is not in PKG then add a requires.  */
-+      if (dwz_dbg_buildid && pkg != dwz_dbg)
-+        addReqProv(pkg, RPMTAG_REQUIRENAME,
-+                   "debuginfo(build-id)", dwz_dbg_buildid, RPMSENSE_EQUAL, 0);
-+#endif
-+      if ((rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
-           goto exit;
- 
-       a = headerGetString(pkg->header, RPMTAG_ARCH);
-@@ -2215,6 +2540,7 @@ rpmRC processBinaryFiles(rpmSpec spec, r
-     }
- exit:
-     check_fileList = freeStringBuf(check_fileList);
-+    _free(dwz_dbg_buildid);
-     
-     return rc;
- }
---- ./build/parseSpec.c.orig   2017-03-22 12:10:11.304029953 +0000
-+++ ./build/parseSpec.c        2017-03-22 12:10:20.142010341 +0000
-@@ -564,7 +564,7 @@ static void initSourceHeader(rpmSpec spe
- }
- 
- /* Add extra provides to package.  */
--static void addPackageProvides(Package pkg)
-+void addPackageProvides(Package pkg)
- {
-     const char *arch, *name;
-     char *evr, *isaprov;
---- ./build/rpmbuild_internal.h.orig   2017-02-16 09:40:09.788649545 +0000
-+++ ./build/rpmbuild_internal.h        2017-03-22 12:10:20.143010339 +0000
-@@ -442,6 +442,13 @@ int addReqProv(Package pkg, rpmTagVal ta
- 
- 
- /** \ingroup rpmbuild
-+ * Add self-provides to package.
-+ * @param pkg          package
-+ */
-+RPM_GNUC_INTERNAL
-+void addPackageProvides(Package pkg);
-+
-+/** \ingroup rpmbuild
-  * Add rpmlib feature dependency.
-  * @param pkg         package
-  * @param feature     rpm feature name (i.e. "rpmlib(Foo)" for feature Foo)
---- ./macros.in.orig   2017-03-22 12:10:11.307029946 +0000
-+++ ./macros.in        2017-03-22 12:10:20.143010339 +0000
-@@ -186,24 +186,10 @@
- #     Template for debug information sub-package.
- %debug_package \
- %global __debug_package 1\
--%package debuginfo\
--Summary: Debug information for package %{name}\
--Group: Development/Debug\
--AutoReq: 0\
--AutoProv: 1\
--#Requires: %{?!debug_package_requires:%{name} = 
%{version}-%{release}}%{?debug_package_requires}\
--%description debuginfo\
--This package provides debug information for package %{name}.\
--Debug information is useful when developing applications that use this\
--package or when debugging this package.\
--%files debuginfo -f debugfiles.list\
--%defattr(-,root,root)\
--\
- %package debugsource\
- Summary: Debug sources for package %{name}\
- Group: Development/Debug\
- AutoReqProv: 0\
--Requires: %{name}-debuginfo = %{version}-%{release}\
- %description debugsource\
- This package provides debug sources for package %{name}.\
- Debug sources are useful when developing applications that use this\
---- ./scripts/find-debuginfo.sh.orig   2017-03-22 12:10:11.303029955 +0000
-+++ ./scripts/find-debuginfo.sh        2017-03-22 12:10:20.144010337 +0000
-@@ -220,6 +220,11 @@ debug_link()
- # Provide .2, .3, ... symlinks to all filename instances of this build-id.
- make_id_dup_link()
- {
-+  # See https://bugzilla.redhat.com/show_bug.cgi?id=641377 for the reasoning, 
-+  # but it has seveal drawbacks as we would need to split the .1 suffixes 
into 
-+  # different subpackages and it's about impossible to predict the number
-+  # -> perhaps later
-+  return
-   local id="$1" file="$2" idfile
- 
-   local n=1
-@@ -424,19 +429,11 @@ if $run_dwz && type dwz >/dev/null 2>&1
+--- ./scripts/find-debuginfo.sh.orig   2017-12-01 15:35:59.023537837 +0000
++++ ./scripts/find-debuginfo.sh        2017-12-01 15:36:30.351447397 +0000
+@@ -548,19 +548,25 @@ if $run_dwz \
    fi
  fi
  
@@ -455,6 +22,20 @@
 +# the debuglink section contains only the destination of those links.
 +# Creating those links anyway results in debuginfo packages for
 +# devel packages just because of the .so symlinks in them.
++
++## 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 |
++#while read f
++#do
++#  t=$(readlink -m "$f").debug
++#  f=${f#$RPM_BUILD_ROOT}
++#  t=${t#$RPM_BUILD_ROOT}
++#  if [ -f "$debugdir$t" ]; then
++#    echo "symlinked /usr/lib/debug$t to /usr/lib/debug${f}.debug"
++#    debug_link "/usr/lib/debug$t" "${f}.debug"
++#  fi
++#done
  
  if [ -s "$SOURCEFILE" ]; then
-   mkdir -p "${RPM_BUILD_ROOT}/usr/src/debug"
+   # See also debugedit invocation. Directories must match up.

++++++ editdwarf.diff ++++++
debugedit: edit_dwarf2 check lndx is in range before checking r_offset.

upstream commit 7e9af0c000868ad6272a9577f9daed991599419b
--- ./tools/debugedit.c.orig    2017-12-05 11:59:10.287010024 +0000
+++ ./tools/debugedit.c 2017-12-05 12:00:02.776862694 +0000
@@ -2171,10 +2171,10 @@ edit_dwarf2 (DSO *dso)
                          r_offset = rel.r_offset;
                        }
 
-                     while (r_offset > (dso->lines.table[lndx].old_idx
-                                        + 4
-                                        + dso->lines.table[lndx].unit_length)
-                            && lndx < dso->lines.used)
+                     while (lndx < dso->lines.used
+                            && r_offset > (dso->lines.table[lndx].old_idx
+                                           + 4
+                                           + 
dso->lines.table[lndx].unit_length))
                        lndx++;
 
                      if (lndx >= dso->lines.used)
++++++ enable-postin-scripts-error.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.110216852 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.110216852 +0100
@@ -1,6 +1,6 @@
---- ./lib/transaction.c.orig   2017-01-19 13:46:06.163983390 +0000
-+++ ./lib/transaction.c        2017-01-19 13:47:03.649807918 +0000
-@@ -1435,7 +1435,9 @@ rpmRC runScript(rpmts ts, rpmte te, ARGV
+--- ./lib/transaction.c.orig   2017-12-01 16:02:14.150972487 +0000
++++ ./lib/transaction.c        2017-12-01 16:02:56.139850122 +0000
+@@ -1460,7 +1460,9 @@ rpmRC runScript(rpmts ts, rpmte te, Head
      int warn_only = (stag != RPMTAG_PREIN &&
                     stag != RPMTAG_PREUN &&
                     stag != RPMTAG_PRETRANS &&
@@ -10,11 +10,11 @@
 +                      rpmExpandNumeric("%{_fail_on_postinstall_errors}")));
      rpmdb rdb = rpmtsGetRdb(ts);
  
-     sfd = rpmtsNotify(ts, te, RPMCALLBACK_SCRIPT_START, stag, 0);
---- ./macros.in.orig   2017-01-19 13:44:57.362193434 +0000
-+++ ./macros.in        2017-01-19 13:45:13.038145574 +0000
-@@ -1374,6 +1374,11 @@ end}
- %{-S:%{expand:%__scm_setup_%{-S*} %{!-v:-q}}}\
+     /* Fake up a transaction element for triggers from rpmdb */
+--- ./macros.in.orig   2017-12-01 16:02:14.170972428 +0000
++++ ./macros.in        2017-12-01 16:02:56.140850119 +0000
+@@ -1468,6 +1468,11 @@ end}
+ %{expand:%__scm_setup_%{__scm} %{!-v:-q}}\
  %{!-N:%autopatch %{-v} %{-p:-p%{-p*}}}
  
 +# Should errors in %post scriptlet be propagated as errors? 

++++++ fileattrs.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.130215915 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.130215915 +0100
@@ -1,75 +1,56 @@
----
- fileattrs/Makefile.am    |    3 ++-
- fileattrs/debuginfo.attr |    2 ++
- fileattrs/elf.attr       |    3 ++-
- fileattrs/elflib.attr    |    4 ++++
- fileattrs/firmware.attr  |    2 ++
- fileattrs/kernel.attr    |    2 ++
- fileattrs/kmp.attr       |    4 ++++
- fileattrs/perl.attr      |    3 ++-
- fileattrs/perllib.attr   |    3 ++-
- fileattrs/sysvinit.attr  |    2 ++
- 10 files changed, 24 insertions(+), 4 deletions(-)
-
---- fileattrs/Makefile.am.orig
-+++ fileattrs/Makefile.am
-@@ -7,6 +7,7 @@ fattrsdir = $(rpmconfigdir)/fileattrs
+--- ./fileattrs/Makefile.am.orig       2017-12-01 15:46:21.021741182 +0000
++++ ./fileattrs/Makefile.am    2017-12-01 15:48:54.108298271 +0000
+@@ -8,6 +8,6 @@ fattrsdir = $(rpmconfigdir)/fileattrs
  fattrs_DATA = \
-       appdata.attr desktop.attr elf.attr font.attr libtool.attr perl.attr \
-       perllib.attr pkgconfig.attr python.attr ocaml.attr script.attr \
+       debuginfo.attr desktop.attr elf.attr font.attr libtool.attr 
metainfo.attr \
+       perl.attr perllib.attr pkgconfig.attr python.attr ocaml.attr 
script.attr \
 -      mono.attr
-+      mono.attr debuginfo.attr elflib.attr firmware.attr kernel.attr \
-+      kmp.attr sysvinit.attr
++      mono.attr elflib.attr firmware.attr kernel.attr kmp.attr sysvinit.attr
  
  EXTRA_DIST = $(fattrs_DATA)
---- /dev/null
-+++ fileattrs/debuginfo.attr
-@@ -0,0 +1,2 @@
-+%__debuginfo_provides %{_rpmconfigdir}/debuginfo.prov
-+%__debuginfo_path     ^/usr/lib/debug/
---- fileattrs/elf.attr.orig
-+++ fileattrs/elf.attr
+--- ./fileattrs/elf.attr.orig  2017-12-01 15:46:28.171720501 +0000
++++ ./fileattrs/elf.attr       2017-12-01 15:47:49.339485678 +0000
 @@ -1,4 +1,5 @@
  %__elf_provides               %{_rpmconfigdir}/elfdeps --provides 
%{?__filter_GLIBC_PRIVATE:--filter-private}
  %__elf_requires               %{_rpmconfigdir}/elfdeps --requires 
%{?__filter_GLIBC_PRIVATE:--filter-private}
--%__elf_magic          ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*$
-+%__elf_magic          ^(setuid )?(setgid )?(sticky )?ELF 
(32|64)-bit.*executable
+-%__elf_magic          ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$
++%__elf_magic          ^(setuid,? )?(setgid,? )?(sticky )?ELF 
(32|64)-bit.*executable
  %__elf_flags          exeonly
 +%__elf_exclude_path   ^/usr/lib/debug/
---- /dev/null
-+++ fileattrs/elflib.attr
+--- ./fileattrs/elflib.attr.orig       2017-12-01 15:46:28.171720501 +0000
++++ ./fileattrs/elflib.attr    2017-12-01 15:46:28.171720501 +0000
 @@ -0,0 +1,4 @@
 +%__elflib_provides    %{_rpmconfigdir}/elfdeps --assume-exec --provides 
%{?__filter_GLIBC_PRIVATE:--filter-private}
 +%__elflib_requires    %{_rpmconfigdir}/elfdeps --assume-exec --requires 
%{?__filter_GLIBC_PRIVATE:--filter-private}
 +%__elflib_magic               ^(setuid )?(setgid )?(sticky )?ELF 
(32|64)-bit.*shared object
 +%__elflib_exclude_path        ^/usr/lib/debug/
---- /dev/null
-+++ fileattrs/firmware.attr
+--- ./fileattrs/firmware.attr.orig     2017-12-01 15:46:28.171720501 +0000
++++ ./fileattrs/firmware.attr  2017-12-01 15:46:28.171720501 +0000
 @@ -0,0 +1,2 @@
 +%__firmware_provides  %{_rpmconfigdir}/firmware.prov
 +%__firmware_path      /lib/firmware/
---- /dev/null
-+++ fileattrs/kernel.attr
+--- ./fileattrs/kernel.attr.orig       2017-12-01 15:46:28.172720497 +0000
++++ ./fileattrs/kernel.attr    2017-12-01 15:46:28.172720497 +0000
 @@ -0,0 +1,2 @@
 +%__kernel_provides    %{_rpmconfigdir}/find-provides.ksyms --opensuse 
0%{?is_opensuse}
 +%__kernel_path                
^(/lib/modules/[^/]*/kernel/.*\.ko(\.gz)?|/boot/vmlinu[xz].*)$
---- /dev/null
-+++ fileattrs/kmp.attr
+--- ./fileattrs/kmp.attr.orig  2017-12-01 15:46:28.172720497 +0000
++++ ./fileattrs/kmp.attr       2017-12-01 15:46:28.172720497 +0000
 @@ -0,0 +1,4 @@
 +%__kmp_provides               %{_rpmconfigdir}/find-provides.ksyms --opensuse 
0%{?is_opensuse}
 +%__kmp_requires               %{_rpmconfigdir}/find-requires.ksyms --opensuse 
0%{?is_opensuse}
 +%__kmp_supplements    %{_rpmconfigdir}/find-supplements.ksyms
 +%__kmp_path           ^/lib/modules/[^/]*/(updates|extra)/.*\.ko(\.gz)?
---- fileattrs/perl.attr.orig
-+++ fileattrs/perl.attr
+--- ./fileattrs/perl.attr.orig 2017-08-10 08:08:07.113108701 +0000
++++ ./fileattrs/perl.attr      2017-12-01 15:46:28.172720497 +0000
 @@ -1,3 +1,4 @@
 -%__perl_requires      %{_rpmconfigdir}/perl.req
 +# disabled for now
 +#%__perl_requires     %{_rpmconfigdir}/perl.req
  %__perl_magic         ^.*[Pp]erl .*$
  %__perl_flags         exeonly
---- fileattrs/perllib.attr.orig
-+++ fileattrs/perllib.attr
+--- ./fileattrs/perllib.attr.orig      2017-08-10 08:08:07.113108701 +0000
++++ ./fileattrs/perllib.attr   2017-12-01 15:46:28.172720497 +0000
 @@ -1,5 +1,6 @@
  %__perllib_provides   %{_rpmconfigdir}/perl.prov
 -%__perllib_requires   %{_rpmconfigdir}/perl.req
@@ -78,8 +59,8 @@
  %__perllib_magic      ^Perl[[:digit:]] module source.*
  %__perllib_path               \\.pm$
  %__perllib_flags      magic_and_path
---- /dev/null
-+++ fileattrs/sysvinit.attr
+--- ./fileattrs/sysvinit.attr.orig     2017-12-01 15:46:28.172720497 +0000
++++ ./fileattrs/sysvinit.attr  2017-12-01 15:46:28.172720497 +0000
 @@ -0,0 +1,2 @@
 +%__sysvinit_provides  %{_rpmconfigdir}/sysvinitdeps.sh --provides
 +%__sysvinit_path      ^/etc/init\.d/

++++++ find-lang-qt-qm.patch ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.146215166 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.146215166 +0100
@@ -1,23 +1,6 @@
-Author: Fabian Vogt <[email protected]>
-Subject: Handle special cases of qt translations correctly
-References: boo#1027925
-
-Some KDE frameworks write their translations to files like this:
-/usr/share/locale/ca/LC_MESSAGES/libkirigami2plugin_qt.qm
-
-Without this patch it gets detected as %lang(qt), which is obviously
-incorrect. This copies two lines from the .mo handling and adjusts
-them to handle _qt.qm files as well. "qt" is not an official ISO language
-code, so this should not break anything in the past or hopefully the future.
-
-Signed-off-by: Fabian Vogt <[email protected]>
----
- scripts/find-lang.sh |    6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- scripts/find-lang.sh.orig
-+++ scripts/find-lang.sh
-@@ -303,9 +303,11 @@ s:%lang(C) ::
+--- ./scripts/find-lang.sh.orig        2017-12-01 16:07:23.339071251 +0000
++++ ./scripts/find-lang.sh     2017-12-01 16:13:00.392088317 +0000
+@@ -296,7 +296,9 @@ s:%lang(C) ::
  
  find "$TOP_DIR" -type f -o -type l|sed '
  s:'"$TOP_DIR"'::
@@ -25,9 +8,6 @@
 
+'"$ALL_NAME$QT"'s:\(.*/locale/\)\([^/]\+\)\(/.\+/\)\([^/]\+_qt\.qm$\):%lang(\2)
 \1\2\3\4:
 
+'"$NO_ALL_NAME$QT"'s:\(.*/locale/\)\([^/]\+\)\(/.\+/\)\('"$NAME"'_qt\.qm$\):%lang(\2)
 \1\2\3\4:
 
+'"$NO_ALL_NAME$QT"'s:^\([^%].*/'"$NAME"'_\([a-zA-Z]\{2\}\([_@].*\)\?\)\.qm$\):%lang(\2)
 \1:
- '"$ALL_NAME$QT"'s:\(.*/[^/_]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1:
--'"$ALL_NAME$QT"'s:\(.*/[^/_]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
-+'"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
- '"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) 
\1:
- '"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
- s:^[^%].*::
+ '"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1:
+ '"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
+ '"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) 
\1:

++++++ finddebuginfo-absolute-links.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.166214230 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.170214043 +0100
@@ -7,9 +7,9 @@
 
 Signed-off-by: Jan Blunck <[email protected]>
 
---- ./scripts/find-debuginfo.sh.orig   2012-06-01 13:12:04.000000000 +0000
-+++ ./scripts/find-debuginfo.sh        2012-06-01 13:12:17.000000000 +0000
-@@ -133,7 +133,17 @@ debug_link()
+--- ./scripts/find-debuginfo.sh.orig   2017-12-01 15:26:21.939199791 +0000
++++ ./scripts/find-debuginfo.sh        2017-12-01 15:27:03.153081225 +0000
+@@ -305,7 +305,17 @@ debug_link()
    local l="/usr/lib/debug$2"
    local t="$1"
    echo >> "$LINKSFILE" "$l $t"
@@ -27,15 +27,4 @@
 +  esac
  }
  
- # Provide .2, .3, ... symlinks to all filename instances of this build-id.
-@@ -186,8 +196,8 @@ make_id_link()
- 
-   local other=$(readlink -m "$root_idfile")
-   other=${other#$RPM_BUILD_ROOT}
--  if cmp -s "$root_idfile" "$RPM_BUILD_ROOT$file" ||
--     elfcmp "$root_idfile" "$RPM_BUILD_ROOT$file" ; then
-+  if cmp -s "$RPM_BUILD_ROOT$other" "$RPM_BUILD_ROOT$file" ||
-+     elfcmp "$RPM_BUILD_ROOT$other" "$RPM_BUILD_ROOT$file" ; then
-     # Two copies.  Maybe one has to be setuid or something.
-     echo >&2 "*** WARNING: identical binaries are copied, not linked:"
-     echo >&2 "        $file"
+ get_debugfn()

++++++ finddebuginfo.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.186213293 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.190213107 +0100
@@ -1,47 +1,15 @@
-Index: scripts/find-debuginfo.sh
-===================================================================
---- scripts/find-debuginfo.sh.orig     2017-02-16 10:54:14.779025209 +0100
-+++ scripts/find-debuginfo.sh  2017-07-26 14:39:24.338122534 +0200
-@@ -224,6 +224,20 @@ make_id_dup_link()
-   debug_link "$file" "/$idfile"
- }
+--- ./scripts/find-debuginfo.sh.orig   2017-10-05 10:04:57.586602035 +0000
++++ ./scripts/find-debuginfo.sh        2017-12-01 14:45:15.439290101 +0000
+@@ -326,12 +326,18 @@ trap 'rm -rf "$temp"' EXIT
  
-+# Compare two binaries but ignore the .note.gnu.build-id section
-+elfcmp()
-+{
-+  local tmp1=$(mktemp -t ${1##*/}.XXXXXX)
-+  local tmp2=$(mktemp -t ${2##*/}.XXXXXX)
-+
-+  objcopy -R .note.gnu.build-id -R .gnu_debuglink $1 $tmp1
-+  objcopy -R .note.gnu.build-id -R .gnu_debuglink $2 $tmp2
-+  cmp -s $tmp1 $tmp2
-+  local res=$?
-+  rm -f $tmp1 $tmp2
-+  return $res
-+}
-+
- # Make a build-id symlink for id $1 with suffix $3 to file $2.
- make_id_link()
- {
-@@ -244,7 +258,7 @@ make_id_link()
-   local other=$(readlink -m "$root_idfile")
-   other=${other#$RPM_BUILD_ROOT}
-   if cmp -s "$root_idfile" "$RPM_BUILD_ROOT$file" ||
--     eu-elfcmp -q "$root_idfile" "$RPM_BUILD_ROOT$file" 2> /dev/null; then
-+     elfcmp "$root_idfile" "$RPM_BUILD_ROOT$file" ; then
-     # Two copies.  Maybe one has to be setuid or something.
-     echo >&2 "*** WARNING: identical binaries are copied, not linked:"
-     echo >&2 "        $file"
-@@ -273,12 +287,18 @@ strict_error=ERROR
- $strict || strict_error=WARNING
- 
- # Strip ELF binaries
+ # Build a list of unstripped ELF files and their hardlinks
+ touch "$temp/primary"
 -find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \
 -                   \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \
 -                   -print |
 -file -N -f - | sed -n -e 's/^\(.*\):[         ]*.*ELF.*, not stripped.*/\1/p' 
|
 -xargs --no-run-if-empty stat -c '%h %D_%i %n' |
-+find $RPM_BUILD_ROOT ! -path "${debugdir}/*.debug" -type f \( -perm /111 -or 
-name "*.so*" -or -name "*.ko" \) -print 0 | sort -z |
++find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \( -perm /111 
-or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" -print0 | sort -z |
 +xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' |
  while read nlinks inum f; do
 +  case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') 
in
@@ -53,23 +21,24 @@
 +      ;;
 +    *) continue ;;
 +  esac
-   get_debugfn "$f"
-   [ -f "${debugfn}" ] && continue
- 
-@@ -302,7 +322,11 @@ while read nlinks inum f; do
+   if [ $nlinks -gt 1 ]; then
+     var=seen_$inum
+     if test -n "${!var}"; then
+@@ -364,6 +370,8 @@ do_file()
+   if [ "$no_recompute_build_id" = "true" ]; then
+     no_recompute="-n"
    fi
- 
-   echo "extracting debug info from $f"
--  id=$(${lib_rpm_dir}/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug \
 +  mode=$(stat -c %a "$f")
 +  chmod +w "$f"
-+  id=$($(DEBUGEDIT=$(which debugedit 2>/dev/null); \
-+      echo ${DEBUGEDIT:-/usr/lib/rpm/debugedit}) \
-+                              -b "$RPM_BUILD_DIR" -d /usr/src/debug \
-                             -i -l "$SOURCEFILE" "$f") || exit
-   if [ $nlinks -gt 1 ]; then
-     eval linkedid_$inum=\$id
-@@ -323,13 +347,25 @@ while read nlinks inum f; do
+   id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \
+                             $no_recompute -i \
+                             
${build_id_seed:+--build-id-seed="$build_id_seed"} \
+@@ -387,17 +395,30 @@ do_file()
+   # just has its file names collected and adjusted.
+   case "$dn" in
+   /usr/lib/debug/*)
++    chmod $mode "$f"
+     return ;;
    esac
  
    mkdir -p "${debugdn}"
@@ -80,7 +49,7 @@
 -    strip_to_debug "${debugfn}" "$f"
 -    chmod u-w "$f"
 -  fi
-+  objcopy --only-keep-debug $f $debugfn || :
++  objcopy --only-keep-debug "$f" "$debugfn" || :
 +  (
 +    shopt -s extglob
 +    strip_option="--strip-all"
@@ -96,26 +65,26 @@
 +    if test "$NO_DEBUGINFO_STRIP_DEBUG" = true ; then
 +      strip_option=
 +    fi
-+    objcopy --add-gnu-debuglink=$debugfn -R .comment -R .GCC.command.line 
$strip_option $f
-+    chmod $mode $f
++    objcopy --add-gnu-debuglink="$debugfn" -R .comment -R .GCC.command.line 
$strip_option "$f"
++    chmod $mode "$f"
 +  ) || :
  
    # strip -g implies we have full symtab, don't add mini symtab in that case.
-   $strip_g || ($include_minidebug && add_minidebug "${debugfn}" "$f")
-@@ -366,7 +402,7 @@ if $run_dwz && type dwz >/dev/null 2>&1
+   # It only makes sense to add a minisymtab for executables and shared
+@@ -507,7 +528,7 @@ if $run_dwz \
      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'`"
 +           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
-@@ -399,12 +435,14 @@ if [ -s "$SOURCEFILE" ]; then
-   # stupid cpio creates new directories in mode 0700, fixup
-   find "${RPM_BUILD_ROOT}/usr/src/debug" -type d -print0 |
-   xargs --no-run-if-empty -0 chmod a+rx
-+  find "${RPM_BUILD_ROOT}/usr/src/debug" -type f -print0 |
+ 
+     # dwz invalidates .gnu_debuglink CRC32 in the main files.
+@@ -551,12 +572,14 @@ if [ -s "$SOURCEFILE" ]; then
+   # and non-standard modes may be inherented from original directories, fixup
+   find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 |
+   xargs --no-run-if-empty -0 chmod 0755
++  find "${RPM_BUILD_ROOT}${debug_dest_name}" -type f -print0 |
 +  xargs --no-run-if-empty -0 chmod a+r
  fi
  

++++++ findksyms.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.210212170 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.210212170 +0100
@@ -1,29 +1,23 @@
----
- scripts/Makefile.am         |    2 +
- scripts/find-provides.ksyms |   60 
++++++++++++++++++++++++++++++++++++++++++++
- scripts/find-requires.ksyms |   29 +++++++++++++++++++++
- 3 files changed, 91 insertions(+)
-
---- scripts/Makefile.am.orig
-+++ scripts/Makefile.am
-@@ -16,6 +16,7 @@ EXTRA_DIST = \
+--- ./scripts/Makefile.am.orig 2017-12-01 14:48:23.171746842 +0000
++++ ./scripts/Makefile.am      2017-12-01 14:49:09.395612962 +0000
+@@ -18,6 +18,7 @@ EXTRA_DIST = \
        tgpg vpkg-provides.sh \
        find-requires find-provides \
        find-requires.php find-provides.php \
 +      find-requires.ksyms find-provides.ksyms \
        mono-find-requires mono-find-provides \
        ocaml-find-requires.sh ocaml-find-provides.sh \
-       pkgconfigdeps.sh libtooldeps.sh appdata.prov \
-@@ -32,6 +33,7 @@ rpmconfig_SCRIPTS = \
-       check-buildroot check-rpaths check-rpaths-worker \
+       pkgconfigdeps.sh libtooldeps.sh metainfo.prov \
+@@ -34,6 +35,7 @@ rpmconfig_SCRIPTS = \
+       debuginfo.prov \
        find-lang.sh find-requires find-provides \
-       perl.prov perl.req pythondeps.sh \
+       perl.prov perl.req pythondeps.sh pythondistdeps.py \
 +      find-requires.ksyms find-provides.ksyms \
+       metainfo.prov \
        mono-find-requires mono-find-provides \
        pkgconfigdeps.sh libtooldeps.sh \
-       ocaml-find-requires.sh ocaml-find-provides.sh \
---- /dev/null
-+++ scripts/find-provides.ksyms
+--- ./scripts/find-provides.ksyms.orig 2017-12-01 14:48:28.374731785 +0000
++++ ./scripts/find-provides.ksyms      2017-12-01 14:48:28.374731785 +0000
 @@ -0,0 +1,60 @@
 +#! /bin/bash
 +
@@ -85,8 +79,8 @@
 +    | sed -r -ne "s/^0*([0-9a-f]+) A __crc_(.+)/ksym($flavor:\\2) = \\1/p"
 +done \
 +| sort -u
---- /dev/null
-+++ scripts/find-requires.ksyms
+--- ./scripts/find-requires.ksyms.orig 2017-12-01 14:48:28.375731781 +0000
++++ ./scripts/find-requires.ksyms      2017-12-01 14:48:28.375731781 +0000
 @@ -0,0 +1,29 @@
 +#! /bin/bash
 +

++++++ findlang.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.230211233 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.234211047 +0100
@@ -1,5 +1,5 @@
---- ./scripts/find-lang.sh.orig        2016-10-13 07:12:21.467778490 +0000
-+++ ./scripts/find-lang.sh     2017-01-19 12:45:51.491544036 +0000
+--- ./scripts/find-lang.sh.orig        2017-10-05 10:04:57.586602035 +0000
++++ ./scripts/find-lang.sh     2017-12-01 14:51:31.189202268 +0000
 @@ -30,11 +30,11 @@ the top of the tree containing the files
  PACKAGE_NAME is the %{name} of the package. This should also be
  the basename of the .mo files.  the output is written to
@@ -107,12 +107,7 @@
  
  find $TOP_DIR -type d|sed '
  s:'"$TOP_DIR"'::
-@@ -162,11 +176,11 @@ s:'"$TOP_DIR"'::
- '"$NO_ALL_NAME$MATE"'s:\(.*/mate/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) \1\2:
- '"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
- '"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]/.\+\)::
--'"$ALL_NAME$GNOME"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/_]\+\):%lang(\2)
 \1\2:
-+'"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/_]\+\):%lang(\2)
 \1\2:
+@@ -166,14 +180,14 @@ s:'"$TOP_DIR"'::
  s:%lang(.*) .*/mate/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+/.*::
  s:^\([^%].*\)::
  s:%lang(C) ::
@@ -121,6 +116,14 @@
  
  find "$TOP_DIR" -type d|sed '
  s:'"$TOP_DIR"'::
+ '"$NO_ALL_NAME$MATE"'s:\(.*/omf/'"$NAME"'$\):%dir \1:
+ '"$ALL_NAME$MATE"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
+ s:^\([^%].*\)::
+-/^$/d' >> $MO_NAME
++/^$/d' >> $MO_NAME_NEW
+ 
+ find "$TOP_DIR" -type f|sed '
+ s:'"$TOP_DIR"'::
 @@ -181,7 +195,7 @@ s:'"$TOP_DIR"'::
  
'"$ALL_NAME$MATE"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2)
 \1:
  s:^[^%].*::
@@ -147,8 +150,17 @@
 +/^$/d' >> $MO_NAME_NEW
  fi
  
+ KF5_HTML=`kf5-config --expandvars --install html 2>/dev/null`
+@@ -219,7 +233,7 @@ s:'"$TOP_DIR"'::
+ 
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) 
\1\2\3:
+ s:^\([^%].*\)::
+ s:%lang(C) ::
+-/^$/d' >> $MO_NAME
++/^$/d' >> $MO_NAME_NEW
+ fi
+ 
  find "$TOP_DIR" -type d|sed '
-@@ -217,7 +231,7 @@ s:'"$TOP_DIR"'::
+@@ -230,7 +244,7 @@ s:'"$TOP_DIR"'::
  
'"$ALL_NAME$HTML"'s:\(.*/doc/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2)
 \1\2\3:
  s:^\([^%].*\)::
  s:%lang(C) ::
@@ -157,7 +169,7 @@
  
  find "$TOP_DIR" -type f -o -type l|sed '
  s:'"$TOP_DIR"'::
-@@ -228,7 +242,7 @@ s:'"$TOP_DIR"'::
+@@ -243,7 +257,7 @@ s:'"$TOP_DIR"'::
  '"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
  s:^[^%].*::
  s:%lang(C) ::
@@ -166,7 +178,7 @@
  
  find "$TOP_DIR" -type d|sed '
  s:'"$TOP_DIR"'::
-@@ -236,17 +250,22 @@ s:'"$TOP_DIR"'::
+@@ -251,17 +265,22 @@ s:'"$TOP_DIR"'::
  '"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*:
  s:^\([^%].*\)::
  s:%lang(C) ::

++++++ hardlink.diff ++++++
Create first hard link file and keep open, write it at end

upstream commit e276991614fd127f21aba94946f81f22cb7e6b73
upstream commit 0afe0c3c6cba64d8b7adcdec6ed70f8d32961b58
upstream commit ef3ff412c33a71be6b3543a50c244377dff3d9e7
--- ./lib/fsm.c.orig    2017-10-05 10:04:56.977602149 +0000
+++ ./lib/fsm.c 2017-12-05 12:05:19.529973029 +0000
@@ -218,56 +218,76 @@ static int linkSane(FD_t wfd, const char
            sb.st_dev == lsb.st_dev && sb.st_ino == lsb.st_ino);
 }
 
-/** \ingroup payload
- * Create file from payload stream.
- * @return             0 on success
- */
-static int expandRegular(rpmfi fi, const char *dest, rpmpsm psm, int 
exclusive, int nodigest, int nocontent)
+static void wfd_close(FD_t *wfdp)
 {
-    FD_t wfd = NULL;
-    int rc = 0;
+    if (wfdp && *wfdp) {
+       int myerrno = errno;
+       static int oneshot = 0;
+       static int flush_io = 0;
+       if (!oneshot) {
+           flush_io = rpmExpandNumeric("%{?_flush_io}");
+           oneshot = 1;
+       }
+       if (flush_io) {
+           int fdno = Fileno(*wfdp);
+           fsync(fdno);
+       }
+       Fclose(*wfdp);
+       *wfdp = NULL;
+       errno = myerrno;
+    }
+}
 
+static int wfd_open(FD_t *wfdp, const char *dest, int exclusive)
+{
+    int rc = 0;
     /* Create the file with 0200 permissions (write by owner). */
     {
        mode_t old_umask = umask(0577);
-       wfd = Fopen(dest, exclusive ? "wx.ufdio" : "a.ufdio");
+       *wfdp = Fopen(dest, exclusive ? "wx.ufdio" : "a.ufdio");
        umask(old_umask);
 
        /* If reopening, make sure the file is what we expect */
-       if (!exclusive && wfd != NULL && !linkSane(wfd, dest)) {
+       if (!exclusive && *wfdp != NULL && !linkSane(*wfdp, dest)) {
            rc = RPMERR_OPEN_FAILED;
            goto exit;
        }
     }
-    if (Ferror(wfd)) {
+    if (Ferror(*wfdp)) {
        rc = RPMERR_OPEN_FAILED;
        goto exit;
     }
 
+    return 0;
+
+exit:
+    wfd_close(wfdp);
+    return rc;
+}
+
+/** \ingroup payload
+ * Create file from payload stream.
+ * @return             0 on success
+ */
+static int expandRegular(rpmfi fi, const char *dest, rpmpsm psm, int 
exclusive, int nodigest, int nocontent)
+{
+    FD_t wfd = NULL;
+    int rc;
+
+    rc = wfd_open(&wfd, dest, exclusive);
+    if (rc != 0)
+        goto exit;
+
     if (!nocontent)
        rc = rpmfiArchiveReadToFilePsm(fi, wfd, nodigest, psm);
+    wfd_close(&wfd);
 exit:
-    if (wfd) {
-       int myerrno = errno;
-       static int oneshot = 0;
-       static int flush_io = 0;
-       if (!oneshot) {
-           flush_io = rpmExpandNumeric("%{?_flush_io}");
-           oneshot = 1;
-       }
-       if (flush_io) {
-           int fdno = Fileno(wfd);
-           fsync(fdno);
-       }
-       Fclose(wfd);
-       errno = myerrno;
-    }
     return rc;
 }
 
 static int fsmMkfile(rpmfi fi, const char *dest, rpmfiles files,
                     rpmpsm psm, int nodigest, int *setmeta,
-                    int * firsthardlink)
+                    int * firsthardlink, FD_t *firstlinkfile)
 {
     int rc = 0;
     int numHardlinks = rpmfiFNlink(fi);
@@ -276,7 +296,7 @@ static int fsmMkfile(rpmfi fi, const cha
        /* Create first hardlinked file empty */
        if (*firsthardlink < 0) {
            *firsthardlink = rpmfiFX(fi);
-           rc = expandRegular(fi, dest, psm, 1, nodigest, 1);
+           rc = wfd_open(firstlinkfile, dest, 1);
        } else {
            /* Create hard links for others */
            char *fn = rpmfilesFN(files, *firsthardlink);
@@ -294,7 +314,8 @@ static int fsmMkfile(rpmfi fi, const cha
            rc = expandRegular(fi, dest, psm, 1, nodigest, 0);
     } else if (rpmfiArchiveHasContent(fi)) {
        if (!rc)
-           rc = expandRegular(fi, dest, psm, 0, nodigest, 0);
+           rc = rpmfiArchiveReadToFilePsm(fi, *firstlinkfile, nodigest, psm);
+       wfd_close(firstlinkfile);
        *firsthardlink = -1;
     } else {
        *setmeta = 0;
@@ -861,6 +882,7 @@ int rpmPackageFilesInstall(rpmts ts, rpm
     int nodigest = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOFILEDIGEST) ? 1 : 0;
     int nofcaps = (rpmtsFlags(ts) & RPMTRANS_FLAG_NOCAPS) ? 1 : 0;
     int firsthardlink = -1;
+    FD_t firstlinkfile = NULL;
     int skip;
     rpmFileAction action;
     char *tid = NULL;
@@ -932,7 +954,7 @@ int rpmPackageFilesInstall(rpmts ts, rpm
             if (S_ISREG(sb.st_mode)) {
                if (rc == RPMERR_ENOENT) {
                    rc = fsmMkfile(fi, fpath, files, psm, nodigest,
-                                  &setmeta, &firsthardlink);
+                                  &setmeta, &firsthardlink, &firstlinkfile);
                }
             } else if (S_ISDIR(sb.st_mode)) {
                 if (rc == RPMERR_ENOENT) {
@@ -970,7 +992,8 @@ int rpmPackageFilesInstall(rpmts ts, rpm
            /* we skip the hard linked file containing the content */
            /* write the content to the first used instead */
            char *fn = rpmfilesFN(files, firsthardlink);
-           rc = expandRegular(fi, fn, psm, 0, nodigest, 0);
+           rc = rpmfiArchiveReadToFilePsm(fi, firstlinkfile, nodigest, psm);
+           wfd_close(&firstlinkfile);
            firsthardlink = -1;
            free(fn);
        }
++++++ headerchk2.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.278208987 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.278208987 +0100
@@ -1,12 +1,12 @@
---- lib/header.c.orig  2012-04-03 13:29:24.000000000 +0000
-+++ lib/header.c       2012-06-01 14:22:12.000000000 +0000
-@@ -900,7 +900,8 @@ Header headerImport(void * blob, unsigne
+--- ./lib/header.c.orig        2017-12-01 15:54:04.254399473 +0000
++++ ./lib/header.c     2017-12-01 15:55:36.389131237 +0000
+@@ -929,7 +929,8 @@ rpmRC hdrblobImport(hdrblob blob, int fa
  
        rdlen += REGION_TAG_COUNT;
  
--      if (rdlen != dl)
+-      if (rdlen != blob->dl)
 +      /* should be equality test, but can be off if entries are not perfectly 
aligned */
-+      if (rdlen > dl)
++      if (rdlen > blob->dl)
            goto errxit;
      }
  

++++++ initscriptsprov.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.310207488 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.314207302 +0100
@@ -1,14 +1,14 @@
---- ./scripts/Makefile.am.orig 2017-01-19 13:05:33.490167306 +0000
-+++ ./scripts/Makefile.am      2017-01-19 13:06:29.192005359 +0000
-@@ -21,6 +21,7 @@ EXTRA_DIST = \
+--- ./scripts/Makefile.am.orig 2017-12-01 15:44:10.626118239 +0000
++++ ./scripts/Makefile.am      2017-12-01 15:44:14.182107984 +0000
+@@ -23,6 +23,7 @@ EXTRA_DIST = \
        ocaml-find-requires.sh ocaml-find-provides.sh \
-       pkgconfigdeps.sh libtooldeps.sh appdata.prov \
+       pkgconfigdeps.sh libtooldeps.sh metainfo.prov \
        fontconfig.prov desktop-file.prov script.req \
 +      sysvinitdeps.sh \
        macros.perl macros.php macros.python
  
  rpmconfig_SCRIPTS = \
-@@ -38,6 +39,7 @@ rpmconfig_SCRIPTS = \
+@@ -41,6 +42,7 @@ rpmconfig_SCRIPTS = \
        pkgconfigdeps.sh libtooldeps.sh \
        ocaml-find-requires.sh ocaml-find-provides.sh \
        fontconfig.prov desktop-file.prov script.req \
@@ -16,8 +16,8 @@
        rpmdb_loadcvt rpm2cpio.sh tgpg 
  
  rpmconfig_DATA = \
---- ./scripts/sysvinitdeps.sh.orig     2017-01-19 13:05:37.523155583 +0000
-+++ ./scripts/sysvinitdeps.sh  2017-01-19 13:05:37.523155583 +0000
+--- ./scripts/sysvinitdeps.sh.orig     2017-12-01 15:44:14.183107975 +0000
++++ ./scripts/sysvinitdeps.sh  2017-12-01 15:44:14.183107975 +0000
 @@ -0,0 +1,17 @@
 +#!/bin/sh
 +

++++++ macrosin.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.350205616 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.350205616 +0100
@@ -1,23 +1,7 @@
---- ./macros.in.orig   2017-02-16 09:40:09.908649457 +0000
-+++ ./macros.in        2017-07-05 14:15:53.855734802 +0000
-@@ -185,22 +185,22 @@
- 
- #     Template for debug information sub-package.
- %debug_package \
--%ifnarch noarch\
- %global __debug_package 1\
- %package debuginfo\
- Summary: Debug information for package %{name}\
- Group: Development/Debug\
- AutoReqProv: 0\
-+#Requires: %{?!debug_package_requires:%{name} = 
%{version}-%{release}}%{?debug_package_requires}\
- %description debuginfo\
- This package provides debug information for package %{name}.\
- Debug information is useful when developing applications that use this\
- package or when debugging this package.\
- %files debuginfo -f debugfiles.list\
- %defattr(-,root,root)\
--%endif\
+--- ./macros.in.orig   2017-12-07 16:01:58.933485867 +0000
++++ ./macros.in        2017-12-07 16:02:25.273409983 +0000
+@@ -224,7 +224,8 @@ package or when debugging this package.\
+ %endif\
  %{nil}
  
 -%_defaultdocdir               %{_datadir}/doc
@@ -25,8 +9,8 @@
 +%_docdir_fmt          %%{NAME}
  %_defaultlicensedir   %{_datadir}/licenses
  
- #     The path to the gzip executable (legacy, use %{__gzip} instead).
-@@ -238,7 +238,8 @@ package or when debugging this package.\
+ # Following macros for filtering auto deps must not be used in spec files.
+@@ -278,7 +279,8 @@ package or when debugging this package.\
  %_tmppath             %{_var}/tmp
  
  #     Path to top of build area.
@@ -36,8 +20,8 @@
  
  #     The path to the unzip executable (legacy, use %{__unzip} instead).
  %_unzipbin            %{__unzip}
-@@ -341,7 +342,7 @@ package or when debugging this package.\
- #             "w7.lzdio"      lzma-alone level 7, lzma's default
+@@ -382,7 +384,7 @@ package or when debugging this package.\
+ #             "w6.lzdio"      lzma-alone level 6, lzma's default
  #
  #%_source_payload     w9.gzdio
 -#%_binary_payload     w9.gzdio
@@ -45,7 +29,7 @@
  
  #     Algorithm to use for generating file checksum digests on build.
  #     If not specified or 0, MD5 is used.
-@@ -448,6 +449,19 @@ package or when debugging this package.\
+@@ -489,6 +491,19 @@ package or when debugging this package.\
  #
  #%_include_minidebuginfo      1
  
@@ -63,9 +47,31 @@
 +   --dwz-max-die-limit %{_dwz_max_die_limit}
 +
  #
+ # Include a .gdb_index section in the .debug files.
+ # Requires _enable_debug_packages and gdb-add-index installed.
+@@ -521,7 +536,7 @@ package or when debugging this package.\
+ #   Same as for "separate" but if the __debug_package global is set then
+ #   the -debuginfo package will have a compatibility link for the main
+ #   ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy
+-%_build_id_links compat
++%_build_id_links alldebug
+ 
+ # Whether build-ids should be made unique between package version/releases
+ # when generating debuginfo packages. If set to 1 this will pass
+@@ -550,10 +565,10 @@ package or when debugging this package.\
+ %_unique_debug_srcs   1
+ 
+ # Whether rpm should put debug source files into its own subpackage
+-#%_debugsource_packages       1
++%_debugsource_packages        1
+ 
+ # Whether rpm should create extra debuginfo packages for each subpackage
+-#%_debuginfo_subpackages 1
++%_debuginfo_subpackages 1
+ 
+ #
  # Use internal dependency generator rather than external helpers?
- %_use_internal_dependency_generator   1
-@@ -459,16 +473,22 @@ package or when debugging this package.\
+@@ -566,16 +581,22 @@ package or when debugging this package.\
  # Directories whose contents should be considered as documentation.
  %__docdir_path 
%{_datadir}/doc:%{_datadir}/man:%{_datadir}/info:%{_datadir}/gtk-doc/html:%{?_docdir}:%{?_mandir}:%{?_infodir}:%{?_javadocdir}:/usr/doc:/usr/man:/usr/info:/usr/X11R6/man
  
@@ -90,7 +96,7 @@
  
  # 
  # Path to file attribute classifications for automatic dependency 
-@@ -538,10 +558,10 @@ package or when debugging this package.\
+@@ -654,10 +675,10 @@ package or when debugging this package.\
  # Misc BDB tuning options
  %__dbi_other                  mp_mmapsize=128Mb mp_size=1Mb
  
@@ -103,7 +109,7 @@
  
  
#==============================================================================
  # ---- GPG/PGP/PGP5 signature macros.
-@@ -840,7 +860,7 @@ package or when debugging this package.\
+@@ -969,7 +990,7 @@ package or when debugging this package.\
  %_build_vendor                %{_host_vendor}
  %_build_os            %{_host_os}
  %_host                        @host@
@@ -112,9 +118,20 @@
  %_host_cpu            @host_cpu@
  %_host_vendor         @host_vendor@
  %_host_os             @host_os@
-@@ -1009,6 +1029,183 @@ done \
- %python_sitearch %(%{__python} -c "from distutils.sysconfig import 
get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
- %python_version %(%{__python} -c "import sys; 
sys.stdout.write(sys.version[:3])")
+@@ -1095,7 +1116,9 @@ package or when debugging this package.\
+ 
+ 
#------------------------------------------------------------------------------
+ # arch macro for all supported ARM processors
+-%arm  armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl 
armv7l armv7hl armv7hnl
++%arm    armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel 
armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
++%arml   armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl
++%armb   armv4b armv5b armv5teb
+ 
+ 
#------------------------------------------------------------------------------
+ # arch macro for 32-bit MIPS processors
+@@ -1125,6 +1148,183 @@ package or when debugging this package.\
+ # arch macro for all supported Alpha processors
+ %alpha        alpha alphaev56 alphaev6 alphaev67
  
 +# More useful perl macros (from Raul Dias <[email protected]>)
 +#
@@ -294,20 +311,9 @@
 +EOF
 +
  
#------------------------------------------------------------------------------
- # arch macro for all Intel i?86 compatibile processors
- #  (Note: This macro (and it's analogues) will probably be obsoleted when
-@@ -1019,7 +1216,9 @@ done \
- 
- 
#------------------------------------------------------------------------------
- # arch macro for all supported ARM processors
--%arm  armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l 
armv7hl armv7hnl
-+%arm    armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel 
armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
-+%arml   armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl
-+%armb   armv4b armv5b armv5teb
- 
- 
#------------------------------------------------------------------------------
- # arch macro for 32-bit MIPS processors
-@@ -1174,3 +1373,24 @@ end}
+ # arch macro for all supported PowerPC 64 processors
+ %power64      ppc64 ppc64p7 ppc64le
+@@ -1257,3 +1457,24 @@ end}
  
  # \endverbatim
  #*/

++++++ noprereqdeprec.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.390203743 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.394203556 +0100
@@ -1,15 +1,15 @@
---- ./build/parsePreamble.c.orig       2014-02-20 14:51:56.798802270 +0000
-+++ ./build/parsePreamble.c    2014-02-20 14:53:27.617802110 +0000
-@@ -895,7 +895,7 @@ static struct PreambleRec_s const preamb
-     {RPMTAG_SUGGESTFLAGS,     0, 0, LEN_AND_STR("suggests")},
-     {RPMTAG_SUPPLEMENTFLAGS,  0, 0, LEN_AND_STR("supplements")},
-     {RPMTAG_ENHANCEFLAGS,     0, 0, LEN_AND_STR("enhances")},
+--- ./build/parsePreamble.c.orig       2017-12-01 15:42:35.766392406 +0000
++++ ./build/parsePreamble.c    2017-12-01 15:43:29.364237520 +0000
+@@ -996,7 +996,7 @@ static struct PreambleRec_s const preamb
+     {RPMTAG_SUGGESTNAME,      0, 0, LEN_AND_STR("suggests")},
+     {RPMTAG_SUPPLEMENTNAME,   0, 0, LEN_AND_STR("supplements")},
+     {RPMTAG_ENHANCENAME,      0, 0, LEN_AND_STR("enhances")},
 -    {RPMTAG_PREREQ,           2, 1, LEN_AND_STR("prereq")},
 +    {RPMTAG_PREREQ,           2, 0, LEN_AND_STR("prereq")},
-     {RPMTAG_CONFLICTFLAGS,    0, 0, LEN_AND_STR("conflicts")},
-     {RPMTAG_OBSOLETEFLAGS,    0, 0, LEN_AND_STR("obsoletes")},
+     {RPMTAG_CONFLICTNAME,     0, 0, LEN_AND_STR("conflicts")},
+     {RPMTAG_OBSOLETENAME,     0, 0, LEN_AND_STR("obsoletes")},
      {RPMTAG_PREFIXES,         0, 0, LEN_AND_STR("prefixes")},
-@@ -904,7 +904,7 @@ static struct PreambleRec_s const preamb
+@@ -1005,7 +1005,7 @@ static struct PreambleRec_s const preamb
      {RPMTAG_BUILDARCHS,               0, 0, 
LEN_AND_STR("buildarchitectures")},
      {RPMTAG_BUILDARCHS,               0, 0, LEN_AND_STR("buildarch")},
      {RPMTAG_BUILDCONFLICTS,   0, 0, LEN_AND_STR("buildconflicts")},

++++++ pythondistdeps.diff ++++++
--- ./scripts/pythondistdeps.py.orig    2018-01-02 10:03:28.273247676 +0000
+++ ./scripts/pythondistdeps.py 2018-01-02 10:03:41.527207759 +0000
@@ -1,4 +1,3 @@
-#!/usr/bin/python
 # -*- coding: utf-8 -*-
 #
 # Copyright 2010 Per Øyvind Karlsen <[email protected]>
++++++ remove-translations.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:18.450200934 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:18.454200747 +0100
@@ -5,7 +5,7 @@
  rm -f $MO_NAME_NEW
  
 +# remove languages we do not yet support - but give out statistics
-+find "$TOP_DIR/usr/share/locale/" -maxdepth 1 -type d | sed 
's:'"$TOP_DIR"/usr/share/locale/'::; /^$/d' | while read dir; do
++test -d "$TOP_DIR/usr/share/locale/" && find "$TOP_DIR/usr/share/locale/" 
-maxdepth 1 -type d | sed 's:'"$TOP_DIR"/usr/share/locale/'::; /^$/d' | while 
read dir; do
 +  if ! rpm -ql filesystem | egrep -q "/usr/share/locale/$dir"$; then
 +    find $TOP_DIR/usr/share/locale/$dir -name *.mo | sed 's:'"$TOP_DIR"'::' | 
while read file; do
 +      echo -n "removing translation $file: "
@@ -14,7 +14,7 @@
 +    rm -rf $TOP_DIR/usr/share/locale/$dir
 +  fi
 +done
-+find $TOP_DIR/usr/share/help/ -maxdepth 1 -type d | sed 
's:'"$TOP_DIR"/usr/share/help/'::; /^$/d' | while read dir; do
++test -d "$TOP_DIR/usr/share/help/" && find $TOP_DIR/usr/share/help/ -maxdepth 
1 -type d | sed 's:'"$TOP_DIR"/usr/share/help/'::; /^$/d' | while read dir; do
 +  if ! rpm -ql filesystem | egrep -q "/usr/share/help/$dir"$; then
 +    echo "removing help translation /usr/share/help/$dir"
 +    rm -rf $TOP_DIR/usr/share/help/$dir

++++++ rofs.diff ++++++
Don't bother retrying locking on read-only filesystem (RhBug:1502134)

upstream commit f25752a8cd6b161f3002dc7839242872ecb59547
--- ./lib/rpmlock.c.orig        2017-08-10 08:08:07.122108699 +0000
+++ ./lib/rpmlock.c     2017-12-05 12:02:26.248459858 +0000
@@ -30,7 +30,8 @@ static rpmlock rpmlock_new(const char *l
        (void) umask(oldmask);
 
        if (lock->fd == -1) {
-           lock->fd = open(lock_path, O_RDONLY);
+           if (errno != EROFS)
+               lock->fd = open(lock_path, O_RDONLY);
            if (lock->fd == -1) {
                free(lock);
                lock = NULL;
++++++ rpm-4.13.0.1.tar.bz2 -> rpm-4.14.0.tar.bz2 ++++++
++++ 275677 lines of diff (skipped)

++++++ rpm-deptracking.patch ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.282021541 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.286021353 +0100
@@ -1,6 +1,6 @@
---- ./macros.in.orig   2014-08-04 13:03:05.948860909 +0000
-+++ ./macros.in        2014-08-04 13:03:24.830775270 +0000
-@@ -885,7 +885,8 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.ex
+--- ./macros.in.orig   2017-12-01 15:50:47.587969729 +0000
++++ ./macros.in        2017-12-01 15:50:53.813951691 +0000
+@@ -1039,7 +1039,8 @@ package or when debugging this package.\
        --localstatedir=%{_localstatedir} \\\
        --sharedstatedir=%{_sharedstatedir} \\\
        --mandir=%{_mandir} \\\
@@ -9,4 +9,4 @@
 +      --disable-dependency-tracking
  
  
#------------------------------------------------------------------------------
- # The "make" analogue, hiding the _smp_mflags magic from specs
+ # Tested features of make

++++++ rpm-shorten-changelog.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.302020604 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.302020604 +0100
@@ -1,6 +1,6 @@
---- ./build/pack.c.orig        2013-06-10 15:55:10.000000000 +0000
-+++ ./build/pack.c     2013-07-12 11:59:37.000000000 +0000
-@@ -540,6 +540,63 @@ static rpmRC checkPackages(char *pkgchec
+--- ./build/pack.c.orig        2017-10-11 12:39:53.009897937 +0000
++++ ./build/pack.c     2017-12-04 16:02:29.299440578 +0000
+@@ -641,6 +641,71 @@ static rpmRC checkPackages(char *pkgchec
      return RPMRC_OK;
  }
  
@@ -8,9 +8,9 @@
 +{
 +    static int oneshot;
 +    static int cuttime, minnum, maxnum;
-+    int * times;
-+    char ** names = 0, ** texts = 0;
-+    int i, keep, count = 0;
++    rpm_count_t i, keep;
++    struct rpmtd_s timestd, namestd, textstd;
++    rpm_count_t count;
 +
 +    if (!oneshot) {
 +      char *binarychangelogtrim = rpmExpand("%{?_binarychangelogtrim}", NULL);
@@ -35,9 +35,12 @@
 +    if (!cuttime && !minnum && !maxnum) {
 +      return;
 +    }
-+    if (!headerGetEntry(h, RPMTAG_CHANGELOGTIME, NULL, (void **) &times, 
&count))
++
++    if (!headerGet(h, RPMTAG_CHANGELOGTIME, &timestd, HEADERGET_MINMEM))
 +      return;
++    count = rpmtdCount(&timestd);
 +    if ((!cuttime || count <= minnum) && (!maxnum || count <= maxnum)) {
++      rpmtdFreeData(&timestd);
 +      return;
 +    }
 +    keep = count;
@@ -45,26 +48,31 @@
 +      keep = maxnum;
 +    if (cuttime) {
 +      for (i = 0; i < keep; i++) {
-+          if (i >= minnum && times[i] < cuttime)
++          uint32_t *tp = rpmtdNextUint32(&timestd);
++          if (i >= minnum && tp && *tp < cuttime)
 +              break;
 +      }
 +      keep = i;
 +    }
-+    if (keep >= count)
++    if (keep >= count) {
++      rpmtdFreeData(&timestd);
 +      return;
-+    headerGetEntry(h, RPMTAG_CHANGELOGNAME, NULL, (void **) &names, &count);
-+    headerGetEntry(h, RPMTAG_CHANGELOGTEXT, NULL, (void **) &texts, &count);
-+    headerModifyEntry(h, RPMTAG_CHANGELOGTIME, RPM_INT32_TYPE, times, keep);
-+    headerModifyEntry(h, RPMTAG_CHANGELOGNAME, RPM_STRING_ARRAY_TYPE, names, 
keep);
-+    headerModifyEntry(h, RPMTAG_CHANGELOGTEXT, RPM_STRING_ARRAY_TYPE, texts, 
keep);
-+    free(names);
-+    free(texts);
++    }
++    headerGet(h, RPMTAG_CHANGELOGNAME, &namestd, HEADERGET_MINMEM);
++    headerGet(h, RPMTAG_CHANGELOGTEXT, &textstd, HEADERGET_MINMEM);
++    timestd.count = namestd.count = textstd.count = keep;
++    headerMod(h, &timestd);
++    headerMod(h, &namestd);
++    headerMod(h, &textstd);
++    rpmtdFreeData(&textstd);
++    rpmtdFreeData(&namestd);
++    rpmtdFreeData(&timestd);
 +}
 +
  rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
  {
      rpmRC rc;
-@@ -547,6 +604,7 @@ rpmRC packageBinaries(rpmSpec spec, cons
+@@ -648,6 +713,7 @@ rpmRC packageBinaries(rpmSpec spec, cons
      Package pkg;
      char *pkglist = NULL;
  
@@ -72,9 +80,9 @@
      for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
        char *fn;
  
---- ./build/parseChangelog.c.orig      2012-11-18 08:21:06.000000000 +0000
-+++ ./build/parseChangelog.c   2013-07-12 11:59:37.000000000 +0000
-@@ -183,6 +183,11 @@ static rpmRC addChangelog(Header h, ARGV
+--- ./build/parseChangelog.c.orig      2017-10-05 10:04:56.859602170 +0000
++++ ./build/parseChangelog.c   2017-12-04 14:47:41.249346774 +0000
+@@ -255,6 +255,11 @@ static rpmRC addChangelog(Header h, ARGV
            goto exit;
        }
  

++++++ rpmpopt.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.374017234 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.374017234 +0100
@@ -1,6 +1,6 @@
---- ./rpmpopt.in.orig  2017-02-16 09:40:09.969649413 +0000
-+++ ./rpmpopt.in       2017-07-05 14:13:49.599735022 +0000
-@@ -100,12 +100,16 @@ Relocations : %|PREFIXES?{[%{PREFIXES} ]
+--- ./rpmpopt.in.orig  2017-12-01 14:58:11.404041985 +0000
++++ ./rpmpopt.in       2017-12-01 14:59:06.275882759 +0000
+@@ -101,7 +101,8 @@ Relocations : %|PREFIXES?{[%{PREFIXES} ]
  %|URL?{URL         : %{URL}\n}|\
  %|BUGURL?{Bug URL     : %{BUGURL}\n}|\
  Summary     : %{SUMMARY}\n\
@@ -10,11 +10,3 @@
        --POPTdesc=$"list descriptive information from package(s)"
  
  rpm   alias --changelog --qf '[* %{CHANGELOGTIME:day} 
%{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
-       --POPTdesc=$"list change logs for this package"
- 
-+rpm   alias --changes --qf '[* %{CHANGELOGTIME:date} 
%{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
-+      --POPTdesc=$"list changes for this package with full time stamps"
-+
- rpm   alias --xml --qf '[%{*:xml}\n]' \
-       --POPTdesc=$"list metadata in xml"
- 

++++++ rpmqpack.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.386016671 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.390016485 +0100
@@ -1,9 +1,6 @@
-Provide rpmqpack, a fast way to list all installed packages are
-check if some package is installed. This is a hack.
-
---- ./Makefile.am.orig 2011-05-11 14:27:32.000000000 +0000
-+++ ./Makefile.am      2011-05-11 15:15:27.000000000 +0000
-@@ -170,6 +170,10 @@ rpmgraph_LDADD =  lib/librpm.la rpmio/lib
+--- ./Makefile.am.orig 2017-12-01 15:04:09.723014378 +0000
++++ ./Makefile.am      2017-12-01 15:04:13.396003910 +0000
+@@ -187,6 +187,10 @@ rpmgraph_LDADD =  lib/librpm.la rpmio/lib
  
  dist_bin_SCRIPTS =    scripts/gendiff
  
@@ -14,19 +11,19 @@
  rpmconfig_DATA = rpmrc
  rpmrc: $(top_srcdir)/rpmrc.in
        @$(SED) \
---- ./doc/Makefile.am.orig     2011-01-05 08:11:09.000000000 +0000
-+++ ./doc/Makefile.am  2011-05-11 15:16:24.000000000 +0000
+--- ./doc/Makefile.am.orig     2017-12-01 15:04:13.397003907 +0000
++++ ./doc/Makefile.am  2017-12-01 15:04:42.681920389 +0000
 @@ -8,7 +8,7 @@ EXTRA_DIST += $(man_man1_DATA)
  
  man_man8dir = $(mandir)/man8
- man_man8_DATA = rpm.8 rpmbuild.8 rpmdeps.8 rpmgraph.8 rpm2cpio.8
+ man_man8_DATA = rpm.8 rpm-misc.8 rpmbuild.8 rpmdeps.8 rpmgraph.8 rpm2cpio.8
 -man_man8_DATA += rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8
 +man_man8_DATA += rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8 rpmqpack.8
+ man_man8_DATA += rpm-plugin-systemd-inhibit.8
  EXTRA_DIST += $(man_man8_DATA)
  
- man_fr_man8dir = $(mandir)/fr/man8
---- ./doc/rpmqpack.8.orig      2011-05-11 15:15:27.000000000 +0000
-+++ ./doc/rpmqpack.8   2011-05-11 15:15:27.000000000 +0000
+--- ./doc/rpmqpack.8.orig      2017-12-01 15:04:13.397003907 +0000
++++ ./doc/rpmqpack.8   2017-12-01 15:04:13.397003907 +0000
 @@ -0,0 +1,25 @@
 +.TH RPMQPACK 8 "Mar 2002"
 +.SH NAME
@@ -53,8 +50,8 @@
 +
 +.SH AUTHOR
 +Michael Schroeder <[email protected]>
---- ./rpmqpack.c.orig  2011-05-11 15:15:27.000000000 +0000
-+++ ./rpmqpack.c       2011-05-11 15:15:27.000000000 +0000
+--- ./rpmqpack.c.orig  2017-12-01 15:04:13.398003904 +0000
++++ ./rpmqpack.c       2017-12-01 15:04:13.398003904 +0000
 @@ -0,0 +1,59 @@
 +#include <sys/types.h>
 +#include <limits.h>

++++++ rpmrc.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.406015736 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.406015736 +0100
@@ -1,5 +1,5 @@
---- ./rpmrc.in.orig    2016-10-21 09:44:00.345962071 +0000
-+++ ./rpmrc.in 2017-01-19 12:52:53.018348891 +0000
+--- ./rpmrc.in.orig    2017-10-05 10:04:57.571602038 +0000
++++ ./rpmrc.in 2017-12-01 15:03:23.956144776 +0000
 @@ -12,16 +12,16 @@
  # "fat" binary with both archs, for Darwin
  optflags: fat -O2 -g -arch i386 -arch ppc
@@ -54,7 +54,7 @@
  optflags: hppa1.0 -O2 -g -mpa-risc-1-0
  optflags: hppa1.1 -O2 -g -mpa-risc-1-0
  optflags: hppa1.2 -O2 -g -mpa-risc-1-0
-@@ -74,10 +75,10 @@ optflags: armv4tl -O2 -g -march=armv4t
+@@ -75,10 +76,10 @@ optflags: armv5tl -O2 -g -march=armv5t
  optflags: armv5tel -O2 -g -march=armv5te
  optflags: armv5tejl -O2 -g -march=armv5te
  optflags: armv6l -O2 -g -march=armv6
@@ -67,7 +67,7 @@
  optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
  
  optflags: m68k -O2 -g -fomit-frame-pointer
-@@ -90,8 +91,8 @@ optflags: atariclone -O2 -g -fomit-frame
+@@ -91,8 +92,8 @@ optflags: atariclone -O2 -g -fomit-frame
  optflags: milan -O2 -g -fomit-frame-pointer
  optflags: hades -O2 -g -fomit-frame-pointer
  
@@ -78,7 +78,7 @@
  
  optflags: sh3 -O2 -g
  optflags: sh4 -O2 -g -mieee
-@@ -286,17 +287,17 @@ os_canon:       MacOSX: macosx   21
+@@ -288,17 +289,17 @@ os_canon:       MacOSX: macosx   21
  #############################################################
  # For a given uname().machine, the default build arch
  
@@ -104,7 +104,7 @@
  buildarchtranslate: i486: i386
  buildarchtranslate: i386: i386
  
-@@ -318,6 +319,7 @@ buildarchtranslate: sparc64v: sparc64
+@@ -320,6 +321,7 @@ buildarchtranslate: sparc64v: sparc64
  buildarchtranslate: osfmach3_ppc: ppc
  buildarchtranslate: powerpc: ppc
  buildarchtranslate: powerppc: ppc
@@ -112,7 +112,7 @@
  buildarchtranslate: ppc8260: ppc
  buildarchtranslate: ppc8560: ppc
  buildarchtranslate: ppc32dy4: ppc
-@@ -378,6 +380,15 @@ buildarchtranslate: aarch64: aarch64
+@@ -381,6 +383,15 @@ buildarchtranslate: aarch64: aarch64
  buildarchtranslate: riscv: riscv64
  buildarchtranslate: riscv64: riscv64
  
@@ -128,7 +128,7 @@
  #############################################################
  # Architecture compatibility
  
-@@ -442,14 +453,20 @@ arch_compat: mips64r6el: mipsr6el
+@@ -445,15 +456,21 @@ arch_compat: mips64r6el: mipsr6el
  arch_compat: hppa2.0: hppa1.2
  arch_compat: hppa1.2: hppa1.1
  arch_compat: hppa1.1: hppa1.0
@@ -142,16 +142,17 @@
  arch_compat: armv4b: noarch
 +arch_compat: armv7hl: armv7l
  arch_compat: armv7l: armv6l
- arch_compat: armv6l: armv5tejl
 +arch_compat: armv6hl: armv6l
+ arch_compat: armv6l: armv5tejl
  arch_compat: armv5tejl: armv5tel
--arch_compat: armv5tel: armv4tl
-+arch_compat: armv5tel: armv5l
+ arch_compat: armv5tel: armv5tl
+-arch_compat: armv5tl: armv4tl
++arch_compat: armv5tl: armv5l
 +arch_compat: armv5l: armv4tl
  arch_compat: armv4tl: armv4l
  arch_compat: armv4l: armv3l
  arch_compat: armv3l: noarch
-@@ -471,7 +488,7 @@ arch_compat: i370: noarch
+@@ -475,7 +492,7 @@ arch_compat: i370: noarch
  arch_compat: s390: noarch
  arch_compat: s390x: s390 noarch
  
@@ -160,7 +161,7 @@
  
  arch_compat: x86_64: amd64 em64t athlon noarch
  arch_compat: amd64: x86_64 em64t athlon noarch
-@@ -574,7 +591,9 @@ buildarch_compat: mips64r6: noarch
+@@ -578,7 +595,9 @@ buildarch_compat: mips64r6: noarch
  buildarch_compat: mips64r6el: noarch
  
  buildarch_compat: armv4b: noarch
@@ -168,9 +169,9 @@
  buildarch_compat: armv7l: armv6l
 +buildarch_compat: armv6hl: armv6l
  buildarch_compat: armv6l: armv5tejl
- buildarch_compat: armv5tejl: armv5tel
- buildarch_compat: armv5tel: armv4tl
-@@ -589,7 +608,8 @@ buildarch_compat: armv6hl: noarch
+ buildarch_compat: armv5tejl: armv5tel armv5tl
+ buildarch_compat: armv5tel: armv4tl armv5tl
+@@ -594,7 +613,8 @@ buildarch_compat: armv6hl: noarch
  buildarch_compat: hppa2.0: hppa1.2
  buildarch_compat: hppa1.2: hppa1.1
  buildarch_compat: hppa1.1: hppa1.0

++++++ suspendlock.diff ++++++
--- /var/tmp/diff_new_pack.HFyao4/_old  2018-01-13 21:33:22.458013301 +0100
+++ /var/tmp/diff_new_pack.HFyao4/_new  2018-01-13 21:33:22.458013301 +0100
@@ -2,9 +2,9 @@
 read access in scriptlets. Only needed for DB_PRIVATE (aka global)
 locking.
 
---- ./lib/backend/db3.c.orig   2017-01-19 15:31:32.166569447 +0000
-+++ ./lib/backend/db3.c        2017-01-19 15:32:29.239335811 +0000
-@@ -541,6 +541,46 @@ static void db3_dbSetFSync(rpmdb rdb, in
+--- ./lib/backend/db3.c.orig   2017-12-01 14:27:03.193486711 +0000
++++ ./lib/backend/db3.c        2017-12-01 14:27:23.747426200 +0000
+@@ -552,6 +552,46 @@ static void db3_dbSetFSync(rpmdb rdb, in
  
  static int db3_Ctrl(rpmdb rdb, dbCtrlOp ctrl)
  {
@@ -51,8 +51,8 @@
      return 0;
  }
  
---- ./lib/backend/dbi.h.orig   2017-01-19 15:31:32.166569447 +0000
-+++ ./lib/backend/dbi.h        2017-01-19 15:31:34.816559478 +0000
+--- ./lib/backend/dbi.h.orig   2017-12-01 14:27:03.193486711 +0000
++++ ./lib/backend/dbi.h        2017-12-01 14:27:23.747426200 +0000
 @@ -17,7 +17,9 @@ typedef enum dbCtrlOp_e {
      DB_CTRL_UNLOCK_RO         = 2,
      DB_CTRL_LOCK_RW           = 3,
@@ -64,9 +64,9 @@
  } dbCtrlOp;
  
  typedef struct dbiIndex_s * dbiIndex;
---- ./lib/rpmdb.c.orig 2017-01-19 15:31:32.162569461 +0000
-+++ ./lib/rpmdb.c      2017-01-19 15:31:34.817559474 +0000
-@@ -2706,6 +2706,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl
+--- ./lib/rpmdb.c.orig 2017-12-01 14:27:03.190486720 +0000
++++ ./lib/rpmdb.c      2017-12-01 14:27:23.748426197 +0000
+@@ -2639,6 +2639,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl
      case RPMDB_CTRL_INDEXSYNC:
        dbctrl = DB_CTRL_INDEXSYNC;
        break;
@@ -79,8 +79,8 @@
      }
      return dbctrl ? dbCtrl(db, dbctrl) : 1;
  }
---- ./lib/rpmdb.h.orig 2016-10-03 08:08:36.582686286 +0000
-+++ ./lib/rpmdb.h      2017-01-19 15:31:34.818559471 +0000
+--- ./lib/rpmdb.h.orig 2017-10-05 10:04:57.035602138 +0000
++++ ./lib/rpmdb.h      2017-12-01 14:27:23.748426197 +0000
 @@ -35,7 +35,9 @@ typedef enum rpmdbCtrlOp_e {
      RPMDB_CTRL_UNLOCK_RO       = 2,
      RPMDB_CTRL_LOCK_RW         = 3,
@@ -92,15 +92,17 @@
  } rpmdbCtrlOp;
  
  /** \ingroup rpmdb
---- ./lib/transaction.c.orig   2016-10-21 09:44:00.309962086 +0000
-+++ ./lib/transaction.c        2017-01-19 15:31:34.818559471 +0000
-@@ -1425,15 +1425,18 @@ rpmRC runScript(rpmts ts, rpmte te, ARGV
+--- ./lib/transaction.c.orig   2017-12-01 14:27:23.750426192 +0000
++++ ./lib/transaction.c        2017-12-01 14:28:43.232192224 +0000
+@@ -1457,6 +1457,7 @@ rpmRC runScript(rpmts ts, rpmte te, Head
                     stag != RPMTAG_PREUN &&
                     stag != RPMTAG_PRETRANS &&
                     stag != RPMTAG_VERIFYSCRIPT);
 +    rpmdb rdb = rpmtsGetRdb(ts);
  
-     sfd = rpmtsNotify(ts, te, RPMCALLBACK_SCRIPT_START, stag, 0);
+     /* Fake up a transaction element for triggers from rpmdb */
+     if (te == NULL) {
+@@ -1468,10 +1469,12 @@ rpmRC runScript(rpmts ts, rpmte te, Head
      if (sfd == NULL)
        sfd = rpmtsScriptFd(ts);
  

++++++ transfiletriggerpostun.diff ++++++
Fix not all %transfiletriggerpostun triggers executing (RhBug:1514085)

upstream commit db1b99db2543b2c2526a2e116daeffa0498d5de4
--- ./lib/rpmtriggers.c.orig    2017-10-05 10:04:57.121602122 +0000
+++ ./lib/rpmtriggers.c 2017-12-05 12:04:35.448096904 +0000
@@ -106,7 +106,6 @@ void rpmtriggersPrepPostUnTransFileTrigs
     rpmfiles files;
     rpmds rpmdsTriggers;
     rpmds rpmdsTrigger;
-    int tix = 0;
 
     ii = rpmdbIndexIteratorInit(rpmtsGetRdb(ts), RPMDBI_TRANSFILETRIGGERNAME);
     mi = rpmdbNewIterator(rpmtsGetRdb(ts), RPMDBI_PACKAGES);
@@ -131,6 +130,7 @@ void rpmtriggersPrepPostUnTransFileTrigs
     if (rpmdbGetIteratorCount(mi)) {
        /* Filter triggers and save only trans postun triggers into ts */
        while ((trigH = rpmdbNextIterator(mi)) != NULL) {
+           int tix = 0;
            rpmdsTriggers = rpmdsNew(trigH, RPMTAG_TRANSFILETRIGGERNAME, 0);
            while ((rpmdsTrigger = rpmdsFilterTi(rpmdsTriggers, tix))) {
                if ((rpmdsNext(rpmdsTrigger) >= 0) &&

Reply via email to