[compat-qpid-cpp] First build for Fedora.

Darryl L. Pierce mcpierce at fedoraproject.org
Wed May 28 18:52:54 UTC 2014


commit e3eaf3f7db07b8b186167018973932ea2dceed6b
Author: Darryl L. Pierce <mcpierce at gmail.com>
Date:   Tue May 27 16:52:51 2014 -0400

    First build for Fedora.
    
    - Resolves: BZ#1080583

 .gitignore                                         |    1 +
 ...JIRA-qpidd.service-file-for-use-on-Fedora.patch |   35 ++
 ...ove-to-proton-0.5-remove-dummy-string-in-.patch |  206 +++++++
 ...leaner-encoding-of-index-for-delivery-tag.patch |   81 +++
 ...hanges-to-Fedora-19-packaging-of-libdb4-p.patch |  117 ++++
 ...ero-rmgr-struct-element-with-correct-size.patch |   26 +
 ...ix-for-building-legacy-store-on-ARM-platf.patch |   35 ++
 ...D-4582-Get-legacystore-unit-tests-working.patch |  408 ++++++++++++++
 ...ixed-unit-legacystore-unit-test-to-remove.patch |   29 +
 09-QPID-5129-Alignment-issues-on-ARM.patch         |   74 +++
 ...ix-Ruby-bindings-when-built-with-Werror-f.patch |   83 +++
 ...pdated-Ruby-bindings-to-build-under-CMake.patch |   83 +++
 12-QPID-5718-Dead-code-in-the-HA-codebase.patch    |   42 ++
 13-NO-JIRA-Removed-dead-code.patch                 |   32 +
 compat-qpid-cpp.spec                               |  595 ++++++++++++++++++++
 compat-qpid-cpp.spec~                              |  585 +++++++++++++++++++
 sources                                            |    1 +
 17 files changed, 2433 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..f1a6f32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/qpid-0.24.tar.gz
