git: 0a696a982663 - main - editors/abiword: update to 3.0.8

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Wed, 18 Mar 2026 07:10:06 UTC
The branch main has been updated by truckman:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0a696a98266334a8df7cec74431f1cbd3f7e53e5

commit 0a696a98266334a8df7cec74431f1cbd3f7e53e5
Author:     Olivier Duchateau <duchateau.olivier@gmail.com>
AuthorDate: 2026-03-18 06:00:25 +0000
Commit:     Don Lewis <truckman@FreeBSD.org>
CommitDate: 2026-03-18 07:08:15 +0000

    editors/abiword: update to 3.0.8
    
    Update to 3.0.8:
      3.0.8 - 2026/02/17
      - Fix memory leaks with a collab Telepathy error.
      - Fix paste of images from Firefox.
      - Fix memory leaks in styles dialog, Gtk text input.
      - Fix use after free and memory leak with list numbering.
      - Fix memory leak with text drag and drop.
      - Fix memory leak in OpenXML importer/exporter.
      - Remove babelfish and freetranslation plugins.
      - Fix appstream for newer flathub requirements.
      - Properly remember the recent files even if AbiWord crashes.
      - wordperfect: Use the more recent version of libwpd libwpg and
        libwps. This upgrade the dependencies:
        - libwpd-0.10
        - libwps-0.4
        - libwpg-0.3
      3.0.7 - 2025/07/30
      - Fix memory leaks in Styles, Font Chooser, Borders, List, Clip Art,
        Replace, Tabs and Table dialogs.
      - Fix memory leaks in XHTML import.
      - Fix memory leaks in cut and paste.
      - Fix memory leaks in the ODF exporter.
      - Fix memory leaks in the GdkPixbuf importer.
      - Fix crash when editing lists.
      - Fix crash when inserting a JPEG image.
      - Restored icons from page setup dialog (Removed XPM in 3.0.6).
      - Minor spacing adjustement in the status bar.
      3.0.6 - 2024/11/03
      - Removed XPM icons and moved the PNG to gresources (backported)
        This is necessary due to a break in the GNOME platform where XPM
        is not longer supported causing many icons to be missing.
      - Fix build with recent libxml2. Some headers are now explicitly
        required.
      - Fix build of mathview plugin with recent gcc.
        https://gitlab.gnome.org/World/AbiWord/-/issues/27
      - Fixes to the AppStream file for validation.
        https://gitlab.gnome.org/World/AbiWord/-/issues/16
      - Fix to the table widget in the toolbar.
      - Fix build with glib
        https://gitlab.gnome.org/World/AbiWord/-/issues/15
      - Disable "Install new plugin" on flatpak. Require
        `CPPFLAGS=-DFLATPAK_BUILD`. Bug #13927
      - Fix a crash loading files under some condition.
    
    Fix LICENSE
    
    Adjust dependencies
    
    Remove unneeded patches
    
    Remove MATHVIEW, PSION, COLLAB options because these libraries are no
    longer maintained or developed
    
    Drop NLS option, otherwise we have warning during configure stage
    
    Add WMF option, because it requires graphics/libwmf
    
    Add upstream patch, in order to build against textproc/enchant2
    
    Sort plugins
    
    Remove substitutions directives in post-patch target because
    configure.ac script contains these changes
    
    add gmodule-2.0 in configure script
    fix textproc/enchant2
    
    Adjust dependencies to clean up stage-qa.  popt appears to be unneeded.
    Boost is only needed to supply includes for the build.  The boost
    library is not needed. (truckman)
    
    Enable WMF by default, since disabling it saves very little.  libwmf is
    already pulled in by the mandatory libwv.  Then even if the plugin is
    disabled, we still link to libwmf. Perhaps libwv could be made optional.
    (truckman)
    
    Pet portclippy. (truckman)
    
    PR:             293692
---
 editors/abiword/Makefile                           | 158 ++---
 editors/abiword/distinfo                           |   8 +-
 editors/abiword/files/patch-configure              |  40 --
 editors/abiword/files/patch-configure.ac           |  19 +
 ...git-01-2a06be6a10a0718f8a3d8e00c317f5042c99a467 |  29 -
 .../patch-plugins_collab_backends_tcp_xp_Session.h |  11 -
 ...plugins_collab_core_sync_xp_SynchronizedQueue.h |  11 -
 .../files/patch-plugins_wordperfect_plugin.m4      |  20 -
 .../files/patch-plugins_wordperfect_xp_Makefile.am |  11 -
 .../files/patch-plugins_wordperfect_xp_Makefile.in |  11 -
 ...plugins_wordperfect_xp_ie__imp__WordPerfect.cpp | 652 ---------------------
 ...h-plugins_wordperfect_xp_ie__imp__WordPerfect.h | 162 -----
 ...gins_wordperfect_xp_ie__impexp__WordPerfect.cpp |  52 --
 ...lugins_wordperfect_xp_ie__impexp__WordPerfect.h |  10 -
 editors/abiword/files/patch-plugins_wpg_plugin.m4  |   9 -
 .../patch-plugins_wpg_xp_ie__impGraphic__WPG.cpp   | 249 --------
 .../files/patch-src_wp_ap_xp_ap__Dialog__Goto.cpp  |  21 -
 editors/abiword/pkg-plist                          |  26 +-
 18 files changed, 80 insertions(+), 1419 deletions(-)

diff --git a/editors/abiword/Makefile b/editors/abiword/Makefile
index 0812db903a62..271da70a9f5b 100644
--- a/editors/abiword/Makefile
+++ b/editors/abiword/Makefile
@@ -1,159 +1,105 @@
 PORTNAME=	abiword
