diff --git a/SOURCES/rpm-4.11.3-update-config.guess.patch b/SOURCES/rpm-4.11.3-update-config.guess.patch
new file mode 100644
index 0000000..bdaef03
--- /dev/null
+++ b/SOURCES/rpm-4.11.3-update-config.guess.patch
@@ -0,0 +1,364 @@
+--- rpm-4.11.3/config.guess.orig	2012-11-07 13:55:52.000000000 +0100
++++ rpm-4.11.3/config.guess	2013-12-27 18:11:24.000000000 +0100
+@@ -1,14 +1,12 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+-#   2011, 2012 Free Software Foundation, Inc.
++#   Copyright 1992-2013 Free Software Foundation, Inc.
+ 
+-timestamp='2012-02-10'
++timestamp='2013-06-10'
+ 
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
++# the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful, but
+@@ -22,19 +20,17 @@
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-
+-# Originally written by Per Bothner.  Please send patches (context
+-# diff format) to <config-patches@gnu.org> and include a ChangeLog
+-# entry.
++# the same distribution terms that you use for the rest of that
++# program.  This Exception is an additional permission under section 7
++# of the GNU General Public License, version 3 ("GPLv3").
+ #
+-# This script attempts to guess a canonical system name similar to
+-# config.sub.  If it succeeds, it prints the system name on stdout, and
+-# exits with 0.  Otherwise, it exits with 1.
++# Originally written by Per Bothner.
+ #
+ # You can get the latest version of this script from:
+ # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++#
++# Please send patches with a ChangeLog entry to config-patches@gnu.org.
++
+ 
+ me=`echo "$0" | sed -e 's,.*/,,'`
+ 
+@@ -54,9 +50,7 @@
+ GNU config.guess ($timestamp)
+ 
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+-Free Software Foundation, Inc.
++Copyright 1992-2013 Free Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -138,6 +132,27 @@
+ UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+ 
++case "${UNAME_SYSTEM}" in
++Linux|GNU|GNU/*)
++	# If the system lacks a compiler, then just pick glibc.
++	# We could probably try harder.
++	LIBC=gnu
++
++	eval $set_cc_for_build
++	cat <<-EOF > $dummy.c
++	#include <features.h>
++	#if defined(__UCLIBC__)
++	LIBC=uclibc
++	#elif defined(__dietlibc__)
++	LIBC=dietlibc
++	#else
++	LIBC=gnu
++	#endif
++	EOF
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
++	;;
++esac
++
+ # Note: order is significant - the case branches are not exclusive.
+ 
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+@@ -200,6 +215,10 @@
+ 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ 	echo "${machine}-${os}${release}"
+ 	exit ;;
++    *:Bitrig:*:*)
++	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
++	exit ;;
+     *:OpenBSD:*:*)
+ 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+@@ -302,7 +321,7 @@
+     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ 	echo arm-acorn-riscix${UNAME_RELEASE}
+ 	exit ;;
+-    arm:riscos:*:*|arm:RISCOS:*:*)
++    arm*:riscos:*:*|arm*:RISCOS:*:*)
+ 	echo arm-unknown-riscos
+ 	exit ;;
+     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+@@ -801,6 +820,9 @@
+     i*:CYGWIN*:*)
+ 	echo ${UNAME_MACHINE}-pc-cygwin
+ 	exit ;;
++    *:MINGW64*:*)
++	echo ${UNAME_MACHINE}-pc-mingw64
++	exit ;;
+     *:MINGW*:*)
+ 	echo ${UNAME_MACHINE}-pc-mingw32
+ 	exit ;;
+@@ -852,21 +874,21 @@
+ 	exit ;;
+     *:GNU:*:*)
+ 	# the GNU system
+-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
++	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ 	exit ;;
+     *:GNU/*:*:*)
+ 	# other systems with GNU libc and userland
+-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
++	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ 	exit ;;
+     i*86:Minix:*:*)
+ 	echo ${UNAME_MACHINE}-pc-minix
+ 	exit ;;
+     aarch64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     aarch64_be:Linux:*:*)
+ 	UNAME_MACHINE=aarch64_be
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     alpha:Linux:*:*)
+ 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+@@ -879,59 +901,54 @@
+ 	  EV68*) UNAME_MACHINE=alphaev68 ;;
+ 	esac
+ 	objdump --private-headers /bin/sh | grep -q ld.so.1
+-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    arc:Linux:*:* | arceb:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     arm*:Linux:*:*)
+ 	eval $set_cc_for_build
+ 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ 	    | grep -q __ARM_EABI__
+ 	then
+-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
++	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	else
+ 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ 		| grep -q __ARM_PCS_VFP
+ 	    then
+-		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
++		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ 	    else
+-		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
++		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ 	    fi
+ 	fi
+ 	exit ;;
+     avr32*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     cris:Linux:*:*)
+-	echo ${UNAME_MACHINE}-axis-linux-gnu
++	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ 	exit ;;
+     crisv32:Linux:*:*)
+-	echo ${UNAME_MACHINE}-axis-linux-gnu
++	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ 	exit ;;
+     frv:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     hexagon:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     i*86:Linux:*:*)
+-	LIBC=gnu
+-	eval $set_cc_for_build
+-	sed 's/^	//' << EOF >$dummy.c
+-	#ifdef __dietlibc__
+-	LIBC=dietlibc
+-	#endif
+-EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
++	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ 	exit ;;
+     ia64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     m32r*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     m68*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     mips:Linux:*:* | mips64:Linux:*:*)
+ 	eval $set_cc_for_build
+@@ -950,54 +967,63 @@
+ 	#endif
+ EOF
+ 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ 	;;
++    or1k:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
+     or32:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     padre:Linux:*:*)
+-	echo sparc-unknown-linux-gnu
++	echo sparc-unknown-linux-${LIBC}
+ 	exit ;;
+     parisc64:Linux:*:* | hppa64:Linux:*:*)
+-	echo hppa64-unknown-linux-gnu
++	echo hppa64-unknown-linux-${LIBC}
+ 	exit ;;
+     parisc:Linux:*:* | hppa:Linux:*:*)
+ 	# Look for CPU level
+ 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+-	  *)    echo hppa-unknown-linux-gnu ;;
++	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
++	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
++	  *)    echo hppa-unknown-linux-${LIBC} ;;
+ 	esac
+ 	exit ;;
+     ppc64:Linux:*:*)
+-	echo powerpc64-unknown-linux-gnu
++	echo powerpc64-unknown-linux-${LIBC}
+ 	exit ;;
+     ppc:Linux:*:*)
+-	echo powerpc-unknown-linux-gnu
++	echo powerpc-unknown-linux-${LIBC}
++	exit ;;
++    ppc64le:Linux:*:*)
++	echo powerpc64le-unknown-linux-${LIBC}
++	exit ;;
++    ppcle:Linux:*:*)
++	echo powerpcle-unknown-linux-${LIBC}
+ 	exit ;;
+     s390:Linux:*:* | s390x:Linux:*:*)
+-	echo ${UNAME_MACHINE}-ibm-linux
++	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ 	exit ;;
+     sh64*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     sh*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     sparc:Linux:*:* | sparc64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     tile*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     vax:Linux:*:*)
+-	echo ${UNAME_MACHINE}-dec-linux-gnu
++	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ 	exit ;;
+     x86_64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     xtensa*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ 	exit ;;
+     i*86:DYNIX/ptx:4*:*)
+ 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+@@ -1201,6 +1227,9 @@
+     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+ 	echo i586-pc-haiku
+ 	exit ;;
++    x86_64:Haiku:*:*)
++	echo x86_64-unknown-haiku
++	exit ;;
+     SX-4:SUPER-UX:*:*)
+ 	echo sx4-nec-superux${UNAME_RELEASE}
+ 	exit ;;
+@@ -1227,19 +1256,21 @@
+ 	exit ;;
+     *:Darwin:*:*)
+ 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+-	case $UNAME_PROCESSOR in
+-	    i386)
+-		eval $set_cc_for_build
+-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+-		      grep IS_64BIT_ARCH >/dev/null
+-		  then
+-		      UNAME_PROCESSOR="x86_64"
+-		  fi
+-		fi ;;
+-	    unknown) UNAME_PROCESSOR=powerpc ;;
+-	esac
++	eval $set_cc_for_build
++	if test "$UNAME_PROCESSOR" = unknown ; then
++	    UNAME_PROCESSOR=powerpc
++	fi
++	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
++		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		grep IS_64BIT_ARCH >/dev/null
++	    then
++		case $UNAME_PROCESSOR in
++		    i386) UNAME_PROCESSOR=x86_64 ;;
++		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
++		esac
++	    fi
++	fi
+ 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ 	exit ;;
+     *:procnto*:*:* | *:QNX:[0123456789]*:*)
+@@ -1256,7 +1287,7 @@
+     NEO-?:NONSTOP_KERNEL:*:*)
+ 	echo neo-tandem-nsk${UNAME_RELEASE}
+ 	exit ;;
+-    NSE-?:NONSTOP_KERNEL:*:*)
++    NSE-*:NONSTOP_KERNEL:*:*)
+ 	echo nse-tandem-nsk${UNAME_RELEASE}
+ 	exit ;;
+     NSR-?:NONSTOP_KERNEL:*:*)
+@@ -1330,9 +1361,6 @@
+ 	exit ;;
+ esac
+ 
+-#echo '(No uname command or uname output not recognized.)' 1>&2
+-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+-
+ eval $set_cc_for_build
+ cat >$dummy.c <<EOF
+ #ifdef _SEQUENT_
diff --git a/SOURCES/rpm-4.11.x-Add-noplugins.patch b/SOURCES/rpm-4.11.x-Add-noplugins.patch
new file mode 100644
index 0000000..47813cb
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-Add-noplugins.patch
@@ -0,0 +1,109 @@
+From 454285b3a259c6bbf5fee4300fac2f50a40e4ac4 Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Tue, 24 Jun 2014 15:11:32 +0300
+Subject: [PATCH] Add disabler flag + --noplugins cli switch for plugins
+
+- Always knew we'd need a plugin disabler flag sooner than later but
+  didn't realize enabled plugins would fail basically the entire
+  test-suite :)
+- Enable --noplugins for entire test-suite for now, but eventually
+  we'll need to come up with ways to test plugins as well
+---
+ lib/poptALL.c      | 5 +++++
+ lib/rpmts.h        | 2 +-
+ lib/transaction.c  | 2 +-
+ python/rpmmodule.c | 1 +
+ tests/atlocal.in   | 2 +-
+ 5 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/lib/poptALL.c b/lib/poptALL.c
+index 31e1210..2e894e0 100644
+--- a/lib/poptALL.c
++++ b/lib/poptALL.c
+@@ -187,6 +187,11 @@ struct poptOption rpmcliAllPoptTable[] = {
+ 	N_("read <FILE:...> instead of default file(s)"),
+ 	N_("<FILE:...>") },
+ 
++ /* XXX this is a bit out of place here but kinda unavoidable... */
++ { "noplugins", '\0', POPT_BIT_SET,
++	&rpmIArgs.transFlags, RPMTRANS_FLAG_NOPLUGINS,
++	N_("don't enable any plugins"), NULL },
++
+  { "nodigest", '\0', 0, 0, RPMCLI_POPT_NODIGEST,
+         N_("don't verify package digest(s)"), NULL },
+  { "nohdrchk", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOHDRCHK,
+diff --git a/lib/rpmts.h b/lib/rpmts.h
+index e1b260d..5231c80 100644
+--- a/lib/rpmts.h
++++ b/lib/rpmts.h
+@@ -34,7 +34,7 @@ enum rpmtransFlags_e {
+     RPMTRANS_FLAG_NOTRIGGERS	= (1 <<  4),	/*!< from --notriggers */
+     RPMTRANS_FLAG_NODOCS	= (1 <<  5),	/*!< from --excludedocs */
+     RPMTRANS_FLAG_ALLFILES	= (1 <<  6),	/*!< from --allfiles */
+-    /* bit 7 unused */
++    RPMTRANS_FLAG_NOPLUGINS	= (1 <<  7),	/*!< from --noplugins */
+     RPMTRANS_FLAG_NOCONTEXTS	= (1 <<  8),	/*!< from --nocontexts */
+     /* bits 9-15 unused */
+     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),	/*!< from --notriggerprein */
+diff --git a/lib/transaction.c b/lib/transaction.c
+index 0317c1e..736f64d 100644
+--- a/lib/transaction.c
++++ b/lib/transaction.c
+@@ -1361,6 +1361,9 @@ rpmRC rpmtsSetupTransactionPlugins(rpmts ts)
+      * (verification of non-installed package) where this is not true
+      * currently but that's not a new issue.
+      */
++
++    if (rpmtsFlags(ts) & RPMTRANS_FLAG_NOPLUGINS)
++ 	return RPMRC_OK;
+ 
+     dsoPath = rpmExpand("%{__plugindir}/*.so", NULL);
+     if (rpmGlob(dsoPath, &nfiles, &files) == 0) {
+diff --git a/python/rpmmodule.c b/python/rpmmodule.c
+index e0fcef0..4e6fe27 100644
+--- a/python/rpmmodule.c
++++ b/python/rpmmodule.c
+@@ -428,6 +428,7 @@ static int initModule(PyObject *m)
+     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERS);
+     REGISTER_ENUM(RPMTRANS_FLAG_NODOCS);
+     REGISTER_ENUM(RPMTRANS_FLAG_ALLFILES);
++    REGISTER_ENUM(RPMTRANS_FLAG_NOPLUGINS);
+     REGISTER_ENUM(RPMTRANS_FLAG_KEEPOBSOLETE);
+     REGISTER_ENUM(RPMTRANS_FLAG_NOCONTEXTS);
+     REGISTER_ENUM(RPMTRANS_FLAG_REPACKAGE);
+diff --git a/tests/atlocal.in b/tests/atlocal.in
+index 10ff27a..c2a07d5 100644
+--- a/tests/atlocal.in
++++ b/tests/atlocal.in
+@@ -30,6 +30,6 @@ function run()
+ function runroot()
+ {
+     (cd ${RPMTEST} && \
+-     MAGIC="/magic/magic" FAKECHROOT_BASE="${RPMTEST}" fakechroot "$@" --define "_topdir /build"
++     MAGIC="/magic/magic" FAKECHROOT_BASE="${RPMTEST}" fakechroot "$@" --define "_topdir /build" --noplugins
+     )
+ }
+-- 
+2.5.5
+
+--- current/doc/rpm.8.orig	2016-07-14 14:34:14.286125290 +0200
++++ current/doc/rpm.8	2016-07-14 14:36:29.715481426 +0200
+@@ -86,7 +86,7 @@
+  [\fB--excludedocs\fR] [\fB--force\fR] [\fB-h,--hash\fR]
+  [\fB--ignoresize\fR] [\fB--ignorearch\fR] [\fB--ignoreos\fR]
+  [\fB--includedocs\fR] [\fB--justdb\fR] [\fB--nocollections\fR]
+- [\fB--nodeps\fR] [\fB--nodigest\fR] [\fB--nosignature\fR]
++ [\fB--nodeps\fR] [\fB--nodigest\fR] [\fB--nosignature\fR] [\fB--noplugins\fR]
+  [\fB--noorder\fR] [\fB--noscripts\fR] [\fB--notriggers\fR] 
+  [\fB--oldpackage\fR] [\fB--percent\fR] [\fB--prefix \fINEWPATH\fB\fR]
+  [\fB--relocate \fIOLDPATH\fB=\fINEWPATH\fB\fR]
+@@ -269,6 +269,9 @@
+ Don't reorder the packages for an install. The list of
+ packages would normally be reordered to satisfy dependencies.
+ .TP
++\fB--noplugins\fR
++Do not load and execute plugins.
++.TP
+ \fB--noscripts\fR
+ .TP
+ \fB--nopre\fR
diff --git a/SOURCES/rpm-4.11.x-bdb-warings.patch b/SOURCES/rpm-4.11.x-bdb-warings.patch
new file mode 100644
index 0000000..9241194
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-bdb-warings.patch
@@ -0,0 +1,10 @@
+--- rpm-4.11.3/lib/backend/db3.c.orig	2016-04-22 09:16:15.019084419 +0200
++++ rpm-4.11.3/lib/backend/db3.c	2016-04-22 09:17:16.448291533 +0200
+@@ -190,6 +190,7 @@
+     dbenv->set_alloc(dbenv, rmalloc, rrealloc, NULL);
+     dbenv->set_errcall(dbenv, NULL);
+     dbenv->set_errpfx(dbenv, _errpfx);
++    dbenv->set_msgfile(dbenv, stderr);
+ 
+     /* 
+      * These enable automatic stale lock removal. 
diff --git a/SOURCES/rpm-4.11.x-define-PY_SSIZE_T_CLEAN.patch b/SOURCES/rpm-4.11.x-define-PY_SSIZE_T_CLEAN.patch
new file mode 100644
index 0000000..b96d58c
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-define-PY_SSIZE_T_CLEAN.patch
@@ -0,0 +1,32 @@
+From f0a58d1dced6215b7caaa70db17d54834e0cd44e Mon Sep 17 00:00:00 2001
+From: Lubos Kardos <lkardos@redhat.com>
+Date: Fri, 18 Sep 2015 15:29:25 +0200
+Subject: [PATCH] Define PY_SSIZE_T_CLEAN
+
+When PyArg_ParseTupleAndKeywords() is used with format argument "s#"
+that means get a string and his length then the length is returned as
+as a Py_ssize_t in python3 but as an int in python2, which casues
+a problem because rpmfd_write() that uses PyArg_ParseTupleAndKeywords()
+expects the length as a Py_ssize_t always. This problem affects big
+endian systems with python2 as default. If PY_SSIZE_T_CLEAN is defined
+then PyArg_ParseTupleAndKeywords() returns the length as a Py_ssize_t
+in both python2 and python3.
+---
+ python/rpmsystem-py.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/python/rpmsystem-py.h b/python/rpmsystem-py.h
+index 50e8770..c8423e3 100644
+--- a/python/rpmsystem-py.h
++++ b/python/rpmsystem-py.h
+@@ -5,6 +5,7 @@
+ #include <sys/types.h>
+ #endif
+ 
++#define PY_SSIZE_T_CLEAN
+ #include <Python.h>
+ #include <structmember.h>
+ 
+-- 
+1.9.3
+
diff --git a/SOURCES/rpm-4.11.x-man-systemd-inhibit.patch b/SOURCES/rpm-4.11.x-man-systemd-inhibit.patch
new file mode 100644
index 0000000..50e0af3
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-man-systemd-inhibit.patch
@@ -0,0 +1,68 @@
+From 4a2c311bfe21eda9472f52795db1c9f883e6c194 Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Mon, 4 Jul 2016 17:45:33 +0200
+Subject: [PATCH] Add man page for systemd-inhibit plugin
+
+---
+ doc/Makefile.am                  |  1 +
+ doc/rpm-plugin-systemd-inhibit.8 | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+ create mode 100644 doc/rpm-plugin-systemd-inhibit.8
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index f7940b9..d2f520d 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -9,6 +9,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 += rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8
++man_man8_DATA += rpm-plugin-systemd-inhibit.8
+ EXTRA_DIST += $(man_man8_DATA)
+ 
+ man_fr_man8dir = $(mandir)/fr/man8
+diff --git a/doc/rpm-plugin-systemd-inhibit.8 b/doc/rpm-plugin-systemd-inhibit.8
+new file mode 100644
+index 0000000..b49e8ef
+--- /dev/null
++++ b/doc/rpm-plugin-systemd-inhibit.8
+@@ -0,0 +1,36 @@
++.TH "RPM-SYSTEMD-INHIBIT" "8" "14 Apr 2016" "Red Hat, Inc."
++.SH NAME
++rpm-plugin-systemd-inhibit \- Plugin for the RPM Package Manager
++
++.SH Description
++
++This plugin for RPM prevents the system to enter shutdown, sleep or idle
++mode while there is a rpm transaction running to prevent system corruption
++that can occur if the transaction is interrupted by a reboot.
++
++This is achieved by using the inhibit DBUS interface of systemd. The call is
++roughly equivalent to executing
++
++\fBsystemd-inhibit --mode=block --what=idle:sleep:shutdown --who=RPM --why="Transaction running"\fR 
++
++See \fBsystemd-inhibit(1)\fR for the details of this mechanism. 
++
++It is strongly advised to have the plugin installed on all systemd
++based systems.
++
++.SH Prerequisites
++
++For the plugin to work systemd has to be used as init system and
++though the DBUS system bus must be available. If the plugin cannot access the
++interface it gives a warning but does not stop the transaction.
++
++.SH Configuration
++
++The plugin currently does not have any configuration option other than
++turning it on and off. It can be disabled by commenting out the
++\fI%__transaction_systemd_inhibit\fR macro in main macros file
++(typically located at \fI/usr/lib/rpm/macros\fR) or otherwise change
++the value of the macro.
++
++Another option is to remove the plugin from the system if it is
++packaged in its own sub package.
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-move-rename.patch b/SOURCES/rpm-4.11.x-move-rename.patch
new file mode 100644
index 0000000..1f38432
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-move-rename.patch
@@ -0,0 +1,89 @@
+From d519580bd638ceb48829ae66557ca3c5941b4a5f Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Wed, 4 May 2016 14:05:06 +0200
+Subject: [PATCH] Set permissions before moving new files to their final place
+
+---
+ lib/fsm.c | 37 ++++++++++++++++++++-----------------
+ 1 file changed, 20 insertions(+), 17 deletions(-)
+
+diff --git a/lib/fsm.c b/lib/fsm.c
+index 1ee7e67..3bb23a4 100644
+--- a/lib/fsm.c
++++ b/lib/fsm.c
+@@ -621,14 +621,15 @@ static FSM_t fsmFree(FSM_t fsm)
+ 
+ /* Find and set file security context */
+ static int fsmSetSELabel(struct selabel_handle *sehandle,
+-			 const char *path, mode_t mode)
++			 const char *path, const char * nominalpath,
++			 mode_t mode)
+ {
+     int rc = 0;
+ #if WITH_SELINUX
+     if (sehandle) {
+ 	security_context_t scon = NULL;
+ 
+-	if (selabel_lookup_raw(sehandle, &scon, path, mode) == 0) {
++	if (selabel_lookup_raw(sehandle, &scon, nominalpath, mode) == 0) {
+ 	    rc = lsetfilecon(path, scon);
+ 
+ 	    if (_fsm_debug) {
+@@ -1215,7 +1216,7 @@ static int fsmMkdirs(rpmfi fi, rpmfs fs, struct selabel_handle *sehandle)
+ 		mode_t mode = S_IFDIR | (_dirPerms & 07777);
+ 		rc = fsmMkdir(dn, mode);
+ 		if (!rc) {
+-		    rc = fsmSetSELabel(sehandle, dn, mode);
++		    rc = fsmSetSELabel(sehandle, dn, dn, mode);
+ 
+ 		    rpmlog(RPMLOG_DEBUG,
+ 			    "%s directory created with perms %04o\n",
+@@ -1534,22 +1535,11 @@ static int fsmCommit(FSM_t fsm, int ix)
+ 	/* Backup on-disk file if needed. Directories are handled earlier */
+ 	if (!S_ISDIR(st->st_mode))
+ 	    rc = fsmBackup(fsm);
+-        /* Rename temporary to final file name. */
+-        if (!S_ISDIR(st->st_mode) && (fsm->suffix || fsm->nsuffix)) {
+-            char *npath = fsmFsPath(fsm, 0, fsm->nsuffix);
+-            rc = fsmRename(fsm->path, npath, fsm->mapFlags);
+-            if (!rc && fsm->nsuffix) {
+-                char * opath = fsmFsPath(fsm, 0, NULL);
+-                rpmlog(RPMLOG_WARNING, _("%s created as %s\n"),
+-                       opath, npath);
+-                free(opath);
+-            }
+-            free(fsm->path);
+-            fsm->path = npath;
+-        }
+         /* Set file security context (if enabled) */
+         if (!rc && !getuid()) {
+-            rc = fsmSetSELabel(fsm->sehandle, fsm->path, fsm->sb.st_mode);
++	    char * opath = fsmFsPath(fsm, 0, NULL);
++	    rc = fsmSetSELabel(fsm->sehandle, fsm->path, opath, fsm->sb.st_mode);
++	    opath = _free(opath);
+         }
+         if (S_ISLNK(st->st_mode)) {
+             if (!rc && !getuid())
+@@ -1571,6 +1561,19 @@ static int fsmCommit(FSM_t fsm, int ix)
+                 rc = fsmSetFCaps(fsm->path, rpmfiFCapsIndex(fi, ix));
+             }
+         }
++        /* Rename temporary to final file name. */
++        if (!rc && !S_ISDIR(st->st_mode) && (fsm->suffix || fsm->nsuffix)) {
++            char *npath = fsmFsPath(fsm, 0, fsm->nsuffix);
++            rc = fsmRename(fsm->path, npath, fsm->mapFlags);
++            if (!rc && fsm->nsuffix) {
++                char * opath = fsmFsPath(fsm, 0, NULL);
++                rpmlog(RPMLOG_WARNING, _("%s created as %s\n"),
++                       opath, npath);
++                free(opath);
++            }
++            free(fsm->path);
++            fsm->path = npath;
++        }
+     }
+ 
+     if (rc && fsm->failedFile && *fsm->failedFile == NULL) {
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-multitheaded_xz.patch b/SOURCES/rpm-4.11.x-multitheaded_xz.patch
new file mode 100644
index 0000000..cb84970
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-multitheaded_xz.patch
@@ -0,0 +1,111 @@
+diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c
+index cd223e8..f23fc11 100644
+--- a/rpmio/rpmio.c
++++ b/rpmio/rpmio.c
+@@ -5,6 +5,7 @@
+ #include "system.h"
+ #include <stdarg.h>
+ #include <errno.h>
++#include <ctype.h>
+ 
+ #include <rpm/rpmlog.h>
+ #include <rpm/rpmmacro.h>
+@@ -873,7 +874,12 @@ static const char * getFdErrstr (FD_t fd)
+ 
+ #include <sys/types.h>
+ #include <inttypes.h>
++#define LZMA_UNSTABLE
+ #include <lzma.h>
++/* Multithreading support in stable API since xz 5.2.0 */
++#if LZMA_VERSION >= 50010020
++#define HAVE_LZMA_MT
++#endif
+ 
+ #define kBufferSize (1 << 15)
+ 
+@@ -897,7 +902,10 @@ static LZFILE *lzopen_internal(const char *path, const char *mode, int fd, int x
+     LZFILE *lzfile;
+     lzma_ret ret;
+     lzma_stream init_strm = LZMA_STREAM_INIT;
+-
++    uint64_t mem_limit = rpmExpandNumeric("%{_xz_memlimit}");
++#ifdef HAVE_LZMA_MT
++    int threads = 0;
++#endif
+     for (; *mode; mode++) {
+ 	if (*mode == 'w')
+ 	    encoding = 1;
+@@ -905,6 +913,21 @@ static LZFILE *lzopen_internal(const char *path, const char *mode, int fd, int x
+ 	    encoding = 0;
+ 	else if (*mode >= '1' && *mode <= '9')
+ 	    level = *mode - '0';
++	else if (*mode == 'T') {
++	    if (isdigit(*(mode+1))) {
++#ifdef HAVE_LZMA_MT
++		threads = atoi(++mode);
++#endif
++		/* skip past rest of digits in string that atoi()
++		 * should've processed
++		 * */
++		while(isdigit(*++mode));
++	    }
++#ifdef HAVE_LZMA_MT
++	    else
++		threads = -1;
++#endif
++	}
+     }
+     if (fd != -1)
+ 	fp = fdopen(fd, encoding ? "w" : "r");
+@@ -924,16 +947,48 @@ static LZFILE *lzopen_internal(const char *path, const char *mode, int fd, int x
+     lzfile->strm = init_strm;
+     if (encoding) {
+ 	if (xz) {
+-	    ret = lzma_easy_encoder(&lzfile->strm, level, LZMA_CHECK_SHA256);
++#ifdef HAVE_LZMA_MT
++	    if (!threads) {
++#endif
++		ret = lzma_easy_encoder(&lzfile->strm, level, LZMA_CHECK_SHA256);
++#ifdef HAVE_LZMA_MT
++	    } else {
++		if (threads == -1)
++		    threads = sysconf(_SC_NPROCESSORS_ONLN);
++		lzma_mt mt_options = {
++		    .flags = 0,
++		    .threads = threads,
++		    .block_size = 0,
++		    .timeout = 0,
++		    .preset = level,
++		    .filters = NULL,
++		    .check = LZMA_CHECK_SHA256 };
++
++		ret = lzma_stream_encoder_mt(&lzfile->strm, &mt_options);
++	    }
++#endif
+ 	} else {
+ 	    lzma_options_lzma options;
+ 	    lzma_lzma_preset(&options, level);
+ 	    ret = lzma_alone_encoder(&lzfile->strm, &options);
+ 	}
+-    } else {	/* lzma_easy_decoder_memusage(level) is not ready yet, use hardcoded limit for now */
+-	ret = lzma_auto_decoder(&lzfile->strm, 100<<20, 0);
++    } else {   /* lzma_easy_decoder_memusage(level) is not ready yet, use hardcoded limit for now */
++	ret = lzma_auto_decoder(&lzfile->strm, mem_limit ? mem_limit : 100<<20, 0);
+     }
+     if (ret != LZMA_OK) {
++	switch (ret) {
++	    case LZMA_MEM_ERROR:
++		rpmlog(RPMLOG_ERR, "liblzma: Memory allocation failed");
++		break;
++
++	    case LZMA_DATA_ERROR:
++		rpmlog(RPMLOG_ERR, "liblzma: File size limits exceeded");
++		break;
++
++	    default:
++		rpmlog(RPMLOG_ERR, "liblzma: <Unknown error (%d), possibly a bug", ret);
++		break;
++	}
+ 	fclose(fp);
+ 	free(lzfile);
+ 	return 0;
diff --git a/SOURCES/rpm-4.11.x-no-longer-config.patch b/SOURCES/rpm-4.11.x-no-longer-config.patch
new file mode 100644
index 0000000..fcb38cd
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-no-longer-config.patch
@@ -0,0 +1,46 @@
+From 3c99b06c7776345cfc3a3d4fd0c59fe671644317 Mon Sep 17 00:00:00 2001
+From: Lubos Kardos <lkardos@redhat.com>
+Date: Wed, 21 Oct 2015 15:25:47 +0200
+Subject: [PATCH] Overwrite a file if it is not marked as config any more.
+
+If a file was marked as config in the previous version of a package but
+it is not marked as config in currently being installed version of
+the package then backup the old file as .rpmsave and overwrite it with
+the new file. (rhbz:1263859)
+---
+ lib/rpmfi.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/lib/rpmfi.c b/lib/rpmfi.c
+index 924ff4b..28a697e 100644
+--- a/lib/rpmfi.c
++++ b/lib/rpmfi.c
+@@ -1040,6 +1040,12 @@ rpmFileAction rpmfilesDecideFate(rpmfiles ofi, int oix,
+ 	        goto exit;		/* file identical in new, replace. */
+ 	}
+ 
++	/* if new file is no longer config, backup it and replace it */
++	if (!(newFlags & RPMFILE_CONFIG)) {
++	    action = FA_SAVE;
++	    goto exit;
++	}
++
+ 	/* If file can be determined identical in old and new pkg, let it be */
+ 	if (newWhat == REG && oalgo == nalgo && odiglen == ndiglen) {
+ 	    if (odigest && ndigest && memcmp(odigest, ndigest, odiglen) == 0) {
+@@ -1071,6 +1077,12 @@ rpmFileAction rpmfilesDecideFate(rpmfiles ofi, int oix,
+ 		goto exit;		/* unmodified config file, replace. */
+ 	}
+ 
++	/* if new file is no longer config, backup it and replace it */
++	if (!(newFlags & RPMFILE_CONFIG)) {
++	    action = FA_SAVE;
++	    goto exit;
++	}
++
+ 	/* If link is identical in old and new pkg, let it be */
+ 	if (newWhat == LINK && oFLink && nFLink && rstreq(oFLink, nFLink)) {
+ 	    action = FA_SKIP;		/* identical file, don't bother. */
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-perl.req-1.patch b/SOURCES/rpm-4.11.x-perl.req-1.patch
new file mode 100644
index 0000000..0d4b142
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-perl.req-1.patch
@@ -0,0 +1,30 @@
+From 4f05fa0e15bcb66d29f89e28829ea43107f6382b Mon Sep 17 00:00:00 2001
+From: Lubos Kardos <lkardos@redhat.com>
+Date: Mon, 1 Dec 2014 16:04:32 +0100
+Subject: [PATCH 1/2] Fix parsing multi-line print statement with unquoted tag
+
+- script perl.req was able to parse only multi-line print statements
+  with quoted tag e.g. 'print <<"tag"' or "print <<'tag'". Now it can
+  also parse "print <<tag".
+---
+ scripts/perl.req | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/scripts/perl.req b/scripts/perl.req
+index 04f822c..e17ad5a 100755
+--- a/scripts/perl.req
++++ b/scripts/perl.req
+@@ -165,8 +165,8 @@ sub process_file {
+     #
+     if ( m/print(\s+|\s+\S+\s+)\<\<(.*)/g ) {
+         my $tag = $2;
+-        $tag =~ s/^\s*['"]//;       # strip off leading space and quote
+-        $tag =~ s/["']\s*;\s*$//;   # strip off trailing quote and space and semicolon
++        $tag =~ s/^\s*['"]?//;       # strip off leading space and quote
++        $tag =~ s/["']?\s*;\s*$//;   # strip off trailing quote and space and semicolon
+         while (<FILE>) {
+             chomp;
+             ( $_ eq $tag ) && last;
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-perl.req-2.patch b/SOURCES/rpm-4.11.x-perl.req-2.patch
new file mode 100644
index 0000000..1159477
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-perl.req-2.patch
@@ -0,0 +1,41 @@
+From 4c621e97776a47c2b4e7f17c1cd2a7961453babf Mon Sep 17 00:00:00 2001
+From: Lubos Kardos <lkardos@redhat.com>
+Date: Wed, 3 Dec 2014 14:01:14 +0100
+Subject: [PATCH 2/2] Ignore "use" or "requires" within multi-line print or
+ assign statement
+
+- Now script perl.req ignores "use" and "requires" on lines that are
+  part of printing or assigning multi-line string i. e. string that
+  hasn't starting and ending quote on the same line.
+  (RhBug:1024517)
+---
+ scripts/perl.req | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/scripts/perl.req b/scripts/perl.req
+index e17ad5a..6e53c91 100755
+--- a/scripts/perl.req
++++ b/scripts/perl.req
+@@ -174,6 +174,19 @@ sub process_file {
+         $_ = <FILE>;
+     }
+ 
++    # Skip multiline print and assign statements
++    if ( m/\$\S+\s*=\s*(")([^"\\]|(\\.))*$/ ||
++         m/\$\S+\s*=\s*(')([^'\\]|(\\.))*$/ ||
++         m/print\s+(")([^"\\]|(\\.))*$/ ||
++         m/print\s+(')([^'\\]|(\\.))*$/ ) {
++
++        my $quote = $1;
++        while (<FILE>) {
++          m/^([^\\$quote]|(\\.))*$quote/ && last;
++        }
++        $_ = <FILE>;
++    }
++
+     if (
+ 
+ # ouch could be in a eval, perhaps we do not want these since we catch
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-perl.req-3.patch b/SOURCES/rpm-4.11.x-perl.req-3.patch
new file mode 100644
index 0000000..5b85e10
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-perl.req-3.patch
@@ -0,0 +1,37 @@
+From 1d9a0018f9cde8fc5c59df9af70a2164e672210f Mon Sep 17 00:00:00 2001
+From: Lubos Kardos <lkardos@redhat.com>
+Date: Wed, 25 Nov 2015 13:49:01 +0100
+Subject: [PATCH] Improve perl.req script
+
+This commit 0d5929ba5eabadec49273bb090ba9158dfccc30c tries to ignore
+"use" and "require" within multi-line print statements that start with
+line like this "print <<EOF" but it incorrectly parses lines in
+following format "print <<EOF unless $o" and every "use" or "require"
+below this line to the end of file is ignored. That causes that some
+requires which was previously found are not found now. This commit
+fixes this problem (#1268021).
+---
+ scripts/perl.req | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/scripts/perl.req b/scripts/perl.req
+index 6e53c91..f1000c8 100755
+--- a/scripts/perl.req
++++ b/scripts/perl.req
+@@ -163,10 +163,10 @@ sub process_file {
+     # within a multi-line print statement.  So, let's skip over such print
+     # statements whose content should not be loading modules anyway. -BEF-
+     #
+-    if ( m/print(\s+|\s+\S+\s+)\<\<(.*)/g ) {
++    if (m/print(?:\s+|\s+\S+\s+)\<\<\s*(["'`])(.+?)\1/ ||
++        m/print(\s+|\s+\S+\s+)\<\<(\w+)/) {
++
+         my $tag = $2;
+-        $tag =~ s/^\s*['"]?//;       # strip off leading space and quote
+-        $tag =~ s/["']?\s*;\s*$//;   # strip off trailing quote and space and semicolon
+         while (<FILE>) {
+             chomp;
+             ( $_ eq $tag ) && last;
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-perl.req-4.patch b/SOURCES/rpm-4.11.x-perl.req-4.patch
new file mode 100644
index 0000000..f154ceb
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-perl.req-4.patch
@@ -0,0 +1,32 @@
+From 6a8754b2153e0e4305ef2bc5a789bfe02f65e889 Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Tue, 14 Jun 2016 15:01:16 +0200
+Subject: [PATCH] perl.req: Skip over multi line return statements See
+ Rhbz#1275551
+
+---
+ scripts/perl.req | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/scripts/perl.req b/scripts/perl.req
+index f1000c8..7155518 100755
+--- a/scripts/perl.req
++++ b/scripts/perl.req
+@@ -160,11 +160,12 @@ sub process_file {
+ 
+     #
+     # The (require|use) match further down in this subroutine will match lines
+-    # within a multi-line print statement.  So, let's skip over such print
++    # within a multi-line print or return statements.  So, let's skip over such
+     # statements whose content should not be loading modules anyway. -BEF-
+     #
+     if (m/print(?:\s+|\s+\S+\s+)\<\<\s*(["'`])(.+?)\1/ ||
+-        m/print(\s+|\s+\S+\s+)\<\<(\w+)/) {
++        m/print(\s+|\s+\S+\s+)\<\<(\w+)/ ||
++	m/return(\s+)\<\<(\w+)/ ) {
+ 
+         my $tag = $2;
+         while (<FILE>) {
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.11.x-python-binding-test-case.patch b/SOURCES/rpm-4.11.x-python-binding-test-case.patch
new file mode 100644
index 0000000..05c1682
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-python-binding-test-case.patch
@@ -0,0 +1,25 @@
+From 3c74e34e8d8c5b3db024dbe04a352e807ed2b627 Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Wed, 23 Sep 2015 11:30:12 +0200
+Subject: [PATCH] Fix error handling in rpmio Python binding test case
+
+---
+ tests/rpmpython.at | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/rpmpython.at b/tests/rpmpython.at
+index 949673b..eac31b2 100644
+--- a/tests/rpmpython.at
++++ b/tests/rpmpython.at
+@@ -53,7 +53,7 @@ for iot in [ 'fpio', 'fdio', 'ufdio', 'gzdio' ]:
+     fd = rpm.fd(fn, 'r', iot)
+     rdata = fd.read()
+     if rdata != data:
+-        myprint('%s read fail (got %d bytes)' % (iot, len(rdata), rdata))
++        myprint('%s read fail (got %d bytes)\n%s' % (iot, len(rdata), rdata))
+     # compressed io types can't seek
+     if iot == 'ufdio':
+         fd.seek(0)
+-- 
+1.9.3
+
diff --git a/SOURCES/rpm-4.11.x-quiet-signing.patch b/SOURCES/rpm-4.11.x-quiet-signing.patch
new file mode 100644
index 0000000..6000b89
--- /dev/null
+++ b/SOURCES/rpm-4.11.x-quiet-signing.patch
@@ -0,0 +1,63 @@
+From 4a3d73081cb7db6673fa6775fbf5f6655f846241 Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Mon, 4 Jul 2016 18:34:44 +0200
+Subject: [PATCH] Fix rpmbuild --sign --quiet which relies on the output of
+ rpmbuild
+
+by reproducing the output of the librpmbuild in the rpmbuild tool.
+---
+ rpmbuild.c | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+diff --git a/rpmbuild.c b/rpmbuild.c
+index 02d2655..aa63f97 100644
+--- a/rpmbuild.c
++++ b/rpmbuild.c
+@@ -12,6 +12,7 @@
+ #include <rpm/rpmdb.h>
+ #include <rpm/rpmps.h>
+ #include <rpm/rpmts.h>
++#include "build/rpmbuild_internal.h"
+ #include "lib/signature.h"
+ #include "cliutils.h"
+ 
+@@ -517,6 +518,36 @@ static int buildForTarget(rpmts ts, const char * arg, BTA_t ba)
+     if (rpmSpecBuild(spec, ba)) {
+ 	goto exit;
+     }
++    /* Output generated package files for the --sign alias */
++    if (quiet && rpmcliPipeOutput &&
++	strncmp(rpmcliPipeOutput, "rpm --addsign", 13)) {
++	rpmSetVerbosity(RPMLOG_INFO);
++	if (buildAmount&RPMBUILD_PACKAGESOURCE) {
++	    char *fn = rpmGetPath("%{_srcrpmdir}/", spec->sourceRpmName,NULL);
++	    rpmlog(RPMLOG_INFO, _("Wrote: %s\n"), fn);
++	    fn = _free(fn);
++	}
++	if (buildAmount&RPMBUILD_PACKAGEBINARY) {
++	    rpmSpecPkgIter pkgiter = rpmSpecPkgIterInit(spec);
++	    for (rpmSpecPkg pkg = rpmSpecPkgIterNext(pkgiter);
++		 pkg;
++		 pkg = rpmSpecPkgIterNext(pkgiter)) {
++		char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
++		char *binRpm, *fn;
++		const char *errorString;
++		Header h = rpmSpecPkgHeader(pkg);
++		if (h) {
++		    binRpm = headerFormat(h, binFormat, &errorString);
++		    fn = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
++		    free(binRpm);
++		    rpmlog(RPMLOG_INFO, _("Wrote: %s\n"), fn);
++		    free(fn);
++		}
++		free(binFormat);
++	    }
++	}
++	rpmSetVerbosity(RPMLOG_WARNING);
++    }
+     
+     if (buildMode == 't')
+ 	(void) unlink(specFile);
+-- 
+2.5.5
+
diff --git a/SOURCES/rpm-4.14.x-Add-justdb-to-the-erase-man.patch b/SOURCES/rpm-4.14.x-Add-justdb-to-the-erase-man.patch
new file mode 100644
index 0000000..019e861
--- /dev/null
+++ b/SOURCES/rpm-4.14.x-Add-justdb-to-the-erase-man.patch
@@ -0,0 +1,44 @@
+From 7ebf34fc1b0b7b3fb149761fee01a92859b1a69e Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Mon, 18 Apr 2016 15:59:18 +0200
+Subject: [PATCH] Add --justdb to the erase section of the man page, too
+
+---
+ doc/rpm.8 | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/doc/rpm.8 b/doc/rpm.8
+index 2eb5ca5..ccd2e1e 100644
+--- a/doc/rpm.8
++++ b/doc/rpm.8
+@@ -37,7 +37,7 @@ rpm \- RPM Package Manager
+ 
+ 
+ 
+-\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--nodeps\fR] [\fB--noscripts\fR]
++\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--justdb] [\fB--nodeps\fR] [\fB--noscripts\fR]
+     [\fB--notriggers\fR] [\fB--test\fR] \fB\fIPACKAGE_NAME\fB\fR\fI\ ...\fR
+ 
+ .SS "MISCELLANEOUS:"
+@@ -377,7 +377,7 @@ potential conflicts.
+ The general form of an rpm erase command is 
+ .PP
+ 
+-\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--nodeps\fR] [\fB--noscripts\fR] [\fB--notriggers\fR] [\fB--test\fR] \fB\fIPACKAGE_NAME\fB\fR\fI ...\fR
++\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--justdb] [\fB--nodeps\fR] [\fB--noscripts\fR] [\fB--notriggers\fR] [\fB--test\fR] \fB\fIPACKAGE_NAME\fB\fR\fI ...\fR
+ 
+ .PP
+ The following options may also be used:
+@@ -388,6 +388,9 @@ Remove all versions of the package which match
+ error is issued if \fIPACKAGE_NAME\fR
+ matches multiple packages.
+ .TP
++\fB--justdb\fR
++Update only the database, not the filesystem.
++.TP
+ \fB--nodeps\fR
+ Don't check dependencies before uninstalling the packages.
+ .TP
+-- 
+2.5.5
+
diff --git a/SPECS/rpm.spec b/SPECS/rpm.spec
index f0e85a0..42a5afb 100644
--- a/SPECS/rpm.spec
+++ b/SPECS/rpm.spec
@@ -21,7 +21,7 @@
 Summary: The RPM package management system
 Name: rpm
 Version: %{rpmver}
-Release: %{?snapver:0.%{snapver}.}17%{?dist}
+Release: %{?snapver:0.%{snapver}.}21%{?dist}
 Group: System Environment/Base
 Url: http://www.rpm.org/
 Source0: http://rpm.org/releases/rpm-4.11.x/%{name}-%{srcver}.tar.bz2
@@ -65,6 +65,18 @@ Patch162: rpm-4.11.x-broken-pipe.patch
 Patch163: rpm-4.11.x-Handle-line-continuation.patch
 # Belongs to Patch 160
 Patch164: rpm-4.11.3-Initialize-plugins-based-on-DSO-discovery.patch
+Patch166: rpm-4.11.x-move-rename.patch
+Patch167: rpm-4.11.x-bdb-warings.patch
+Patch168: rpm-4.14.x-Add-justdb-to-the-erase-man.patch
+Patch169: rpm-4.11.x-multitheaded_xz.patch
+Patch170: rpm-4.11.x-perl.req-1.patch
+Patch171: rpm-4.11.x-perl.req-2.patch
+Patch172: rpm-4.11.x-perl.req-3.patch
+Patch173: rpm-4.11.x-perl.req-4.patch
+Patch174: rpm-4.11.x-define-PY_SSIZE_T_CLEAN.patch
+Patch175: rpm-4.11.x-python-binding-test-case.patch
+Patch176: rpm-4.11.x-Add-noplugins.patch
+Patch177: rpm-4.11.x-no-longer-config.patch
 
 # Filter soname dependencies by name
 Patch200: rpm-4.11.x-filter-soname-deps.patch
@@ -86,6 +98,9 @@ Patch308: rpm-4.11.x-minidebuginfo-ppc64.patch
 # Chmod 000 for files being unpacked
 Patch309: rpm-4.11.x-chmod.patch
 Patch310: rpm-4.11.x-CVE-2014-8118.patch
+Patch311: rpm-4.11.3-update-config.guess.patch
+Patch312: rpm-4.11.x-man-systemd-inhibit.patch
+Patch313: rpm-4.11.x-quiet-signing.patch
 
 # Temporary Patch to provide support for updates
 Patch400: rpm-4.10.90-rpmlib-filesystem-check.patch
@@ -107,7 +122,7 @@ Requires: popt%{_isa} >= 1.10.2.1
 Requires: curl
 
 %if %{without int_bdb}
-BuildRequires: %{bdbname}-devel%{_isa}
+BuildRequires: %{bdbname}-devel
 %endif
 
 %if %{with check}
@@ -118,26 +133,26 @@ BuildRequires: fakechroot
 # is a bit special...
 BuildRequires: redhat-rpm-config
 BuildRequires: gawk
-BuildRequires: elfutils-devel%{_isa} >= 0.112
-BuildRequires: elfutils-libelf-devel%{_isa}
-BuildRequires: readline-devel%{_isa} zlib-devel%{_isa}
-BuildRequires: nss-devel%{_isa}
-BuildRequires: nss-softokn-freebl-devel%{_isa}
+BuildRequires: elfutils-devel >= 0.112
+BuildRequires: elfutils-libelf-devel
+BuildRequires: readline-devel zlib-devel
+BuildRequires: nss-devel
+BuildRequires: nss-softokn-freebl-devel
 # The popt version here just documents an older known-good version
-BuildRequires: popt-devel%{_isa} >= 1.10.2
-BuildRequires: file-devel%{_isa}
-BuildRequires: gettext-devel%{_isa}
-BuildRequires: libselinux-devel%{_isa}
+BuildRequires: popt-devel >= 1.10.2
+BuildRequires: file-devel
+BuildRequires: gettext-devel
+BuildRequires: libselinux-devel
 # XXX semanage is only used by sepolicy plugin but configure requires it...
-BuildRequires: libsemanage-devel%{_isa}
-BuildRequires: ncurses-devel%{_isa}
-BuildRequires: bzip2-devel%{_isa} >= 0.9.0c-2
-BuildRequires: python-devel%{_isa} >= 2.6
-BuildRequires: lua-devel%{_isa} >= 5.1
-BuildRequires: libcap-devel%{_isa}
-BuildRequires: libacl-devel%{_isa}
+BuildRequires: libsemanage-devel
+BuildRequires: ncurses-devel
+BuildRequires: bzip2-devel >= 0.9.0c-2
+BuildRequires: python-devel >= 2.6
+BuildRequires: lua-devel >= 5.1
+BuildRequires: libcap-devel
+BuildRequires: libacl-devel
 %if ! %{without xz}
-BuildRequires: xz-devel%{_isa} >= 4.999.8
+BuildRequires: xz-devel >= 4.999.8
 %endif
 %if %{with plugins}
 # Required for systemd-inhibit plugin
@@ -297,6 +312,19 @@ Requires: rpm-libs%{_isa} = %{version}-%{release}
 %patch162 -p1 -b .broken-pipe
 %patch163 -p1 -b .line-continuation
 %patch164 -p1 -b .plugin-detection
+%patch166 -p1 -b .move-rename
+%patch167 -p1 -b .bdb-warnings
+%patch168 -p1 -b .justdb-man
+%patch169 -p1 -b .mt_xz
+%patch170 -p1 -b .perl.req1
+%patch171 -p1 -b .perl.req2
+%patch172 -p1 -b .perl.req3
+%patch173 -p1 -b .perl.req4
+%patch174 -p1 -b .py_size
+%patch175 -p1 -b .py_size_test
+%patch176 -p1 -b .noplugins
+%patch177 -p1 -b .noconfig
+
 
 %patch200 -p1 -b .filter-soname-deps
 %patch201 -p1 -b .dont-filter-ld64
@@ -310,6 +338,9 @@ Requires: rpm-libs%{_isa} = %{version}-%{release}
 %patch308 -p1 -b .minidebuginfo-ppc64
 %patch309 -p1 -b .chmod
 %patch310 -p1 -b .namesize
+%patch311 -p1 -b .config.guess
+%patch312 -p1 -b .man-inhibit
+%patch313 -p1 -b .quiet-sign
 
 %patch400 -p1 -b .rpmlib-filesystem-check
 %patch401 -p1 -b .disable-collection-plugins
@@ -451,6 +482,7 @@ exit 0
 %{_bindir}/rpmverify
 
 %{_mandir}/man8/rpm.8*
+%{_mandir}/man8/rpm-plugin-systemd-inhibit.8*
 %{_mandir}/man8/rpmdb.8*
 %{_mandir}/man8/rpmkeys.8*
 %{_mandir}/man8/rpm2cpio.8*
@@ -550,6 +582,32 @@ exit 0
 %doc COPYING doc/librpm/html/*
 
 %changelog
+* Tue Jul 26 2016 Florian Festi <ffesti@redhat.com> - 4.11.3-21
+- Fix --sign for rpmbuild with --quiet (#1293483)
+- Adjusted fix for --noplugins option (#1264031)
+
+* Thu Jul 14 2016 Florian Festi <ffesti@redhat.com> - 4.11.3-20
+- Removed broken fix for #1293483
+
+* Thu Apr 21 2016 Florian Festi <ffesti@redhat.com> - 4.11.3-18
+- Fixed failing upstream test 257 on big endian systems (#1264463)
+- Fixed problems with perl.req script (#1320214, #1275551)
+- Fixed race condition in rpm file deployment when updating an existing file
+  (#1320181)
+- Move bdb warnings from stdin to stdout (#1297793)
+- Add --justdb to the erase section of the man page, too (#1310561)
+- Backport support for multi threaded xz compression (#1278924)
+- Update config.guess (#1291377)
+- Add --noplugins option (#1264031)
+- Overwrite a file if it is not marked as config any more (#1290463)
+- Add man page for systemd-inhibit plugin (#1265578)
+
+* Tue Dec 01 2015 Pavol Babincak <pbabinca@redhat.com> - 4.11.3-17.2
+- Remove one more %%{_isa} from BuildRequires (#1286805)
+
+* Tue Dec 01 2015 Pavol Babincak <pbabinca@redhat.com> - 4.11.3-17.1
+- Remove %%{_isa} from BuildRequires (#1286805)
+
 * Fri Sep 11 2015 Florian Festi <ffesti@redhat.com> - 4.11.3-17
 - Detect plugins by DSO file name. Needed for #1160401