diff --git a/01-NO-JIRA-qpidd.service-file-for-use-on-Fedora.patch b/01-NO-JIRA-qpidd.service-file-for-use-on-Fedora.patch
new file mode 100644
index 0000000..92e1ded
--- /dev/null
+++ b/01-NO-JIRA-qpidd.service-file-for-use-on-Fedora.patch
@@ -0,0 +1,35 @@
+From c77f3a1fd1d93260d57b5e1e9b0792ccc2beb6bb Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <mcpierce at gmail.com>
+Date: Wed, 3 Apr 2013 10:07:37 -0400
+Subject: [PATCH] NO-JIRA: qpidd.service file for use on Fedora
+
+This patch provides the needed systemd file for running the Qpid broker
+as a service.
+---
+ qpid/cpp/etc/qpidd.service | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+ create mode 100644 qpid/cpp/etc/qpidd.service
+
+diff --git a/qpid/cpp/etc/qpidd.service b/qpid/cpp/etc/qpidd.service
+new file mode 100644
+index 0000000..10a99d1
+--- /dev/null
++++ b/qpid/cpp/etc/qpidd.service
+@@ -0,0 +1,14 @@
++[Unit]
++Description=An AMQP message broker daemon.
++Documentation=man:qpidd(1) http://qpid.apache.org/
++Requires=network.target
++After=network.target
++
++[Service]
++User=qpidd
++Group=qpidd
++Type=simple
++ExecStart=/usr/sbin/qpidd --config /etc/qpid/qpidd.conf
++
++[Install]
++WantedBy=multi-user.target
+-- 
+1.8.4.2
+
diff --git a/02-QPID-4670-Move-to-proton-0.5-remove-dummy-string-in-.patch b/02-QPID-4670-Move-to-proton-0.5-remove-dummy-string-in-.patch
new file mode 100644
index 0000000..7809685
--- /dev/null
+++ b/02-QPID-4670-Move-to-proton-0.5-remove-dummy-string-in-.patch
@@ -0,0 +1,206 @@
+From c909dac986a38640e9b17da4c91c803f5d6c28dd Mon Sep 17 00:00:00 2001
+From: Gordon Sim <gsim at apache.org>
+Date: Wed, 28 Aug 2013 12:41:14 +0000
+Subject: [PATCH 2/2] QPID-4670: Move to proton 0.5, remove dummy string in
+ address for dynamic nodes
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1518180 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/amqp.cmake                                |  4 ++--
+ qpid/cpp/src/qpid/broker/amqp/Connection.cpp           |  3 ---
+ qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp             |  9 ++++-----
+ qpid/cpp/src/qpid/broker/amqp/Relay.cpp                | 13 +++++++------
+ qpid/cpp/src/qpid/broker/amqp/Relay.h                  |  5 +++--
+ qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp     |  3 ---
+ qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp |  5 -----
+ 7 files changed, 16 insertions(+), 26 deletions(-)
+
+diff --git a/qpid/cpp/src/amqp.cmake b/qpid/cpp/src/amqp.cmake
+index 30cb848..9dfd320 100644
+--- a/qpid/cpp/src/amqp.cmake
++++ b/qpid/cpp/src/amqp.cmake
+@@ -24,8 +24,8 @@ include(FindPkgConfig)
+ pkg_check_modules(PROTON libqpid-proton)
+ 
+ set (amqp_default ${amqp_force})
+-set (minimum_version 0.3)
+-set (maximum_version 0.4)
++set (minimum_version 0.5)
++set (maximum_version 0.5)
+ if (PROTON_FOUND)
+     if (PROTON_VERSION LESS ${minimum_version})
+         message(STATUS "Qpid proton ${PROTON_VERSION} is too old, require ${minimum_version} - ${maximum_version}; amqp 1.0 support not enabled")
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Connection.cpp b/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
+index 2cb0994..d422124 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
++++ b/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
+@@ -182,12 +182,9 @@ void Connection::open()
+ 
+ void Connection::readPeerProperties()
+ {
+-    /**
+-     * TODO: enable when proton 0.5 has been released:
+     qpid::types::Variant::Map properties;
+     DataReader::read(pn_connection_remote_properties(connection), properties);
+     setPeerProperties(properties);
+-    */
+ }
+ 
+ void Connection::closed()
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
+index 68ff979..eb18582 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
++++ b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
+@@ -118,20 +118,19 @@ void OutgoingFromQueue::handle(pn_delivery_t* delivery)
+         if (r.disposition) {
+             switch (r.disposition) {
+               case PN_ACCEPTED:
+-                //TODO: only if consuming
+-                queue->dequeue(0, r.cursor);
++                if (preAcquires()) queue->dequeue(0, r.cursor);
+                 outgoingMessageAccepted();
+                 break;
+               case PN_REJECTED:
+-                queue->reject(r.cursor);
++                if (preAcquires()) queue->reject(r.cursor);
+                 outgoingMessageRejected();
+                 break;
+               case PN_RELEASED:
+-                queue->release(r.cursor, false);//TODO: for PN_RELEASED, delivery count should not be incremented
++                if (preAcquires()) queue->release(r.cursor, false);//TODO: for PN_RELEASED, delivery count should not be incremented
+                 outgoingMessageRejected();//TODO: not quite true...
+                 break;
+               case PN_MODIFIED:
+-                queue->release(r.cursor, true);//TODO: proper handling of modified
++                if (preAcquires()) queue->release(r.cursor, true);//TODO: proper handling of modified
+                 outgoingMessageRejected();//TODO: not quite true...
+                 break;
+               default:
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Relay.cpp b/qpid/cpp/src/qpid/broker/amqp/Relay.cpp
+index a08971c..83b3e64 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Relay.cpp
++++ b/qpid/cpp/src/qpid/broker/amqp/Relay.cpp
+@@ -105,14 +105,14 @@ void Relay::detached(Outgoing*)
+ {
+     out = 0;
+     isDetached = true;
+-    std::cerr << "Outgoing link detached from relay" << std::endl;
++    QPID_LOG(info, "Outgoing link detached from relay [" << this << "]");
+     if (in) in->wakeup();
+ }
+ void Relay::detached(Incoming*)
+ {
+     in = 0;
+     isDetached = true;
+-    std::cerr << "Incoming link detached from relay" << std::endl;
++    QPID_LOG(info, "Incoming link detached from relay [" << this << "]");
+     if (out) out->wakeup();
+ }
+ 
+@@ -139,13 +139,13 @@ void OutgoingFromRelay::handle(pn_delivery_t* delivery)
+     if (pn_delivery_writable(delivery)) {
+         if (transfer->write(link)) {
+             outgoingMessageSent();
+-            QPID_LOG(debug, "Sent relayed message " << name);
++            QPID_LOG(debug, "Sent relayed message " << name << " [" << relay.get() << "]");
+         } else {
+-            QPID_LOG(error, "Failed to send relayed message " << name);
++            QPID_LOG(error, "Failed to send relayed message " << name << " [" << relay.get() << "]");
+         }
+     }
+     if (pn_delivery_updated(delivery)) {
+-        pn_disposition_t d = transfer->updated();
++        uint64_t d = transfer->updated();
+         switch (d) {
+           case PN_ACCEPTED:
+             outgoingMessageAccepted();
+@@ -226,6 +226,7 @@ void IncomingToRelay::detached()
+     relay->detached(this);
+ }
+ 
++BufferedTransfer::BufferedTransfer() : disposition(0) {}
+ void BufferedTransfer::initIn(pn_link_t* link, pn_delivery_t* d)
+ {
+     in.handle = d;
+@@ -264,7 +265,7 @@ void BufferedTransfer::initOut(pn_link_t* link)
+     pn_delivery_set_context(out.handle, this);
+ }
+ 
+-pn_disposition_t BufferedTransfer::updated()
++uint64_t BufferedTransfer::updated()
+ {
+     disposition = pn_delivery_remote_state(out.handle);
+     if (disposition) {
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Relay.h b/qpid/cpp/src/qpid/broker/amqp/Relay.h
+index 0c2d48b..ef70069 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Relay.h
++++ b/qpid/cpp/src/qpid/broker/amqp/Relay.h
+@@ -45,10 +45,11 @@ struct Delivery
+ class BufferedTransfer
+ {
+   public:
++    BufferedTransfer();
+     void initIn(pn_link_t* link, pn_delivery_t* d);
+     bool settle();
+     void initOut(pn_link_t* link);
+-    pn_disposition_t updated();
++    uint64_t updated();
+     bool write(pn_link_t*);
+   private:
+     std::vector<char> data;
+@@ -56,7 +57,7 @@ class BufferedTransfer
+     Delivery out;
+     pn_delivery_tag_t dt;
+     std::vector<char> tag;
+-    pn_disposition_t disposition;
++    uint64_t disposition;
+ };
+ 
+ /**
+diff --git a/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp b/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp
+index 9ecb46d..0f3d4e4 100644
+--- a/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp
++++ b/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp
+@@ -83,8 +83,6 @@ const std::string DELETE_IF_EMPTY("delete-if-empty");
+ const std::string DELETE_IF_UNUSED_AND_EMPTY("delete-if-unused-and-empty");
+ const std::string CREATE_ON_DEMAND("create-on-demand");
+ 
+-const std::string DUMMY(".");
+-
+ const std::string X_DECLARE("x-declare");
+ const std::string X_BINDINGS("x-bindings");
+ const std::string X_SUBSCRIBE("x-subscribe");
+@@ -506,7 +504,6 @@ void AddressHelper::configure(pn_terminus_t* terminus, CheckMode mode)
+     bool createOnDemand(false);
+     if (isTemporary) {
+         //application expects a name to be generated
+-        pn_terminus_set_address(terminus, DUMMY.c_str());//workaround for PROTON-277
+         pn_terminus_set_dynamic(terminus, true);
+         setNodeProperties(terminus);
+     } else {
+diff --git a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
+index c9b7c1a..a7c0f65 100644
+--- a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
++++ b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
+@@ -742,10 +742,6 @@ pn_bytes_t convert(const std::string& s)
+ }
+ void ConnectionContext::setProperties()
+ {
+-    /**
+-     * Enable when proton 0.5 is released and qpidc has been updated
+-     * to use it
+-     *
+     pn_data_t* data = pn_connection_properties(connection);
+     pn_data_put_map(data);
+     pn_data_enter(data);
+@@ -760,7 +756,6 @@ void ConnectionContext::setProperties()
+     pn_data_put_symbol(data, convert(CLIENT_PPID));
+     pn_data_put_int(data, sys::SystemInfo::getParentProcessId());
+     pn_data_exit(data);
+-    **/
+ }
+ 
+ const qpid::sys::SecuritySettings* ConnectionContext::getTransportSecuritySettings()
+-- 
+1.8.3.1
+
diff --git a/03-QPID-5122-cleaner-encoding-of-index-for-delivery-tag.patch b/03-QPID-5122-cleaner-encoding-of-index-for-delivery-tag.patch
new file mode 100644
index 0000000..f762eac
--- /dev/null
+++ b/03-QPID-5122-cleaner-encoding-of-index-for-delivery-tag.patch
@@ -0,0 +1,81 @@
+From 69d1ac622c2db4d357365d03e26eb34c8b992a44 Mon Sep 17 00:00:00 2001
+From: Gordon Sim <gsim at apache.org>
+Date: Tue, 10 Sep 2013 11:03:20 +0000
+Subject: [PATCH] QPID-5122: cleaner encoding of index for delivery tags
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1521433 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp | 18 ++++++++++++++----
+ qpid/cpp/src/qpid/broker/amqp/Outgoing.h   |  3 +++
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
+index eb18582..5bcdf67 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
++++ b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
+@@ -29,6 +29,7 @@
+ #include "qpid/sys/OutputControl.h"
+ #include "qpid/amqp/descriptors.h"
+ #include "qpid/amqp/MessageEncoder.h"
++#include "qpid/framing/Buffer.h"
+ #include "qpid/framing/reply_exceptions.h"
+ #include "qpid/log/Statement.h"
+ 
+@@ -91,8 +92,7 @@ void OutgoingFromQueue::write(const char* data, size_t size)
+ 
+ void OutgoingFromQueue::handle(pn_delivery_t* delivery)
+ {
+-    pn_delivery_tag_t tag = pn_delivery_tag(delivery);
+-    size_t i = *reinterpret_cast<const size_t*>(tag.bytes);
++    size_t i = Record::getIndex(pn_delivery_tag(delivery));
+     Record& r = deliveries[i];
+     if (pn_delivery_writable(delivery)) {
+         assert(r.msg);
+@@ -254,8 +254,10 @@ OutgoingFromQueue::Record::Record() : delivery(0), disposition(0), index(0) {}
+ void OutgoingFromQueue::Record::init(size_t i)
+ {
+     index = i;
+-    tag.bytes = reinterpret_cast<const char*>(&index);
+-    tag.size = sizeof(index);
++    qpid::framing::Buffer buffer(tagData, Record::TAG_WIDTH);
++    buffer.putUInt<Record::TAG_WIDTH>(index);
++    tag.bytes = tagData;
++    tag.size = Record::TAG_WIDTH;
+ }
+ void OutgoingFromQueue::Record::reset()
+ {
+@@ -265,5 +267,13 @@ void OutgoingFromQueue::Record::reset()
+     disposition = 0;
+ }
+ 
++size_t OutgoingFromQueue::Record::getIndex(pn_delivery_tag_t t)
++{
++    assert(t.size == TAG_WIDTH);
++    qpid::framing::Buffer buffer(const_cast<char*>(t.bytes)/*won't ever be written to*/, t.size);
++    return (size_t) buffer.getUInt<TAG_WIDTH>();
++}
++
++
+ 
+ }}} // namespace qpid::broker::amqp
+diff --git a/qpid/cpp/src/qpid/broker/amqp/Outgoing.h b/qpid/cpp/src/qpid/broker/amqp/Outgoing.h
+index 86d7d46..b53f67f 100644
+--- a/qpid/cpp/src/qpid/broker/amqp/Outgoing.h
++++ b/qpid/cpp/src/qpid/broker/amqp/Outgoing.h
+@@ -117,10 +117,13 @@ class OutgoingFromQueue : public Outgoing, public qpid::broker::Consumer, public
+         int disposition;
+         size_t index;
+         pn_delivery_tag_t tag;
++        static const size_t TAG_WIDTH = sizeof(size_t);
++        char tagData[TAG_WIDTH];//index in encoded form, used for tag
+ 
+         Record();
+         void init(size_t i);
+         void reset();
++        static size_t getIndex(pn_delivery_tag_t);
+     };
+ 
+     const bool exclusive;
+-- 
+1.8.3.1
+
diff --git a/04-QPID-5123-Changes-to-Fedora-19-packaging-of-libdb4-p.patch b/04-QPID-5123-Changes-to-Fedora-19-packaging-of-libdb4-p.patch
new file mode 100644
index 0000000..c0aadf6
--- /dev/null
+++ b/04-QPID-5123-Changes-to-Fedora-19-packaging-of-libdb4-p.patch
@@ -0,0 +1,117 @@
+From e9ec612f443e666df8d54c3a2ab1a7f7d0507326 Mon Sep 17 00:00:00 2001
+From: Kim van der Riet <kpvdr at apache.org>
+Date: Tue, 10 Sep 2013 01:48:58 +0000
+Subject: [PATCH] QPID-5123: Changes to Fedora 19 packaging of libdb4 prevents
+ legacystore from building
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1521335 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/finddb.cmake                          | 20 +++++++++++---------
+ qpid/cpp/src/legacystore.cmake                     |  4 ++--
+ qpid/cpp/src/qpid/legacystore/MessageStoreImpl.cpp |  2 +-
+ 3 files changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/qpid/cpp/src/finddb.cmake b/qpid/cpp/src/finddb.cmake
+index fad827c..2f2f94f 100644
+--- a/qpid/cpp/src/finddb.cmake
++++ b/qpid/cpp/src/finddb.cmake
+@@ -22,31 +22,33 @@ if(UNIX)
+ # - Find BerkeleyDB
+ # Find the BerkeleyDB includes and library
+ # This module defines
+-# DB_INCLUDE_DIR, where to find db.h, etc.
++# DB_CXX_INCLUDE_DIR, where to find db_cxx.h, etc.
+ # DB_LIBRARIES, the libraries needed to use BerkeleyDB.
+ # DB_FOUND, If false, do not try to use BerkeleyDB.
+ # also defined, but not for general use are
+ # DB_LIBRARY, where to find the BerkeleyDB library.
+ 
+-FIND_PATH(DB_INCLUDE_DIR db.h
++FIND_PATH(DB_CXX_INCLUDE_DIR db_cxx.h
+     /usr/local/include/db4
++    /usr/local/include/libdb4
+     /usr/local/include
+     /usr/include/db4
++    /usr/include/libdb4
+     /usr/include
+ )
+ 
+-SET(DB_NAMES ${DB_NAMES} db_cxx)
++SET(DB_NAMES ${DB_NAMES} db_cxx db_cxx-4)
+ FIND_LIBRARY(DB_LIBRARY
+     NAMES ${DB_NAMES}
+     PATHS /usr/lib /usr/local/lib
+ )
+ 
+-IF (DB_LIBRARY AND DB_INCLUDE_DIR)
++IF (DB_LIBRARY AND DB_CXX_INCLUDE_DIR)
+     SET(DB_LIBRARIES ${DB_LIBRARY})
+     SET(DB_FOUND "YES")
+-ELSE (DB_LIBRARY AND DB_INCLUDE_DIR)
++ELSE (DB_LIBRARY AND DB_CXX_INCLUDE_DIR)
+     UNSET( DB_FOUND )
+-ENDIF (DB_LIBRARY AND DB_INCLUDE_DIR)
++ENDIF (DB_LIBRARY AND DB_CXX_INCLUDE_DIR)
+ 
+ 
+ IF (DB_FOUND)
+@@ -60,15 +62,15 @@ ELSE (DB_FOUND)
+ ENDIF (DB_FOUND)
+ 
+ # Deprecated declarations.
+-SET (NATIVE_DB_INCLUDE_PATH ${DB_INCLUDE_DIR} )
++SET (NATIVE_DB_INCLUDE_PATH ${DB_CXX_INCLUDE_DIR} )
+ GET_FILENAME_COMPONENT (NATIVE_DB_LIB_PATH ${DB_LIBRARY} PATH)
+ 
+ MARK_AS_ADVANCED(
+     DB_LIBRARY
+-    DB_INCLUDE_DIR
++    DB_CXX_INCLUDE_DIR
+ )
+ 
+ else(UNIX)
+     MESSAGE(STATUS "BerkeleyDB is ignored on non-Unix platforms")
+     UNSET( DB_FOUND )
+-endif(UNIX)
+\ No newline at end of file
++endif(UNIX)
+diff --git a/qpid/cpp/src/legacystore.cmake b/qpid/cpp/src/legacystore.cmake
+index 9d6876b..1fdb51a 100644
+--- a/qpid/cpp/src/legacystore.cmake
++++ b/qpid/cpp/src/legacystore.cmake
+@@ -126,10 +126,10 @@ if (BUILD_LEGACYSTORE)
+     )
+ 
+     if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/db-inc.h)
+-      message(STATUS "Including BDB from ${DB_INCLUDE_DIR}/db_cxx.h")
++      message(STATUS "Including BDB from ${DB_CXX_INCLUDE_DIR}/db_cxx.h")
+         file(WRITE 
+              ${CMAKE_CURRENT_BINARY_DIR}/db-inc.h
+-             "#include <${DB_INCLUDE_DIR}/db_cxx.h>\n")
++             "#include <${DB_CXX_INCLUDE_DIR}/db_cxx.h>\n")
+     endif()
+ 
+     add_library (legacystore MODULE
+diff --git a/qpid/cpp/src/qpid/legacystore/MessageStoreImpl.cpp b/qpid/cpp/src/qpid/legacystore/MessageStoreImpl.cpp
+index c92c982..4db2790 100644
+--- a/qpid/cpp/src/qpid/legacystore/MessageStoreImpl.cpp
++++ b/qpid/cpp/src/qpid/legacystore/MessageStoreImpl.cpp
+@@ -21,6 +21,7 @@
+ 
+ #include "qpid/legacystore/MessageStoreImpl.h"
+ 
++#include "db-inc.h"
+ #include "qpid/broker/QueueSettings.h"
+ #include "qpid/legacystore/BindingDbt.h"
+ #include "qpid/legacystore/BufferValue.h"
+@@ -31,7 +32,6 @@
+ #include "qmf/org/apache/qpid/legacystore/Package.h"
+ #include "qpid/legacystore/StoreException.h"
+ #include <dirent.h>
+-#include <db.h>
+ 
+ #define MAX_AIO_SLEEPS 100000 // tot: ~1 sec
+ #define AIO_SLEEP_TIME_US  10 // 0.01 ms
+-- 
+1.8.3.1
+
diff --git a/05-QPID-5016-Zero-rmgr-struct-element-with-correct-size.patch b/05-QPID-5016-Zero-rmgr-struct-element-with-correct-size.patch
new file mode 100644
index 0000000..fb8fadd
--- /dev/null
+++ b/05-QPID-5016-Zero-rmgr-struct-element-with-correct-size.patch
@@ -0,0 +1,26 @@
+From ba91d731c6dc24c012b6abb3ceb5b14d0f7ae8f7 Mon Sep 17 00:00:00 2001
+From: Andrew Stitcher <astitcher at apache.org>
+Date: Thu, 25 Jul 2013 18:39:52 +0000
+Subject: [PATCH] QPID-5016: Zero rmgr struct element with correct size.
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1507085 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/qpid/legacystore/jrnl/rmgr.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/qpid/cpp/src/qpid/legacystore/jrnl/rmgr.cpp b/qpid/cpp/src/qpid/legacystore/jrnl/rmgr.cpp
+index 3a11817..204affd 100644
+--- a/qpid/cpp/src/qpid/legacystore/jrnl/rmgr.cpp
++++ b/qpid/cpp/src/qpid/legacystore/jrnl/rmgr.cpp
+@@ -72,7 +72,7 @@ rmgr::initialize(aio_callback* const cbp)
+         throw jexception(jerrno::JERR__MALLOC, oss.str(), "rmgr", "initialize");
+     }
+     _fhdr_aio_cb_ptr = new aio_cb;
+-    std::memset(_fhdr_aio_cb_ptr, 0, sizeof(aio_cb*));
++    std::memset(_fhdr_aio_cb_ptr, 0, sizeof(aio_cb));
+ }
+ 
+ void
+-- 
+1.8.3.1
+
diff --git a/06-QPID-5126-Fix-for-building-legacy-store-on-ARM-platf.patch b/06-QPID-5126-Fix-for-building-legacy-store-on-ARM-platf.patch
new file mode 100644
index 0000000..c4b6aab
--- /dev/null
+++ b/06-QPID-5126-Fix-for-building-legacy-store-on-ARM-platf.patch
@@ -0,0 +1,35 @@
+From 0bd06fdd4d4bcbef63de1e2ee4a1e4cee9b0d7f4 Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <mcpierce at apache.org>
+Date: Tue, 10 Sep 2013 20:24:29 +0000
+Subject: [PATCH] QPID-5126: Fix for building legacy store on ARM platforms
+
+Contributed by: Kim van der Riet <kim.vdriet at redhat.com>
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1521629 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/qpid/legacystore/jrnl/jcfg.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/qpid/cpp/src/qpid/legacystore/jrnl/jcfg.h b/qpid/cpp/src/qpid/legacystore/jrnl/jcfg.h
+index 0a0d0df..01d92ee 100644
+--- a/qpid/cpp/src/qpid/legacystore/jrnl/jcfg.h
++++ b/qpid/cpp/src/qpid/legacystore/jrnl/jcfg.h
+@@ -33,13 +33,13 @@
+ #ifndef QPID_LEGACYSTORE_JRNL_JCFG_H
+ #define QPID_LEGACYSTORE_JRNL_JCFG_H
+ 
+-#if defined(__i386__) /* little endian, 32 bits */
++#if defined(__i386__) || (__arm__) /* little endian, 32 bits */
+ #define JRNL_LITTLE_ENDIAN
+ #define JRNL_32_BIT
+ #elif defined(__PPC__) || defined(__s390__)  /* big endian, 32 bits */
+ #define JRNL_BIG_ENDIAN
+ #define JRNL_32_BIT
+-#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) /* little endian, 64 bits */
++#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || (__arm64__) /* little endian, 64 bits */
+ #define JRNL_LITTLE_ENDIAN
+ #define JRNL_64_BIT
+ #elif defined(__powerpc64__) || defined(__s390x__) /* big endian, 64 bits */
+-- 
+1.8.3.1
+
diff --git a/07-QPID-4582-Get-legacystore-unit-tests-working.patch b/07-QPID-4582-Get-legacystore-unit-tests-working.patch
new file mode 100644
index 0000000..db286b3
--- /dev/null
+++ b/07-QPID-4582-Get-legacystore-unit-tests-working.patch
@@ -0,0 +1,408 @@
+From e6147f6717def76f8c62c1ab1e6ba23afbd519a6 Mon Sep 17 00:00:00 2001
+From: Andrew Stitcher <astitcher at apache.org>
+Date: Tue, 8 Oct 2013 15:08:44 +0000
+Subject: [PATCH 1/2] QPID-4582: Get legacystore unit tests working
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1530300 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/CMakeLists.txt                        |  1 +
+ qpid/cpp/src/legacystore.cmake                     | 20 +++++++
+ qpid/cpp/src/tests/legacystore/CMakeLists.txt      | 28 ++++-----
+ qpid/cpp/src/tests/legacystore/OrderingTest.cpp    | 17 +++---
+ qpid/cpp/src/tests/legacystore/SimpleTest.cpp      | 31 +++++-----
+ .../src/tests/legacystore/TransactionalTest.cpp    | 15 +++--
+ .../src/tests/legacystore/TwoPhaseCommitTest.cpp   | 15 +++--
+ qpid/cpp/src/tests/legacystore/run_test            | 69 ----------------------
+ 8 files changed, 76 insertions(+), 120 deletions(-)
+ delete mode 100644 qpid/cpp/src/tests/legacystore/run_test
+
+diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt
+index c1d1640..53edb52 100644
+--- a/qpid/cpp/src/CMakeLists.txt
++++ b/qpid/cpp/src/CMakeLists.txt
+@@ -1602,6 +1602,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
+                ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+ add_subdirectory(qpid/store)
+ add_subdirectory(tests)
++add_subdirectory(tests/legacystore)
+ 
+ # Support for pkg-config
+ 
+diff --git a/qpid/cpp/src/legacystore.cmake b/qpid/cpp/src/legacystore.cmake
+index 1fdb51a..afb5ea0 100644
+--- a/qpid/cpp/src/legacystore.cmake
++++ b/qpid/cpp/src/legacystore.cmake
+@@ -152,6 +152,26 @@ if (BUILD_LEGACYSTORE)
+         ${DB_LIBRARY}
+     )
+ 
++    # For use in the store tests only
++    add_library (legacystore_shared SHARED
++        ${legacy_jrnl_SOURCES}
++        ${legacy_store_SOURCES}
++        ${legacy_qmf_SOURCES}
++    )
++
++    set_target_properties (legacystore_shared PROPERTIES
++        COMPILE_DEFINITIONS _IN_QPID_BROKER
++        INCLUDE_DIRECTORIES "${legacy_include_DIRECTORIES}"
++    )
++
++    target_link_libraries (legacystore_shared
++        aio
++        uuid
++        qpidcommon qpidtypes qpidbroker
++        ${Boost_PROGRAM_OPTIONS_LIBRARY}
++        ${DB_LIBRARY}
++    )
++
+ install(TARGETS legacystore
+         DESTINATION ${QPIDD_MODULE_DIR}
+         COMPONENT ${QPID_COMPONENT_BROKER})
+diff --git a/qpid/cpp/src/tests/legacystore/CMakeLists.txt b/qpid/cpp/src/tests/legacystore/CMakeLists.txt
+index 6cfaa7e..cf5062c 100644
+--- a/qpid/cpp/src/tests/legacystore/CMakeLists.txt
++++ b/qpid/cpp/src/tests/legacystore/CMakeLists.txt
+@@ -70,36 +70,28 @@ set (qpid_test_boost_libs
+ # womp on each other's store directory.
+ 
+ #
+-# define_selftest
++# define_legacystore_test
+ # macro to accept the name of a single source file and to create a
+ #  unit test executable that runs the source.
+ #
+-MACRO (define_selftest theSourceFile)
++MACRO (define_legacystore_test theSourceFile)
+ add_executable (legacystore_${theSourceFile}
+-            unit_test
+             ${theSourceFile}
++            unit_test
+             ${platform_test_additions})
+ target_link_libraries (legacystore_${theSourceFile}
+                        ${qpid_test_boost_libs}
+-                       qpidmessaging qpidbroker qmfconsole legacystore)
+-get_property(ls_include TARGET legacystore_${theSourceFile} PROPERTY INCLUDE_DIRECTORIES)
+-list(APPEND  ls_include ${abs_top_srcdir}/src/qpid/legacystore)
+-list(APPEND  ls_include ${abs_top_srcdir}/src/tests)
+-set_target_properties (legacystore_${theSourceFile} PROPERTIES
+-            INCLUDE_DIRECTORIES "${ls_include}"
+-            COMPILE_DEFINITIONS _IN_QPID_BROKER)
++                       qpidmessaging qpidtypes qpidbroker qpidcommon legacystore_shared)
++set_target_properties (legacystore_${theSourceFile} PROPERTIES COMPILE_DEFINITIONS _IN_QPID_BROKER)
+ remember_location(legacystore_${theSourceFile})
+-set(test_wrap ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/run_test${test_script_suffix})
+ 
+ add_test (legacystore_${theSourceFile} ${test_wrap} ${legacystore_${theSourceFile}_LOCATION})
+-ENDMACRO (define_selftest)
+-
+-# add_definitions(-H)
++ENDMACRO (define_legacystore_test)
+ 
+-define_selftest (SimpleTest)
+-define_selftest (OrderingTest)
+-define_selftest (TransactionalTest)
+-define_selftest (TwoPhaseCommitTest)
++define_legacystore_test (SimpleTest)
++define_legacystore_test (OrderingTest)
++define_legacystore_test (TransactionalTest)
++define_legacystore_test (TwoPhaseCommitTest)
+ 
+ #
+ # Other test programs
+diff --git a/qpid/cpp/src/tests/legacystore/OrderingTest.cpp b/qpid/cpp/src/tests/legacystore/OrderingTest.cpp
+index 92a09f0..74a9db1 100644
+--- a/qpid/cpp/src/tests/legacystore/OrderingTest.cpp
++++ b/qpid/cpp/src/tests/legacystore/OrderingTest.cpp
+@@ -20,16 +20,18 @@
+  */
+ 
+ #include "unit_test.h"
++#include "MessageUtils.h"
+ 
++#include "qpid/broker/Queue.h"
++#include "qpid/broker/RecoveryManagerImpl.h"
++#include "qpid/broker/PersistableObject.h"
++#include "qpid/framing/AMQHeaderBody.h"
+ #include "qpid/legacystore/MessageStoreImpl.h"
+-#include <iostream>
+-#include "MessageUtils.h"
+-#include <qpid/broker/Queue.h>
+-#include <qpid/broker/RecoveryManagerImpl.h>
+-#include <qpid/framing/AMQHeaderBody.h>
+ #include "qpid/log/Logger.h"
+ #include "qpid/sys/Timer.h"
+ 
++#include <iostream>
++
+ using namespace qpid;
+ using namespace qpid::broker;
+ using namespace qpid::framing;
+@@ -48,7 +50,7 @@ QPID_AUTO_TEST_SUITE(OrderingTest)
+ 
+ const std::string test_filename("OrderingTest");
+ const char* tdp = getenv("TMP_DATA_DIR");
+-const std::string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/tmp/OrderingTest");
++const std::string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/var/tmp/OrderingTest");
+ 
+ // === Helper fns ===
+ 
+@@ -118,7 +120,8 @@ void restart()
+     sys::Timer t;
+     DtxManager mgr(t);
+     mgr.setStore (store.get());
+-    RecoveryManagerImpl recoveryMgr(queues, exchanges, links, mgr, br.getProtocolRegistry());
++    RecoveredObjects ro;
++    RecoveryManagerImpl recoveryMgr(queues, exchanges, links, mgr, br.getProtocolRegistry(), ro);
+     store->recover(recoveryMgr);
+ 
+     queue = queues.find(name);
+diff --git a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
+index a49333d..e03e005 100644
+--- a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
++++ b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
+@@ -20,21 +20,23 @@
+  */
+ 
+ #include "unit_test.h"
++#include "MessageUtils.h"
+ 
++#include "qpid/broker/DirectExchange.h"
++#include "qpid/broker/Queue.h"
++#include "qpid/broker/QueueSettings.h"
++#include "qpid/broker/RecoveryManagerImpl.h"
++#include "qpid/broker/PersistableObject.h"
++#include "qpid/framing/AMQHeaderBody.h"
++#include "qpid/framing/FieldTable.h"
++#include "qpid/framing/FieldValue.h"
+ #include "qpid/legacystore/MessageStoreImpl.h"
+-#include <iostream>
+-#include "tests/legacystore/MessageUtils.h"
+ #include "qpid/legacystore/StoreException.h"
+-#include "qpid/broker/DirectExchange.h"
+-#include <qpid/broker/Queue.h>
+-#include <qpid/broker/QueueSettings.h>
+-#include <qpid/broker/RecoveryManagerImpl.h>
+-#include <qpid/framing/AMQHeaderBody.h>
+-#include <qpid/framing/FieldTable.h>
+-#include <qpid/framing/FieldValue.h>
+ #include "qpid/log/Logger.h"
+ #include "qpid/sys/Timer.h"
+ 
++#include <iostream>
++
+ qpid::broker::Broker::Options opts;
+ qpid::broker::Broker br(opts);
+ 
+@@ -57,15 +59,15 @@ QPID_AUTO_TEST_SUITE(SimpleTest)
+ 
+ const string test_filename("SimpleTest");
+ const char* tdp = getenv("TMP_DATA_DIR");
+-const string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/tmp/SimpleTest");
++const string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/var/tmp/SimpleTest");
+ 
+ // === Helper fns ===
+ 
+-struct DummyHandler : OutputHandler
++struct DummyHandler : FrameHandler
+ {
+     std::vector<AMQFrame> frames;
+ 
+-    virtual void send(AMQFrame& frame){
++    virtual void handle(AMQFrame& frame){
+         frames.push_back(frame);
+     }
+ };
+@@ -75,7 +77,8 @@ void recover(MessageStoreImpl& store, QueueRegistry& queues, ExchangeRegistry& e
+     sys::Timer t;
+     DtxManager mgr(t);
+     mgr.setStore (&store);
+-    RecoveryManagerImpl recovery(queues, exchanges, links, mgr, br.getProtocolRegistry());
++    RecoveredObjects ro;
++    RecoveryManagerImpl recovery(queues, exchanges, links, mgr, br.getProtocolRegistry(), ro);
+     store.recover(recovery);
+ }
+ 
+@@ -307,7 +310,7 @@ QPID_AUTO_TEST_CASE(Enqueue)
+         BOOST_CHECK_EQUAL(routingKey, msg.getRoutingKey());
+         BOOST_CHECK_EQUAL(messageId, MessageUtils::getMessageId(msg));
+         BOOST_CHECK_EQUAL(std::string("xyz"), msg.getAnnotation("abc"));
+-        BOOST_CHECK_EQUAL((u_int64_t) 14, msg.getContentSize());
++        BOOST_CHECK_EQUAL((u_int64_t) 14, msg.getContent().size());
+ 
+         DummyHandler handler;
+         MessageUtils::deliver(msg, handler, 100);
+diff --git a/qpid/cpp/src/tests/legacystore/TransactionalTest.cpp b/qpid/cpp/src/tests/legacystore/TransactionalTest.cpp
+index 2d3f6f9..d1bc34d 100644
+--- a/qpid/cpp/src/tests/legacystore/TransactionalTest.cpp
++++ b/qpid/cpp/src/tests/legacystore/TransactionalTest.cpp
+@@ -20,18 +20,20 @@
+  */
+ 
+ #include "unit_test.h"
+-
+-#include "qpid/legacystore/MessageStoreImpl.h"
+-#include <iostream>
+ #include "MessageUtils.h"
+-#include "qpid/legacystore/StoreException.h"
++
+ #include "qpid/broker/Queue.h"
+ #include "qpid/broker/RecoveryManagerImpl.h"
++#include "qpid/broker/PersistableObject.h"
+ #include "qpid/framing/AMQHeaderBody.h"
++#include "qpid/legacystore/MessageStoreImpl.h"
++#include "qpid/legacystore/StoreException.h"
+ #include "qpid/log/Statement.h"
+ #include "qpid/log/Logger.h"
+ #include "qpid/sys/Timer.h"
+ 
++#include <iostream>
++
+ using namespace mrg::msgstore;
+ using namespace qpid;
+ using namespace qpid::broker;
+@@ -53,7 +55,7 @@ QPID_AUTO_TEST_SUITE(TransactionalTest)
+ 
+ const string test_filename("TransactionalTest");
+ const char* tdp = getenv("TMP_DATA_DIR");
+-const string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/tmp/TransactionalTest");
++const string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/var/tmp/TransactionalTest");
+ 
+ // Test txn context which has special setCompleteFailure() method which prevents entire "txn complete" process from hapenning
+ class TestTxnCtxt : public TxnCtxt
+@@ -141,7 +143,8 @@ void restart()
+     sys::Timer t;
+     DtxManager mgr(t);
+     mgr.setStore (store.get());
+-    RecoveryManagerImpl recovery(*queues, exchanges, links, mgr, br.getProtocolRegistry());
++    RecoveredObjects ro;
++    RecoveryManagerImpl recovery(*queues, exchanges, links, mgr, br.getProtocolRegistry(), ro);
+     store->recover(recovery);
+ 
+     queueA = queues->find(nameA);
+diff --git a/qpid/cpp/src/tests/legacystore/TwoPhaseCommitTest.cpp b/qpid/cpp/src/tests/legacystore/TwoPhaseCommitTest.cpp
+index 92e49df..25bb9dc 100644
+--- a/qpid/cpp/src/tests/legacystore/TwoPhaseCommitTest.cpp
++++ b/qpid/cpp/src/tests/legacystore/TwoPhaseCommitTest.cpp
+@@ -20,18 +20,20 @@
+  */
+ 
+ #include "unit_test.h"
+-
+-#include "qpid/legacystore/MessageStoreImpl.h"
+-#include <iostream>
+ #include "MessageUtils.h"
++
+ #include "qpid/broker/Queue.h"
+ #include "qpid/broker/RecoveryManagerImpl.h"
++#include "qpid/broker/PersistableObject.h"
+ #include "qpid/framing/AMQHeaderBody.h"
+-#include "qpid/log/Statement.h"
++#include "qpid/legacystore/MessageStoreImpl.h"
+ #include "qpid/legacystore/TxnCtxt.h"
+ #include "qpid/log/Logger.h"
++#include "qpid/log/Statement.h"
+ #include "qpid/sys/Timer.h"
+ 
++#include <iostream>
++
+ using namespace mrg::msgstore;
+ using namespace qpid;
+ using namespace qpid::broker;
+@@ -54,7 +56,7 @@ QPID_AUTO_TEST_SUITE(TwoPhaseCommitTest)
+ 
+ const string test_filename("TwoPhaseCommitTest");
+ const char* tdp = getenv("TMP_DATA_DIR");
+-string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/tmp/TwoPhaseCommitTest");
++string test_dir(tdp && strlen(tdp) > 0 ? tdp : "/var/tmp/TwoPhaseCommitTest");
+ 
+ // === Helper fns ===
+ 
+@@ -386,7 +388,8 @@ class TwoPhaseCommitTest
+         links = std::auto_ptr<LinkRegistry>(new LinkRegistry);
+         dtxmgr = std::auto_ptr<DtxManager>(new DtxManager(t));
+         dtxmgr->setStore (store.get());
+-        RecoveryManagerImpl recovery(*queues, exchanges, *links, *dtxmgr, br.getProtocolRegistry());
++        RecoveredObjects ro;
++        RecoveryManagerImpl recovery(*queues, exchanges, *links, *dtxmgr, br.getProtocolRegistry(), ro);
+         store->recover(recovery);
+ 
+         queueA = queues->find(nameA);
+diff --git a/qpid/cpp/src/tests/legacystore/run_test b/qpid/cpp/src/tests/legacystore/run_test
+deleted file mode 100644
+index 1d5c2ae..0000000
+--- a/qpid/cpp/src/tests/legacystore/run_test
++++ /dev/null
+@@ -1,69 +0,0 @@
+-#!/bin/bash
+-
+-#
+-# Licensed to the Apache Software Foundation (ASF) under one
+-# or more contributor license agreements.  See the NOTICE file
+-# distributed with this work for additional information
+-# regarding copyright ownership.  The ASF licenses this file
+-# to you under the Apache License, Version 2.0 (the
+-# "License"); you may not use this file except in compliance
+-# with the License.  You may obtain a copy of the License at
+-#
+-#   http://www.apache.org/licenses/LICENSE-2.0
+-#
+-# Unless required by applicable law or agreed to in writing,
+-# software distributed under the License is distributed on an
+-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-# KIND, either express or implied.  See the License for the
+-# specific language governing permissions and limitations
+-# under the License.
+-#
+-
+-# Set up environment and run a test executable or script.
+-#
+-# Output nothing if test passes, show the output if it fails and
+-# leave output in <test>.log for examination.
+-#
+-# If qpidd.port exists run test with QPID_PORT=`cat qpidd.port`
+-#
+-# If $VALGRIND if is set run under valgrind. If there are valgrind
+-# erros show valgrind output, also leave it in <test>.valgrind for
+-# examination.
+-#
+-
+-source `dirname $0`/vg_check
+-
+-# Export variables from makefile.
+-export VALGRIND srcdir
+-
+-# Export QPID_PORT if qpidd.port exists.
+-test -f qpidd.port && export QPID_PORT=`cat qpidd.port`
+-
+-# Avoid silly libtool error messages if these are not defined
+-test -z "$LC_ALL" && export LC_ALL=
+-test -z "$LC_CTYPE" && export LC_CTYPE=
+-test -z "$LC_COLLATE" && export LC_COLLATE=
+-test -z "$LC_MESSAGES" && export LC_MESSAGES=
+-
+-VG_LOG="$1.vglog"
+-rm -f $VG_LOG*
+-
+-if grep -l "^# Generated by .*libtool" "$1" >/dev/null 2>&1; then
+-    # This is a libtool "executable". Valgrind it if VALGRIND specified.
+-    test -n "$VALGRIND" && VALGRIND="$VALGRIND --log-file=$VG_LOG --"
+-    # Hide output unless there's an error.
+-    libtool --mode=execute $VALGRIND "$@" 2>&1 || ERROR=$?
+-    test -n "$VALGRIND" && vg_check $VG_LOG*
+-else
+-    # This is a non-libtool shell script, just execute it.
+-    export VALGRIND srcdir
+-    exec "$@"
+-fi
+-
+-if test -z "$ERROR"; then
+-    # Clean up logs if there was no error.
+-    rm -f $VG_LOG*
+-    exit 0
+-else
+-    exit $ERROR
+-fi
+-- 
+1.8.3.1
+
diff --git a/08-QPID-4582-Fixed-unit-legacystore-unit-test-to-remove.patch b/08-QPID-4582-Fixed-unit-legacystore-unit-test-to-remove.patch
new file mode 100644
index 0000000..3a67f72
--- /dev/null
+++ b/08-QPID-4582-Fixed-unit-legacystore-unit-test-to-remove.patch
@@ -0,0 +1,29 @@
+From 5a5116a6f139e51a729231e49c3c1fac83b41884 Mon Sep 17 00:00:00 2001
+From: Andrew Stitcher <astitcher at apache.org>
+Date: Wed, 9 Oct 2013 15:35:00 +0000
+Subject: [PATCH 2/2] QPID-4582: Fixed unit legacystore unit test to remove
+ warning under RHEL5
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1530681 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/tests/legacystore/SimpleTest.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
+index e03e005..c769bde 100644
+--- a/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
++++ b/qpid/cpp/src/tests/legacystore/SimpleTest.cpp
+@@ -235,8 +235,8 @@ QPID_AUTO_TEST_CASE(QueueCreateWithSettings)
+         recover(store, registry);
+         Queue::shared_ptr queue = registry.find(name);
+         BOOST_REQUIRE(queue);
+-        BOOST_CHECK_EQUAL(settings.maxDepth.getCount(), 202);
+-        BOOST_CHECK_EQUAL(settings.maxDepth.getSize(), 1003);
++        BOOST_CHECK_EQUAL(settings.maxDepth.getCount(), 202u);
++        BOOST_CHECK_EQUAL(settings.maxDepth.getSize(), 1003u);
+         BOOST_CHECK_EQUAL(settings.maxDepth.getCount(), queue->getSettings().maxDepth.getCount());
+         BOOST_CHECK_EQUAL(settings.maxDepth.getSize(), queue->getSettings().maxDepth.getSize());
+     }
+-- 
+1.8.3.1
+
diff --git a/09-QPID-5129-Alignment-issues-on-ARM.patch b/09-QPID-5129-Alignment-issues-on-ARM.patch
new file mode 100644
index 0000000..26e92fd
--- /dev/null
+++ b/09-QPID-5129-Alignment-issues-on-ARM.patch
@@ -0,0 +1,74 @@
+From f4c9baa75fbc87bde4419f7dd54e570d82a497ce Mon Sep 17 00:00:00 2001
+From: Andrew Stitcher <astitcher at apache.org>
+Date: Tue, 8 Oct 2013 15:09:05 +0000
+Subject: [PATCH] QPID-5129: Alignment issues on ARM
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1530302 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/qpid/legacystore/jrnl/deq_rec.cpp | 6 ++++--
+ qpid/cpp/src/qpid/legacystore/jrnl/enq_rec.cpp | 6 ++++--
+ qpid/cpp/src/qpid/legacystore/jrnl/txn_rec.cpp | 3 ++-
+ 3 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/qpid/cpp/src/qpid/legacystore/jrnl/deq_rec.cpp b/qpid/cpp/src/qpid/legacystore/jrnl/deq_rec.cpp
+index f820c3c..270ebdd 100644
+--- a/qpid/cpp/src/qpid/legacystore/jrnl/deq_rec.cpp
++++ b/qpid/cpp/src/qpid/legacystore/jrnl/deq_rec.cpp
+@@ -270,12 +270,14 @@ deq_rec::decode(rec_hdr& h, void* rptr, u_int32_t rec_offs_dblks, u_int32_t max_
+         // Get and check header
+         _deq_hdr.hdr_copy(h);
+         rd_cnt = sizeof(rec_hdr);
+-        _deq_hdr._deq_rid = *(u_int64_t*)((char*)rptr + rd_cnt);
++        //_deq_hdr._deq_rid = *(u_int64_t*)((char*)rptr + rd_cnt);
++        std::memcpy((void*)&_deq_hdr._deq_rid, (char*)rptr + rd_cnt, sizeof(u_int64_t));
+         rd_cnt += sizeof(u_int64_t);
+ #if defined(JRNL_BIG_ENDIAN) && defined(JRNL_32_BIT)
+         rd_cnt += sizeof(u_int32_t); // Filler 0
+ #endif
+-        _deq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        //_deq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        std::memcpy((void*)&_deq_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
+         rd_cnt = _deq_hdr.size();
+         chk_hdr();
+         if (_deq_hdr._xidsize)
+diff --git a/qpid/cpp/src/qpid/legacystore/jrnl/enq_rec.cpp b/qpid/cpp/src/qpid/legacystore/jrnl/enq_rec.cpp
+index 4685998..94f4206 100644
+--- a/qpid/cpp/src/qpid/legacystore/jrnl/enq_rec.cpp
++++ b/qpid/cpp/src/qpid/legacystore/jrnl/enq_rec.cpp
+@@ -360,7 +360,8 @@ enq_rec::decode(rec_hdr& h, void* rptr, u_int32_t rec_offs_dblks, u_int32_t max_
+ #if defined(JRNL_BIG_ENDIAN) && defined(JRNL_32_BIT)
+         rd_cnt += sizeof(u_int32_t); // Filler 0
+ #endif
+-        _enq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        //_enq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        std::memcpy((void*)&_enq_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
+         rd_cnt += sizeof(std::size_t);
+ #if defined(JRNL_LITTLE_ENDIAN) && defined(JRNL_32_BIT)
+         rd_cnt += sizeof(u_int32_t); // Filler 0
+@@ -368,7 +369,8 @@ enq_rec::decode(rec_hdr& h, void* rptr, u_int32_t rec_offs_dblks, u_int32_t max_
+ #if defined(JRNL_BIG_ENDIAN) && defined(JRNL_32_BIT)
+         rd_cnt += sizeof(u_int32_t); // Filler 1
+ #endif
+-        _enq_hdr._dsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        //_enq_hdr._dsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        std::memcpy((void*)&_enq_hdr._dsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
+         rd_cnt = _enq_hdr.size();
+         chk_hdr();
+         if (_enq_hdr._xidsize + (_enq_hdr.is_external() ? 0 : _enq_hdr._dsize))
+diff --git a/qpid/cpp/src/qpid/legacystore/jrnl/txn_rec.cpp b/qpid/cpp/src/qpid/legacystore/jrnl/txn_rec.cpp
+index 918a6ce..1008e77 100644
+--- a/qpid/cpp/src/qpid/legacystore/jrnl/txn_rec.cpp
++++ b/qpid/cpp/src/qpid/legacystore/jrnl/txn_rec.cpp
+@@ -270,7 +270,8 @@ txn_rec::decode(rec_hdr& h, void* rptr, u_int32_t rec_offs_dblks, u_int32_t max_
+ #if defined(JRNL_BIG_ENDIAN) && defined(JRNL_32_BIT)
+         rd_cnt += sizeof(u_int32_t); // Filler 0
+ #endif
+-        _txn_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        //_txn_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
++        std::memcpy((void*)&_txn_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
+         rd_cnt = _txn_hdr.size();
+         chk_hdr();
+         _buff = std::malloc(_txn_hdr._xidsize);
+-- 
+1.8.3.1
+
diff --git a/10-QPID-5499-Fix-Ruby-bindings-when-built-with-Werror-f.patch b/10-QPID-5499-Fix-Ruby-bindings-when-built-with-Werror-f.patch
new file mode 100644
index 0000000..cd2927e
--- /dev/null
+++ b/10-QPID-5499-Fix-Ruby-bindings-when-built-with-Werror-f.patch
@@ -0,0 +1,83 @@
+From ba180ca4a513615339b270f53b5ed78dc4169efe Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <dpierce at redhat.com>
+Date: Tue, 21 Jan 2014 14:16:38 -0500
+Subject: [PATCH] QPID-5499: Fix Ruby/Perl bindings when built with
+ -Werror=format-security
+
+Changed the swig descriptors so that they use a constant format string.
+---
+ qpid/cpp/bindings/qmf2/ruby/ruby.i         | 2 +-
+ qpid/cpp/bindings/qpid/perl/perl.i         | 2 +-
+ qpid/cpp/bindings/qpid/ruby/ruby.i         | 2 +-
+ qpid/cpp/include/qpid/swig_perl_typemaps.i | 2 +-
+ qpid/cpp/include/qpid/swig_ruby_typemaps.i | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/qpid/cpp/bindings/qmf2/ruby/ruby.i b/qpid/cpp/bindings/qmf2/ruby/ruby.i
+index 0254017..65d0770 100644
+--- a/qpid/cpp/bindings/qmf2/ruby/ruby.i
++++ b/qpid/cpp/bindings/qmf2/ruby/ruby.i
+@@ -30,7 +30,7 @@
+     }
+     catch (qpid::types::Exception& mex) {
+         static VALUE qmferror = rb_define_class("QmfError", rb_eStandardError);
+-        rb_raise(qmferror, mex.what());
++        rb_raise(qmferror, "%s", mex.what());
+     }
+ }
+ 
+diff --git a/qpid/cpp/bindings/qpid/perl/perl.i b/qpid/cpp/bindings/qpid/perl/perl.i
+index 0d118ae..4dc2665 100644
+--- a/qpid/cpp/bindings/qpid/perl/perl.i
++++ b/qpid/cpp/bindings/qpid/perl/perl.i
+@@ -27,7 +27,7 @@
+         $action
+     }
+     catch (qpid::messaging::MessagingException& mex) {
+-        Perl_croak(aTHX_ mex.what());
++      Perl_croak(aTHX_ "%s", mex.what());
+     }
+ }
+ 
+diff --git a/qpid/cpp/bindings/qpid/ruby/ruby.i b/qpid/cpp/bindings/qpid/ruby/ruby.i
+index 3d686c2..99d29b0 100644
+--- a/qpid/cpp/bindings/qpid/ruby/ruby.i
++++ b/qpid/cpp/bindings/qpid/ruby/ruby.i
+@@ -30,7 +30,7 @@
+     }
+     catch (qpid::messaging::MessagingException& mex) {
+         static VALUE merror = rb_define_class("MessagingError", rb_eStandardError);
+-        rb_raise(merror, mex.what());
++        rb_raise(merror, "%s", mex.what());
+     }
+ }
+ 
+diff --git a/qpid/cpp/include/qpid/swig_perl_typemaps.i b/qpid/cpp/include/qpid/swig_perl_typemaps.i
+index da24bfe..74d2b07 100644
+--- a/qpid/cpp/include/qpid/swig_perl_typemaps.i
++++ b/qpid/cpp/include/qpid/swig_perl_typemaps.i
+@@ -120,7 +120,7 @@
+             }
+             }
+         } catch (qpid::types::Exception& ex) {
+-            Perl_croak(aTHX_ ex.what());
++          Perl_croak(aTHX_ "%s", ex.what());
+         }
+ 
+         if (!result)
+diff --git a/qpid/cpp/include/qpid/swig_ruby_typemaps.i b/qpid/cpp/include/qpid/swig_ruby_typemaps.i
+index 1a07cc8..4e07088 100644
+--- a/qpid/cpp/include/qpid/swig_ruby_typemaps.i
++++ b/qpid/cpp/include/qpid/swig_ruby_typemaps.i
+@@ -106,7 +106,7 @@
+             }
+         } catch (qpid::types::Exception& ex) {
+             static VALUE error = rb_define_class("Error", rb_eStandardError);
+-            rb_raise(error, ex.what());
++            rb_raise(error, "%s", ex.what());
+         }
+ 
+         return result;
+-- 
+1.8.4.2
+
diff --git a/11-QPID-5656-Updated-Ruby-bindings-to-build-under-CMake.patch b/11-QPID-5656-Updated-Ruby-bindings-to-build-under-CMake.patch
new file mode 100644
index 0000000..daceade
--- /dev/null
+++ b/11-QPID-5656-Updated-Ruby-bindings-to-build-under-CMake.patch
@@ -0,0 +1,83 @@
+From f03365c39909dafc448fd02cef68021b4a4e9659 Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <dpierce at redhat.com>
+Date: Tue, 1 Apr 2014 16:12:48 -0400
+Subject: [PATCH] QPID-5656: Updated Ruby bindings to build under CMake 3.0
+
+CMake 3.0 has reverted to the CMake 2.6 naming for libraries. prepending
+"lib" to only the Ruby library names.
+---
+ qpid/cpp/bindings/qmf/ruby/CMakeLists.txt  | 6 ++++--
+ qpid/cpp/bindings/qmf2/ruby/CMakeLists.txt | 6 ++++--
+ qpid/cpp/bindings/qpid/ruby/CMakeLists.txt | 6 ++++--
+ 3 files changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/qpid/cpp/bindings/qmf/ruby/CMakeLists.txt b/qpid/cpp/bindings/qmf/ruby/CMakeLists.txt
+index 37ce732..88d10ca 100644
+--- a/qpid/cpp/bindings/qmf/ruby/CMakeLists.txt
++++ b/qpid/cpp/bindings/qmf/ruby/CMakeLists.txt
+@@ -36,7 +36,8 @@ swig_link_libraries(qmfengine_ruby qmf qmfconsole ${RUBY_LIBRARY})
+ ##----------------------------------
+ ## Install the complete Ruby binding
+ ##----------------------------------
+-if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR
++    (${CMAKE_MAJOR_VERSION} EQUAL 3))
+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmfengine_ruby.so
+         RENAME qmfengine.so
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+@@ -48,4 +49,5 @@ else()
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+         COMPONENT ${QPID_COMPONENT_CLIENT}
+         )
+-endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR
++       (${CMAKE_MAJOR_VERSION} EQUAL 3))
+diff --git a/qpid/cpp/bindings/qmf2/ruby/CMakeLists.txt b/qpid/cpp/bindings/qmf2/ruby/CMakeLists.txt
+index 4ea61ab..19fe4bf 100644
+--- a/qpid/cpp/bindings/qmf2/ruby/CMakeLists.txt
++++ b/qpid/cpp/bindings/qmf2/ruby/CMakeLists.txt
+@@ -36,7 +36,8 @@ swig_link_libraries(cqmf2_ruby qmf2 ${RUBY_LIBRARY})
+ ##----------------------------------
+ ## Install the complete Ruby binding
+ ##----------------------------------
+-if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR
++    (${CMAKE_MAJOR_VERSION} EQUAL 3))
+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cqmf2_ruby.so
+         RENAME cqmf2.so
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+@@ -48,5 +49,6 @@ else()
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+         COMPONENT ${QPID_COMPONENT_CLIENT}
+         )
+-endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR
++       (${CMAKE_MAJOR_VERSION} EQUAL 2))
+ 
+diff --git a/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt b/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt
+index a56fac7..ec12f00 100644
+--- a/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt
++++ b/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt
+@@ -47,7 +47,8 @@ set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_F
+ ##----------------------------------
+ ## Install the complete Ruby binding
+ ##----------------------------------
+-if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR
++    (${CMAKE_MAJOR_VERSION} EQUAL 3))
+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cqpid_ruby.so
+         RENAME cqpid.so
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+@@ -59,7 +60,8 @@ else()
+         DESTINATION ${RUBY_PFX_ARCH_DIR}
+         COMPONENT ${QPID_COMPONENT_CLIENT}
+         )
+-endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
++endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8) OR 
++       (${CMAKE_MAJOR_VERSION} EQUAL 3))
+ 
+ add_custom_command(OUTPUT ${GEM_BINDINGS_SOURCE_FILE}
+                    COMMAND cp ${swig_generated_file_fullname} ${GEM_BINDINGS_SOURCE_FILE}
+-- 
+1.9.0
+
diff --git a/12-QPID-5718-Dead-code-in-the-HA-codebase.patch b/12-QPID-5718-Dead-code-in-the-HA-codebase.patch
new file mode 100644
index 0000000..0c3dc53
--- /dev/null
+++ b/12-QPID-5718-Dead-code-in-the-HA-codebase.patch
@@ -0,0 +1,42 @@
+From 646736f73f3d73f9c4876f42f5833db8094835f5 Mon Sep 17 00:00:00 2001
+From: Alan Conway <aconway at apache.org>
+Date: Wed, 23 Apr 2014 14:45:13 +0000
+Subject: [PATCH] QPID-5718: Dead code in the HA codebase
+
+Removed: std::ostream& operator<<(std::ostream& o, const QueueSetPrinter& qp)
+Already gone: void collectQueueReplicators(const boost::shared_ptr<Exchange>& ex, set<boost::shared_ptr<QueueReplicator> >& collect)
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1589431 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/src/qpid/ha/RemoteBackup.cpp | 15 ---------------
+ 1 file changed, 15 deletions(-)
+
+diff --git a/qpid/cpp/src/qpid/ha/RemoteBackup.cpp b/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
+index c37d44f..ba5f477 100644
+--- a/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
++++ b/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
+@@ -83,21 +83,6 @@ RemoteBackup::GuardPtr RemoteBackup::guard(const QueuePtr& q) {
+     return guard;
+ }
+ 
+-namespace {
+-typedef std::set<boost::shared_ptr<broker::Queue> > QS;
+-struct QueueSetPrinter {
+-    const QS& qs;
+-    std::string prefix;
+-    QueueSetPrinter(const std::string& p, const QS& q) : qs(q), prefix(p) {}
+-};
+-std::ostream& operator<<(std::ostream& o, const QueueSetPrinter& qp) {
+-    if (!qp.qs.empty()) o << qp.prefix;
+-    for (QS::const_iterator i = qp.qs.begin(); i != qp.qs.end(); ++i)
+-        o << (*i)->getName() << " ";
+-    return o;
+-}
+-}
+-
+ void RemoteBackup::ready(const QueuePtr& q) {
+     catchupQueues.erase(q);
+     if (catchupQueues.size()) {
+-- 
+1.9.0
+
diff --git a/13-NO-JIRA-Removed-dead-code.patch b/13-NO-JIRA-Removed-dead-code.patch
new file mode 100644
index 0000000..3ad971b
--- /dev/null
+++ b/13-NO-JIRA-Removed-dead-code.patch
@@ -0,0 +1,32 @@
+From babbfa9f4373114f3948aab0f2fa1bd79bfc124f Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <dpierce at redhat.com>
+Date: Mon, 28 Apr 2014 08:32:48 -0400
+Subject: [PATCH] NO-JIRA: Removed dead code
+
+---
+ qpid/cpp/src/qpid/ha/BrokerReplicator.cpp | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
+index 17b0018..5d53634 100644
+--- a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
++++ b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
+@@ -347,15 +347,6 @@ void BrokerReplicator::initialize() {
+ 
+ BrokerReplicator::~BrokerReplicator() { shutdown(); }
+ 
+-namespace {
+-void collectQueueReplicators(
+-    const boost::shared_ptr<Exchange> ex, set<boost::shared_ptr<QueueReplicator> >& collect)
+-{
+-    boost::shared_ptr<QueueReplicator> qr(boost::dynamic_pointer_cast<QueueReplicator>(ex));
+-    if (qr) collect.insert(qr);
+-}
+-} // namespace
+-
+ void BrokerReplicator::shutdown() {
+     // NOTE: this is called in a QMF dispatch thread, not the Link's connection
+     // thread.  It's OK to be unlocked because it doesn't use any mutable state,
+-- 
+1.9.0
+
diff --git a/compat-qpid-cpp.spec b/compat-qpid-cpp.spec
new file mode 100644
index 0000000..727688e
--- /dev/null
+++ b/compat-qpid-cpp.spec
@@ -0,0 +1,595 @@
+# compat-qpid-cpp
+
+# Define pkgdocdir for releases that don't define it already
+%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
+
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
+
+# The following macros are no longer used for installation but only for cleanup
+%{!?ruby_sitelib: %global ruby_sitelib %(/usr/bin/ruby -rrbconfig  -e 'puts RbConfig::CONFIG["sitelibdir"] ')}
+%{!?ruby_sitearch: %global ruby_sitearch %(/usr/bin/ruby -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"] ')}
+
+# LIBRARY VERSIONS
+%global QPIDCOMMON_VERSION_INFO             5:0:0
+%global QPIDTYPES_VERSION_INFO              3:0:2
+%global QPIDBROKER_VERSION_INFO             5:0:0
+%global QPIDCLIENT_VERSION_INFO             5:0:0
+%global QPIDMESSAGING_VERSION_INFO          4:0:1
+%global RDMAWRAP_VERSION_INFO               5:0:0
+%global SSLCOMMON_VERSION_INFO              5:0:0
+
+Name:          compat-qpid-cpp
+Version:       0.24
+Release:       11%{?dist}
+Summary:       Libraries for Qpid C++ client applications
+License:       ASL 2.0
+URL:           http://qpid.apache.org
+
+Source0:       http://www.apache.org/dist/qpid/%{version}/qpid-%{version}.tar.gz
+
+Patch01: 01-NO-JIRA-qpidd.service-file-for-use-on-Fedora.patch
+Patch02: 02-QPID-4670-Move-to-proton-0.5-remove-dummy-string-in-.patch
+Patch03: 03-QPID-5122-cleaner-encoding-of-index-for-delivery-tag.patch
+Patch04: 04-QPID-5123-Changes-to-Fedora-19-packaging-of-libdb4-p.patch
+Patch05: 05-QPID-5016-Zero-rmgr-struct-element-with-correct-size.patch
+Patch06: 06-QPID-5126-Fix-for-building-legacy-store-on-ARM-platf.patch
+Patch07: 07-QPID-4582-Get-legacystore-unit-tests-working.patch
+Patch08: 08-QPID-4582-Fixed-unit-legacystore-unit-test-to-remove.patch
+Patch09: 09-QPID-5129-Alignment-issues-on-ARM.patch
+Patch10: 10-QPID-5499-Fix-Ruby-bindings-when-built-with-Werror-f.patch
+Patch11: 11-QPID-5656-Updated-Ruby-bindings-to-build-under-CMake.patch
+Patch12: 12-QPID-5718-Dead-code-in-the-HA-codebase.patch
+Patch13: 13-NO-JIRA-Removed-dead-code.patch
+
+
+BuildRequires: cmake
+BuildRequires: boost-devel
+BuildRequires: libtool
+BuildRequires: doxygen
+BuildRequires: pkgconfig
+BuildRequires: ruby
+BuildRequires: ruby-devel
+BuildRequires: python
+BuildRequires: python-devel
+BuildRequires: perl
+BuildRequires: perl-devel
+BuildRequires: swig
+BuildRequires: cyrus-sasl-devel
+BuildRequires: cyrus-sasl-lib
+BuildRequires: cyrus-sasl
+BuildRequires: boost-program-options
+BuildRequires: boost-filesystem
+BuildRequires: libuuid-devel
+%ifnarch s390 s390x %{arm}
+BuildRequires: libibverbs-devel
+BuildRequires: librdmacm-devel
+%endif
+BuildRequires: nss-devel
+BuildRequires: nspr-devel
+BuildRequires: xqilla-devel
+BuildRequires: xerces-c-devel
+BuildRequires: libdb-devel
+BuildRequires: libdb4-cxx-devel
+BuildRequires: libaio-devel
+BuildRequires: qpid-proton-c-devel%{?_isa} >= 0.5
+
+
+%description
+
+Run-time libraries for AMQP client applications developed using Qpid
+C++. Clients exchange messages with an AMQP message broker using
+the AMQP protocol.
+
+
+
+%package client
+Conflicts: qpid-cpp-client
+Summary:   Libraries for Qpid C++ client applications
+
+Provides:  qpid(client)%{?_isa} = %{version}
+Provides:  qpid-cpp-client-ssl = %{version}
+Obsoletes: qpid-cpp-client-ssl < 0.24
+
+Requires:  boost
+Requires:  chkconfig
+Requires:  initscripts
+Requires:  qpid-proton-c%{?_isa} >= 0.5
+
+%description client
+Run-time libraries for AMQP client applications developed using Qpid
+C++. Clients exchange messages with an AMQP message broker using
+the AMQP protocol.
+
+%files client
+%doc cpp/DESIGN
+# %doc cpp/INSTALL
+%doc cpp/LICENSE
+%doc cpp/NOTICE
+%doc cpp/README.txt
+%doc cpp/RELEASE_NOTES
+%{_libdir}/libqpidcommon.so.2*
+%{_libdir}/libqpidclient.so.2*
+%{_libdir}/libqpidtypes.so.1*
+%{_libdir}/libqpidmessaging.so.2*
+%dir %{_libdir}/qpid
+
+%ifnarch %{arm}
+%{_libdir}/qpid/client
+%exclude %{_libdir}/qpid/client/rdmaconnector.so*
+%endif
+
+%dir %{_sysconfdir}/qpid
+%config(noreplace) %{_sysconfdir}/qpid/qpidc.conf
+
+%post client -p /sbin/ldconfig
+
+%postun client -p /sbin/ldconfig
+
+
+
+%package client-devel
+Conflicts: qpid-cpp-client-devel
+Summary:   Header files, documentation and testing tools for developing Qpid C++ clients
+
+Provides:  qpid(client-devel)%{?_isa} = %{version}
+Requires:  qpid(client)%{?_isa} = %{version}
+Requires:  boost-devel
+Requires:  boost-filesystem
+Requires:  boost-program-options
+Requires:  libuuid-devel
+Requires:  python
+
+%description client-devel
+Libraries, header files and documentation for developing AMQP clients
+in C++ using Qpid.  Qpid implements the AMQP messaging specification.
+
+%files client-devel
+%dir %{_includedir}/qpid
+%{_includedir}/qpid/*.h
+%{_includedir}/qpid/qpid.i
+%{_includedir}/qpid/swig_perl_typemaps.i
+%{_includedir}/qpid/swig_python_typemaps.i
+%{_includedir}/qpid/swig_ruby_typemaps.i
+%{_includedir}/qpid/amqp_0_10
+%{_includedir}/qpid/client
+%{_includedir}/qpid/console
+%{_includedir}/qpid/framing
+%{_includedir}/qpid/sys
+%{_includedir}/qpid/log
+%{_includedir}/qpid/management
+%{_includedir}/qpid/messaging
+%{_includedir}/qpid/agent
+%{_includedir}/qpid/types
+%{_libdir}/libqpidcommon.so
+%{_libdir}/libqpidclient.so
+%{_libdir}/libqpidtypes.so
+%{_libdir}/libqpidmessaging.so
+%{_libdir}/pkgconfig/qpid.pc
+%{_datadir}/qpid
+%{_bindir}/qpid-perftest
+%{_bindir}/qpid-topic-listener
+%{_bindir}/qpid-topic-publisher
+%{_bindir}/qpid-latency-test
+%{_bindir}/qpid-client-test
+%{_bindir}/qpid-txtest
+# %{_datadir}/qpid/examples
+%{_libexecdir}/qpid
+
+%post client-devel -p /sbin/ldconfig
+
+%postun client-devel -p /sbin/ldconfig
+
+
+
+%package client-devel-docs
+Conflicts: qpid-cpp-client-devel-docs
+Provides:  qpid-cpp-client-devel-docs
+Summary:   AMQP client development documentation
+
+BuildArch: noarch
+
+%description client-devel-docs
+This package includes the AMQP clients development documentation in HTML
+format for easy browsing.
+
+%files client-devel-docs
+%doc %{_pkgdocdir}
+
+
+
+%package server
+Conflicts: qpid-cpp-server
+Provides:  qpid-cpp-server
+Summary:   An AMQP message broker daemon
+
+Provides:  qpid(server)%{?_isa} = %{version}
+
+# Remove with 0.28
+Provides:      qpid-cpp-server-ssl = %{version}
+Obsoletes:     qpid-cpp-server-ssl < 0.24
+
+Requires:  qpid(client)%{?_isa} = %{version}
+Requires:  cyrus-sasl
+Requires:  qpid-proton-c%{?_isa} >= 0.5
+
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+
+%description server
+A message broker daemon that receives stores and routes messages using
+the open AMQP messaging protocol.
+
+%files server
+%{_libdir}/libqpidbroker.so*
+%{_sbindir}/qpidd
+%{_unitdir}/qpidd.service
+%config(noreplace) %{_sysconfdir}/qpid/qpidd.conf
+%config(noreplace) %{_sysconfdir}/sasl2/qpidd.conf
+%{_libdir}/qpid/daemon/*
+%exclude %{_libdir}/qpid/daemon/rdma.so
+%attr(755, qpidd, qpidd) %{_localstatedir}/lib/qpidd
+%ghost %attr(755, qpidd, qpidd) /var/run/qpidd
+#%attr(600, qpidd, qpidd) %config(noreplace) %{_localstatedir}/lib/qpidd/qpidd.sasldb
+%doc %{_mandir}/man1/qpidd*
+
+%pre server
+getent group qpidd >/dev/null || groupadd -r qpidd
+getent passwd qpidd >/dev/null || \
+  useradd -r -M -g qpidd -d %{_localstatedir}/lib/qpidd -s /sbin/nologin \
+    -c "Owner of Qpidd Daemons" qpidd
+exit 0
+
+%post server
+/sbin/ldconfig
+if [ $1 -eq 1 ]; then
+    # Initial installation
+    /bin/systemctl --no-reload enable qpidd.service >/dev/null 2>&1 || :
+fi
+
+%preun server
+if [ $1 -eq 0 ]; then
+   # Package removal, not upgrade
+   /bin/systemctl --no-reload disable qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
+fi
+
+%postun server
+if [ $1 -ge 1 ]; then
+   # Package upgrade, not uninstall
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl start qpidd.service > /dev/null 2>&1 || :
+fi
+/sbin/ldconfig
+
+
+
+%package server-ha
+Conflicts: qpid-cpp-server-ha
+Provides:  qpid-cpp-server-ha
+Summary:   Provides extensions to the AMQP message broker to provide high availability
+
+Provides: qpid(server-ha)%{?_isa} = %{version}
+Requires: qpid(server)%{?_isa} = %{version}
+Requires: qpid-qmf%{?_isa}
+
+%description server-ha
+%{summary}.
+
+%files server-ha
+%{_bindir}/qpid-ha
+%{_initrddir}/qpidd-primary
+%{_libdir}/qpid/daemon/ha.so
+
+%post server-ha
+/sbin/chkconfig --add qpidd-primary
+/sbin/ldconfig
+
+%preun server-ha
+if [ $1 = 0 ]; then
+  /sbin/service qpidd-primary stop > /dev/null 2>&1 || :
+  /sbin/chkconfig --del qpidd-primary
+fi
+
+%postun server-ha
+if [ $1 -ge 1 ]; then
+  /sbin/service qpidd-primary condrestart >/dev/null 2>&1 || :
+fi
+/sbin/ldconfig
+
+
+
+%ifnarch s390 s390x %{arm}
+%package client-rdma
+Conflicts: qpid-cpp-client-rdma
+Provides:  qpid-cpp-client-rdma
+Summary:    RDMA Protocol support (including Infiniband) for Qpid clients
+
+Provides:  qpid(client-rdma)%{?_isa} = %{version}
+Requires:  qpid(client)%{?_isa} = %{version}
+
+%description client-rdma
+A client plugin and support library to support RDMA protocols (including
+Infiniband) as the transport for Qpid messaging.
+
+%files client-rdma
+%{_libdir}/librdmawrap.so*
+%{_libdir}/qpid/client/rdmaconnector.so*
+%config(noreplace) %{_sysconfdir}/qpid/qpidc.conf
+
+%post client-rdma -p /sbin/ldconfig
+
+%postun client-rdma -p /sbin/ldconfig
+
+
+
+%package server-rdma
+Conflicts: qpid-cpp-server-rdma
+Provides:  qpid-cpp-server-rdma
+Summary:   RDMA Protocol support (including Infiniband) for the Qpid daemon
+
+Provides:  qpid(server-rdma)%{?_isa} = %{version}
+Requires:  qpid(server)%{?_isa} = %{version}
+Requires:  qpid(client-rdma)%{?_isa} = %{version}
+
+%description server-rdma
+A Qpid daemon plugin to support RDMA protocols (including Infiniband) as the
+transport for AMQP messaging.
+
+%files server-rdma
+%{_libdir}/qpid/daemon/rdma.so
+
+%post server-rdma -p /sbin/ldconfig
+
+%postun server-rdma -p /sbin/ldconfig
+%endif
+
+
+
+%package server-xml
+Conflicts: qpid-cpp-server-xml
+Provides:  qpid-cpp-server-xml
+Summary:   XML extensions for the Qpid daemon
+
+Provides:  qpid(server-xml)%{?_isa} = %{version}
+Requires:  qpid(server)%{?_isa} = %{version}
+Requires:  xqilla
+Requires:  xerces-c
+
+%description server-xml
+A Qpid daemon plugin to support extended XML-based routing of AMQP
+messages.
+
+%files server-xml
+%{_libdir}/qpid/daemon/xml.so
+
+%post server-xml -p /sbin/ldconfig
+
+%postun server-xml -p /sbin/ldconfig
+
+
+
+%package server-store
+Conflicts: qpid-cpp-server-store
+Provides:  qpid-cpp-server-store
+Summary:   Red Hat persistence extension to the Qpid messaging system
+License:   LGPLv2+
+
+Provides:  qpid(server-store)%{?_isa} = %{version}
+Requires:  qpid(server)%{?_isa} = %{version}
+Requires:  db4
+# Requires:  libaio
+
+%description server-store
+Red Hat persistence extension to the Qpid AMQP broker: persistent message
+storage using either a libaio-based asynchronous journal, or synchronously
+with Berkeley DB.
+
+%files server-store
+%{_libdir}/qpid/daemon/store.so
+
+%post server-store -p /sbin/ldconfig
+
+%postun server-store -p /sbin/ldconfig
+
+
+%package -n compat-qpid-tools
+Conflicts: qpid-tools
+Provides:  qpid-tools
+Summary:   Management and diagnostic tools for Apache Qpid
+
+BuildArch: noarch
+
+Requires:  python-qpid >= 0.8
+Requires:  python-qpid-qmf
+
+%description -n compat-qpid-tools
+Management and diagnostic tools for Apache Qpid brokers and clients.
+
+%files -n compat-qpid-tools
+%{_bindir}/qpid-cluster
+%{_bindir}/qpid-cluster-store
+%{_bindir}/qpid-config
+%{_bindir}/qpid-printevents
+%{_bindir}/qpid-queue-stats
+%{_bindir}/qpid-route
+%{_bindir}/qpid-stat
+%{_bindir}/qpid-tool
+%doc LICENSE NOTICE
+%if "%{python_version}" >= "2.6"
+%{python_sitelib}/qpid_tools-*.egg-info
+%endif
+
+
+
+%prep
+%setup -q -n qpid-%{version}
+
+%patch01 -p2
+%patch02 -p2
+%patch03 -p2
+%patch04 -p2
+%patch05 -p2
+%patch06 -p2
+%patch07 -p2
+%patch08 -p2
+%patch09 -p2
+%patch10 -p2
+%patch11 -p2
+%patch12 -p2
+%patch13 -p2
+
+%global perftests "qpid-perftest qpid-topic-listener qpid-topic-publisher qpid-latency-test qpid-client-test qpid-txtest"
+
+%global rh_qpid_tests_failover "failover_soak run_failover_soak"
+
+%global rh_qpid_tests_clients "replaying_sender resuming_receiver declare_queues"
+
+%build
+pushd cpp
+%cmake -DDOC_INSTALL_DIR:PATH=%{_pkgdocdir} -DCMAKE_SKIP_RPATH:BOOL=ON .
+make %{?_smp_mflags}
+make docs-user-api
+
+pushd ../python
+./setup.py build
+popd
+pushd ../tools
+./setup.py build
+popd
+
+popd
+
+%install
+mkdir -p -m0755 %{buildroot}/%{_bindir}
+mkdir -p -m0755 %{buildroot}/%{_unitdir}
+
+pushd python
+%{__python} setup.py install \
+   --skip-build \
+   --install-purelib %{python_sitearch} \
+   --root %{buildroot}
+popd
+
+pushd tools
+%{__python} setup.py install \
+    --skip-build \
+    --install-purelib %{python_sitelib} \
+    --root %{buildroot}
+popd
+
+pushd cpp
+make install DESTDIR=%{buildroot}/
+
+# clean up items we're not installing
+rm -f %{buildroot}/%{_libdir}/libqpidbroker.so
+rm -f %{buildroot}/%{_libdir}/libcqpid_perl.so
+rm -f %{buildroot}/%{_libdir}/ruby/cqmf2.so
+rm -f %{buildroot}/%{_libdir}/ruby/cqpid.so
+rm -f %{buildroot}/%{_libdir}/ruby/qmfengine.so
+rm -f %{buildroot}/%{ruby_sitelib}
+rm -rf %{buildroot}/%{_libdir}/perl5
+
+# install systemd files
+mkdir -p %{buildroot}/%{_unitdir}
+install -pm 644 %{_builddir}/qpid-%{version}/cpp/etc/qpidd.service %{buildroot}/%{_unitdir}
+rm -f %{buildroot}/%{_initrddir}/qpidd
+rm -f %{buildroot}/%{_sysconfdir}/init.d/qpidd.service
+
+# install perftests utilities
+mkdir -p %{buildroot}/%{_bindir}
+pushd src/tests
+for ptest in %{perftests}; do
+  libtool --mode=install install -m755 $ptest %{buildroot}/%{_bindir}
+done
+popd
+
+mkdir -p %{buildroot}/%{_localstatedir}/run
+touch %{buildroot}/%{_localstatedir}/run/qpidd
+
+popd
+
+# clean up leftover ruby files
+rm -rf %{buildroot}/usr/local/%{_lib}/ruby/site_ruby
+
+
+%check
+
+
+%post -p /sbin/ldconfig
+
+
+%postun -p /sbin/ldconfig
+
+
+
+%files
+%exclude %{_bindir}/qmf-gen
+%exclude %{_bindir}/qmf-tool
+%exclude %{_libdir}/libqmf*
+%exclude %{_includedir}/qmf
+%exclude %{python_sitelib}/qmfgen
+%exclude %{_libdir}/pkgconfig/qmf2.pc
+%exclude %{python_sitelib}/qpidtoollibs
+
+%exclude %{python_sitearch}/cqpid.py*
+%exclude %{python_sitearch}/_cqpid.so
+%exclude %{python_sitearch}/qmf.py*
+%exclude %{python_sitearch}/qmfengine.py*
+%exclude %{python_sitearch}/_qmfengine.so
+%exclude %{python_sitearch}/qmf2.py*
+%exclude %{python_sitearch}/cqmf2.py*
+%exclude %{python_sitearch}/_cqmf2.so
+%exclude %{_bindir}/qpid-python-test
+%exclude %{python_sitearch}/mllib
+%exclude %{python_sitearch}/qpid
+%exclude %{python_sitearch}/*.egg-info
+
+%ifnarch %{arm}
+# %exclude %{python_sitearch}/qmf
+# %exclude %{ruby_vendorlibdir}/qmf*
+# %exclude %{ruby_vendorarchdir}/cqpid.so
+# %exclude %{ruby_vendorarchdir}/*qmf*
+%endif
+
+
+%changelog
+* Tue May 27 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-11
+- First build for Fedora.
+- Resolves: BZ#1080583
+
+* Wed May 21 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-10
+- Added missing version to virtual packages.
+
+* Wed May 21 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-9
+- Changed client packages to provide the virtual qpid() packages.
+
+* Tue May 13 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-8
+- Fixed packages to provide the originals with which they conflict.
+
+* Tue May 13 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-7
+- Fixed ownership of /usr/lib{64}/qpid and /usr/libexec/qpid
+
+* Mon May 12 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-6
+- Updated ruby path macros to use RbConfig instead of Config.
+- Fixed files for -client package to be more explicit.
+
+* Fri May  2 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-5
+- Fixed CMake build to remove rpath data from binaries.
+
+* Tue Apr 29 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-4
+- Fixes based on package review feedback:
+-   * Packages still requiring others from qpid-cpp
+
+* Mon Apr 28 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-3
+- Removed unnecessary defattr.
+- Added patch to remove dead/unused code.
+- Removed clean directive.
+
+* Tue Apr  1 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-2
+- Updated to build against CMake 3.0.
+
+* Mon Mar 24 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-1
+- Initial compatability packaging.
+
diff --git a/compat-qpid-cpp.spec~ b/compat-qpid-cpp.spec~
new file mode 100644
index 0000000..f3d75fd
--- /dev/null
+++ b/compat-qpid-cpp.spec~
@@ -0,0 +1,585 @@
+# compat-qpid-cpp
+
+# Define pkgdocdir for releases that don't define it already
+%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
+
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
+
+# The following macros are no longer used for installation but only for cleanup
+%{!?ruby_sitelib: %global ruby_sitelib %(/usr/bin/ruby -rrbconfig  -e 'puts RbConfig::CONFIG["sitelibdir"] ')}
+%{!?ruby_sitearch: %global ruby_sitearch %(/usr/bin/ruby -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"] ')}
+
+# LIBRARY VERSIONS
+%global QPIDCOMMON_VERSION_INFO             5:0:0
+%global QPIDTYPES_VERSION_INFO              3:0:2
+%global QPIDBROKER_VERSION_INFO             5:0:0
+%global QPIDCLIENT_VERSION_INFO             5:0:0
+%global QPIDMESSAGING_VERSION_INFO          4:0:1
+%global RDMAWRAP_VERSION_INFO               5:0:0
+%global SSLCOMMON_VERSION_INFO              5:0:0
+
+Name:          compat-qpid-cpp
+Version:       0.24
+Release:       10%{?dist}
+Summary:       Libraries for Qpid C++ client applications
+License:       ASL 2.0
+URL:           http://qpid.apache.org
+
+Source0:       http://www.apache.org/dist/qpid/%{version}/qpid-%{version}.tar.gz
+
+Patch01: 01-NO-JIRA-qpidd.service-file-for-use-on-Fedora.patch
+Patch02: 02-QPID-4670-Move-to-proton-0.5-remove-dummy-string-in-.patch
+Patch03: 03-QPID-5122-cleaner-encoding-of-index-for-delivery-tag.patch
+Patch04: 04-QPID-5123-Changes-to-Fedora-19-packaging-of-libdb4-p.patch
+Patch05: 05-QPID-5016-Zero-rmgr-struct-element-with-correct-size.patch
+Patch06: 06-QPID-5126-Fix-for-building-legacy-store-on-ARM-platf.patch
+Patch07: 07-QPID-4582-Get-legacystore-unit-tests-working.patch
+Patch08: 08-QPID-4582-Fixed-unit-legacystore-unit-test-to-remove.patch
+Patch09: 09-QPID-5129-Alignment-issues-on-ARM.patch
+Patch10: 10-QPID-5499-Fix-Ruby-bindings-when-built-with-Werror-f.patch
+Patch11: 11-QPID-5656-Updated-Ruby-bindings-to-build-under-CMake.patch
+Patch12: 12-QPID-5718-Dead-code-in-the-HA-codebase.patch
+Patch13: 13-NO-JIRA-Removed-dead-code.patch
+
+
+BuildRequires: cmake
+BuildRequires: boost-devel
+BuildRequires: libtool
+BuildRequires: doxygen
+BuildRequires: pkgconfig
+BuildRequires: ruby
+BuildRequires: ruby-devel
+BuildRequires: python
+BuildRequires: python-devel
+BuildRequires: perl
+BuildRequires: perl-devel
+BuildRequires: swig
+BuildRequires: cyrus-sasl-devel
+BuildRequires: cyrus-sasl-lib
+BuildRequires: cyrus-sasl
+BuildRequires: boost-program-options
+BuildRequires: boost-filesystem
+BuildRequires: libuuid-devel
+%ifnarch s390 s390x %{arm}
+BuildRequires: libibverbs-devel
+BuildRequires: librdmacm-devel
+%endif
+BuildRequires: nss-devel
+BuildRequires: nspr-devel
+BuildRequires: xqilla-devel
+BuildRequires: xerces-c-devel
+BuildRequires: libdb-devel
+BuildRequires: libdb4-cxx-devel
+BuildRequires: libaio-devel
+BuildRequires: qpid-proton-c-devel%{?_isa} >= 0.5
+
+
+%description
+
+Run-time libraries for AMQP client applications developed using Qpid
+C++. Clients exchange messages with an AMQP message broker using
+the AMQP protocol.
+
+
+
+%package client
+Conflicts: qpid-cpp-client
+Summary:   Libraries for Qpid C++ client applications
+
+Provides:  qpid(client) = %{version}
+Provides:  qpid-cpp-client-ssl = %{version}
+Obsoletes: qpid-cpp-client-ssl < 0.24
+
+Requires:  boost
+Requires:  chkconfig
+Requires:  initscripts
+Requires:  qpid-proton-c%{?_isa} >= 0.5
+
+%description client
+Run-time libraries for AMQP client applications developed using Qpid
+C++. Clients exchange messages with an AMQP message broker using
+the AMQP protocol.
+
+%files client
+%doc cpp/DESIGN
+# %doc cpp/INSTALL
+%doc cpp/LICENSE
+%doc cpp/NOTICE
+%doc cpp/README.txt
+%doc cpp/RELEASE_NOTES
+%{_libdir}/libqpidcommon.so.2*
+%{_libdir}/libqpidclient.so.2*
+%{_libdir}/libqpidtypes.so.1*
+%{_libdir}/libqpidmessaging.so.2*
+%dir %{_libdir}/qpid
+
+%ifnarch %{arm}
+%{_libdir}/qpid/client
+%exclude %{_libdir}/qpid/client/rdmaconnector.so*
+%endif
+
+%dir %{_sysconfdir}/qpid
+%config(noreplace) %{_sysconfdir}/qpid/qpidc.conf
+
+%post client -p /sbin/ldconfig
+
+%postun client -p /sbin/ldconfig
+
+
+
+%package client-devel
+Conflicts: qpid-cpp-client-devel
+Summary:   Header files, documentation and testing tools for developing Qpid C++ clients
+
+Provides:  qpid(client-devel) = %{version}
+
+Requires:  compat-qpid-cpp-client%{?_isa} = %{version}-%{release}
+Requires:  boost-devel
+Requires:  boost-filesystem
+Requires:  boost-program-options
+Requires:  libuuid-devel
+Requires:  python
+
+%description client-devel
+Libraries, header files and documentation for developing AMQP clients
+in C++ using Qpid.  Qpid implements the AMQP messaging specification.
+
+%files client-devel
+%dir %{_includedir}/qpid
+%{_includedir}/qpid/*.h
+%{_includedir}/qpid/qpid.i
+%{_includedir}/qpid/swig_perl_typemaps.i
+%{_includedir}/qpid/swig_python_typemaps.i
+%{_includedir}/qpid/swig_ruby_typemaps.i
+%{_includedir}/qpid/amqp_0_10
+%{_includedir}/qpid/client
+%{_includedir}/qpid/console
+%{_includedir}/qpid/framing
+%{_includedir}/qpid/sys
+%{_includedir}/qpid/log
+%{_includedir}/qpid/management
+%{_includedir}/qpid/messaging
+%{_includedir}/qpid/agent
+%{_includedir}/qpid/types
+%{_libdir}/libqpidcommon.so
+%{_libdir}/libqpidclient.so
+%{_libdir}/libqpidtypes.so
+%{_libdir}/libqpidmessaging.so
+%{_libdir}/pkgconfig/qpid.pc
+%{_datadir}/qpid
+%{_bindir}/qpid-perftest
+%{_bindir}/qpid-topic-listener
+%{_bindir}/qpid-topic-publisher
+%{_bindir}/qpid-latency-test
+%{_bindir}/qpid-client-test
+%{_bindir}/qpid-txtest
+# %{_datadir}/qpid/examples
+%{_libexecdir}/qpid
+
+%post client-devel -p /sbin/ldconfig
+
+%postun client-devel -p /sbin/ldconfig
+
+
+
+%package client-devel-docs
+Conflicts: qpid-cpp-client-devel-docs
+Provides:  qpid-cpp-client-devel-docs
+Summary:   AMQP client development documentation
+
+BuildArch: noarch
+
+%description client-devel-docs
+This package includes the AMQP clients development documentation in HTML
+format for easy browsing.
+
+%files client-devel-docs
+%doc %{_pkgdocdir}
+
+
+
+%package server
+Conflicts: qpid-cpp-server
+Provides:  qpid-cpp-server
+Summary:   An AMQP message broker daemon
+
+# Remove with 0.28
+Provides:      qpid-cpp-server-ssl = %{version}
+Obsoletes:     qpid-cpp-server-ssl < 0.24
+
+Requires:  compat-qpid-cpp-client%{?_isa} = %{version}-%{release}
+Requires:  cyrus-sasl
+Requires:  qpid-proton-c%{?_isa} >= 0.5
+
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+
+%description server
+A message broker daemon that receives stores and routes messages using
+the open AMQP messaging protocol.
+
+%files server
+%{_libdir}/libqpidbroker.so*
+%{_sbindir}/qpidd
+%{_unitdir}/qpidd.service
+%config(noreplace) %{_sysconfdir}/qpid/qpidd.conf
+%config(noreplace) %{_sysconfdir}/sasl2/qpidd.conf
+%{_libdir}/qpid/daemon/*
+%exclude %{_libdir}/qpid/daemon/rdma.so
+%attr(755, qpidd, qpidd) %{_localstatedir}/lib/qpidd
+%ghost %attr(755, qpidd, qpidd) /var/run/qpidd
+#%attr(600, qpidd, qpidd) %config(noreplace) %{_localstatedir}/lib/qpidd/qpidd.sasldb
+%doc %{_mandir}/man1/qpidd*
+
+%pre server
+getent group qpidd >/dev/null || groupadd -r qpidd
+getent passwd qpidd >/dev/null || \
+  useradd -r -M -g qpidd -d %{_localstatedir}/lib/qpidd -s /sbin/nologin \
+    -c "Owner of Qpidd Daemons" qpidd
+exit 0
+
+%post server
+/sbin/ldconfig
+if [ $1 -eq 1 ]; then
+    # Initial installation
+    /bin/systemctl --no-reload enable qpidd.service >/dev/null 2>&1 || :
+fi
+
+%preun server
+if [ $1 -eq 0 ]; then
+   # Package removal, not upgrade
+   /bin/systemctl --no-reload disable qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
+fi
+
+%postun server
+if [ $1 -ge 1 ]; then
+   # Package upgrade, not uninstall
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl start qpidd.service > /dev/null 2>&1 || :
+fi
+/sbin/ldconfig
+
+
+
+%package server-ha
+Conflicts: qpid-cpp-server-ha
+Provides:  qpid-cpp-server-ha
+Summary:   Provides extensions to the AMQP message broker to provide high availability
+
+Requires: compat-qpid-cpp-server%{?_isa} = %{version}-%{release}
+Requires: qpid-qmf%{?_isa}
+
+%description server-ha
+%{summary}.
+
+%files server-ha
+%{_bindir}/qpid-ha
+%{_initrddir}/qpidd-primary
+%{_libdir}/qpid/daemon/ha.so
+
+%post server-ha
+/sbin/chkconfig --add qpidd-primary
+/sbin/ldconfig
+
+%preun server-ha
+if [ $1 = 0 ]; then
+  /sbin/service qpidd-primary stop > /dev/null 2>&1 || :
+  /sbin/chkconfig --del qpidd-primary
+fi
+
+%postun server-ha
+if [ $1 -ge 1 ]; then
+  /sbin/service qpidd-primary condrestart >/dev/null 2>&1 || :
+fi
+/sbin/ldconfig
+
+
+
+%ifnarch s390 s390x %{arm}
+%package client-rdma
+Conflicts: qpid-cpp-client-rdma
+Provides:  qpid-cpp-client-rdma
+Summary:    RDMA Protocol support (including Infiniband) for Qpid clients
+
+Requires:  compat-qpid-cpp-client%{?_isa} = %{version}-%{release}
+
+%description client-rdma
+A client plugin and support library to support RDMA protocols (including
+Infiniband) as the transport for Qpid messaging.
+
+%files client-rdma
+%{_libdir}/librdmawrap.so*
+%{_libdir}/qpid/client/rdmaconnector.so*
+%config(noreplace) %{_sysconfdir}/qpid/qpidc.conf
+
+%post client-rdma -p /sbin/ldconfig
+
+%postun client-rdma -p /sbin/ldconfig
+
+
+
+%package server-rdma
+Conflicts: qpid-cpp-server-rdma
+Provides:  qpid-cpp-server-rdma
+Summary:   RDMA Protocol support (including Infiniband) for the Qpid daemon
+
+Requires:  compat-qpid-cpp-server%{?_isa} = %{version}-%{release}
+Requires:  compat-qpid-cpp-client-rdma%{?_isa} = %{version}-%{release}
+
+%description server-rdma
+A Qpid daemon plugin to support RDMA protocols (including Infiniband) as the
+transport for AMQP messaging.
+
+%files server-rdma
+%{_libdir}/qpid/daemon/rdma.so
+
+%post server-rdma -p /sbin/ldconfig
+
+%postun server-rdma -p /sbin/ldconfig
+%endif
+
+
+
+%package server-xml
+Conflicts: qpid-cpp-server-xml
+Provides:  qpid-cpp-server-xml
+Summary:   XML extensions for the Qpid daemon
+
+Requires:  compat-qpid-cpp-server%{?_isa} = %{version}-%{release}
+Requires:  xqilla
+Requires:  xerces-c
+
+%description server-xml
+A Qpid daemon plugin to support extended XML-based routing of AMQP
+messages.
+
+%files server-xml
+%{_libdir}/qpid/daemon/xml.so
+
+%post server-xml -p /sbin/ldconfig
+
+%postun server-xml -p /sbin/ldconfig
+
+
+
+%package server-store
+Conflicts: qpid-cpp-server-store
+Provides:  qpid-cpp-server-store
+Summary:   Red Hat persistence extension to the Qpid messaging system
+License:   LGPLv2+
+
+Requires:  compat-qpid-cpp-server%{?_isa} = %{version}
+Requires:  db4
+# Requires:  libaio
+
+%description server-store
+Red Hat persistence extension to the Qpid AMQP broker: persistent message
+storage using either a libaio-based asynchronous journal, or synchronously
+with Berkeley DB.
+
+%files server-store
+%{_libdir}/qpid/daemon/store.so
+
+%post server-store -p /sbin/ldconfig
+
+%postun server-store -p /sbin/ldconfig
+
+
+%package -n compat-qpid-tools
+Conflicts: qpid-tools
+Provides:  qpid-tools
+Summary:   Management and diagnostic tools for Apache Qpid
+
+BuildArch: noarch
+
+Requires:  python-qpid >= 0.8
+Requires:  python-qpid-qmf
+
+%description -n compat-qpid-tools
+Management and diagnostic tools for Apache Qpid brokers and clients.
+
+%files -n compat-qpid-tools
+%{_bindir}/qpid-cluster
+%{_bindir}/qpid-cluster-store
+%{_bindir}/qpid-config
+%{_bindir}/qpid-printevents
+%{_bindir}/qpid-queue-stats
+%{_bindir}/qpid-route
+%{_bindir}/qpid-stat
+%{_bindir}/qpid-tool
+%doc LICENSE NOTICE
+%if "%{python_version}" >= "2.6"
+%{python_sitelib}/qpid_tools-*.egg-info
+%endif
+
+
+
+%prep
+%setup -q -n qpid-%{version}
+
+%patch01 -p2
+%patch02 -p2
+%patch03 -p2
+%patch04 -p2
+%patch05 -p2
+%patch06 -p2
+%patch07 -p2
+%patch08 -p2
+%patch09 -p2
+%patch10 -p2
+%patch11 -p2
+%patch12 -p2
+%patch13 -p2
+
+%global perftests "qpid-perftest qpid-topic-listener qpid-topic-publisher qpid-latency-test qpid-client-test qpid-txtest"
+
+%global rh_qpid_tests_failover "failover_soak run_failover_soak"
+
+%global rh_qpid_tests_clients "replaying_sender resuming_receiver declare_queues"
+
+%build
+pushd cpp
+%cmake -DDOC_INSTALL_DIR:PATH=%{_pkgdocdir} -DCMAKE_SKIP_RPATH:BOOL=ON .
+make %{?_smp_mflags}
+make docs-user-api
+
+pushd ../python
+./setup.py build
+popd
+pushd ../tools
+./setup.py build
+popd
+
+popd
+
+%install
+mkdir -p -m0755 %{buildroot}/%{_bindir}
+mkdir -p -m0755 %{buildroot}/%{_unitdir}
+
+pushd python
+%{__python} setup.py install \
+   --skip-build \
+   --install-purelib %{python_sitearch} \
+   --root %{buildroot}
+popd
+
+pushd tools
+%{__python} setup.py install \
+    --skip-build \
+    --install-purelib %{python_sitelib} \
+    --root %{buildroot}
+popd
+
+pushd cpp
+make install DESTDIR=%{buildroot}/
+
+# clean up items we're not installing
+rm -f %{buildroot}/%{_libdir}/libqpidbroker.so
+rm -f %{buildroot}/%{_libdir}/libcqpid_perl.so
+rm -f %{buildroot}/%{_libdir}/ruby/cqmf2.so
+rm -f %{buildroot}/%{_libdir}/ruby/cqpid.so
+rm -f %{buildroot}/%{_libdir}/ruby/qmfengine.so
+rm -f %{buildroot}/%{ruby_sitelib}
+rm -rf %{buildroot}/%{_libdir}/perl5
+
+# install systemd files
+mkdir -p %{buildroot}/%{_unitdir}
+install -pm 644 %{_builddir}/qpid-%{version}/cpp/etc/qpidd.service %{buildroot}/%{_unitdir}
+rm -f %{buildroot}/%{_initrddir}/qpidd
+rm -f %{buildroot}/%{_sysconfdir}/init.d/qpidd.service
+
+# install perftests utilities
+mkdir -p %{buildroot}/%{_bindir}
+pushd src/tests
+for ptest in %{perftests}; do
+  libtool --mode=install install -m755 $ptest %{buildroot}/%{_bindir}
+done
+popd
+
+mkdir -p %{buildroot}/%{_localstatedir}/run
+touch %{buildroot}/%{_localstatedir}/run/qpidd
+
+popd
+
+# clean up leftover ruby files
+rm -rf %{buildroot}/usr/local/%{_lib}/ruby/site_ruby
+
+
+%check
+
+
+%post -p /sbin/ldconfig
+
+
+%postun -p /sbin/ldconfig
+
+
+
+%files
+%exclude %{_bindir}/qmf-gen
+%exclude %{_bindir}/qmf-tool
+%exclude %{_libdir}/libqmf*
+%exclude %{_includedir}/qmf
+%exclude %{python_sitelib}/qmfgen
+%exclude %{_libdir}/pkgconfig/qmf2.pc
+%exclude %{python_sitelib}/qpidtoollibs
+
+%exclude %{python_sitearch}/cqpid.py*
+%exclude %{python_sitearch}/_cqpid.so
+%exclude %{python_sitearch}/qmf.py*
+%exclude %{python_sitearch}/qmfengine.py*
+%exclude %{python_sitearch}/_qmfengine.so
+%exclude %{python_sitearch}/qmf2.py*
+%exclude %{python_sitearch}/cqmf2.py*
+%exclude %{python_sitearch}/_cqmf2.so
+%exclude %{_bindir}/qpid-python-test
+%exclude %{python_sitearch}/mllib
+%exclude %{python_sitearch}/qpid
+%exclude %{python_sitearch}/*.egg-info
+
+%ifnarch %{arm}
+# %exclude %{python_sitearch}/qmf
+# %exclude %{ruby_vendorlibdir}/qmf*
+# %exclude %{ruby_vendorarchdir}/cqpid.so
+# %exclude %{ruby_vendorarchdir}/*qmf*
+%endif
+
+
+%changelog
+* Wed May 21 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-10
+- Added missing version to virtual packages.
+
+* Wed May 21 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-9
+- Changed client packages to provide the virtual qpid() packages.
+
+* Tue May 13 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-8
+- Fixed packages to provide the originals with which they conflict.
+
+* Tue May 13 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-7
+- Fixed ownership of /usr/lib{64}/qpid and /usr/libexec/qpid
+
+* Mon May 12 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-6
+- Updated ruby path macros to use RbConfig instead of Config.
+- Fixed files for -client package to be more explicit.
+
+* Fri May  2 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-5
+- Fixed CMake build to remove rpath data from binaries.
+
+* Tue Apr 29 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-4
+- Fixes based on package review feedback:
+-   * Packages still requiring others from qpid-cpp
+
+* Mon Apr 28 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-3
+- Removed unnecessary defattr.
+- Added patch to remove dead/unused code.
+- Removed clean directive.
+
+* Tue Apr  1 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-2
+- Updated to build against CMake 3.0.
+
+* Mon Mar 24 2014 Darryl L. Pierce <dpierce at redhat.com> - 0.24-1
+- Initial compatability packaging.
+
diff --git a/sources b/sources
index e69de29..e9a1489 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+26fff4ce45352b3949d2263ba9434cb0  qpid-0.24.tar.gz


More information about the scm-commits mailing list