-PORTVERSION=	3.0.5
-PORTREVISION=	15
+DISTVERSIONPREFIX=	release-
+DISTVERSION=	3.0.8
 CATEGORIES=	editors
-MASTER_SITES=	https://dev.alpinelinux.org/archive/${PORTNAME}/
 DIST_SUBDIR=	AbiWord
 
+PATCH_SITES=	https://gitlab.gnome.org/World/AbiWord/-/commit/
+PATCHFILES=	ae05e92d.patch:-p1
+
 MAINTAINER=	gnome@FreeBSD.org
-COMMENT=	Open-source, cross-platform WYSIWYG word processor
+COMMENT=	Full-featured, efficient word processing application
 WWW=		https://gitlab.gnome.org/World/AbiWord
 
-LICENSE=	GPLv2
+LICENSE=	GPLv2+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-LIB_DEPENDS=	libboost_thread.so:devel/boost-libs \
-		libpopt.so:devel/popt \
-		libpng.so:graphics/png \
-		libwv.so:textproc/wv \
-		libfribidi.so:converters/fribidi \
-		libgoffice-0.10.so:devel/goffice
+BUILD_DEPENDS=	autoconf-archive>0:devel/autoconf-archive \
+		${LOCALBASE}/include/boost/shared_ptr.hpp:devel/boost-libs
+LIB_DEPENDS=	libfribidi.so:converters/fribidi \
+		libpng16.so:graphics/png \
+		libgoffice-0.10.so:devel/goffice \
+		libfreetype.so:print/freetype2 \
+		libgcrypt.so:security/libgcrypt \
+		libgpg-error.so:security/libgpg-error \
+		libexpat.so:textproc/expat2 \
+		libwv-1.2.so.4:textproc/wv \
+		libfontconfig.so:x11-fonts/fontconfig
 RUN_DEPENDS=	${LOCALBASE}/share/fonts/dejavu/DejaVuSerif.ttf:x11-fonts/dejavu
 
-USES=		compiler:c++11-lang cpe desktop-file-utils gmake gnome iconv jpeg \
-		libtool localbase:ldflags pathfix pkgconfig
+USES=		autoreconf bison compiler:c++11-lang cpe desktop-file-utils \
+		gettext-tools gmake gnome iconv jpeg libtool localbase:ldflags \
+		pathfix perl5 pkgconfig python:build readline shebangfix xorg
 CPE_VENDOR=	abisource
-USE_GNOME=	libxml2 gtk30 librsvg2 libxslt
+USE_GITLAB=	yes
+GL_SITE=	https://gitlab.gnome.org
+GL_ACCOUNT=	World
+GL_PROJECT=	AbiWord
+USE_GNOME=	glib20 gtk30 introspection:build libgsf libxml2 librsvg2 \
+		libxslt
 USE_LDCONFIG=	yes
