[packages/qpid-cpp] - more fixes in boost patch - added format string fixes to perl patch - added c++ patch (fix invalid
qboosh
qboosh at pld-linux.org
Mon Dec 14 21:29:56 CET 2020
commit 1ea345ac5069755524ae797f037bb633c895c344
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Mon Dec 14 21:30:27 2020 +0100
- more fixes in boost patch
- added format string fixes to perl patch
- added c++ patch (fix invalid ostream operations)
- added corosync (adjust for corosync 2 API)
- added ruby patch (adjust dirs and fix format strings)
- release 0.2
qpid-cpp-boost.patch | 349 ++++++++++++++++++++++++++++++++++++++++++++++++
qpid-cpp-c++.patch | 33 +++++
qpid-cpp-corosync.patch | 163 ++++++++++++++++++++++
qpid-cpp-perl.patch | 22 +++
qpid-cpp-ruby.patch | 77 +++++++++++
qpid-cpp.spec | 36 +++--
6 files changed, 669 insertions(+), 11 deletions(-)
---
diff --git a/qpid-cpp.spec b/qpid-cpp.spec
index 58a540c..0e02231 100644
--- a/qpid-cpp.spec
+++ b/qpid-cpp.spec
@@ -13,7 +13,7 @@ Summary: C++ implementation of the AMQP protocol
Summary(pl.UTF-8): Implementacja protokołu AMQP w C++
Name: qpid-cpp
Version: 0.16
-Release: 0.1
+Release: 0.2
License: Apache v2.0
Group: Libraries
Source0: http://www.us.apache.org/dist/qpid/%{version}/%{name}-%{version}.tar.gz
@@ -23,6 +23,9 @@ Patch1: %{name}-link.patch
Patch2: %{name}-perl.patch
# https://reviews.apache.org/r/5593/
Patch3: %{name}-qmf-broker.patch
+Patch4: %{name}-c++.patch
+Patch5: %{name}-corosync.patch
+Patch6: %{name}-ruby.patch
URL: http://qpid.apache.org/
BuildRequires: acl-devel
BuildRequires: autoconf >= 2.59
@@ -43,7 +46,7 @@ BuildRequires: pkgconfig
BuildRequires: python-devel >= 1:2.7
BuildRequires: rpm-perlprov
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.219
+BuildRequires: rpmbuild(macros) >= 1.745
BuildRequires: ruby-devel >= 1.8
BuildRequires: swig-python >= 1.3.26
BuildRequires: swig-ruby >= 1.3.26
@@ -186,6 +189,18 @@ Wiązania języka Ruby do bibliotek Qpid/C++.
%patch1 -p1
%patch2 -p1
%patch3 -p2
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+
+# deprecated std::auto_ptr
+# "invalid use of incomplete type qpid::framing::Handler<T>"
+%{__sed} -i -e 's/-Werror/-Wno-deprecated/' configure.ac
+
+%{__sed} -i -e '1s,/usr/bin/env python,%{__python},' managementgen/qmf-gen
+
+# force using newer version
+%{__rm} m4/python.m4
%build
%{__libtoolize}
@@ -203,11 +218,11 @@ Wiązania języka Ruby do bibliotek Qpid/C++.
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
+%{__make} -j1 install \
DESTDIR=$RPM_BUILD_ROOT
%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/*.la \
- $RPM_BUILD_ROOT%{ruby_sitearchdir}/*.la \
+ $RPM_BUILD_ROOT%{ruby_vendorarchdir}/*.la \
$RPM_BUILD_ROOT%{_libdir}/qpid/{client,daemon}/*.la
%if %{with static_libs}
%{__rm} $RPM_BUILD_ROOT%{_libdir}/qpid/{client,daemon}/*.a
@@ -215,7 +230,7 @@ rm -rf $RPM_BUILD_ROOT
%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/qpid/tests
install -d $RPM_BUILD_ROOT%{_examplesdir}
-mv $RPM_BUILD_ROOT%{_datadir}/qpidc/examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/qpidc/examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
%py_postclean
@@ -336,7 +351,6 @@ rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%{perl_vendorarch}/cqpid_perl.pm
%dir %{perl_vendorarch}/auto/cqpid_perl
-%{perl_vendorarch}/auto/cqpid_perl/cqpid_perl.bs
%attr(755,root,root) %{perl_vendorarch}/auto/cqpid_perl/cqpid_perl.so
%files -n python-%{name}
@@ -352,8 +366,8 @@ rm -rf $RPM_BUILD_ROOT
%files -n ruby-%{name}
%defattr(644,root,root,755)
-%attr(755,root,root) %{ruby_sitearchdir}/cqmf2.so
-%attr(755,root,root) %{ruby_sitearchdir}/cqpid.so
-%attr(755,root,root) %{ruby_sitearchdir}/qmfengine.so
-%{ruby_sitelibdir}/qmf.rb
-%{ruby_sitelibdir}/qmf2.rb
+%attr(755,root,root) %{ruby_vendorarchdir}/cqmf2.so
+%attr(755,root,root) %{ruby_vendorarchdir}/cqpid.so
+%attr(755,root,root) %{ruby_vendorarchdir}/qmfengine.so
+%{ruby_vendorlibdir}/qmf.rb
+%{ruby_vendorlibdir}/qmf2.rb
diff --git a/qpid-cpp-boost.patch b/qpid-cpp-boost.patch
index 4ad7d32..dd0c556 100644
--- a/qpid-cpp-boost.patch
+++ b/qpid-cpp-boost.patch
@@ -51,3 +51,352 @@
writeFile(file, os.str());
}
catch (const std::exception& e) {
+--- qpidc-0.16/src/qpid/sys/rdma/RdmaServer.cpp.orig 2010-12-23 18:11:57.000000000 +0100
++++ qpidc-0.16/src/qpid/sys/rdma/RdmaServer.cpp 2020-12-12 20:59:07.797183372 +0100
+@@ -119,7 +119,7 @@
+ cout << "Drained:\n";
+ }
+
+-void disconnected(Rdma::Connection::intrusive_ptr& ci) {
++void disconnected(Rdma::Connection::intrusive_ptr ci) {
+ ConRec* cr = ci->getContext<ConRec>();
+ cr->connection->disconnect();
+ cr->data->drainWriteQueue(drained);
+@@ -127,7 +127,7 @@
+ cout << "Disconnected: " << cr << "\n";
+ }
+
+-void connectionError(Rdma::Connection::intrusive_ptr& ci, Rdma::ErrorType) {
++void connectionError(Rdma::Connection::intrusive_ptr ci, Rdma::ErrorType) {
+ ConRec* cr = ci->getContext<ConRec>();
+ cr->connection->disconnect();
+ if (cr) {
+@@ -137,7 +137,7 @@
+ cout << "Connection error: " << cr << "\n";
+ }
+
+-bool connectionRequest(Rdma::Connection::intrusive_ptr& ci, const Rdma::ConnectionParams& cp) {
++bool connectionRequest(Rdma::Connection::intrusive_ptr ci, const Rdma::ConnectionParams& cp) {
+ cout << "Incoming connection: ";
+
+ // For fun reject alternate connection attempts
+@@ -165,7 +165,7 @@
+ return x;
+ }
+
+-void connected(Poller::shared_ptr poller, Rdma::Connection::intrusive_ptr& ci) {
++void connected(Poller::shared_ptr poller, Rdma::Connection::intrusive_ptr ci) {
+ static int cnt = 0;
+ ConRec* cr = ci->getContext<ConRec>();
+ cout << "Connected: " << cr << "(" << ++cnt << ")\n";
+--- qpidc-0.16/src/qpid/sys/rdma/rdma_wrap.cpp.orig 2011-04-27 14:51:26.000000000 +0200
++++ qpidc-0.16/src/qpid/sys/rdma/rdma_wrap.cpp 2020-12-12 21:01:58.282926438 +0100
+@@ -325,7 +325,7 @@
+ {}
+
+ ConnectionEvent::operator bool() const {
+- return event;
++ return !!event;
+ }
+
+ ::rdma_cm_event_type ConnectionEvent::getEventType() const {
+--- qpidc-0.16/src/qpid/sys/posix/Thread.cpp.orig 2011-05-09 21:55:29.000000000 +0200
++++ qpidc-0.16/src/qpid/sys/posix/Thread.cpp 2020-12-12 21:24:04.449075313 +0100
+@@ -55,7 +55,7 @@
+ Thread::Thread(Runnable& runnable) : impl(new ThreadPrivate(&runnable)) {}
+
+ Thread::operator bool() {
+- return impl;
++ return !!impl;
+ }
+
+ bool Thread::operator==(const Thread& t) const {
+--- qpidc-0.16/src/qpid/sys/rdma/RdmaClient.cpp.orig 2010-12-23 18:11:57.000000000 +0100
++++ qpidc-0.16/src/qpid/sys/rdma/RdmaClient.cpp 2020-12-12 21:52:39.243118810 +0100
+@@ -160,7 +160,7 @@
+ cout << "Drained:\n";
+ }
+
+-void connected(Poller::shared_ptr poller, Rdma::Connection::intrusive_ptr& ci, const Rdma::ConnectionParams& cp) {
++void connected(Poller::shared_ptr poller, Rdma::Connection::intrusive_ptr ci, const Rdma::ConnectionParams& cp) {
+ cout << "Connected\n";
+ Rdma::QueuePair::intrusive_ptr q = ci->getQueuePair();
+
+@@ -178,17 +178,17 @@
+ aio->start(poller);
+ }
+
+-void disconnected(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr&) {
++void disconnected(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr) {
+ cout << "Disconnected\n";
+ p->shutdown();
+ }
+
+-void connectionError(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr&, const Rdma::ErrorType) {
++void connectionError(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr, const Rdma::ErrorType) {
+ cout << "Connection error\n";
+ p->shutdown();
+ }
+
+-void rejected(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr&, const Rdma::ConnectionParams&) {
++void rejected(boost::shared_ptr<Poller> p, Rdma::Connection::intrusive_ptr, const Rdma::ConnectionParams&) {
+ cout << "Connection rejected\n";
+ p->shutdown();
+ }
+--- qpidc-0.16/src/qpid/broker/ConnectionHandler.cpp.orig 2012-02-17 15:54:46.000000000 +0100
++++ qpidc-0.16/src/qpid/broker/ConnectionHandler.cpp 2020-12-12 22:11:17.543727122 +0100
+@@ -160,7 +160,7 @@
+ const framing::FieldTable& clientProperties = body.getClientProperties();
+ connection.setClientProperties(clientProperties);
+
+- connection.setFederationLink(clientProperties.get(QPID_FED_LINK));
++ connection.setFederationLink(!!clientProperties.get(QPID_FED_LINK));
+ if (clientProperties.isSet(QPID_FED_TAG)) {
+ connection.setFederationPeerTag(clientProperties.getAsString(QPID_FED_TAG));
+ }
+--- qpidc-0.16/src/qpid/broker/DirectExchange.cpp.orig 2012-03-05 20:12:32.000000000 +0100
++++ qpidc-0.16/src/qpid/broker/DirectExchange.cpp 2020-12-12 22:14:20.136071267 +0100
+@@ -60,7 +60,7 @@
+ fedOp = args->getAsString(qpidFedOp);
+ fedTags = args->getAsString(qpidFedTags);
+ fedOrigin = args->getAsString(qpidFedOrigin);
+- exclusiveBinding = args->get(qpidExclusiveBinding); // only direct exchanges take exclusive bindings
++ exclusiveBinding = !!args->get(qpidExclusiveBinding); // only direct exchanges take exclusive bindings
+ }
+
+ bool propagate = false;
+--- qpidc-0.16/src/qpid/broker/Exchange.cpp.orig 2012-03-05 20:12:32.000000000 +0100
++++ qpidc-0.16/src/qpid/broker/Exchange.cpp 2020-12-12 22:19:45.880973223 +0100
+@@ -203,13 +203,13 @@
+ }
+ }
+
+- sequence = _args.get(qpidMsgSequence);
++ sequence = !!_args.get(qpidMsgSequence);
+ if (sequence) {
+ QPID_LOG(debug, "Configured exchange " << _name << " with Msg sequencing");
+ args.setInt64(std::string(qpidSequenceCounter), sequenceNo);
+ }
+
+- ive = _args.get(qpidIVE);
++ ive = !!_args.get(qpidIVE);
+ if (ive) {
+ if (broker && broker->isInCluster())
+ throw framing::NotImplementedException("Cannot use Initial Value Exchanges in a cluster");
+--- qpidc-0.16/src/qpid/client/SessionBase_0_10.cpp.orig 2010-04-09 17:08:47.000000000 +0200
++++ qpidc-0.16/src/qpid/client/SessionBase_0_10.cpp 2020-12-13 06:32:59.740649521 +0100
+@@ -73,7 +73,7 @@
+
+ SessionId SessionBase_0_10::getId() const { return impl->getId(); }
+
+-bool SessionBase_0_10::isValid() const { return impl; }
++bool SessionBase_0_10::isValid() const { return !!impl; }
+
+ Connection SessionBase_0_10::getConnection()
+ {
+--- qpidc-0.16/src/qpid/cluster/ClusterMap.cpp.orig 2012-03-22 19:51:28.000000000 +0100
++++ qpidc-0.16/src/qpid/cluster/ClusterMap.cpp 2020-12-13 07:07:40.639376325 +0100
+@@ -28,10 +28,6 @@
+ #include <iterator>
+ #include <ostream>
+
+-using namespace std;
+-using boost::ref;
+-using boost::optional;
+-
+ namespace qpid {
+ using namespace framing;
+
+@@ -42,7 +38,7 @@
+ void addFieldTableValue(FieldTable::ValueMap::value_type vt, ClusterMap::Map& map, ClusterMap::Set& set) {
+ MemberId id(vt.first);
+ set.insert(id);
+- string url = vt.second->get<string>();
++ std::string url = vt.second->get<string>();
+ if (!url.empty())
+ map.insert(ClusterMap::Map::value_type(id, Url(url)));
+ }
+@@ -56,7 +52,7 @@
+ ClusterMap::ClusterMap() : frameSeq(0) {}
+
+ ClusterMap::ClusterMap(const Map& map) : frameSeq(0) {
+- transform(map.begin(), map.end(), inserter(alive, alive.begin()), bind(&Map::value_type::first, _1));
++ std::transform(map.begin(), map.end(), std::inserter(alive, alive.begin()), boost::bind(&Map::value_type::first, _1));
+ members = map;
+ }
+
+@@ -64,19 +60,19 @@
+ framing::SequenceNumber frameSeq_)
+ : frameSeq(frameSeq_)
+ {
+- for_each(joinersFt.begin(), joinersFt.end(), bind(&addFieldTableValue, _1, ref(joiners), ref(alive)));
+- for_each(membersFt.begin(), membersFt.end(), bind(&addFieldTableValue, _1, ref(members), ref(alive)));
++ for_each(joinersFt.begin(), joinersFt.end(), boost::bind(&addFieldTableValue, _1, boost::ref(joiners), boost::ref(alive)));
++ for_each(membersFt.begin(), membersFt.end(), boost::bind(&addFieldTableValue, _1, boost::ref(members), boost::ref(alive)));
+ }
+
+ void ClusterMap::toMethodBody(framing::ClusterConnectionMembershipBody& b) const {
+ b.getJoiners().clear();
+- for_each(joiners.begin(), joiners.end(), bind(&insertFieldTableFromMapValue, ref(b.getJoiners()), _1));
++ for_each(joiners.begin(), joiners.end(), boost::bind(&insertFieldTableFromMapValue, boost::ref(b.getJoiners()), _1));
+ for(Set::const_iterator i = alive.begin(); i != alive.end(); ++i) {
+ if (!isMember(*i) && !isJoiner(*i))
+ b.getJoiners().setString(i->str(), string());
+ }
+ b.getMembers().clear();
+- for_each(members.begin(), members.end(), bind(&insertFieldTableFromMapValue, ref(b.getMembers()), _1));
++ for_each(members.begin(), members.end(), boost::bind(&insertFieldTableFromMapValue, boost::ref(b.getMembers()), _1));
+ b.setFrameSeq(frameSeq);
+ }
+
+@@ -89,21 +85,21 @@
+ return joiners.empty() ? MemberId() : joiners.begin()->first;
+ }
+
+-vector<string> ClusterMap::memberIds() const {
+- vector<string> ids;
++std::vector<string> ClusterMap::memberIds() const {
++ std::vector<string> ids;
+ for (Map::const_iterator iter = members.begin();
+ iter != members.end(); iter++) {
+- stringstream stream;
++ std::stringstream stream;
+ stream << iter->first;
+ ids.push_back(stream.str());
+ }
+ return ids;
+ }
+
+-vector<Url> ClusterMap::memberUrls() const {
+- vector<Url> urls(members.size());
+- transform(members.begin(), members.end(), urls.begin(),
+- bind(&Map::value_type::second, _1));
++std::vector<Url> ClusterMap::memberUrls() const {
++ std::vector<Url> urls(members.size());
++ std::transform(members.begin(), members.end(), urls.begin(),
++ boost::bind(&Map::value_type::second, _1));
+ return urls;
+ }
+
+@@ -111,18 +107,18 @@
+
+ ClusterMap::Set ClusterMap::getMembers() const {
+ Set s;
+- transform(members.begin(), members.end(), inserter(s, s.begin()),
+- bind(&Map::value_type::first, _1));
++ std::transform(members.begin(), members.end(), std::inserter(s, s.begin()),
++ boost::bind(&Map::value_type::first, _1));
+ return s;
+ }
+
+-ostream& operator<<(ostream& o, const ClusterMap::Map& m) {
+- ostream_iterator<MemberId> oi(o);
+- transform(m.begin(), m.end(), oi, bind(&ClusterMap::Map::value_type::first, _1));
++std::ostream& operator<<(std::ostream& o, const ClusterMap::Map& m) {
++ std::ostream_iterator<MemberId> oi(o);
++ std::transform(m.begin(), m.end(), oi, boost::bind(&ClusterMap::Map::value_type::first, _1));
+ return o;
+ }
+
+-ostream& operator<<(ostream& o, const ClusterMap& m) {
++std::ostream& operator<<(std::ostream& o, const ClusterMap& m) {
+ for (ClusterMap::Set::const_iterator i = m.alive.begin(); i != m.alive.end(); ++i) {
+ o << *i;
+ if (m.isMember(*i)) o << "(member)";
+@@ -134,7 +130,7 @@
+ return o;
+ }
+
+-bool ClusterMap::updateRequest(const MemberId& id, const string& url) {
++bool ClusterMap::updateRequest(const MemberId& id, const std::string& url) {
+ try {
+ if (isAlive(id)) {
+ joiners[id] = Url(url);
+@@ -153,9 +149,9 @@
+ bool ClusterMap::configChange(const Set& update) {
+ bool memberChange = false;
+ Set removed;
+- set_difference(alive.begin(), alive.end(),
++ std::set_difference(alive.begin(), alive.end(),
+ update.begin(), update.end(),
+- inserter(removed, removed.begin()));
++ std::inserter(removed, removed.begin()));
+ alive = update;
+ for (Set::const_iterator i = removed.begin(); i != removed.end(); ++i) {
+ memberChange = memberChange || members.erase(*i);
+@@ -164,14 +160,14 @@
+ return memberChange;
+ }
+
+-optional<Url> ClusterMap::updateOffer(const MemberId& from, const MemberId& to) {
++boost::optional<Url> ClusterMap::updateOffer(const MemberId& from, const MemberId& to) {
+ Map::iterator i = joiners.find(to);
+ if (isAlive(from) && i != joiners.end()) {
+ Url url= i->second;
+ joiners.erase(i); // No longer a potential updatee.
+ return url;
+ }
+- return optional<Url>();
++ return boost::optional<Url>();
+ }
+
+ }} // namespace qpid::cluster
+--- qpidc-0.16/src/tests/cluster_test.cpp.orig 2011-02-10 11:12:41.000000000 +0100
++++ qpidc-0.16/src/tests/cluster_test.cpp 2020-12-13 07:51:00.611957732 +0100
+@@ -667,7 +667,7 @@
+ c0.connection.close();
+ // Verify all brokers get wiring update.
+ for (size_t i = 0; i < cluster.size(); ++i) {
+- BOOST_MESSAGE("i == "<< i);
++ BOOST_TEST_MESSAGE("i == "<< i);
+ Client c(cluster[i]);
+ BOOST_CHECK_EQUAL("q", c.session.queueQuery("q").getQueue());
+ BOOST_CHECK_EQUAL("direct", c.session.exchangeQuery("ex").getType());
+@@ -826,7 +826,7 @@
+ mgr.execute(*this);
+ }
+ catch (const std::exception& e) {
+- BOOST_MESSAGE("Exception in mgr.execute: " << e.what());
++ BOOST_TEST_MESSAGE("Exception in mgr.execute: " << e.what());
+ failed = true;
+ }
+ }
+--- qpidc-0.16/src/tests/ClusterFixture.h.orig 2010-08-03 17:33:12.000000000 +0200
++++ qpidc-0.16/src/tests/ClusterFixture.h 2020-12-13 11:22:38.086502946 +0100
+@@ -99,7 +99,7 @@
+ string name;
+ std::auto_ptr<BrokerFixture> localBroker;
+ int localIndex;
+- std::vector<shared_ptr<ForkedBroker> > forkedBrokers;
++ std::vector<boost::shared_ptr<ForkedBroker> > forkedBrokers;
+ Args userArgs;
+ boost::function<void (Args&, size_t)> updateArgs;
+ };
+--- qpidc-0.16/src/tests/ClusterFixture.cpp.orig 2010-07-01 21:19:48.000000000 +0200
++++ qpidc-0.16/src/tests/ClusterFixture.cpp 2020-12-13 11:27:02.765069059 +0100
+@@ -54,7 +54,6 @@
+ using namespace qpid::client;
+ using qpid::sys::TIME_SEC;
+ using qpid::broker::Broker;
+-using boost::shared_ptr;
+ using qpid::cluster::Cluster;
+ using boost::assign::list_of;
+
+@@ -89,7 +88,7 @@
+ if (size() != size_t(localIndex)) { // fork a broker process.
+ std::ostringstream os; os << "fork" << size();
+ std::string prefix = os.str();
+- forkedBrokers.push_back(shared_ptr<ForkedBroker>(new ForkedBroker(makeArgs(prefix, size()))));
++ forkedBrokers.push_back(boost::shared_ptr<ForkedBroker>(new ForkedBroker(makeArgs(prefix, size()))));
+ push_back(forkedBrokers.back()->getPort());
+ }
+ else { // Run in this process
+@@ -117,7 +116,7 @@
+ qpid::log::Logger::instance().setPrefix(prefix);
+ localBroker.reset(new BrokerFixture(parseOpts(argv.size(), &argv[0])));
+ push_back(localBroker->getPort());
+- forkedBrokers.push_back(shared_ptr<ForkedBroker>());
++ forkedBrokers.push_back(boost::shared_ptr<ForkedBroker>());
+ }
+
+ bool ClusterFixture::hasLocal() const { return localIndex >= 0 && size_t(localIndex) < size(); }
diff --git a/qpid-cpp-c++.patch b/qpid-cpp-c++.patch
new file mode 100644
index 0000000..dfa145b
--- /dev/null
+++ b/qpid-cpp-c++.patch
@@ -0,0 +1,33 @@
+--- qpidc-0.16/src/tests/qpid-receive.cpp.orig 2012-02-17 15:54:46.000000000 +0100
++++ qpidc-0.16/src/tests/qpid-receive.cpp 2020-12-13 12:00:09.267640585 +0100
+@@ -131,8 +131,7 @@
+ if (address.empty()) throw qpid::Exception("Address must be specified!");
+ qpid::log::Logger::instance().configure(log);
+ if (help) {
+- std::ostringstream msg;
+- std::cout << msg << *this << std::endl << std::endl
++ std::cout << *this << std::endl << std::endl
+ << "Drains messages from the specified address" << std::endl;
+ return false;
+ } else {
+--- qpidc-0.16/src/tests/qpid-send.cpp.orig 2011-10-07 16:21:48.000000000 +0200
++++ qpidc-0.16/src/tests/qpid-send.cpp 2020-12-13 12:22:48.683609330 +0100
+@@ -157,8 +157,7 @@
+ if (address.empty()) throw qpid::Exception("Address must be specified!");
+ qpid::log::Logger::instance().configure(log);
+ if (help) {
+- std::ostringstream msg;
+- std::cout << msg << *this << std::endl << std::endl
++ std::cout << *this << std::endl << std::endl
+ << "Drains messages from the specified address" << std::endl;
+ return false;
+ } else {
+@@ -237,7 +236,7 @@
+ public:
+ virtual bool setContent(Message& msg) {
+ string content;
+- bool got = getline(std::cin, content);
++ bool got = !!getline(std::cin, content);
+ if (got) msg.setContent(content);
+ return got;
+ }
diff --git a/qpid-cpp-corosync.patch b/qpid-cpp-corosync.patch
new file mode 100644
index 0000000..d05dc94
--- /dev/null
+++ b/qpid-cpp-corosync.patch
@@ -0,0 +1,163 @@
+--- qpidc-0.16/src/qpid/cluster/Cpg.cpp.orig 2010-02-26 17:47:23.000000000 +0100
++++ qpidc-0.16/src/qpid/cluster/Cpg.cpp 2020-12-13 07:18:53.042400272 +0100
+@@ -32,7 +32,7 @@
+ // This is a macro instead of a function because we don't want to
+ // evaluate the MSG argument unless there is an error.
+ #define CPG_CHECK(RESULT, MSG) \
+- if ((RESULT) != CPG_OK) throw Exception(errorStr((RESULT), (MSG)))
++ if ((RESULT) != CS_OK) throw Exception(errorStr((RESULT), (MSG)))
+
+ namespace qpid {
+ namespace cluster {
+@@ -50,13 +50,13 @@
+
+ // Applies the same retry-logic to all cpg calls that need it.
+ void Cpg::callCpg ( CpgOp & c ) {
+- cpg_error_t result;
++ cs_error_t result;
+ unsigned int snooze = 10;
+ for ( unsigned int nth_try = 0; nth_try < cpgRetries; ++ nth_try ) {
+- if ( CPG_OK == (result = c.op(handle, & group))) {
++ if ( CS_OK == (result = c.op(handle, & group))) {
+ break;
+ }
+- else if ( result == CPG_ERR_TRY_AGAIN ) {
++ else if ( result == CS_ERR_TRY_AGAIN ) {
+ QPID_LOG(info, "Retrying " << c.opName );
+ sys::usleep ( snooze );
+ snooze *= 10;
+@@ -65,7 +65,7 @@
+ else break; // Don't retry unless CPG tells us to.
+ }
+
+- if ( result != CPG_OK )
++ if ( result != CS_OK )
+ CPG_CHECK(result, c.msg(group));
+ }
+
+@@ -127,9 +127,9 @@
+ callbacks.cpg_confchg_fn = &globalConfigChange;
+
+ QPID_LOG(notice, "Initializing CPG");
+- cpg_error_t err = cpg_initialize(&handle, &callbacks);
++ cs_error_t err = cpg_initialize(&handle, &callbacks);
+ int retries = 6; // FIXME aconway 2009-08-06: make this configurable.
+- while (err == CPG_ERR_TRY_AGAIN && --retries) {
++ while (err == CS_ERR_TRY_AGAIN && --retries) {
+ QPID_LOG(notice, "Re-trying CPG initialization.");
+ sys::sleep(5);
+ err = cpg_initialize(&handle, &callbacks);
+@@ -169,11 +169,11 @@
+ if (flowState == CPG_FLOW_CONTROL_ENABLED)
+ return false;
+
+- cpg_error_t result;
++ cs_error_t result;
+ do {
+ result = cpg_mcast_joined(handle, CPG_TYPE_AGREED, const_cast<iovec*>(iov), iovLen);
+- if (result != CPG_ERR_TRY_AGAIN) CPG_CHECK(result, cantMcastMsg(group));
+- } while(result == CPG_ERR_TRY_AGAIN);
++ if (result != CS_ERR_TRY_AGAIN) CPG_CHECK(result, cantMcastMsg(group));
++ } while(result == CS_ERR_TRY_AGAIN);
+ return true;
+ }
+
+@@ -187,34 +187,34 @@
+ }
+
+ void Cpg::dispatchOne() {
+- CPG_CHECK(cpg_dispatch(handle,CPG_DISPATCH_ONE), "Error in CPG dispatch");
++ CPG_CHECK(cpg_dispatch(handle,CS_DISPATCH_ONE), "Error in CPG dispatch");
+ }
+
+ void Cpg::dispatchAll() {
+- CPG_CHECK(cpg_dispatch(handle,CPG_DISPATCH_ALL), "Error in CPG dispatch");
++ CPG_CHECK(cpg_dispatch(handle,CS_DISPATCH_ALL), "Error in CPG dispatch");
+ }
+
+ void Cpg::dispatchBlocking() {
+- CPG_CHECK(cpg_dispatch(handle,CPG_DISPATCH_BLOCKING), "Error in CPG dispatch");
++ CPG_CHECK(cpg_dispatch(handle,CS_DISPATCH_BLOCKING), "Error in CPG dispatch");
+ }
+
+-string Cpg::errorStr(cpg_error_t err, const std::string& msg) {
++string Cpg::errorStr(cs_error_t err, const std::string& msg) {
+ std::ostringstream os;
+ os << msg << ": ";
+ switch (err) {
+- case CPG_OK: os << "ok"; break;
+- case CPG_ERR_LIBRARY: os << "library"; break;
+- case CPG_ERR_TIMEOUT: os << "timeout"; break;
+- case CPG_ERR_TRY_AGAIN: os << "try again"; break;
+- case CPG_ERR_INVALID_PARAM: os << "invalid param"; break;
+- case CPG_ERR_NO_MEMORY: os << "no memory"; break;
+- case CPG_ERR_BAD_HANDLE: os << "bad handle"; break;
+- case CPG_ERR_ACCESS: os << "access denied. You may need to set your group ID to 'ais'"; break;
+- case CPG_ERR_NOT_EXIST: os << "not exist"; break;
+- case CPG_ERR_EXIST: os << "exist"; break;
+- case CPG_ERR_NOT_SUPPORTED: os << "not supported"; break;
+- case CPG_ERR_SECURITY: os << "security"; break;
+- case CPG_ERR_TOO_MANY_GROUPS: os << "too many groups"; break;
++ case CS_OK: os << "ok"; break;
++ case CS_ERR_LIBRARY: os << "library"; break;
++ case CS_ERR_TIMEOUT: os << "timeout"; break;
++ case CS_ERR_TRY_AGAIN: os << "try again"; break;
++ case CS_ERR_INVALID_PARAM: os << "invalid param"; break;
++ case CS_ERR_NO_MEMORY: os << "no memory"; break;
++ case CS_ERR_BAD_HANDLE: os << "bad handle"; break;
++ case CS_ERR_ACCESS: os << "access denied. You may need to set your group ID to 'ais'"; break;
++ case CS_ERR_NOT_EXIST: os << "not exist"; break;
++ case CS_ERR_EXIST: os << "exist"; break;
++ case CS_ERR_NOT_SUPPORTED: os << "not supported"; break;
++ case CS_ERR_SECURITY: os << "security"; break;
++ case CS_ERR_TOO_MANY_GROUPS: os << "too many groups"; break;
+ default: os << ": unknown cpg error " << err;
+ };
+ os << " (" << err << ")";
+--- qpidc-0.16/src/qpid/cluster/Cpg.h.orig 2009-12-11 16:29:00.000000000 +0100
++++ qpidc-0.16/src/qpid/cluster/Cpg.h 2020-12-13 06:57:45.132602462 +0100
+@@ -131,7 +131,7 @@
+ CpgOp ( std::string opName )
+ : opName(opName) { }
+
+- virtual cpg_error_t op ( cpg_handle_t handle, struct cpg_name * ) = 0;
++ virtual cs_error_t op ( cpg_handle_t handle, struct cpg_name * ) = 0;
+ virtual std::string msg(const Name&) = 0;
+ virtual ~CpgOp ( ) { }
+ };
+@@ -141,7 +141,7 @@
+ CpgJoinOp ( )
+ : CpgOp ( std::string("cpg_join") ) { }
+
+- cpg_error_t op(cpg_handle_t handle, struct cpg_name * group) {
++ cs_error_t op(cpg_handle_t handle, struct cpg_name * group) {
+ return cpg_join ( handle, group );
+ }
+
+@@ -152,7 +152,7 @@
+ CpgLeaveOp ( )
+ : CpgOp ( std::string("cpg_leave") ) { }
+
+- cpg_error_t op(cpg_handle_t handle, struct cpg_name * group) {
++ cs_error_t op(cpg_handle_t handle, struct cpg_name * group) {
+ return cpg_leave ( handle, group );
+ }
+
+@@ -163,7 +163,7 @@
+ CpgFinalizeOp ( )
+ : CpgOp ( std::string("cpg_finalize") ) { }
+
+- cpg_error_t op(cpg_handle_t handle, struct cpg_name *) {
++ cs_error_t op(cpg_handle_t handle, struct cpg_name *) {
+ return cpg_finalize ( handle );
+ }
+
+@@ -177,7 +177,7 @@
+ CpgLeaveOp cpgLeaveOp;
+ CpgFinalizeOp cpgFinalizeOp;
+
+- static std::string errorStr(cpg_error_t err, const std::string& msg);
++ static std::string errorStr(cs_error_t err, const std::string& msg);
+ static std::string cantJoinMsg(const Name&);
+ static std::string cantLeaveMsg(const Name&);
+ static std::string cantMcastMsg(const Name&);
diff --git a/qpid-cpp-perl.patch b/qpid-cpp-perl.patch
index 1bbca9e..ecad4c4 100644
--- a/qpid-cpp-perl.patch
+++ b/qpid-cpp-perl.patch
@@ -21,3 +21,25 @@
cd ..
clean-local:
+--- qpidc-0.16/bindings/qpid/perl/perl.i.orig 2011-02-18 20:16:35.000000000 +0100
++++ qpidc-0.16/bindings/qpid/perl/perl.i 2020-12-14 09:51:37.944680768 +0100
+@@ -27,7 +27,7 @@
+ $action
+ }
+ catch (qpid::messaging::MessagingException& mex) {
+- Perl_croak(aTHX_ mex.what());
++ Perl_croak(aTHX_ "%s", mex.what());
+ }
+ }
+
+--- qpidc-0.16/bindings/swig_perl_typemaps.i.orig 2011-01-27 18:04:40.000000000 +0100
++++ qpidc-0.16/bindings/swig_perl_typemaps.i 2020-12-14 09:52:11.054501396 +0100
+@@ -110,7 +110,7 @@
+ }
+ }
+ } catch (qpid::types::Exception& ex) {
+- Perl_croak(aTHX_ ex.what());
++ Perl_croak(aTHX_ "%s", ex.what());
+ }
+
+ return result;
diff --git a/qpid-cpp-ruby.patch b/qpid-cpp-ruby.patch
new file mode 100644
index 0000000..291f867
--- /dev/null
+++ b/qpid-cpp-ruby.patch
@@ -0,0 +1,77 @@
+--- qpidc-0.16/configure.ac.orig 2020-12-13 12:55:35.066289854 +0100
++++ qpidc-0.16/configure.ac 2020-12-13 18:50:43.760850752 +0100
+@@ -164,13 +164,13 @@
+ if test -n "$RUBY" ; then
+ AC_ARG_VAR(RUBY_INC, [Directory where ruby.h can be found])
+ if test -z "$RUBY_INC" ; then
+- [RUBY_INC=`$RUBY -rrbconfig -e 'puts Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"]'`]
++ [RUBY_INC=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"] || RbConfig::CONFIG["archdir"]'`]
+ fi
+ AC_SUBST(RUBY_INC)
+
+ AC_ARG_VAR(RUBY_INC_ARCH, [Directory where ruby/config.h can be found (needed from Ruby 1.9)])
+ if test -z "$RUBY_INC_ARCH" ; then
+- [RUBY_INC_ARCH=`$RUBY -rrbconfig -e 'd = Config::CONFIG["rubyhdrdir"];if d != nil; print d + "/" + Config::CONFIG["arch"]; end'`]
++ [RUBY_INC_ARCH=`$RUBY -rrbconfig -e 'd = RbConfig::CONFIG["rubyhdrdir"];if d != nil; print d + "/" + RbConfig::CONFIG["arch"]; end'`]
+ dnl For earlier versions, just make it the same as RUBY_INC.
+ test x"$RUBY_INC_ARCH" != x || RUBY_INC_ARCH=$RUBY_INC
+ fi
+@@ -178,14 +178,14 @@
+ AC_ARG_VAR(RUBY_LIB, [Directory to install ruby files into])
+ if test -z "$RUBY_LIB" ; then
+ dnl Kludge to install ruby files under $prefix
+- [RUBY_LIB=`$RUBY -rrbconfig -e 'puts Config::CONFIG["sitelibdir"].gsub("/usr", "${prefix}")'`]
++ [RUBY_LIB=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["vendorlibdir"].gsub("/usr", "${prefix}")'`]
+ fi
+ AC_SUBST(RUBY_LIB)
+
+ AC_ARG_VAR(RUBY_LIB_ARCH, [Directory to install ruby binary modules into])
+ if test -z "$RUBY_LIB_ARCH" ; then
+ dnl Kludge to install ruby files under $prefix
+- [RUBY_LIB_ARCH=`$RUBY -rrbconfig -e 'puts Config::CONFIG["sitearchdir"].gsub("/usr", "${prefix}")'`]
++ [RUBY_LIB_ARCH=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["vendorarchdir"].gsub("/usr", "${prefix}")'`]
+ fi
+ AC_SUBST(RUBY_LIB_ARCH)
+
+@@ -195,7 +195,7 @@
+ esac
+ AC_SUBST(RUBY_LIBS)
+
+- RUBY_DLEXT=`$RUBY -rrbconfig -e 'puts Config::CONFIG[["DLEXT"]]'`
++ RUBY_DLEXT=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["DLEXT"]]'`
+ AC_SUBST(RUBY_DLEXT)
+ fi
+ AM_CONDITIONAL([HAVE_RUBY_DEVEL], [test -f $RUBY_INC/ruby.h && test -n "$SWIG"])
+--- qpidc-0.16/bindings/qpid/ruby/ruby.i.orig 2010-08-13 00:35:23.000000000 +0200
++++ qpidc-0.16/bindings/qpid/ruby/ruby.i 2020-12-13 19:47:14.499148213 +0100
+@@ -28,7 +28,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());
+ }
+ }
+
+--- qpidc-0.16/bindings/swig_ruby_typemaps.i.orig 2012-01-04 17:24:33.000000000 +0100
++++ qpidc-0.16/bindings/swig_ruby_typemaps.i 2020-12-13 20:27:15.396141438 +0100
+@@ -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;
+--- qpidc-0.16/bindings/qmf2/ruby/ruby.i.orig 2010-09-23 03:42:08.000000000 +0200
++++ qpidc-0.16/bindings/qmf2/ruby/ruby.i 2020-12-13 21:21:22.161885533 +0100
+@@ -28,7 +28,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());
+ }
+ }
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/qpid-cpp.git/commitdiff/1ea345ac5069755524ae797f037bb633c895c344
More information about the pld-cvs-commit
mailing list