From a47606702aab916bb73e7d5a613722220bc87dae Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Mon, 16 May 2016 21:55:59 +0200 Subject: [PATCH] - added parallel patch (fixes parallel build with introspection) - added tidy patch (adjusts libtidy headers path) - added asio patch (use boost::asio instead of standalone, as boost is required anyway) - updated dependencies - release 8 --- abiword-asio.patch | 1090 ++++++++++++++++++++++++++++++++++++++++ abiword-parallel.patch | 11 + abiword-tidy.patch | 24 + abiword.spec | 182 +++++-- 4 files changed, 1261 insertions(+), 46 deletions(-) create mode 100644 abiword-asio.patch create mode 100644 abiword-parallel.patch create mode 100644 abiword-tidy.patch diff --git a/abiword-asio.patch b/abiword-asio.patch new file mode 100644 index 0000000..992daeb --- /dev/null +++ b/abiword-asio.patch @@ -0,0 +1,1090 @@ +--- abiword-3.0.1/plugins/collab/backends/service/xp/AsioRealmProtocol.h.orig 2012-05-25 18:12:56.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/AsioRealmProtocol.h 2016-05-15 18:45:59.357036926 +0200 +@@ -8,48 +8,48 @@ namespace realm { + namespace protocolv1 { + + template +- static void send(const RoutingPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) { +- std::vector bufs(4); +- bufs.push_back(asio::buffer(&p.type(), 1)); +- bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! +- bufs.push_back(asio::buffer(&p.getAddressCount(), 1)); +- bufs.push_back(asio::buffer(&(p.getConnectionIds()[0]), p.getConnectionIds().size())); +- bufs.push_back(asio::buffer(*p.getMessage())); +- asio::async_write(socket, bufs, handler); ++ static void send(const RoutingPacket& p, boost::asio::ip::tcp::socket& socket, WriteHandler handler) { ++ std::vector bufs(4); ++ bufs.push_back(boost::asio::buffer(&p.type(), 1)); ++ bufs.push_back(boost::asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! ++ bufs.push_back(boost::asio::buffer(&p.getAddressCount(), 1)); ++ bufs.push_back(boost::asio::buffer(&(p.getConnectionIds()[0]), p.getConnectionIds().size())); ++ bufs.push_back(boost::asio::buffer(*p.getMessage())); ++ boost::asio::async_write(socket, bufs, handler); + } + + template +- static void send(const DeliverPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) { +- std::vector bufs(4); +- bufs.push_back(asio::buffer(&p.type(), 1)); +- bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! +- bufs.push_back(asio::buffer(&p.getConnectionId(), 1)); +- bufs.push_back(asio::buffer(*p.getMessage())); +- asio::async_write(socket, bufs, handler); ++ static void send(const DeliverPacket& p, boost::asio::ip::tcp::socket& socket, WriteHandler handler) { ++ std::vector bufs(4); ++ bufs.push_back(boost::asio::buffer(&p.type(), 1)); ++ bufs.push_back(boost::asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! ++ bufs.push_back(boost::asio::buffer(&p.getConnectionId(), 1)); ++ bufs.push_back(boost::asio::buffer(*p.getMessage())); ++ boost::asio::async_write(socket, bufs, handler); + } + + template +- static void send(const UserJoinedPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) { +- std::vector bufs(4); +- bufs.push_back(asio::buffer(&p.type(), 1)); +- bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! +- bufs.push_back(asio::buffer(&p.getConnectionId(), 1)); +- bufs.push_back(asio::buffer(&p.isMaster(), 1)); +- bufs.push_back(asio::buffer(*p.getUserInfo())); +- asio::async_write(socket, bufs, handler); ++ static void send(const UserJoinedPacket& p, boost::asio::ip::tcp::socket& socket, WriteHandler handler) { ++ std::vector bufs(4); ++ bufs.push_back(boost::asio::buffer(&p.type(), 1)); ++ bufs.push_back(boost::asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe! ++ bufs.push_back(boost::asio::buffer(&p.getConnectionId(), 1)); ++ bufs.push_back(boost::asio::buffer(&p.isMaster(), 1)); ++ bufs.push_back(boost::asio::buffer(*p.getUserInfo())); ++ boost::asio::async_write(socket, bufs, handler); + } + + template +- static void send(const UserLeftPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) { +- std::vector bufs(2); +- bufs.push_back(asio::buffer(&p.type(), 1)); +- bufs.push_back(asio::buffer(&p.getConnectionId(), 1)); +- asio::async_write(socket, bufs, handler); ++ static void send(const UserLeftPacket& p, boost::asio::ip::tcp::socket& socket, WriteHandler handler) { ++ std::vector bufs(2); ++ bufs.push_back(boost::asio::buffer(&p.type(), 1)); ++ bufs.push_back(boost::asio::buffer(&p.getConnectionId(), 1)); ++ boost::asio::async_write(socket, bufs, handler); + } + + template +- static void send(const SessionTakeOverPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) { +- asio::async_write(socket, asio::buffer(&p.type(), 1), handler); ++ static void send(const SessionTakeOverPacket& p, boost::asio::ip::tcp::socket& socket, WriteHandler handler) { ++ boost::asio::async_write(socket, boost::asio::buffer(&p.type(), 1), handler); + } + + } +--- abiword-3.0.1/plugins/collab/backends/service/xp/AsyncWorker.h.orig 2013-04-07 15:53:03.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/AsyncWorker.h 2016-05-15 18:57:50.997154789 +0200 +@@ -19,7 +19,7 @@ + #ifndef __ASYNC_WORKER__ + #define __ASYNC_WORKER__ + +-#include ++#include + #include + #include + #include +@@ -50,7 +50,7 @@ public: + m_synchronizer.reset(new Synchronizer(boost::bind(&AsyncWorker::_signal, + boost::enable_shared_from_this >::shared_from_this()))); + m_thread_ptr.reset( +- new asio::thread( ++ new boost::thread( + boost::bind(&AsyncWorker::_thread_func, + AsyncWorker::shared_from_this()) + ) +@@ -75,7 +75,7 @@ private: + boost::function m_async_func; + boost::function m_async_callback; + boost::shared_ptr m_synchronizer; +- boost::shared_ptr m_thread_ptr; ++ boost::shared_ptr m_thread_ptr; + T m_func_result; + }; + +--- abiword-3.0.1/plugins/collab/backends/service/xp/RealmConnection.cpp.orig 2013-07-05 03:51:21.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/RealmConnection.cpp 2016-05-15 19:03:12.877133249 +0200 +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include "ut_assert.h" + #include "ut_debugmsg.h" + #include "ServiceAccountHandler.h" +@@ -68,7 +69,7 @@ bool RealmConnection::connect() + // setup our local TLS tunnel to the realm + m_tls_tunnel_ptr.reset(new tls_tunnel::ClientProxy(m_address, m_port, m_ca_file, false)); + m_tls_tunnel_ptr->setup(); +- asio::thread thread(boost::bind(&tls_tunnel::ClientProxy::run, m_tls_tunnel_ptr)); ++ boost::thread thread(boost::bind(&tls_tunnel::ClientProxy::run, m_tls_tunnel_ptr)); + + // make sure we connect to the tunnel, and not directly to the realm + address = m_tls_tunnel_ptr->local_address(); +@@ -76,13 +77,13 @@ bool RealmConnection::connect() + } + + // connect! +- asio::ip::tcp::resolver::query query(address, boost::lexical_cast(port)); +- asio::ip::tcp::resolver resolver(m_io_service); +- asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); ++ boost::asio::ip::tcp::resolver::query query(address, boost::lexical_cast(port)); ++ boost::asio::ip::tcp::resolver resolver(m_io_service); ++ boost::asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); + + bool connected = false; +- asio::error_code error_code; +- while (iterator != asio::ip::tcp::resolver::iterator()) ++ boost::system::error_code error_code; ++ while (iterator != boost::asio::ip::tcp::resolver::iterator()) + { + try + { +@@ -90,7 +91,7 @@ bool RealmConnection::connect() + connected = true; + break; + } +- catch (asio::system_error se) ++ catch (boost::system::system_error se) + { + error_code = se.code(); + try { m_socket.close(); } catch(...) {} +@@ -99,7 +100,7 @@ bool RealmConnection::connect() + } + if (!connected) + { +- UT_DEBUGMSG(("Error connecting to realm: %s", asio::system_error(error_code).what())); ++ UT_DEBUGMSG(("Error connecting to realm: %s", boost::system::system_error(error_code).what())); + return false; + } + } +@@ -108,7 +109,7 @@ bool RealmConnection::connect() + UT_DEBUGMSG(("tls_tunnel exception connecting to realm: %s\n", e.message().c_str())); + return false; + } +- catch (asio::system_error& se) ++ catch (boost::system::system_error& se) + { + UT_DEBUGMSG(("Error connecting to realm: %s\n", se.what())); + return false; +@@ -131,7 +132,7 @@ bool RealmConnection::connect() + // start reading realm messages + _receive(); + +- m_thread_ptr.reset(new asio::thread(boost::bind(&asio::io_service::run, &m_io_service))); ++ m_thread_ptr.reset(new boost::thread(boost::bind(&boost::asio::io_service::run, &m_io_service))); + return true; + } + +@@ -145,8 +146,8 @@ void RealmConnection::disconnect() + // the complete disconnect + if (m_socket.is_open()) + { +- asio::error_code ac; +- m_socket.shutdown(asio::ip::tcp::socket::shutdown_both, ac); ++ boost::system::error_code ac; ++ m_socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ac); + m_socket.close(ac); + } + } +@@ -217,8 +218,8 @@ void RealmConnection::_disconnect() + + if (m_socket.is_open()) + { +- asio::error_code ac; +- m_socket.shutdown(asio::ip::tcp::socket::shutdown_both, ac); ++ boost::system::error_code ac; ++ m_socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ac); + m_socket.close(ac); + } + +@@ -266,13 +267,13 @@ bool RealmConnection::_login() + { + // send the login credententials + // TODO: we should check the number of bytes written +- asio::write(m_socket, asio::buffer(header)); ++ boost::asio::write(m_socket, boost::asio::buffer(header)); + + // read the login response + // TODO: we should check the number of bytes read +- asio::read(m_socket, asio::buffer(&response[0], response.size())); ++ boost::asio::read(m_socket, boost::asio::buffer(&response[0], response.size())); + } +- catch (asio::system_error e) ++ catch (boost::system::system_error e) + { + UT_DEBUGMSG(("Error while writing/writing protocol header: %s\n", e.what())); + return false; +@@ -315,7 +316,7 @@ UserJoinedPacketPtr RealmConnection::_re + { + // receive the packet type + std::string msg(1, '\0'); +- asio::read(m_socket, asio::buffer(&msg[0], msg.size())); ++ boost::asio::read(m_socket, boost::asio::buffer(&msg[0], msg.size())); + rpv1::packet_type packet_type = static_cast(msg[0]); + if (packet_type != rpv1::PACKET_USERJOINED) + return UserJoinedPacketPtr(); +@@ -326,17 +327,17 @@ UserJoinedPacketPtr RealmConnection::_re + uint8_t conn_id = 0; + uint8_t m = 0; + +- boost::array buf = {{ +- asio::buffer(&payload_size, sizeof(payload_size)), +- asio::buffer(&conn_id, sizeof(conn_id)), +- asio::buffer(&m, sizeof(m)) }}; +- asio::read(m_socket, buf); ++ boost::array buf = {{ ++ boost::asio::buffer(&payload_size, sizeof(payload_size)), ++ boost::asio::buffer(&conn_id, sizeof(conn_id)), ++ boost::asio::buffer(&m, sizeof(m)) }}; ++ boost::asio::read(m_socket, buf); + + boost::shared_ptr userinfo_ptr(new std::string(payload_size - 2, '\0')); +- asio::read(m_socket, asio::buffer(&(*userinfo_ptr)[0], userinfo_ptr->size())); ++ boost::asio::read(m_socket, boost::asio::buffer(&(*userinfo_ptr)[0], userinfo_ptr->size())); + + return UserJoinedPacketPtr(new rpv1::UserJoinedPacket(conn_id, static_cast(m), userinfo_ptr)); +- } catch (asio::system_error se) { ++ } catch (boost::system::system_error se) { + return UserJoinedPacketPtr(); + } + } +@@ -346,12 +347,12 @@ void RealmConnection::_receive() + UT_DEBUGMSG(("RealmConnection::_receive()\n")); + m_buf.clear(); + boost::shared_ptr msg_ptr(new std::string(1, '\0')); +- asio::async_read(m_socket, asio::buffer(&(*msg_ptr)[0], msg_ptr->size()), ++ boost::asio::async_read(m_socket, boost::asio::buffer(&(*msg_ptr)[0], msg_ptr->size()), + boost::bind(&RealmConnection::_message, shared_from_this(), +- asio::placeholders::error, asio::placeholders::bytes_transferred, msg_ptr)); ++ boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, msg_ptr)); + } + +-void RealmConnection::_message(const asio::error_code& e, std::size_t /*bytes_transferred*/, boost::shared_ptr msg_ptr) ++void RealmConnection::_message(const boost::system::error_code& e, std::size_t /*bytes_transferred*/, boost::shared_ptr msg_ptr) + { + UT_DEBUGMSG(("RealmConnection::_message()\n")); + if (e) +@@ -390,15 +391,15 @@ void RealmConnection::_complete_packet(r + UT_DEBUGMSG(("Need more data (%d bytes) for this packet...\n", bytes_needed)); + // read the needed number of bytes + char* ptr = m_buf.prepare(bytes_needed); +- asio::async_read(m_socket, asio::buffer(ptr, bytes_needed), ++ boost::asio::async_read(m_socket, boost::asio::buffer(ptr, bytes_needed), + boost::bind(&RealmConnection::_complete, shared_from_this(), +- asio::placeholders::error, asio::placeholders::bytes_transferred, packet_ptr) ++ boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, packet_ptr) + ); + break; + } + } + +-void RealmConnection::_complete(const asio::error_code& e, std::size_t bytes_transferred, realm::protocolv1::PacketPtr packet_ptr) ++void RealmConnection::_complete(const boost::system::error_code& e, std::size_t bytes_transferred, realm::protocolv1::PacketPtr packet_ptr) + { + UT_DEBUGMSG(("RealmConnection::_complete()\n")); + if (e) +--- abiword-3.0.1/plugins/collab/backends/service/xp/RealmConnection.h.orig 2013-07-05 03:51:21.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/RealmConnection.h 2016-05-15 18:58:28.419089961 +0200 +@@ -21,7 +21,8 @@ + + #include + #include +-#include ++#include ++#include + #include + #include + #include "ut_types.h" +@@ -90,7 +91,7 @@ public: + { m_pDoc = pDoc; } + SynchronizedQueue& queue() + { return m_packet_queue; } +- asio::ip::tcp::socket& socket() ++ boost::asio::ip::tcp::socket& socket() + { return m_socket; } + + void loadDocumentStart(AP_Dialog_GenericProgress* pDlg, +@@ -113,21 +114,21 @@ private: + bool _login(); + UserJoinedPacketPtr _receiveUserJoinedPacket(); + void _receive(); +- void _message(const asio::error_code& e, ++ void _message(const boost::system::error_code& e, + std::size_t bytes_transferred, + boost::shared_ptr msg_ptr); + + void _complete_packet(realm::protocolv1::PacketPtr packet_ptr); +- void _complete(const asio::error_code& e, std::size_t bytes_transferred, ++ void _complete(const boost::system::error_code& e, std::size_t bytes_transferred, + realm::protocolv1::PacketPtr packet_ptr); + +- asio::io_service m_io_service; ++ boost::asio::io_service m_io_service; + std::string m_ca_file; + std::string m_address; + int m_port; + int m_tls; +- asio::ip::tcp::socket m_socket; +- boost::shared_ptr m_thread_ptr; ++ boost::asio::ip::tcp::socket m_socket; ++ boost::shared_ptr m_thread_ptr; + std::string m_cookie; + UT_uint64 m_user_id; // only valid after login + UT_uint8 m_connection_id; // only valid after login +--- abiword-3.0.1/plugins/collab/backends/service/xp/RealmProtocol.h.orig 2012-05-25 18:12:56.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/RealmProtocol.h 2016-05-15 18:43:04.911353671 +0200 +@@ -9,7 +9,7 @@ + #include + #endif + #include +-#include ++#include + + namespace realm { + +@@ -29,7 +29,7 @@ namespace protocolv1 { + + class Packet; + typedef boost::shared_ptr PacketPtr; +-typedef boost::shared_ptr StreamPtr; ++typedef boost::shared_ptr StreamPtr; + + // the packet type values must match up the corresponding body_size in + // RealmProtocol.cpp (ugly, but it's fast)! +--- abiword-3.0.1/plugins/collab/backends/service/xp/ServiceAccountHandler.cpp.orig 2013-07-05 03:51:21.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/ServiceAccountHandler.cpp 2016-05-15 19:03:33.601538287 +0200 +@@ -437,7 +437,7 @@ bool ServiceAccountHandler::send(const P + return true; + } + +-void ServiceAccountHandler::_write_handler(const asio::error_code& e, std::size_t /*bytes_transferred*/, ++void ServiceAccountHandler::_write_handler(const boost::system::error_code& e, std::size_t /*bytes_transferred*/, + boost::shared_ptr /*recipient*/, boost::shared_ptr packet) + { + if (e) +@@ -453,7 +453,7 @@ void ServiceAccountHandler::_write_handl + } + } + +-void ServiceAccountHandler::_write_result(const asio::error_code& e, std::size_t /*bytes_transferred*/, ++void ServiceAccountHandler::_write_result(const boost::system::error_code& e, std::size_t /*bytes_transferred*/, + ConnectionPtr /*connection*/, boost::shared_ptr packet) + { + if (e) +@@ -1709,7 +1709,7 @@ void ServiceAccountHandler::_handleMessa + boost::shared_ptr stop(new rpv1::SessionTakeOverPacket()); + rpv1::send(*stop, connection->socket(), + boost::bind(&ServiceAccountHandler::_write_result, this, +- asio::placeholders::error, asio::placeholders::bytes_transferred, connection, ++ boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, connection, + boost::static_pointer_cast(stop)) + ); + +--- abiword-3.0.1/plugins/collab/backends/service/xp/ServiceAccountHandler.h.orig 2013-04-07 15:53:03.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/ServiceAccountHandler.h 2016-05-15 18:58:43.736548728 +0200 +@@ -149,14 +149,14 @@ private: + { + realm::protocolv1::send(*packet, recipient->connection()->socket(), + boost::bind(&ServiceAccountHandler::_write_handler, this, +- asio::placeholders::error, asio::placeholders::bytes_transferred, recipient, ++ boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, recipient, + boost::static_pointer_cast(packet))); + } + +- void _write_handler(const asio::error_code& e, std::size_t bytes_transferred, ++ void _write_handler(const boost::system::error_code& e, std::size_t bytes_transferred, + boost::shared_ptr recipient, boost::shared_ptr packet); + +- void _write_result(const asio::error_code& e, std::size_t bytes_transferred, ++ void _write_result(const boost::system::error_code& e, std::size_t bytes_transferred, + ConnectionPtr connection, boost::shared_ptr packet); + + bool _listDocuments(soa::function_call_ptr fc_ptr, +--- abiword-3.0.1/plugins/collab/backends/service/xp/tls_tunnel.cpp.orig 2014-11-04 02:12:14.000000000 +0100 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/tls_tunnel.cpp 2016-05-15 19:12:18.015323548 +0200 +@@ -45,7 +45,7 @@ namespace tls_tunnel { + #define TLS_VERIFY_HOSTNAME_ERROR "Error verifying hostname" + #define TLS_CANT_GET_PEER_CERT_ERROR "Failed to get peer certificate" + +-typedef boost::shared_ptr socket_ptr_t; ++typedef boost::shared_ptr socket_ptr_t; + typedef boost::shared_ptr session_ptr_t; + typedef boost::shared_ptr< std::vector > buffer_ptr_t; + +@@ -79,12 +79,12 @@ public: + } + }; + +-asio::io_service& Transport::io_service() { ++boost::asio::io_service& Transport::io_service() { + return io_service_; + } + + void Transport::run() { +- asio::error_code ec; ++ boost::system::error_code ec; + io_service_.run(ec); + } + +@@ -112,17 +112,17 @@ ClientTransport::ClientTransport(const s + } + + void ClientTransport::connect() { +- asio::ip::tcp::resolver resolver(io_service()); +- asio::ip::tcp::resolver::query query(host_, boost::lexical_cast(port_)); +- asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); +- socket_ptr_t socket_ptr(new asio::ip::tcp::socket(io_service())); ++ boost::asio::ip::tcp::resolver resolver(io_service()); ++ boost::asio::ip::tcp::resolver::query query(host_, boost::lexical_cast(port_)); ++ boost::asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); ++ socket_ptr_t socket_ptr(new boost::asio::ip::tcp::socket(io_service())); + +- if (iterator == asio::ip::tcp::resolver::iterator()) +- throw asio::system_error(asio::error::host_not_found); ++ if (iterator == boost::asio::ip::tcp::resolver::iterator()) ++ throw boost::system::system_error(boost::asio::error::host_not_found); + + bool connected = false; +- asio::error_code error_code; +- while (iterator != asio::ip::tcp::resolver::iterator()) ++ boost::system::error_code error_code; ++ while (iterator != boost::asio::ip::tcp::resolver::iterator()) + { + try + { +@@ -130,7 +130,7 @@ void ClientTransport::connect() { + connected = true; + break; + } +- catch (asio::system_error se) ++ catch (boost::system::system_error se) + { + error_code = se.code(); + try { socket_ptr->close(); } catch(...) {} +@@ -138,24 +138,24 @@ void ClientTransport::connect() { + iterator++; + } + if (!connected) +- throw asio::system_error(error_code); // throw the last error on failure ++ throw boost::system::system_error(error_code); // throw the last error on failure + on_connect_(shared_from_this(), socket_ptr); + } + + ServerTransport::ServerTransport(const std::string& ip, unsigned short port, + boost::function on_connect) + : Transport(), +- acceptor_(io_service(), asio::ip::tcp::endpoint(asio::ip::address_v4::from_string(ip), port)), ++ acceptor_(io_service(), boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::from_string(ip), port)), + on_connect_(on_connect) + { + } + + void ServerTransport::accept() { +- socket_ptr_t socket_ptr(new asio::ip::tcp::socket(io_service())); +- acceptor_.async_accept(*socket_ptr, boost::bind(&ServerTransport::on_accept, this, asio::placeholders::error, socket_ptr)); ++ socket_ptr_t socket_ptr(new boost::asio::ip::tcp::socket(io_service())); ++ acceptor_.async_accept(*socket_ptr, boost::bind(&ServerTransport::on_accept, this, boost::asio::placeholders::error, socket_ptr)); + } + +-void ServerTransport::on_accept(const asio::error_code& error, socket_ptr_t socket_ptr) { ++void ServerTransport::on_accept(const boost::system::error_code& error, socket_ptr_t socket_ptr) { + if (error) { + return; + } +@@ -164,19 +164,19 @@ void ServerTransport::on_accept(const as + } + + static ssize_t read(gnutls_transport_ptr_t ptr, void* buffer, size_t size) { +- asio::ip::tcp::socket* socket = reinterpret_cast(ptr); ++ boost::asio::ip::tcp::socket* socket = reinterpret_cast(ptr); + try { +- return asio::read(*socket, asio::buffer(buffer, size)); +- } catch (asio::system_error& /*se*/) { ++ return boost::asio::read(*socket, boost::asio::buffer(buffer, size)); ++ } catch (boost::system::system_error& /*se*/) { + return -1; + } + } + + static ssize_t write(gnutls_transport_ptr_t ptr, const void* buffer, size_t size) { +- asio::ip::tcp::socket* socket = reinterpret_cast(ptr); ++ boost::asio::ip::tcp::socket* socket = reinterpret_cast(ptr); + try { +- return asio::write(*socket, asio::buffer(buffer, size)); +- } catch (asio::system_error& /*se*/) { ++ return boost::asio::write(*socket, boost::asio::buffer(buffer, size)); ++ } catch (boost::system::system_error& /*se*/) { + return -1; + } + } +@@ -223,7 +223,7 @@ Proxy::Proxy(const std::string& ca_file) + throw Exception(TLS_SETUP_ERROR); + } + +-void Proxy::on_local_read(const asio::error_code& error, std::size_t bytes_transferred, ++void Proxy::on_local_read(const boost::system::error_code& error, std::size_t bytes_transferred, + transport_ptr_t transport_ptr, session_ptr_t session_ptr, socket_ptr_t local_socket_ptr, + buffer_ptr_t local_buffer_ptr, socket_ptr_t remote_socket_ptr) + { +@@ -240,8 +240,8 @@ void Proxy::on_local_read(const asio::er + } + + local_socket_ptr->async_receive( +- asio::buffer(&(*local_buffer_ptr)[0], local_buffer_ptr->size()), +- boost::bind(&Proxy::on_local_read, this, asio::placeholders::error, asio::placeholders::bytes_transferred, ++ boost::asio::buffer(&(*local_buffer_ptr)[0], local_buffer_ptr->size()), ++ boost::bind(&Proxy::on_local_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, + transport_ptr, session_ptr, local_socket_ptr, local_buffer_ptr, remote_socket_ptr) + ); + } +@@ -250,7 +250,7 @@ void Proxy::tunnel(transport_ptr_t trans + socket_ptr_t local_socket_ptr, socket_ptr_t remote_socket_ptr) + { + buffer_ptr_t local_buffer_ptr(new std::vector(LOCAL_BUFFER_SIZE)); +- t = new asio::thread(boost::bind(&Proxy::tunnel_, this, transport_ptr, ++ t = new boost::thread(boost::bind(&Proxy::tunnel_, this, transport_ptr, + session_ptr, local_socket_ptr, local_buffer_ptr, remote_socket_ptr)); + } + +@@ -262,14 +262,14 @@ void Proxy::disconnect_(transport_ptr_t + gnutls_bye(*session_ptr, GNUTLS_SHUT_RDWR); + + // shutdown the sockets belonging to this tunnel +- asio::error_code ec; ++ boost::system::error_code ec; + if (local_socket_ptr && local_socket_ptr->is_open()) { +- local_socket_ptr->shutdown(asio::ip::tcp::socket::shutdown_both, ec); ++ local_socket_ptr->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); + local_socket_ptr->close(ec); + } + + if (remote_socket_ptr && remote_socket_ptr->is_open()) { +- remote_socket_ptr->shutdown(asio::ip::tcp::socket::shutdown_both, ec); ++ remote_socket_ptr->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); + remote_socket_ptr->close(ec); + } + } +@@ -278,8 +278,8 @@ void Proxy::tunnel_(transport_ptr_t tran + buffer_ptr_t local_buffer_ptr, socket_ptr_t remote_socket_ptr) + { + local_socket_ptr->async_receive( +- asio::buffer(&(*local_buffer_ptr)[0], local_buffer_ptr->size()), +- boost::bind(&Proxy::on_local_read, this, asio::placeholders::error, asio::placeholders::bytes_transferred, ++ boost::asio::buffer(&(*local_buffer_ptr)[0], local_buffer_ptr->size()), ++ boost::bind(&Proxy::on_local_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, + transport_ptr, session_ptr, local_socket_ptr, local_buffer_ptr, remote_socket_ptr) + ); + +@@ -297,8 +297,8 @@ void Proxy::tunnel_(transport_ptr_t tran + + // forward the data over the local connection + try { +- asio::write(*local_socket_ptr, asio::buffer(&tunnel_buffer[0], bytes_transferred)); +- } catch (asio::system_error& /*se*/) { ++ boost::asio::write(*local_socket_ptr, boost::asio::buffer(&tunnel_buffer[0], bytes_transferred)); ++ } catch (boost::system::system_error& /*se*/) { + break; + } + } +@@ -333,15 +333,15 @@ void ClientProxy::setup() + for (unsigned short port = MIN_CLIENT_PORT; port <= MAX_CLIENT_PORT; port++) { + try { + acceptor_ptr.reset( +- new asio::ip::tcp::acceptor(transport_ptr_->io_service(), +- asio::ip::tcp::endpoint(asio::ip::address_v4::from_string(local_address_), ++ new boost::asio::ip::tcp::acceptor(transport_ptr_->io_service(), ++ boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::from_string(local_address_), + port), false)); + local_port_ = port; + break; +- } catch (asio::system_error& se) { ++ } catch (boost::system::system_error& se) { + if (port == MAX_CLIENT_PORT) + throw se; +- if (se.code() != asio::error::address_in_use) ++ if (se.code() != boost::asio::error::address_in_use) + throw se; + // this port is already in use, try another one + continue; +@@ -350,7 +350,7 @@ void ClientProxy::setup() + + // connect the transport + boost::static_pointer_cast(transport_ptr_)->connect(); +- } catch (asio::system_error& se) { ++ } catch (boost::system::system_error& se) { + throw Exception(std::string(TRANSPORT_ERROR) + se.what()); + } + } +@@ -378,12 +378,12 @@ void ClientProxy::on_transport_connect(t + } + + // start accepting connections on the local socket +- socket_ptr_t local_socket_ptr(new asio::ip::tcp::socket(transport_ptr->io_service())); ++ socket_ptr_t local_socket_ptr(new boost::asio::ip::tcp::socket(transport_ptr->io_service())); + acceptor_ptr->async_accept(*local_socket_ptr, boost::bind(&ClientProxy::on_client_connect, this, +- asio::placeholders::error, transport_ptr, session_ptr, local_socket_ptr, remote_socket_ptr)); ++ boost::asio::placeholders::error, transport_ptr, session_ptr, local_socket_ptr, remote_socket_ptr)); + } + +-void ClientProxy::on_client_connect(const asio::error_code& error, ++void ClientProxy::on_client_connect(const boost::system::error_code& error, + transport_ptr_t transport_ptr, session_ptr_t session_ptr, + socket_ptr_t local_socket_ptr, socket_ptr_t remote_socket_ptr) { + if (error) { +@@ -456,7 +456,7 @@ try + throw Exception(TLS_SETUP_ERROR); + + gnutls_certificate_set_dh_params(x509cred, dh_params); +-} catch (asio::system_error& se) { ++} catch (boost::system::system_error& se) { + throw Exception(std::string(TRANSPORT_ERROR) + se.what()); + } + +@@ -477,14 +477,14 @@ void ServerProxy::on_transport_connect(t + return; + } + +- socket_ptr_t local_socket_ptr(new asio::ip::tcp::socket(transport_ptr->io_service())); ++ socket_ptr_t local_socket_ptr(new boost::asio::ip::tcp::socket(transport_ptr->io_service())); + try { +- asio::ip::tcp::resolver resolver(transport_ptr->io_service()); +- asio::ip::tcp::resolver::query query("127.0.0.1", boost::lexical_cast(local_port_)); +- asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); ++ boost::asio::ip::tcp::resolver resolver(transport_ptr->io_service()); ++ boost::asio::ip::tcp::resolver::query query("127.0.0.1", boost::lexical_cast(local_port_)); ++ boost::asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); + + bool connected = false; +- while (iterator != asio::ip::tcp::resolver::iterator()) ++ while (iterator != boost::asio::ip::tcp::resolver::iterator()) + { + try + { +@@ -492,7 +492,7 @@ void ServerProxy::on_transport_connect(t + connected = true; + break; + } +- catch (asio::system_error /*se*/) ++ catch (boost::system::system_error /*se*/) + { + // make sure we close the socket after a failed attempt, as it + // may have been opened by the connect() call. +@@ -505,7 +505,7 @@ void ServerProxy::on_transport_connect(t + disconnect_(transport_ptr, session_ptr, local_socket_ptr, remote_socket_ptr); + return; + } +- } catch (asio::system_error& /*se*/) { ++ } catch (boost::system::system_error& /*se*/) { + disconnect_(transport_ptr, session_ptr, local_socket_ptr, remote_socket_ptr); + return; + } +--- abiword-3.0.1/plugins/collab/backends/service/xp/tls_tunnel.h.orig 2014-11-04 02:12:14.000000000 +0100 ++++ abiword-3.0.1/plugins/collab/backends/service/xp/tls_tunnel.h 2016-05-15 18:59:24.148638527 +0200 +@@ -33,7 +33,8 @@ + #include + #include + #include +-#include ++#include ++#include + #include + #include + #ifdef _MSC_VER +@@ -45,7 +46,7 @@ typedef int pid_t; + + namespace tls_tunnel { + +-typedef boost::shared_ptr socket_ptr_t; ++typedef boost::shared_ptr socket_ptr_t; + typedef boost::shared_ptr session_ptr_t; + typedef boost::shared_ptr< std::vector > buffer_ptr_t; + +@@ -59,7 +60,7 @@ private: + + class Transport : public boost::enable_shared_from_this { + public: +- asio::io_service& io_service(); ++ boost::asio::io_service& io_service(); + void run(); + void stop(); + +@@ -68,8 +69,8 @@ protected: + virtual ~Transport(); + + private: +- asio::io_service io_service_; +- asio::io_service::work work_; ++ boost::asio::io_service io_service_; ++ boost::asio::io_service::work work_; + }; + + typedef boost::shared_ptr transport_ptr_t; +@@ -92,9 +93,9 @@ public: + boost::function on_connect); + void accept(); + private: +- void on_accept(const asio::error_code& error, socket_ptr_t socket_ptr); ++ void on_accept(const boost::system::error_code& error, socket_ptr_t socket_ptr); + +- asio::ip::tcp::acceptor acceptor_; ++ boost::asio::ip::tcp::acceptor acceptor_; + boost::function on_connect_; + }; + +@@ -110,7 +111,7 @@ public: + protected: + Proxy(const std::string& ca_file); + +- void on_local_read(const asio::error_code& error, std::size_t bytes_transferred, ++ void on_local_read(const boost::system::error_code& error, std::size_t bytes_transferred, + transport_ptr_t transport_ptr, session_ptr_t session_ptr, socket_ptr_t local_socket_ptr, + buffer_ptr_t local_buffer_ptr, socket_ptr_t remote_socket_ptr); + void tunnel(transport_ptr_t transport_ptr, session_ptr_t session_ptr, +@@ -127,7 +128,7 @@ private: + socket_ptr_t local_socket_ptr, buffer_ptr_t local_buffer_ptr, + socket_ptr_t remote_socket); + +- asio::thread* t; ++ boost::thread* t; + }; + + // FIXME: this clientproxy can only handle 1 SSL connection at the same time +@@ -144,7 +145,7 @@ public: + + private: + void on_transport_connect(transport_ptr_t transport_ptr, socket_ptr_t remote_socket_ptr); +- void on_client_connect(const asio::error_code& error, transport_ptr_t transport_ptr, ++ void on_client_connect(const boost::system::error_code& error, transport_ptr_t transport_ptr, + session_ptr_t session_ptr, socket_ptr_t local_socket_ptr, socket_ptr_t remote_socket_ptr); + session_ptr_t setup_tls_session(socket_ptr_t remote_socket_ptr); + +@@ -152,7 +153,7 @@ private: + unsigned short local_port_; + std::string connect_address_; + unsigned short connect_port_; +- boost::shared_ptr acceptor_ptr; ++ boost::shared_ptr acceptor_ptr; + bool check_hostname_; + }; + +--- abiword-3.0.1/plugin-configure.m4.orig 2014-12-23 06:13:14.000000000 +0100 ++++ abiword-3.0.1/plugin-configure.m4 2016-05-15 19:15:04.470598705 +0200 +@@ -565,7 +565,7 @@ + enable_collab_backend_tcp=$enableval + if test "$enable_collab_backend_tcp" != "no"; then + AC_LANG_PUSH(C++) +- AC_CHECK_HEADERS([asio.hpp], [], ++ AC_CHECK_HEADERS([boost/asio.hpp], [], + [ + AC_MSG_ERROR([collab plugin: asio is required for the collab plugin TCP backend, see http://think-async.com/]) + ]) +@@ -573,7 +573,7 @@ + fi + ], [ + AC_LANG_PUSH(C++) +- AC_CHECK_HEADERS([asio.hpp], ++ AC_CHECK_HEADERS([boost/asio.hpp], + [ + enable_collab_backend_tcp="yes" + ]) +@@ -604,7 +604,7 @@ + enable_collab_backend_service=$enableval + if test "$enable_collab_backend_service" != "no"; then + AC_LANG_PUSH(C++) +- AC_CHECK_HEADERS([asio.hpp], [], ++ AC_CHECK_HEADERS([boost/asio.hpp], [], + [ + AC_MSG_ERROR([collab plugin: asio is required for the the abicollab.net backend, see http://think-async.com/]) + ]) +@@ -612,7 +612,7 @@ + fi + ], [ + AC_LANG_PUSH(C++) +- AC_CHECK_HEADERS([asio.hpp], ++ AC_CHECK_HEADERS([boost/asio.hpp], + [ + enable_collab_backend_service="yes" + ]) +--- abiword-3.0.1/plugins/collab/backends/tcp/xp/IOServerHandler.h.orig 2013-07-05 03:51:21.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/tcp/xp/IOServerHandler.h 2016-05-16 18:14:49.934309134 +0200 +@@ -23,7 +23,7 @@ + + #include + #include +-#include ++#include + + #include + #include "Session.h" +@@ -34,7 +34,7 @@ class IOServerHandler + { + public: + IOServerHandler(int port, boost::function)> af, +- boost::function)> ef, asio::io_service& io_service_) ++ boost::function)> ef, boost::asio::io_service& io_service_) + : accept_synchronizer(boost::bind(&IOServerHandler::_signal, this)), + io_service(io_service_), + m_pAcceptor(NULL), +@@ -43,7 +43,7 @@ public: + m_ef(ef) + { + UT_DEBUGMSG(("IOServerHandler()\n")); +- m_pAcceptor = new asio::ip::tcp::acceptor(io_service, asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)); ++ m_pAcceptor = new boost::asio::ip::tcp::acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)); + } + + virtual ~IOServerHandler() +@@ -76,7 +76,7 @@ public: + session_ptr.reset(new Session(io_service, m_ef)); + m_pAcceptor->async_accept(session_ptr->getSocket(), + boost::bind(&IOServerHandler::handleAsyncAccept, +- this, asio::placeholders::error)); ++ this, boost::asio::placeholders::error)); + } + + private: +@@ -88,7 +88,7 @@ private: + m_af(this, session_ptr); + } + +- void handleAsyncAccept(const asio::error_code& ec) ++ void handleAsyncAccept(const boost::system::error_code& ec) + { + UT_DEBUGMSG(("IOServerHandler::handleAsyncAccept()\n")); + if (ec) +@@ -100,8 +100,8 @@ private: + } + + Synchronizer accept_synchronizer; +- asio::io_service& io_service; +- asio::ip::tcp::acceptor* m_pAcceptor; ++ boost::asio::io_service& io_service; ++ boost::asio::ip::tcp::acceptor* m_pAcceptor; + boost::shared_ptr session_ptr; + + boost::function)> m_af; +--- abiword-3.0.1/plugins/collab/backends/tcp/xp/Session.h.orig 2014-02-06 02:12:15.000000000 +0100 ++++ abiword-3.0.1/plugins/collab/backends/tcp/xp/Session.h 2016-05-16 18:30:27.198273019 +0200 +@@ -35,7 +35,7 @@ class TCPAccountHandler; + class Session : public Synchronizer, public boost::noncopyable, public boost::enable_shared_from_this + { + public: +- Session(asio::io_service& io_service, boost::function)> ef) ++ Session(boost::asio::io_service& io_service, boost::function)> ef) + : Synchronizer(boost::bind(&Session::_signal, this)), + socket(io_service), + queue_protector(), +@@ -43,13 +43,13 @@ public: + { + } + +- void connect(asio::ip::tcp::resolver::iterator& iterator) ++ void connect(boost::asio::ip::tcp::resolver::iterator& iterator) + { + socket.connect(*iterator); + } + + // TODO: don't expose this +- asio::ip::tcp::socket& getSocket() ++ boost::asio::ip::tcp::socket& getSocket() + { + return socket; + } +@@ -94,9 +94,9 @@ public: + { + UT_DEBUGMSG(("Session::asyncReadHeader()\n")); + packet_data = 0; // just to be sure we'll never touch a datablock we might have read before +- asio::async_read(socket, +- asio::buffer(&packet_size, 4), +- boost::bind(&Session::asyncReadHeaderHandler, shared_from_this(), asio::placeholders::error, asio::placeholders::bytes_transferred)); ++ boost::asio::async_read(socket, ++ boost::asio::buffer(&packet_size, 4), ++ boost::bind(&Session::asyncReadHeaderHandler, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); + } + + void asyncWrite(int size, const char* data) +@@ -115,9 +115,9 @@ public: + packet_data_write = store_data; + + UT_DEBUGMSG(("sending datablock of length: %d\n", packet_size_write)); +- asio::async_write(socket, +- asio::buffer(&packet_size_write, 4), +- boost::bind(&Session::asyncWriteHeaderHandler, shared_from_this(), asio::placeholders::error)); ++ boost::asio::async_write(socket, ++ boost::asio::buffer(&packet_size_write, 4), ++ boost::bind(&Session::asyncWriteHeaderHandler, shared_from_this(), boost::asio::placeholders::error)); + } + } + +@@ -134,12 +134,12 @@ public: + UT_DEBUGMSG(("Session::disconnect()\n")); + if (socket.is_open()) + { +- asio::error_code ecs; +- socket.shutdown(asio::ip::tcp::socket::shutdown_both, ecs); ++ boost::system::error_code ecs; ++ socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ecs); + if (ecs) { + UT_DEBUGMSG(("Error shutting down socket: %s\n", ecs.message().c_str())); + } +- asio::error_code ecc; ++ boost::system::error_code ecc; + socket.close(ecc); + if (ecc) { + UT_DEBUGMSG(("Error closing socket: %s\n", ecc.message().c_str())); +@@ -156,7 +156,7 @@ private: + m_ef(shared_from_this()); + } + +- void asyncReadHeaderHandler(const asio::error_code& error, ++ void asyncReadHeaderHandler(const boost::system::error_code& error, + std::size_t bytes_transferred) + { + if (error) +@@ -183,12 +183,12 @@ private: + UT_DEBUGMSG(("going to read datablock of length: %d\n", packet_size)); + // now continue reading the packet data + packet_data = reinterpret_cast(g_malloc(packet_size)); +- asio::async_read(socket, +- asio::buffer(packet_data, packet_size), +- boost::bind(&Session::asyncReadHandler, shared_from_this(), asio::placeholders::error, asio::placeholders::bytes_transferred)); ++ boost::asio::async_read(socket, ++ boost::asio::buffer(packet_data, packet_size), ++ boost::bind(&Session::asyncReadHandler, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); + } + +- void asyncReadHandler(const asio::error_code& error, ++ void asyncReadHandler(const boost::system::error_code& error, + std::size_t bytes_transferred) + { + if (error) +@@ -210,7 +210,7 @@ private: + asyncReadHeader(); + } + +- void asyncWriteHeaderHandler(const asio::error_code& ec) ++ void asyncWriteHeaderHandler(const boost::system::error_code& ec) + { + UT_DEBUGMSG(("Session::asyncWriteHeaderHandler()\n")); + if (ec) +@@ -221,12 +221,12 @@ private: + } + + // write the packet body +- asio::async_write(socket, +- asio::buffer(packet_data_write, packet_size_write), +- boost::bind(&Session::asyncWriteHandler, shared_from_this(), asio::placeholders::error)); ++ boost::asio::async_write(socket, ++ boost::asio::buffer(packet_data_write, packet_size_write), ++ boost::bind(&Session::asyncWriteHandler, shared_from_this(), boost::asio::placeholders::error)); + } + +- void asyncWriteHandler(const asio::error_code& ec) ++ void asyncWriteHandler(const boost::system::error_code& ec) + { + UT_DEBUGMSG(("Session::asyncWriteHandler()\n")); + FREEP(packet_data_write); +@@ -247,13 +247,13 @@ private: + + UT_DEBUGMSG(("sending datablock of length: %d\n", packet_size_write)); + +- asio::async_write(socket, +- asio::buffer(&packet_size_write, 4), +- boost::bind(&Session::asyncWriteHeaderHandler, shared_from_this(), asio::placeholders::error)); ++ boost::asio::async_write(socket, ++ boost::asio::buffer(&packet_size_write, 4), ++ boost::bind(&Session::asyncWriteHeaderHandler, shared_from_this(), boost::asio::placeholders::error)); + } + } + +- asio::ip::tcp::socket socket; ++ boost::asio::ip::tcp::socket socket; + abicollab::mutex queue_protector; + std::deque< std::pair > incoming; + std::deque< std::pair > outgoing; +--- abiword-3.0.1/plugins/collab/backends/tcp/xp/TCPAccountHandler.cpp.orig 2013-07-05 03:51:21.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/tcp/xp/TCPAccountHandler.cpp 2016-05-16 18:39:44.224203554 +0200 +@@ -80,7 +80,7 @@ ConnectResult TCPAccountHandler::connect + UT_return_val_if_fail(!m_bConnected, CONNECT_ALREADY_CONNECTED); + UT_return_val_if_fail(!m_thread, CONNECT_INTERNAL_ERROR); + m_io_service.reset(); +- m_thread = new asio::thread(boost::bind(&asio::io_service::run, &m_io_service)); ++ m_thread = new boost::thread(boost::bind(&boost::asio::io_service::run, &m_io_service)); + + // set up the connection + if (getProperty("server") == "") +@@ -97,7 +97,7 @@ ConnectResult TCPAccountHandler::connect + m_bConnected = true; // todo: ask it to the acceptor + pDelegator->run(); + } +- catch (asio::system_error se) ++ catch (boost::system::system_error se) + { + UT_DEBUGMSG(("Failed to start accepting connections: %s\n", se.what())); + _teardownAndDestroyHandler(); +@@ -116,13 +116,13 @@ ConnectResult TCPAccountHandler::connect + + try + { +- asio::ip::tcp::resolver resolver(m_io_service); +- asio::ip::tcp::resolver::query query(getProperty("server"), getProperty("port")); +- asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); ++ boost::asio::ip::tcp::resolver resolver(m_io_service); ++ boost::asio::ip::tcp::resolver::query query(getProperty("server"), getProperty("port")); ++ boost::asio::ip::tcp::resolver::iterator iterator(resolver.resolve(query)); + + bool connected = false; + boost::shared_ptr session_ptr(new Session(m_io_service, boost::bind(&TCPAccountHandler::handleEvent, this, _1))); +- while (iterator != asio::ip::tcp::resolver::iterator()) ++ while (iterator != boost::asio::ip::tcp::resolver::iterator()) + { + try + { +@@ -132,7 +132,7 @@ ConnectResult TCPAccountHandler::connect + connected = true; + break; + } +- catch (asio::system_error se) ++ catch (boost::system::system_error se) + { + UT_DEBUGMSG(("Connection attempt failed: %s\n", se.what())); + // make sure we close the socket after a failed attempt, as it +@@ -158,7 +158,7 @@ ConnectResult TCPAccountHandler::connect + addBuddy(pBuddy); + m_clients.insert(std::pair >(pBuddy, session_ptr)); + } +- catch (asio::system_error se) ++ catch (boost::system::system_error se) + { + UT_DEBUGMSG(("Failed to resolve %s:%d: %s\n", getProperty("server").c_str(), _getPort(getProperties()), se.what())); + _teardownAndDestroyHandler(); +--- abiword-3.0.1/plugins/collab/backends/tcp/xp/TCPAccountHandler.h.orig 2013-04-07 15:53:03.000000000 +0200 ++++ abiword-3.0.1/plugins/collab/backends/tcp/xp/TCPAccountHandler.h 2016-05-16 18:37:26.453612079 +0200 +@@ -20,6 +20,7 @@ + #define __TCPACCOUNTHANDLER__ + + #include ++#include + #include + + #include "IOServerHandler.h" +@@ -84,9 +85,9 @@ private: + virtual UT_sint32 _getPort(const PropertyMap& props); + void _handleAccept(IOServerHandler* pHandler, boost::shared_ptr session); + +- asio::io_service m_io_service; +- asio::io_service::work m_work; +- asio::thread* m_thread; ++ boost::asio::io_service m_io_service; ++ boost::asio::io_service::work m_work; ++ boost::thread* m_thread; + bool m_bConnected; // TODO: drop this, ask the IO handler + IOServerHandler* m_pDelegator; + diff --git a/abiword-parallel.patch b/abiword-parallel.patch new file mode 100644 index 0000000..dd86e0f --- /dev/null +++ b/abiword-parallel.patch @@ -0,0 +1,11 @@ +--- abiword-3.0.1/src/Makefile.am.orig 2016-05-15 17:46:25.779731460 +0200 ++++ abiword-3.0.1/src/Makefile.am 2016-05-15 18:26:28.726615664 +0200 +@@ -168,7 +168,7 @@ + + INTROSPECTION_GIRS += Abi-@ABIWORD_SERIES@.gir + +-Abi_@ABIWORD_SERIES@.gir: $(INTROSPECTION_SCANNER) libabiword-@ABIWORD_SERIES@.la Makefile ++Abi-@ABIWORD_SERIES@.gir: $(INTROSPECTION_SCANNER) libabiword-@ABIWORD_SERIES@.la Makefile + Abi_@ABI_SUB_SERIES@_gir_INCLUDES = GObject-2.0 Gtk-3.0 Gsf-1 + Abi_@ABI_SUB_SERIES@_gir_CFLAGS = $(libabiword_@ABIWORD_SERIES@_la_CPPFLAGS) + Abi_@ABI_SUB_SERIES@_gir_LIBS = libabiword-@ABIWORD_SERIES@.la diff --git a/abiword-tidy.patch b/abiword-tidy.patch new file mode 100644 index 0000000..f81d24b --- /dev/null +++ b/abiword-tidy.patch @@ -0,0 +1,24 @@ +--- abiword-3.0.1/plugin-configure.m4.orig 2014-12-23 06:13:14.000000000 +0100 ++++ abiword-3.0.1/plugin-configure.m4 2016-05-15 17:23:24.841565627 +0200 +@@ -1612,7 +1612,7 @@ + inter7eps_found="no" + ]) + +-AC_CHECK_HEADERS([tidy/tidy.h], ++AC_CHECK_HEADERS([tidy.h], + [ + libtidy_found="yes" + ], [ +--- abiword-3.0.1/plugins/mht/xp/tidyReader.h.orig 2013-04-07 15:53:03.000000000 +0200 ++++ abiword-3.0.1/plugins/mht/xp/tidyReader.h 2016-05-15 20:06:39.366549827 +0200 +@@ -24,8 +24,8 @@ + #ifndef TIDYREADER_H + #define TIDYREADER_H + +-#include +-#include ++#include ++#include + + #include "ut_xml.h" + diff --git a/abiword.spec b/abiword.spec index 47effcf..6a7ba82 100644 --- a/abiword.spec +++ b/abiword.spec @@ -1,17 +1,26 @@ +# TODO: wordperfect support with libwpd 0.10, libwp[gs] 0.3 # -%bcond_with gda # libgda support +%bcond_without evolution # Evolution Data Server for contacts and calendar +%bcond_without champlain # champlain maps display support +%bcond_with gda # libgda (1.x) support %bcond_without goffice # without plugin-goffice %bcond_without gnome # without GNOME libs -%bcond_with gnomevfs # gnome-vfs support -%bcond_with ots # try build plugin-ots (requires ots >= 0.5.0) +%bcond_with gnomevfs # gnome-vfs support (GTK+ 2.x only) +%bcond_with gtk2 # GTK+ 2.x instead of 3.x +%bcond_without introspection # GObject introspection +%bcond_without ots # Open Text Summarizer plugin +%bcond_without redland # redland/raptor libraries # %define mver 3.0 # +%if %{without gtk2} +%undefine with_gnomevfs +%endif Summary: Multi-platform word processor Summary(pl.UTF-8): Wieloplatformowy procesor tekstu Name: abiword Version: 3.0.1 -Release: 7 +Release: 8 Epoch: 1 License: GPL v2+ Group: X11/Applications/Editors @@ -22,71 +31,110 @@ Patch1: %{name}-mht.patch Patch2: %{name}-librevenge.patch Patch3: %{name}-link-grammar-5.patch Patch4: %{name}-link-grammar-5-second.patch +Patch5: %{name}-parallel.patch +Patch6: %{name}-tidy.patch +Patch7: %{name}-asio.patch URL: http://www.abisource.com/ BuildRequires: aiksaurus-gtk-devel >= 1.2.1 -BuildRequires: autoconf -BuildRequires: automake -BuildRequires: boost-devel >= 1.33.1 +BuildRequires: autoconf >= 2.50 +BuildRequires: automake >= 1:1.9 +BuildRequires: boost-devel >= 1.40.0 BuildRequires: bzip2-devel -BuildRequires: cairo-devel +BuildRequires: cairo-devel >= 1.10 +BuildRequires: dbus-glib-devel >= 0.70 BuildRequires: enchant-devel >= 1.2.6 BuildRequires: eps-devel -BuildRequires: evolution-data-server-devel +%{?with_evolution:BuildRequires: evolution-data-server-devel >= 3.6} BuildRequires: fontconfig-devel >= 1:2.3.95 BuildRequires: fribidi-devel >= 0.10.4 BuildRequires: glib2-devel >= 1:2.12.1 +BuildRequires: gnutls-devel +%{?with_introspection:BuildRequires: gobject-introspection-devel >= 1.0.0} +%if %{with gtk2} BuildRequires: gtk+2-devel >= 2:2.12.0 +%else +BuildRequires: gtk+3-devel >= 3.0.8 +%endif BuildRequires: gtkmathview-devel >= 0.7.6 -BuildRequires: gucharmap-devel >= 1.7.0 +# libchamplain-gtk compiler with matching GTK+ version +%{?with_champlain:BuildRequires: libchamplain-devel >= 0.12} %if %{with gda} BuildRequires: libgda-devel >= 1:1.2.4-16 BuildRequires: libgnomedb-devel >= 1:1.2.0 -%else -Obsoletes: abiword-plugin-gda %endif -BuildRequires: libgnomeui-devel >= 2.15.91 -%if %{with goffice} -BuildRequires: libgoffice-devel >= 0.8.0 -%else -Obsoletes: abiword-plugin-goffice -%endif -BuildRequires: libgsf-devel >= 1.14.9 +%{?with_goffice:BuildRequires: libgoffice-devel >= 0.10.2} +BuildRequires: libgcrypt-devel >= 1.4.5 +BuildRequires: libgsf-devel >= 1.14.18 +BuildRequires: libical-devel >= 0.46 BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: librevenge-devel BuildRequires: librsvg-devel >= 1:2.16.0 -BuildRequires: libtool +BuildRequires: libsoup-devel >= 2.4 +BuildRequires: libtool >= 2:1.5 BuildRequires: libwmf-devel >= 2:0.2.8.4 BuildRequires: libwpd-devel >= 0.9.0 BuildRequires: libwpg-devel >= 0.2.0 BuildRequires: libwps-devel >= 0.2.0 BuildRequires: libxml2-devel >= 1:2.6.26 +BuildRequires: libxslt-devel BuildRequires: link-grammar-devel >= 4.2.1 -BuildRequires: loudmouth-devel >= 1.0.1 +BuildRequires: loudmouth-devel >= 1.3.2 %{?with_ots:BuildRequires: ots-devel >= 0.5.0} BuildRequires: pango-devel BuildRequires: perl-devel -BuildRequires: pkgconfig >= 0.9.0 +BuildRequires: pkgconfig >= 1:0.9.0 BuildRequires: popt-devel BuildRequires: psiconv-devel >= 0.9.6 +%{?with_introspection:BuildRequires: python >= 2} +%{?with_introspection:BuildRequires: python-pygobject3 >= 3} +%{?with_redland:BuildRequires: rasqal-devel >= 0.9.17} BuildRequires: readline-devel +%{?with_redland:BuildRequires: redland-devel >= 1.0.10} +BuildRequires: rpmbuild(macros) >= 1.219 BuildRequires: sed >= 4.0 -BuildRequires: t1lib-devel +BuildRequires: tidy-devel +BuildRequires: telepathy-glib-devel >= 0.14.5 BuildRequires: wv-devel >= 1.2.1 +BuildRequires: zlib-devel Requires(post,postun): desktop-file-utils +Requires: cairo >= 1.10 +Requires: enchant >= 1.2.6 +%{?with_evolution:Requires: evolution-data-server-libs >= 3.6} +Requires: fontconfig >= 1:2.3.95 +Requires: fribidi >= 0.10.4 +Requires: glib2 >= 1:2.12.1 +%if %{with gtk2} +Requires: gtk+2 >= 2:2.12.0 +%else +Requires: gtk+3 >= 3.0.8 +%endif +%{?with_champlain:Requires: libchamplain >= 0.12} +Requires: libgcrypt >= 1.4.5 +%{?with_goffice:Requires: libgoffice >= 0.10.2} +Requires: libgsf >= 1.14.18 +Requires: libical >= 0.46 +Requires: librsvg >= 1:2.16.0 +Requires: libxml2 >= 1:2.6.26 +%{?with_redland:Requires: rasqal >= 0.9.17} +%{?with_redland:Requires: redland >= 1.0.10} +Requires: wv >= 1.2.1 Obsoletes: abiword-plugin-applix Obsoletes: abiword-plugin-babelfish Obsoletes: abiword-plugin-bmp Obsoletes: abiword-plugin-bz2 Obsoletes: abiword-plugin-capi Obsoletes: abiword-plugin-clarisworks +Obsoletes: abiword-plugin-coquille Obsoletes: abiword-plugin-dash Obsoletes: abiword-plugin-docbook Obsoletes: abiword-plugin-eml Obsoletes: abiword-plugin-freetranslation +%{!?with_gda:Obsoletes: abiword-plugin-gda} Obsoletes: abiword-plugin-gdict Obsoletes: abiword-plugin-gdkpixbuf Obsoletes: abiword-plugin-gimp +%{!?with_goffice:Obsoletes: abiword-plugin-goffice} Obsoletes: abiword-plugin-google Obsoletes: abiword-plugin-gypsython Obsoletes: abiword-plugin-hancom @@ -138,12 +186,26 @@ Files for AbiWord plugins development. %description devel -l pl.UTF-8 Pliki do tworzenia wtyczek dla AbiWorda. +%package -n python-abiword +Summary: Python GObject binding for AbiWord library +Summary(pl.UTF-8): Wiązanie Pythona i GObject do biblioteki AbiWorda +Group: Libraries/Python +Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: python-pygobject3 >= 3 + +%description -n python-abiword +Python GObject binding for AbiWord library. + +%description -n python-abiword -l pl.UTF-8 +Wiązanie Pythona i GObject do biblioteki AbiWorda. + # plugins - tools %package plugin-aiksaurus Summary: AbiWord Aiksaurus plugin Summary(pl.UTF-8): Wtyczka AbiWorda Aiksaurus Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: aiksaurus-gtk >= 1.2.1 %description plugin-aiksaurus Allows to use Aiksaurus thesaurus. @@ -157,6 +219,9 @@ Summary: Remote collaborate for AbiWord Summary(pl.UTF-8): Zdalna współpraca dla AbiWorda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: dbus-glib >= 0.70 +Requires: loudmouth >= 1.3.2 +Requires: telepathy-glib >= 0.14.5 %description plugin-collab Allows to collaborate with a remote user. @@ -182,6 +247,8 @@ Summary(pl.UTF-8): Wtyczka AbiWorda dla GDA Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} Requires: gnome-database-access-properties >= 1:1.2.1 +Requires: libgda >= 1:1.2.4-16 +Requires: libgnomedb >= 1:1.2.0 %description plugin-gda Allows access to any database provided by libgda. @@ -195,6 +262,7 @@ Summary: GNOME Office plugin Summary(pl.UTF-8): Wtyczka GNOME Office Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: libgoffice >= 0.10.2 %description plugin-goffice Allows to share GNOME Office objects between GOffice appplications. @@ -208,6 +276,7 @@ Summary: AbiWord MathView plugin Summary(pl.UTF-8): Wtyczka MAthView dla AbiWorda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: gtkmathview-devel >= 0.7.6 %description plugin-mathview MathML or LaTeX style equation inserting and editing. @@ -220,6 +289,7 @@ Summary: AbiWord OTS plugin Summary(pl.UTF-8): Wtyczka OTS dla Abiworda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: ots >= 0.5.0 %description plugin-ots Create document summaries. @@ -228,18 +298,6 @@ Create document summaries. Wtyczka ta służy do tworzenia podsumowania dokumentu. # plugins import - export -%package plugin-coquille -Summary: AbiWord Coquille plugin -Summary(pl.UTF-8): Wtyczka Coquille dla Abiworda -Group: X11/Applications/Editors -Requires: %{name} = %{epoch}:%{version}-%{release} - -%description plugin-coquille -Docbook extensions. - -%description plugin-coquille -l pl.UTF-8 -Rozszerzenia Docbooka. - %package plugin-latex Summary: AbiWord LaTeX plugin Summary(pl.UTF-8): Wtyczka LaTeX dla Abiworda @@ -257,6 +315,7 @@ Summary: AbiWord Link Grammar plugin Summary(pl.UTF-8): Wtyczka Gramatyki dla Abiworda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: link-grammar >= 4.2.1 %description plugin-link-grammar AbiWord Link Grammar plugin. @@ -269,6 +328,7 @@ Summary: AbiWord Psion plugin Summary(pl.UTF-8): Wtyczka Psion dla Abiworda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: psiconv >= 0.9.6 %description plugin-psion Import/export Psion files. @@ -281,6 +341,7 @@ Summary: AbiWord WMF plugin Summary(pl.UTF-8): Wtyczka WMF dla Abiworda Group: X11/Applications/Editors Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: libwmf >= 2:0.2.8.4 %description plugin-wmf View Windows Metafiles. @@ -320,18 +381,29 @@ Jest to teczka clipartów używanych przez AbiWorda. %patch2 -p0 %patch3 -p1 %patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 %build +%{__libtoolize} %{__aclocal} -I . -%{__automake} %{__autoconf} +%{__autoheader} +%{__automake} %configure \ - --with-gnomevfs=%{?with_gnomevfs:yes}%{!?with_gnomevfs:no} \ - --with-goffice=%{?with_goffice:yes}%{!?with_goffice:no} \ + --disable-silent-rules \ --disable-static \ --enable-clipart \ + %{?with_introspection:--enable-introspection} \ --enable-plugins=auto \ - --enable-templates + --enable-templates \ + --with-champlain%{!?with_champlain:=no} \ + --with-evolution-data-server%{!?with_evolution:=no} \ + --with-gnomevfs%{!?with_gnomevfs:=no} \ + --with-goffice%{!?with_goffice:=no} \ + %{?with_gtk2:--with-gtk2} \ + --with-redland%{!?with_redland:=no} %{__make} @@ -342,7 +414,13 @@ rm -rf $RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT # Remove useless files -%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/abiword-%{mver}/plugins/*.la +%{__rm} $RPM_BUILD_ROOT%{_libdir}/abiword-%{mver}/plugins/*.la +# obsoleted by pkg-config +%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib*.la + +%if %{with introspection} +%py_postclean +%endif %clean rm -rf $RPM_BUILD_ROOT @@ -357,22 +435,26 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%attr(755,root,root) %{_bindir}/* +%attr(755,root,root) %{_bindir}/abiword %attr(755,root,root) %{_libdir}/libabiword-%{mver}.so +%if %{with introspection} +%{_libdir}/girepository-1.0/Abi-%{mver}.typelib +%endif %dir %{_libdir}/abiword-%{mver} %dir %{_libdir}/abiword-%{mver}/plugins %dir %{_datadir}/abiword-%{mver} %{_datadir}/abiword-%{mver}/Presentation.xml %{_datadir}/abiword-%{mver}/readme.abw %{_datadir}/abiword-%{mver}/readme.txt -%{_datadir}/abiword-%{mver}/strings %{_datadir}/abiword-%{mver}/system.profile* +%{_datadir}/abiword-%{mver}/certs +%{_datadir}/abiword-%{mver}/mime-info +%{_datadir}/abiword-%{mver}/omml_xslt +%{_datadir}/abiword-%{mver}/strings %{_datadir}/abiword-%{mver}/templates %{_datadir}/abiword-%{mver}/ui %{_datadir}/abiword-%{mver}/xsltml -%{_datadir}/abiword-%{mver}/mime-info -%{_datadir}/abiword-%{mver}/omml_xslt -%{_desktopdir}/*.desktop +%{_desktopdir}/abiword.desktop %{_iconsdir}/hicolor/*/apps/abiword.* %{_mandir}/man1/abiword.1* %{_datadir}/dbus-1/services/org.freedesktop.Telepathy.Client.AbiCollab.service @@ -419,10 +501,18 @@ rm -rf $RPM_BUILD_ROOT %files devel %defattr(644,root,root,755) -%{_libdir}/libabiword-%{mver}.la %{_includedir}/abiword-%{mver} +%if %{with introspection} +%{_datadir}/gir-1.0/Abi-3.0.gir +%endif %{_pkgconfigdir}/abiword-%{mver}.pc +%if %{with introspection} +%files -n python-abiword +%defattr(644,root,root,755) +%{py_sitedir}/gi/overrides/Abi.py[co] +%endif + %files plugin-aiksaurus %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/abiword-%{mver}/plugins/aiksaurus.so -- 2.44.0