+USE_PERL5=	build
+USE_XORG=	x11
+SHEBANG_FILES=	tools/cdump/xp/*.pl \
+		tools/rtfgen/*.pl \
+		po/*.pl
 
 GNU_CONFIGURE=	yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
 CONFIGURE_ARGS=	--without-gnomevfs --enable-plugins="${ABIWORD_PLUGINS}" \
-		--enable-shared="yes" --enable-static="no"
+		--enable-shared=yes --enable-static=no \
+		--enable-introspection=yes
 
 INSTALL_TARGET=	install-strip
 
 PLIST_SUB+=	ABIVERSION=3.0
 
-OPTIONS_DEFINE=	CLIPART DEBUG MATHVIEW NLS PSION \
-		TEMPLATES WP
-OPTIONS_DEFAULT=CLIPART COLSUGAR SPELLCHECK TEMPLATES
-OPTIONS_GROUP=	DICT COLLAB
-OPTIONS_GROUP_COLLAB=	COLFAKE COLSERVICE COLSIP COLSUGAR COLTCP COLTELEPATHY COLXMPP
+OPTIONS_DEFINE=	CLIPART DEBUG TEMPLATES WMF WP
+OPTIONS_DEFAULT=CLIPART SPELLCHECK TEMPLATES WMF
+OPTIONS_GROUP=	DICT
 OPTIONS_GROUP_DICT=	GRAMMAR SPELLCHECK
 OPTIONS_SUB=	yes
 
 CLIPART_DESC=		Include clipart
-COLFAKE_DESC=		Fake collaboration for debugging purposes only
-COLLAB_DESC=		Collaboration backend
-COLSERVICE_DESC=	Collaborate with AbiCollab.net webservice
-COLSIP_DESC=		Collaborate with the SIP/SIMPLE backend
-COLSUGAR_DESC=		Collaborate with the Sugar/OLPC environment
-COLTCP_DESC=		Collaborate with direct TCP peer to peer connections
-COLTELEPATHY_DESC=	Collaborate with the Telepathy backend (experimental)
-COLXMPP_DESC=		Collaborate with the Jabber/XMPP backend
 DICT_DESC=		Spelling and grammar checking
 GRAMMAR_DESC=		Grammar checking plugin
-MATHVIEW_DESC=		MathML render plugin
-PSION_DESC=		Psion 5(MX) files convertion plugin
 SPELLCHECK_DESC=	Spell checking support
 TEMPLATES_DESC=		Include additional templates
+WMF_DESC=		Windows Metafile plugin
 WP_DESC=		WordPerfect img/doc import/export plugin
 
 # check configure for ALL_PLUGINS for complete list
-ABIWORD_PLUGINS=	garble loadbindings opml xslfo bmp iscii sdw babelfish \
-			paint command latex pdf wikipedia hrtext openxml \
-			goffice wmf kword mif wml s5 freetranslation gdict mht \
-			applix t602 docbook google eml hancom presentation \
-			clarisworks pdb urldict openwriter mswrite gimp \
-			passepartout eml
-
-# opendocument enabled by default, rsvg plugin isn't needed on unix.
-# Plugins we don't support:
-# gda
+ABIWORD_PLUGINS=	applix bmp clarisworks command docbook eml epub \
+			garble gimp goffice hancom hrtext iscii latex \
+			loadbindings mif mswrite openwriter opml paint \
+			passepartout pdb pdf presentation s5 sdw t602 \
+			wml wikipedia xslfo
 
 CLIPART_CONFIGURE_ENABLE=	clipart
 
-COLFAKE_CONFIGURE_ENABLE=	collab-backend-fake
-
-COLSERVICE_BROKEN=		Does not build with asio from system
-COLSERVICE_BUILD_DEPENDS=	${LOCALBASE}/include/asio.hpp:net/asio
-COLSERVICE_LIB_DEPENDS=		libsoup-2.4.so:devel/libsoup \
-				libgnutls.so:security/gnutls
-COLSERVICE_RUN_DEPENDS=		${LOCALBASE}/include/asio.hpp:net/asio
-COLSERVICE_CONFIGURE_ENABLE=	collab-backend-service
-
-COLSIP_CONFIGURE_ENABLE=	collab-backend-sip
-
-COLSUGAR_LIB_DEPENDS=		libdbus-glib-1.so:devel/dbus-glib
-COLSUGAR_CONFIGURE_ENABLE=	collab-backend-sugar
-
-COLTCP_BROKEN=			Does not build with asio from system
-COLTCP_BUILD_DEPENDS=		${LOCALBASE}/include/asio.hpp:net/asio
-COLTCP_RUN_DEPENDS=		${LOCALBASE}/include/asio.hpp:net/asio
-COLTCP_CONFIGURE_ENABLE=	collab-backend-tcp
-
-COLTELEPATHY_LIB_DEPENDS=	libtelepathy-glib.so:net-im/telepathy-glib
-COLTELEPATHY_CONFIGURE_ENABLE=	collab-backend-telepathy
-
-COLXMPP_LIB_DEPENDS=		libloudmouth-1.so:net-im/loudmouth
-COLXMPP_CONFIGURE_ENABLE=	collab-backend-xmpp
-
 DEBUG_CONFIGURE_ENABLE=		debug
 
 GRAMMAR_IMPLIES=		SPELLCHECK
 GRAMMAR_LIB_DEPENDS=		liblink-grammar.so:textproc/link-grammar
 GRAMMAR_VARS=			ABIWORD_PLUGINS+=grammar
 
-MATHVIEW_LIB_DEPENDS=		libmathview.so:x11-toolkits/gtkmathview
-MATHVIEW_USES=			bison
-MATHVIEW_VARS=			ABIWORD_PLUGINS+=mathview
-
-NLS_USES=			gettext
-NLS_CONFIGURE_ENABLE=		nls
-
-PSION_LIB_DEPENDS=		libpsiconv.so:converters/psiconv
-PSION_VARS=			ABIWORD_PLUGINS+=psion
-
-SPELLCHECK_LIB_DEPENDS=		libenchant.so:textproc/enchant
+SPELLCHECK_LIB_DEPENDS=		libenchant-2.so:textproc/enchant2
 SPELLCHECK_CONFIGURE_ENABLE=	spell
 
 TEMPLATES_CONFIGURE_ENABLE=	templates
 
+WMF_LIB_DEPENDS=	libwmf-0.2.so.7:graphics/libwmf
+WMF_VARS=		ABIWORD_PLUGINS+=wmf
+
 WP_LIB_DEPENDS=	libwpg-0.3.so:graphics/libwpg03 \
 		libwpd-0.10.so:textproc/libwpd010 \
 		libwps-0.4.so:textproc/libwps
-WP_USE=		gnome=libgsf
 WP_VARS=	ABIWORD_PLUGINS+="wpg wordperfect"
 
-.include <bsd.port.options.mk>
-
-.if ${PORT_OPTIONS:MCOL*}
-ABIWORD_PLUGINS+=	collab
-PLIST_SUB+=		COLLAB=""
-.else
-PLIST_SUB+=		COLLAB="@comment "
-.endif
-
 post-patch:
-	@${REINPLACE_CMD} -e 's|glib/.*\.h>|glib.h>|g' \
-		${WRKSRC}/goffice-bits/goffice/app/goffice-app.h \
-		${WRKSRC}/src/af/util/xp/ut_go_file.h
-# The following substitutions ensure that plugins are linked with libabiword
-# from the work or stage directory instead of a previously installed library.
-# In pseudo code:
-# s,PLUGIN_LIBS="$PLUGIN_LIBS -Lsrc -labiword",
-#   PLUGIN_LIBS="src/libabiword.la $PLUGIN_LIBS",
-# s,foo_LIBS="$foo_LIBS $PLUGIN_LIBS",
-#   foo_LIBS="$PLUGIN_LIBS $foo_LIBS",
-# The initial value of PLUGIN_LIBS may contain -L/usr/local/lib so it would
-# have to come after -Lsrc, but -Lsrc is not correct when libtool relinks
-# plugins during staging so use src/libabiword.la and let libtool figure out
-# what flags are needed.  Secondly, switch around foo_LIBS and PLUGIN_LIBS
-# because foo_LIBS may contain -L/usr/local/lib.
-	@${REINPLACE_CMD} \
-		-e "s,\$$PLUGIN_LIBS \"'-L\$${top_builddir}/src'\" -labiword-\$$ABIWORD_SERIES,\\\\\$${top_builddir}/src/libabiword-\$$ABIWORD_SERIES.la \$$PLUGIN_LIBS," \
-		-e "/_LIBS=/s,\"\\(.*\\)\"\\('\$${PLUGIN_LIBS}.*'\\),\\2\" \\1\"," \
-		-e 's|" == "|" = "|g' ${WRKSRC}/configure
+	${REINPLACE_CMD} -i "" -e 's|com\.abisource\.AbiWord|${PORTNAME}|' \
+		${WRKSRC}/abiword.appdata.xml
+
+pre-configure:
+	cd ${WRKSRC} && ${SETENV} ${SH} ./autogen-common.sh
 
 .include <bsd.port.mk>
diff --git a/editors/abiword/distinfo b/editors/abiword/distinfo
index 96efd33e6943..0056353f5dba 100644
--- a/editors/abiword/distinfo
+++ b/editors/abiword/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1630554026
-SHA256 (AbiWord/abiword-3.0.5.tar.gz) = 1257247e9970508d6d1456d3e330cd1909c4b42b25e0f0a1bc32526d6f3a21b4
-SIZE (AbiWord/abiword-3.0.5.tar.gz) = 11084159
+TIMESTAMP = 1772390992
+SHA256 (AbiWord/AbiWord-release-3.0.8.tar.bz2) = ef2fdc2cb66a54a58185e7008bd349ce858e59648e18571913d5a3e2b43abf37
+SIZE (AbiWord/AbiWord-release-3.0.8.tar.bz2) = 7884596
+SHA256 (AbiWord/ae05e92d.patch) = b1681d56056b216ae250d442bd6f3eadd161b7f5b7705ec53c0d8221449bd457
+SIZE (AbiWord/ae05e92d.patch) = 1876
diff --git a/editors/abiword/files/patch-configure b/editors/abiword/files/patch-configure
deleted file mode 100644
index 294944d6ce3a..000000000000
--- a/editors/abiword/files/patch-configure
+++ /dev/null
@@ -1,40 +0,0 @@
---- configure.orig	2021-07-03 15:48:11 UTC
-+++ configure
-@@ -23069,7 +23069,7 @@ fi
- 
- 
- 
--wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0"
-+wpg_pkgs="libwpg-0.3 $gsf_req"
- wpg_deps="no"
- 
- if test "$enable_wpg" != ""; then
-@@ -23820,7 +23820,7 @@ fi
- test "$enable_collab" = "auto" && PLUGINS="$PLUGINS collab"
- 
- COLLAB_CFLAGS="$COLLAB_CFLAGS "'${PLUGIN_CFLAGS}'
--COLLAB_LIBS="$COLLAB_LIBS "'${PLUGIN_LIBS}'
-+COLLAB_LIBS='${PLUGIN_LIBS}'" $COLLAB_LIBS "
- 
- fi # plugin conditional
- 
-@@ -26311,8 +26311,8 @@ fi
- 
- 
- 
--wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req"
--wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0'
-+wordperfect_pkgs="libwpd-0.10 $gsf_req"
-+wordperfect_wps_pkgs='libwps-0.4'
- wordperfect_deps="no"
- 
- WORDPERFECT_CFLAGS=
-@@ -26355,7 +26355,7 @@ if test -n "$PKG_CONFIG" && \
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }; then
- 
--	wp_deps_pkgs="$wp_deps_pkgs $wordperfect_wps_pkgs"
-+	wp_deps_pkgs="$wordperfect_wps_pkgs $wp_deps_pkgs"
- 	WPS_DEFINE=" -DHAVE_LIBWPS"
- 
- fi
diff --git a/editors/abiword/files/patch-configure.ac b/editors/abiword/files/patch-configure.ac
new file mode 100644
index 000000000000..f623cb769b63
--- /dev/null
+++ b/editors/abiword/files/patch-configure.ac
@@ -0,0 +1,19 @@
+--- configure.ac.orig	2026-02-18 03:16:18 UTC
++++ configure.ac
+@@ -80,7 +80,7 @@ fribidi_req='fribidi >= 0.10.4'
+ 
+ # cross platform deps
+ fribidi_req='fribidi >= 0.10.4'
+-glib_req='glib-2.0 >= 2.6.0 gthread-2.0 >= 2.6.0 gobject-2.0 >= 2.6.0'
++glib_req='glib-2.0 >= 2.6.0 gthread-2.0 >= 2.6.0 gobject-2.0 >= 2.6.0 gmodule-2.0 >= 2.6.0'
+ gsf_req='libgsf-1 >= 1.14.18'
+ gsf_gio_req='libgsf-1 >= 1.14.9'
+ wv_req='wv-1.0 >= 1.2.0'
+@@ -644,7 +644,6 @@ if test "$GCC" = "yes"; then
+ if test "$GCC" = "yes"; then
+ 	for option in -Wall -Wextra -Wsign-compare -Wpointer-arith \
+ 		      -Wchar-subscripts -Wwrite-strings -Wmissing-noreturn \
+-                      -Wformat-overflow=2 \
+ 		      -Wunused -Wpointer-arith -Wshadow; do
+ 		SAVE_CPPFLAGS="$CPPFLAGS"
+ 		CPPFLAGS="$CPPFLAGS $option"
diff --git a/editors/abiword/files/patch-git-01-2a06be6a10a0718f8a3d8e00c317f5042c99a467 b/editors/abiword/files/patch-git-01-2a06be6a10a0718f8a3d8e00c317f5042c99a467
deleted file mode 100644
index 4945803e3391..000000000000
--- a/editors/abiword/files/patch-git-01-2a06be6a10a0718f8a3d8e00c317f5042c99a467
+++ /dev/null
@@ -1,29 +0,0 @@
-From 2a06be6a10a0718f8a3d8e00c317f5042c99a467 Mon Sep 17 00:00:00 2001
-From: Jan Tojnar <jtojnar@gmail.com>
-Date: Mon, 11 Dec 2023 01:55:53 +0100
-Subject: [PATCH] Fix build with libxml2 2.12
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-libxml 2.12.0 restructured headers so that xmlFree is no longer in the scope.
-Let’s add the correct include.
----
- src/af/util/xp/ut_stringbuf.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/af/util/xp/ut_stringbuf.cpp b/src/af/util/xp/ut_stringbuf.cpp
-index f1e8d9078..88488ad67 100644
---- src/af/util/xp/ut_stringbuf.cpp
-+++ src/af/util/xp/ut_stringbuf.cpp
-@@ -26,6 +26,7 @@
- #include <algorithm>
- 
- #include <libxml/uri.h>
-+#include <libxml/xmlmemory.h>
- 
- #include <glib.h>
- 
--- 
-GitLab
-
diff --git a/editors/abiword/files/patch-plugins_collab_backends_tcp_xp_Session.h b/editors/abiword/files/patch-plugins_collab_backends_tcp_xp_Session.h
deleted file mode 100644
index f75772088bea..000000000000
--- a/editors/abiword/files/patch-plugins_collab_backends_tcp_xp_Session.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./plugins/collab/backends/tcp/xp/Session.h.orig	2014-12-05 21:51:55.334456277 +0100
-+++ ./plugins/collab/backends/tcp/xp/Session.h	2014-12-05 21:51:31.075459132 +0100
-@@ -31,7 +31,7 @@
- 
- class TCPAccountHandler;
- 
--class Session : public Synchronizer, public boost::noncopyable, public boost::enable_shared_from_this<Session>
-+class Session : public Synchronizer, public asio::noncopyable, public boost::enable_shared_from_this<Session>
- {
- public:
- 	Session(asio::io_service& io_service, boost::function<void (boost::shared_ptr<Session>)> ef)
diff --git a/editors/abiword/files/patch-plugins_collab_core_sync_xp_SynchronizedQueue.h b/editors/abiword/files/patch-plugins_collab_core_sync_xp_SynchronizedQueue.h
deleted file mode 100644
index cd481ded8ea4..000000000000
--- a/editors/abiword/files/patch-plugins_collab_core_sync_xp_SynchronizedQueue.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./plugins/collab/core/sync/xp/SynchronizedQueue.h.orig	2014-12-05 21:45:41.710482488 +0100
-+++ ./plugins/collab/core/sync/xp/SynchronizedQueue.h	2014-12-05 21:46:02.610480585 +0100
-@@ -28,7 +28,7 @@
- class EmptyQueueException {};
- 
- template <typename T>
--class SynchronizedQueue : public Synchronizer, public boost::noncopyable
-+class SynchronizedQueue : public Synchronizer, public asio::noncopyable
- {
- public:
- 	SynchronizedQueue(boost::function<void (SynchronizedQueue&)> sig)
diff --git a/editors/abiword/files/patch-plugins_wordperfect_plugin.m4 b/editors/abiword/files/patch-plugins_wordperfect_plugin.m4
deleted file mode 100644
index 4fabbcf679ef..000000000000
--- a/editors/abiword/files/patch-plugins_wordperfect_plugin.m4
+++ /dev/null
@@ -1,20 +0,0 @@
---- plugins/wordperfect/plugin.m4.orig	2010-11-08 13:01:58.000000000 +0100
-+++ plugins/wordperfect/plugin.m4	2016-01-26 21:13:45.479525000 +0100
-@@ -1,6 +1,6 @@
- 
--wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req"
--wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0'
-+wordperfect_pkgs="libwpd-0.10 $gsf_req"
-+wordperfect_wps_pkgs='libwps-0.4'
- wordperfect_deps="no"
- 
- WORDPERFECT_CFLAGS=
-@@ -29,7 +29,7 @@
- 
- PKG_CHECK_EXISTS([ $wordperfect_wps_pkgs ],
- [
--	wp_deps_pkgs="$wp_deps_pkgs $wordperfect_wps_pkgs"
-+	wp_deps_pkgs="$wordperfect_wps_pkgs $wp_deps_pkgs"
- 	WPS_DEFINE=" -DHAVE_LIBWPS"
- ])
- 
diff --git a/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.am b/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.am
deleted file mode 100644
index 166772a38195..000000000000
--- a/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
---- plugins/wordperfect/xp/Makefile.am.orig	2008-05-08 15:12:53.000000000 +0200
-+++ plugins/wordperfect/xp/Makefile.am	2016-01-26 20:42:39.161783000 +0100
-@@ -6,8 +6,6 @@
- 	-DABI_BUILD_VERSION=\"$(VERSION)\"
- 
- libxp_la_SOURCES = \
--	ie_exp_WordPerfect.cpp \
--	ie_exp_WordPerfect.h \
- 	ie_impexp_WordPerfect.cpp \
- 	ie_impexp_WordPerfect.h \
- 	ie_imp_WordPerfect.cpp \
diff --git a/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.in b/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.in
deleted file mode 100644
index 48b433aedd33..000000000000
--- a/editors/abiword/files/patch-plugins_wordperfect_xp_Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- plugins/wordperfect/xp/Makefile.in.orig	2016-01-26 22:09:46.402022000 +0100
-+++ plugins/wordperfect/xp/Makefile.in	2016-01-26 22:12:18.203941000 +0100
-@@ -492,8 +492,6 @@
- 	-DABI_BUILD_VERSION=\"$(VERSION)\"
- 
- libxp_la_SOURCES = \
--	ie_exp_WordPerfect.cpp \
--	ie_exp_WordPerfect.h \
- 	ie_impexp_WordPerfect.cpp \
- 	ie_impexp_WordPerfect.h \
- 	ie_imp_WordPerfect.cpp \
diff --git a/editors/abiword/files/patch-plugins_wordperfect_xp_ie__imp__WordPerfect.cpp b/editors/abiword/files/patch-plugins_wordperfect_xp_ie__imp__WordPerfect.cpp
deleted file mode 100644
index cb670a79dd19..000000000000
--- a/editors/abiword/files/patch-plugins_wordperfect_xp_ie__imp__WordPerfect.cpp
+++ /dev/null
@@ -1,652 +0,0 @@
---- plugins/wordperfect/xp/ie_imp_WordPerfect.cpp.orig	2013-04-07 15:53:03.000000000 +0200
-+++ plugins/wordperfect/xp/ie_imp_WordPerfect.cpp	2016-01-26 21:47:24.995046000 +0100
-@@ -31,6 +31,8 @@
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
-+#include <map>
-+#include <string>
- #include <gsf/gsf-utils.h>
- #include <gsf/gsf-input-memory.h>
- #include <gsf/gsf-input-stdio.h>
-@@ -60,42 +62,47 @@
- 
- // Stream class
- 
--#include <libwpd-stream/libwpd-stream.h>
-+#include <librevenge-stream/librevenge-stream.h>
-+#include <libwpd/libwpd.h>
- 
- #include <gsf/gsf-input.h>
- #include <gsf/gsf-infile.h>
- #include <gsf/gsf-infile-msole.h>
-+#include <gsf/gsf-infile-zip.h>
- 
- #ifdef HAVE_LIBWPS
- #include <libwps/libwps.h>
- #endif
- 
--class AbiWordperfectInputStream : public WPXInputStream
-+class AbiWordperfectInputStream : public librevenge::RVNGInputStream
- {
- public:
- 	AbiWordperfectInputStream(GsfInput *input);
- 	~AbiWordperfectInputStream();
- 
--	virtual bool isOLEStream();
--	virtual WPXInputStream * getDocumentOLEStream();
--
--	virtual WPXInputStream * getDocumentOLEStream(const char * name);
--
-+	virtual bool isStructured();
-+	virtual unsigned subStreamCount();
-+	virtual const char* subStreamName(unsigned);
-+	bool existsSubStream(const char*);
-+	virtual librevenge::RVNGInputStream* getSubStreamByName(const char*);
-+	virtual librevenge::RVNGInputStream* getSubStreamById(unsigned);
- 	virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead);
--	virtual int seek(long offset, WPX_SEEK_TYPE seekType);
-+	virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType);
- 	virtual long tell();
--	virtual bool atEOS();
-+	virtual bool isEnd();
- 
- private:
- 
- 	GsfInput *m_input;
- 	GsfInfile *m_ole;
-+	std::map<unsigned, std::string> m_substreams;
- };
- 
- AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) :
--	WPXInputStream(),
-+	librevenge::RVNGInputStream(),
- 	m_input(input),
--	m_ole(NULL)
-+	m_ole(NULL),
-+	m_substreams()
- {
- 	g_object_ref(G_OBJECT(input));
- }
-@@ -120,45 +127,115 @@ const unsigned char * AbiWordperfectInpu
- 	return buf;
- }
- 
--int AbiWordperfectInputStream::seek(long offset, WPX_SEEK_TYPE seekType) 
-+int AbiWordperfectInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) 
- {
- 	GSeekType gsfSeekType = G_SEEK_SET;
- 	switch(seekType)
- 	{
--	case WPX_SEEK_CUR:
-+	case librevenge::RVNG_SEEK_CUR:
- 		gsfSeekType = G_SEEK_CUR;
- 		break;
--	case WPX_SEEK_SET:
-+	case librevenge::RVNG_SEEK_SET:
- 		gsfSeekType = G_SEEK_SET;
- 		break;
-+	case librevenge::RVNG_SEEK_END:
-+		gsfSeekType = G_SEEK_END;
-+		break;
- 	}
- 
- 	return gsf_input_seek(m_input, offset, gsfSeekType);
- }
- 
--bool AbiWordperfectInputStream::isOLEStream()
-+bool AbiWordperfectInputStream::isStructured()
- {
- 	if (!m_ole)
- 		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
- 
--	if (m_ole != NULL)
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
-+	if (m_ole)
- 		return true;
- 
- 	return false;
- }
- 
--WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream()
-+unsigned AbiWordperfectInputStream::subStreamCount()
- {
--	return getDocumentOLEStream("PerfectOffice_MAIN");
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
-+	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
-+	if (m_ole)
-+		{
-+			int numChildren = gsf_infile_num_children(m_ole);
-+			if (numChildren > 0)
-+				return numChildren;
-+			return 0;
-+		}
-+	
-+	return 0;
- }
- 
--WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream(const char * name)
-+const char * AbiWordperfectInputStream::subStreamName(unsigned id)
- {
--	WPXInputStream *documentStream = NULL;
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
- 	
- 	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
-+	if (m_ole)
-+		{
-+			if ((int)id >= gsf_infile_num_children(m_ole))
-+			{
-+				return 0;
-+			}
-+			std::map<unsigned, std::string>::iterator i = m_substreams.lower_bound(id);
-+			if (i == m_substreams.end() || m_substreams.key_comp()(id, i->first))
-+				{
-+					std::string name = gsf_infile_name_by_index(m_ole, (int)id);
-+					i = m_substreams.insert(i, std::map<unsigned, std::string>::value_type(id, name));
-+				}
-+			return i->second.c_str();
-+		}
-+	
-+	return 0;
-+}
-+
-+bool AbiWordperfectInputStream::existsSubStream(const char * name)
-+{
-+	if (!m_ole)
- 		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
- 	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
-+	if (m_ole)
-+		{
-+			GsfInput *document = gsf_infile_child_by_name(m_ole, name);
-+			if (document) 
-+				{
-+					g_object_unref(G_OBJECT (document));
-+					return true;
-+				}
-+		}
-+	
-+	return false;
-+}
-+
-+librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamByName(const char * name)
-+{
-+	librevenge::RVNGInputStream *documentStream = NULL;
-+	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
-+	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
- 	if (m_ole)
- 		{
- 			GsfInput *document = gsf_infile_child_by_name(m_ole, name);
-@@ -172,12 +249,35 @@ WPXInputStream * AbiWordperfectInputStre
- 	return documentStream;
- }
- 
-+librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamById(unsigned id)
-+{
-+	librevenge::RVNGInputStream *documentStream = NULL;
-+	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); 
-+	
-+	if (!m_ole)
-+		m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); 
-+	
-+	if (m_ole)
-+		{
-+			GsfInput *document = gsf_infile_child_by_index(m_ole, (int)id);
-+			if (document) 
-+				{
-+					documentStream = new AbiWordperfectInputStream(document);
-+					g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream
-+				}
-+		}
-+	
-+	return documentStream;
-+}
-+
- long AbiWordperfectInputStream::tell()
- {
- 	return gsf_input_tell(m_input);
- }
- 
--bool AbiWordperfectInputStream::atEOS()
-+bool AbiWordperfectInputStream::isEnd()
- {
- 	return gsf_input_eof(m_input);
- }
-@@ -247,13 +347,13 @@ UT_Confidence_t IE_Imp_WordPerfect_Sniff
- {
- 	AbiWordperfectInputStream gsfInput(input);
- 
--	WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput);
--
-+	libwpd::WPDConfidence confidence = libwpd::WPDocument::isFileFormatSupported(&gsfInput);
-+	
- 	switch (confidence)
- 	{
--		case WPD_CONFIDENCE_NONE:
-+		case libwpd::WPD_CONFIDENCE_NONE:
- 			return UT_CONFIDENCE_ZILCH;
--		case WPD_CONFIDENCE_EXCELLENT:
-+		case libwpd::WPD_CONFIDENCE_EXCELLENT:
- 			return UT_CONFIDENCE_PERFECT;
- 		default:
- 			return UT_CONFIDENCE_ZILCH;
-@@ -312,9 +412,9 @@ IE_Imp_WordPerfect::~IE_Imp_WordPerfect(
- UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input)
- {
- 	AbiWordperfectInputStream gsfInput(input);
--	WPDResult error = WPDocument::parse(&gsfInput, static_cast<WPXDocumentInterface *>(this), NULL);
-+	libwpd::WPDResult error = libwpd::WPDocument::parse(&gsfInput, static_cast<librevenge::RVNGTextInterface *>(this), NULL);
- 
--	if (error != WPD_OK)
-+	if (error != libwpd::WPD_OK)
- 	{
- 		UT_DEBUGMSG(("AbiWordPerfect: ERROR: %i!\n", (int)error));
- 		return UT_IE_IMPORTERROR;
-@@ -329,7 +429,7 @@ void IE_Imp_WordPerfect::pasteFromBuffer
- 	// nada
- }
- 
--void IE_Imp_WordPerfect::setDocumentMetaData(const WPXPropertyList &propList)
-+void IE_Imp_WordPerfect::setDocumentMetaData(const librevenge::RVNGPropertyList &propList)
- {
- 	if (propList["dc:author"])
- 		getDoc()->setMetaDataProp(PD_META_KEY_CREATOR, propList["dc:author"]->getStr().cstr());
-@@ -339,15 +439,15 @@ void IE_Imp_WordPerfect::setDocumentMeta
- 		getDoc()->setMetaDataProp(PD_META_KEY_PUBLISHER, propList["dc:publisher"]->getStr().cstr());
- 	if (propList["dc:type"])
- 		getDoc()->setMetaDataProp(PD_META_KEY_TYPE, propList["dc:category"]->getStr().cstr());
--	if (propList["libwpd:keywords"])
--		getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["libwpd:keywords"]->getStr().cstr());
-+	if (propList["librevenge:keywords"])
-+		getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["librevenge:keywords"]->getStr().cstr());
- 	if (propList["dc:language"])
- 		getDoc()->setMetaDataProp(PD_META_KEY_LANGUAGE, propList["dc:language"]->getStr().cstr());
--	if (propList["libwpd:abstract"])
--		getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["libwpd:abstract"]->getStr().cstr());
-+	if (propList["librevenge:abstract"])
-+		getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["librevenge:abstract"]->getStr().cstr());
- }
- 
--void IE_Imp_WordPerfect::startDocument()
-+void IE_Imp_WordPerfect::startDocument(const librevenge::RVNGPropertyList & /* propList */)
- {
- 	UT_DEBUGMSG(("AbiWordPerfect: startDocument\n"));
- }
-@@ -357,7 +457,7 @@ void IE_Imp_WordPerfect::endDocument()
- 	UT_DEBUGMSG(("AbiWordPerfect: endDocument\n"));
- }
- 
--void IE_Imp_WordPerfect::openPageSpan(const WPXPropertyList &propList)
-+void IE_Imp_WordPerfect::openPageSpan(const librevenge::RVNGPropertyList &propList)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
- 	UT_DEBUGMSG(("AbiWordPerfect: openPageSpan\n"));
-@@ -378,7 +478,7 @@ void IE_Imp_WordPerfect::openPageSpan(co
- 		
- }
- 
--void IE_Imp_WordPerfect::openHeader(const WPXPropertyList & /*propList*/)
-+void IE_Imp_WordPerfect::openHeader(const librevenge::RVNGPropertyList & /*propList*/)
- {
- 	m_bHdrFtrOpenCount++;
- 	
-@@ -420,7 +520,7 @@ void IE_Imp_WordPerfect::closeHeader()
- 	*/
- }
- 
--void IE_Imp_WordPerfect::openFooter(const WPXPropertyList & /*propList*/)
-+void IE_Imp_WordPerfect::openFooter(const librevenge::RVNGPropertyList & /*propList*/)
- {
- 	m_bHdrFtrOpenCount++;
- 	// see above comments re: openHeader
-@@ -432,7 +532,7 @@ void IE_Imp_WordPerfect::closeFooter()
- 	// see above comments re: closeHeader
- }
- 
--void IE_Imp_WordPerfect::openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops)
-+void IE_Imp_WordPerfect::openParagraph(const librevenge::RVNGPropertyList &propList)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
- 	UT_DEBUGMSG(("AbiWordPerfect: openParagraph()\n"));
-@@ -478,13 +578,15 @@ void IE_Imp_WordPerfect::openParagraph(c
- 		(int)(m_topMargin*72), (int)(m_bottomMargin*72), m_leftMarginOffset, m_rightMarginOffset, m_textIndent, lineSpacing);
- 	propBuffer += tmpBuffer;
- 	
--	if (tabStops.count() > 0) // Append the tabstop information
-+	const librevenge::RVNGPropertyListVector *tabStops = propList.child("style:tab-stops");
-+	
-+	if (tabStops && tabStops->count()) // Append the tabstop information
- 	{
- 		propBuffer += "; tabstops:";
- 		tmpBuffer = "";
--                WPXPropertyListVector::Iter i(tabStops);
--                for (i.rewind(); i.next();)
--                {
-+		librevenge::RVNGPropertyListVector::Iter i(*tabStops);
-+		for (i.rewind(); i.next();)
-+		{
- 			propBuffer += tmpBuffer;
- 			if (i()["style:position"])
- 			{
-@@ -515,8 +617,8 @@ void IE_Imp_WordPerfect::openParagraph(c
- 				propBuffer += "0";
- 
- 			tmpBuffer = ",";
--                }
--        }
-+		}
-+	}
- 
- 	
- 
-@@ -543,7 +645,7 @@ void IE_Imp_WordPerfect::openParagraph(c
- 	}
- }
- 
--void IE_Imp_WordPerfect::openSpan(const WPXPropertyList &propList)
-+void IE_Imp_WordPerfect::openSpan(const librevenge::RVNGPropertyList &propList)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
- 	UT_DEBUGMSG(("AbiWordPerfect: Appending current text properties\n"));
-@@ -614,13 +716,14 @@ void IE_Imp_WordPerfect::openSpan(const 
- 	X_CheckDocumentError(appendFmt(propsArray));
- }
- 
--void IE_Imp_WordPerfect::openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns)
-+void IE_Imp_WordPerfect::openSection(const librevenge::RVNGPropertyList &propList)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
- 	UT_DEBUGMSG(("AbiWordPerfect: openSection\n"));
- 
- 	float marginLeft = 0.0f, marginRight = 0.0f;
--	int columnsCount = ((columns.count() == 0) ? 1 : columns.count());
-+	const librevenge::RVNGPropertyListVector *columns = propList.child("style:columns");
-+	int columnsCount = ((!columns || !columns->count()) ? 1 : columns->count());
- 
- 	// TODO: support spaceAfter
- 	if (propList["fo:start-indent"])
-@@ -647,7 +750,7 @@ void IE_Imp_WordPerfect::insertTab()
- 	X_CheckDocumentError(appendSpan(&ucs,1));	
- }
- 
--void IE_Imp_WordPerfect::insertText(const WPXString &text)
-+void IE_Imp_WordPerfect::insertText(const librevenge::RVNGString &text)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
- 	if (text.len())
-@@ -658,6 +761,15 @@ void IE_Imp_WordPerfect::insertText(cons
- 	}
- }
- 
-+void IE_Imp_WordPerfect::insertSpace()
-+{
-+	if (m_bHdrFtrOpenCount) return; // HACK
-+	UT_DEBUGMSG(("AbiWordPerfect: insertSpace\n"));
-+
-+	UT_UCS4Char ucs = UCS_SPACE;
-+	X_CheckDocumentError(appendSpan(&ucs,1));	
-+}
-+
- void IE_Imp_WordPerfect::insertLineBreak()
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
-@@ -668,24 +780,23 @@ void IE_Imp_WordPerfect::insertLineBreak
- }
- 
- 
--
--void IE_Imp_WordPerfect::defineOrderedListLevel(const WPXPropertyList &propList)
-+void IE_Imp_WordPerfect::openOrderedListLevel(const librevenge::RVNGPropertyList &propList)
- {
- 	if (m_bHdrFtrOpenCount) return; // HACK
--	UT_DEBUGMSG(("AbiWordPerfect: defineOrderedListLevel\n"));
--
-+	UT_DEBUGMSG(("AbiWordPerfect: openOrderedListLevel\n"));
-+	
- 	int listID = 0, startingNumber = 0, level = 1;
- 	char listType = '1';
- 	UT_UTF8String textBeforeNumber, textAfterNumber;
- 	float listLeftOffset = 0.0f;
- 	float listMinLabelWidth = 0.0f;
- 	
--	if (propList["libwpd:id"])
--		listID = propList["libwpd:id"]->getInt();
-+	if (propList["librevenge:id"])
-+		listID = propList["librevenge:id"]->getInt();
- 	if (propList["text:start-value"])
- 		startingNumber = propList["text:start-value"]->getInt();
--	if (propList["libwpd:level"])
--		level = propList["libwpd:level"]->getInt();
-+	if (propList["librevenge:level"])
-+		level = propList["librevenge:level"]->getInt();
*** 845 LINES SKIPPED ***