[arch-commits] Commit in libreoffice-online/repos (12 files)

Sergej Pupykin spupykin at archlinux.org
Mon Jul 31 18:23:35 UTC 2017


    Date: Monday, July 31, 2017 @ 18:23:35
  Author: spupykin
Revision: 247193

archrelease: copy trunk to community-testing-x86_64, community-testing-i686

Added:
  libreoffice-online/repos/community-testing-i686/
  libreoffice-online/repos/community-testing-i686/PKGBUILD
    (from rev 247192, libreoffice-online/trunk/PKGBUILD)
  libreoffice-online/repos/community-testing-i686/build-fix.patch
    (from rev 247192, libreoffice-online/trunk/build-fix.patch)
  libreoffice-online/repos/community-testing-i686/hack-annoying-errors.patch
    (from rev 247192, libreoffice-online/trunk/hack-annoying-errors.patch)
  libreoffice-online/repos/community-testing-i686/libreoffice-online.install
    (from rev 247192, libreoffice-online/trunk/libreoffice-online.install)
  libreoffice-online/repos/community-testing-i686/loolwsd.service
    (from rev 247192, libreoffice-online/trunk/loolwsd.service)
  libreoffice-online/repos/community-testing-x86_64/
  libreoffice-online/repos/community-testing-x86_64/PKGBUILD
    (from rev 247192, libreoffice-online/trunk/PKGBUILD)
  libreoffice-online/repos/community-testing-x86_64/build-fix.patch
    (from rev 247192, libreoffice-online/trunk/build-fix.patch)
  libreoffice-online/repos/community-testing-x86_64/hack-annoying-errors.patch
    (from rev 247192, libreoffice-online/trunk/hack-annoying-errors.patch)
  libreoffice-online/repos/community-testing-x86_64/libreoffice-online.install
    (from rev 247192, libreoffice-online/trunk/libreoffice-online.install)
  libreoffice-online/repos/community-testing-x86_64/loolwsd.service
    (from rev 247192, libreoffice-online/trunk/loolwsd.service)

-----------------------------------------------------+
 community-testing-i686/PKGBUILD                     |   59 ++
 community-testing-i686/build-fix.patch              |  458 ++++++++++++++++++
 community-testing-i686/hack-annoying-errors.patch   |   25 
 community-testing-i686/libreoffice-online.install   |   21 
 community-testing-i686/loolwsd.service              |   13 
 community-testing-x86_64/PKGBUILD                   |   59 ++
 community-testing-x86_64/build-fix.patch            |  458 ++++++++++++++++++
 community-testing-x86_64/hack-annoying-errors.patch |   25 
 community-testing-x86_64/libreoffice-online.install |   21 
 community-testing-x86_64/loolwsd.service            |   13 
 10 files changed, 1152 insertions(+)

Copied: libreoffice-online/repos/community-testing-i686/PKGBUILD (from rev 247192, libreoffice-online/trunk/PKGBUILD)
===================================================================
--- community-testing-i686/PKGBUILD	                        (rev 0)
+++ community-testing-i686/PKGBUILD	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,59 @@
+# $Id$
+# Maintainer: Sergej Pupykin <arch+pub at sergej.pp.ru>
+# Maintainer: Jonas Heinrich <onny at project-insanity.org>
+# Contributor: Jonas Heinrich <onny at project-insanity.org>
+
+pkgname=libreoffice-online
+pkgver=5.4.0.2
+pkgrel=1
+pkgdesc="HTML5-based/cloud-based version of the office suite"
+arch=('x86_64' 'i686')
+url="https://cgit.freedesktop.org/libreoffice/online/"
+license=("MPL")
+makedepends=("cppunit" "poco" "libreoffice-fresh-sdk>=5.4" "jake" "npm" "chrpath" "python-polib")
+depends=("libpng12" "poco" "pcre" "cpio" "libreoffice" "openssl-1.0")
+backup=("etc/libreoffice-online/loolwsd.xml")
+install="libreoffice-online.install"
+source=("${pkgname}-${pkgver}.tar.gz::https://github.com/LibreOffice/online/archive/libreoffice-${pkgver}.tar.gz"
+	"loolwsd.service"
+	"build-fix.patch"
+	"hack-annoying-errors.patch")
+sha512sums=('472ddc83e3dd4502cdfadb9b45899d6f05f4d1969f71e030cba847e46bc6ad32bf720087df16cc305b0fe1d71d958aa2e4f0ffd0178b608000071a4113178ddb'
+            '4a809d8420f42eef99a831b32c94d9ce336b5aa5ccac3c44b99346b94e9d7a6ae8b4e06760057f20e844837c3ab2175146bef63ba99e1a50d016a890704cc2c9'
+            '049036898f59f1a7f18c6f186042b7ecee84b010256c813c633e0854b206b1b94343972cc8a374990eb22919a223429de4db712f70a89851f266e6500b67c2b1'
+            '530dad9becee9504d1e2fff5c7e5115daf62ac48312c5cf42f9b44dc0f21665a05f5788606d988f631d3b6dc4dfcf866d564ac1f8bf087c4efe3c197b3206f2d')
+
+prepare() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  patch -p1 <"$srcdir"/build-fix.patch
+  patch -p1 <"$srcdir"/hack-annoying-errors.patch
+}
+
+build() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  ./autogen.sh
+  export PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig
+  CPPFLAGS="-I/usr/include/openssl-1.0 -Wno-implicit-fallthrough -Wno-format-truncation" \
+  CFLAGS="-I/usr/include/openssl-1.0" \
+  LDFLAGS="-L/usr/lib/openssl-1.0" \
+      ./configure --enable-silent-rules \
+	--with-lokit-path=/usr/include/libreoffice \
+	--with-lo-path=/usr/lib/libreoffice \
+	--prefix=/usr \
+	--sysconfdir=/etc
+  BUILDING_FROM_RPMBUILD=yes make
+}
+
+package() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  BUILDING_FROM_RPMBUILD=yes make DESTDIR=${pkgdir} install
+  install -Dm644 "${srcdir}/loolwsd.service" "${pkgdir}/usr/lib/systemd/system/loolwsd.service"
+  mkdir -p "${pkgdir}/var/lib/lool"
+  mkdir -p "${pkgdir}/var/cache/libreoffice-online"
+  mkdir -p "${pkgdir}/var/lib/lool/child-roots"
+  chmod u+w "${pkgdir}/var/lib/lool/child-roots"
+  sed -i 's|/usr/var/cache/libreoffice-online|/var/cache/libreoffice-online|g' ${pkgdir}/etc/libreoffice-online/loolwsd.xml
+  mkdir -p "${pkgdir}/usr/share/libreoffice-online/loleaflet"
+  cp -r "loleaflet/dist" "${pkgdir}/usr/share/libreoffice-online/loleaflet/"
+  chrpath -d "$pkgdir/usr/bin/"{loolmount,loolforkit}
+}

Copied: libreoffice-online/repos/community-testing-i686/build-fix.patch (from rev 247192, libreoffice-online/trunk/build-fix.patch)
===================================================================
--- community-testing-i686/build-fix.patch	                        (rev 0)
+++ community-testing-i686/build-fix.patch	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,458 @@
+diff -wbBur online-2.1.1/common/Protocol.cpp online-2.1.1.q/common/Protocol.cpp
+--- online-2.1.1/common/Protocol.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Protocol.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -17,7 +17,7 @@
+ #include <string>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ #include <Poco/StringTokenizer.h>
+ 
+diff -wbBur online-2.1.1/common/Protocol.hpp online-2.1.1.q/common/Protocol.hpp
+--- online-2.1.1/common/Protocol.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Protocol.hpp	2017-07-06 13:57:16.563171891 +0300
+@@ -22,7 +22,7 @@
+ #include <Poco/Net/WebSocket.h>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace LOOLProtocol
+ {
+@@ -265,7 +265,7 @@
+ 
+     inline std::string getAbbreviatedMessage(const std::string& message)
+     {
+-        const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n');
++        const auto pos = getDelimiterPosition(message.data(), std::min((unsigned int)message.size(), (unsigned int)500UL), '\n');
+ 
+         // If first line is less than the length (minus newline), add ellipsis.
+         if (pos < static_cast<std::string::size_type>(message.size()) - 1)
+diff -wbBur online-2.1.1/common/Seccomp.cpp online-2.1.1.q/common/Seccomp.cpp
+--- online-2.1.1/common/Seccomp.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Seccomp.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -36,6 +36,12 @@
+ #if defined(__x86_64__)
+ #  define AUDIT_ARCH_NR AUDIT_ARCH_X86_64
+ #  define REG_SYSCALL   REG_RAX
++#elif defined(__i386__)
++#  define AUDIT_ARCH_NR AUDIT_ARCH_I386
++#  define REG_SYSCALL   REG_EAX
++#elif defined(__arm__)
++#  define AUDIT_ARCH_NR AUDIT_ARCH_ARM
++#  define REG_SYSCALL   REG_R7
+ #else
+ #  error "Platform does not support seccomp filtering yet - unsafe."
+ #endif
+@@ -129,12 +135,16 @@
+         KILL_SYSCALL(sendfile),
+         KILL_SYSCALL(shutdown),
+         KILL_SYSCALL(listen),  // server sockets
++#ifdef __NR_accept
+         KILL_SYSCALL(accept),  // server sockets
++#endif
+ #if 0
+         KILL_SYSCALL(wait4),
+ #endif
+         KILL_SYSCALL(kill),   // !
++#ifdef __NR_shmctl
+         KILL_SYSCALL(shmctl),
++#endif
+         KILL_SYSCALL(ptrace), // tracing
+         KILL_SYSCALL(capset),
+         KILL_SYSCALL(uselib),
+diff -wbBur online-2.1.1/common/Util.hpp online-2.1.1.q/common/Util.hpp
+--- online-2.1.1/common/Util.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Util.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -25,7 +25,7 @@
+ #include <Poco/RegularExpression.h>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace Util
+ {
+diff -wbBur online-2.1.1/kit/ChildSession.cpp online-2.1.1.q/kit/ChildSession.cpp
+--- online-2.1.1/kit/ChildSession.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/ChildSession.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -19,6 +19,8 @@
+ #include <Poco/StringTokenizer.h>
+ #include <Poco/URI.h>
+ 
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
++
+ #include "common/FileUtil.hpp"
+ #include "KitHelper.hpp"
+ #include "Log.hpp"
+diff -wbBur online-2.1.1/kit/DummyLibreOfficeKit.cpp online-2.1.1.q/kit/DummyLibreOfficeKit.cpp
+--- online-2.1.1/kit/DummyLibreOfficeKit.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/DummyLibreOfficeKit.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -14,7 +14,7 @@
+ #include <cstring>
+ #include <memory>
+ 
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ #include <LibreOfficeKit/LibreOfficeKitTypes.h>
+ 
+ struct LibLODocument_Impl : public _LibreOfficeKitDocument
+diff -wbBur online-2.1.1/kit/Kit.cpp online-2.1.1.q/kit/Kit.cpp
+--- online-2.1.1/kit/Kit.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/Kit.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -1,3 +1,4 @@
++#include <sys/sysmacros.h>
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+ /*
+  * This file is part of the LibreOffice project.
+diff -wbBur online-2.1.1/kit/KitHelper.hpp online-2.1.1.q/kit/KitHelper.hpp
+--- online-2.1.1/kit/KitHelper.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/KitHelper.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -14,7 +14,7 @@
+ #include <string>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace LOKitHelper
+ {
+@@ -113,7 +113,8 @@
+             return "INVALIDATE_HEADER";
+         case LOK_CALLBACK_CELL_ADDRESS:
+             return "CELL_ADDRESS";
+-
++        default:
++            break;
+        }
+ 
+         return std::to_string(type);
+diff -wbBur online-2.1.1/net/WebSocketHandler.hpp online-2.1.1.q/net/WebSocketHandler.hpp
+--- online-2.1.1/net/WebSocketHandler.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/net/WebSocketHandler.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -358,14 +358,14 @@
+         else
+         {
+             out.push_back((char)127);
+-            out.push_back(static_cast<char>((len >> 56) & 0xff));
+-            out.push_back(static_cast<char>((len >> 48) & 0xff));
+-            out.push_back(static_cast<char>((len >> 40) & 0xff));
+-            out.push_back(static_cast<char>((len >> 32) & 0xff));
+-            out.push_back(static_cast<char>((len >> 24) & 0xff));
+-            out.push_back(static_cast<char>((len >> 16) & 0xff));
+-            out.push_back(static_cast<char>((len >> 8) & 0xff));
+-            out.push_back(static_cast<char>((len >> 0) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 56) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 48) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 40) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 32) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 24) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 16) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 8) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 0) & 0xff));
+         }
+ 
+         // Copy the data.
+diff -wbBur online-2.1.1/test/TileQueueTests.cpp online-2.1.1.q/test/TileQueueTests.cpp
+--- online-2.1.1/test/TileQueueTests.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/test/TileQueueTests.cpp	2017-07-06 13:44:08.256542614 +0300
+@@ -281,7 +281,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> messages =
+     {
+@@ -295,21 +295,21 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(2UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[0], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[1], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testSenderQueueTileDeduplication()
+@@ -320,7 +320,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> part_messages =
+     {
+@@ -334,12 +334,12 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> dup_messages =
+     {
+@@ -353,13 +353,13 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+     // The last one should persist.
+     CPPUNIT_ASSERT_EQUAL(dup_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testInvalidateViewCursorDeduplication()
+@@ -370,7 +370,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> view_messages =
+     {
+@@ -384,21 +384,21 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(2UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[0], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[1], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> dup_messages =
+     {
+@@ -412,13 +412,13 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+     // The last one should persist.
+     CPPUNIT_ASSERT_EQUAL(dup_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testCallbackInvalidation()
+diff -wbBur online-2.1.1/test/WhiteBoxTests.cpp online-2.1.1.q/test/WhiteBoxTests.cpp
+--- online-2.1.1/test/WhiteBoxTests.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/test/WhiteBoxTests.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -80,53 +80,53 @@
+     CPPUNIT_ASSERT(LOOLProtocol::getTokenKeywordFromMessage(message, "mumble", map, mumble));
+     CPPUNIT_ASSERT_EQUAL(2, mumble);
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed("A").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed("A").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), Util::trimmed("A"));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed(" X").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed(" X").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("X"), Util::trimmed(" X"));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed("Y ").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed("Y ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("Y"), Util::trimmed("Y "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed(" Z ").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed(" Z ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), Util::trimmed(" Z "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trimmed(" ").size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trimmed(" ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trimmed(" "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trimmed("   ").size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trimmed("   ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trimmed("   "));
+ 
+     std::string s;
+ 
+     s = "A";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = "A";
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), Util::trim(s));
+ 
+     s = " X";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = " X";
+     CPPUNIT_ASSERT_EQUAL(std::string("X"), Util::trim(s));
+ 
+     s = "Y ";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = "Y ";
+     CPPUNIT_ASSERT_EQUAL(std::string("Y"), Util::trim(s));
+ 
+     s = " Z ";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = " Z ";
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), Util::trim(s));
+ 
+     s = " ";
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trim(s).size());
+     s = " ";
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trim(s));
+ 
+     s = "   ";
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trim(s).size());
+     s = "   ";
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trim(s));
+ }
+@@ -162,51 +162,51 @@
+     std::vector<std::string> tokens;
+ 
+     tokens = LOOLProtocol::tokenize("");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize("  ");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize("A");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize("  A");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize("A  ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize("\n");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize(" A  \nZ ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z\n ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z  \n ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize("tile part=0 width=256 height=256 tileposx=0 tileposy=0 tilewidth=3840 tileheight=3840 ver=-1");
+-    CPPUNIT_ASSERT_EQUAL(9UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(9UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("tile"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("part=0"), tokens[1]);
+     CPPUNIT_ASSERT_EQUAL(std::string("width=256"), tokens[2]);
+diff -wbBur online-2.1.1/wsd/Admin.cpp online-2.1.1.q/wsd/Admin.cpp
+--- online-2.1.1/wsd/Admin.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/Admin.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -326,7 +326,7 @@
+         if (memWait <= 0)
+         {
+             const auto totalMem = getTotalMemoryUsage();
+-            if (totalMem != _lastTotalMemory)
++            if ((long)totalMem != _lastTotalMemory)
+             {
+                 LOG_TRC("Total memory used: " << totalMem);
+                 _lastTotalMemory = totalMem;
+diff -wbBur online-2.1.1/wsd/Storage.cpp online-2.1.1.q/wsd/Storage.cpp
+--- online-2.1.1/wsd/Storage.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/Storage.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -224,7 +224,7 @@
+     const auto lastModified = file.getLastModified();
+     const auto size = file.getSize();
+ 
+-    _fileInfo = FileInfo({filename, "localhost", lastModified, size});
++    _fileInfo = FileInfo({filename, "localhost", lastModified, (size_t)size});
+ 
+     // Set automatic userid and username
+     return std::unique_ptr<LocalStorage::LocalFileInfo>(new LocalFileInfo({"localhost", std::string("Local Host #") + std::to_string(LastLocalStorageId++)}));
+diff -wbBur online-2.1.1/wsd/TraceFile.hpp online-2.1.1.q/wsd/TraceFile.hpp
+--- online-2.1.1/wsd/TraceFile.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/TraceFile.hpp	2017-07-06 13:44:08.326542611 +0300
+@@ -406,7 +406,7 @@
+             _records[0].Dir != TraceFileRecord::Direction::Event ||
+             _records[0].Payload.find("NewSession") != 0)
+         {
+-            fprintf(stderr, "Invalid trace file with %ld records. First record: %s\n", _records.size(),
++            fprintf(stderr, "Invalid trace file with %ld records. First record: %s\n", (long)_records.size(),
+                     _records.empty() ? "<empty>" : _records[0].Payload.c_str());
+             throw std::runtime_error("Invalid trace file.");
+         }

Copied: libreoffice-online/repos/community-testing-i686/hack-annoying-errors.patch (from rev 247192, libreoffice-online/trunk/hack-annoying-errors.patch)
===================================================================
--- community-testing-i686/hack-annoying-errors.patch	                        (rev 0)
+++ community-testing-i686/hack-annoying-errors.patch	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,25 @@
+diff -wbBur online-libreoffice-5.3.4.2/kit/Kit.cpp online-libreoffice-5.3.4.2.q/kit/Kit.cpp
+--- online-libreoffice-5.3.4.2/kit/Kit.cpp	2017-07-12 19:24:55.656651908 +0300
++++ online-libreoffice-5.3.4.2.q/kit/Kit.cpp	2017-07-12 19:24:32.139985511 +0300
+@@ -150,8 +150,13 @@
+             File(newPath.parent()).createDirectories();
+             if (link(fpath, newPath.toString().c_str()) == -1)
+             {
++                if(errno != EEXIST)
++                {
++                    if(errno != EXDEV)
++                    {
+                 LOG_SYS("link(\"" << fpath << "\", \"" <<
+                         newPath.toString() << "\") failed. Will copy.");
++                    }
+                 try
+                 {
+                     File(fpath).copyTo(newPath.toString());
+@@ -163,6 +168,7 @@
+                     std::_Exit(Application::EXIT_SOFTWARE);
+                 }
+             }
++            }
+             break;
+         case FTW_D:
+             {

Copied: libreoffice-online/repos/community-testing-i686/libreoffice-online.install (from rev 247192, libreoffice-online/trunk/libreoffice-online.install)
===================================================================
--- community-testing-i686/libreoffice-online.install	                        (rev 0)
+++ community-testing-i686/libreoffice-online.install	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,21 @@
+post_install() {
+  getent group lool > /dev/null || \
+    groupadd -r lool > /dev/null
+  getent passwd lool > /dev/null || \
+    useradd -r -g lool -s /sbin/nologin -d /var/lib/lool -c "Libreoffice Online" lool > /dev/null
+  post_upgrade
+}
+
+post_upgrade() {
+  loolwsd-systemplate-setup /var/lib/lool/systemplate /usr/lib/libreoffice
+  chown -R lool:lool /var/cache/libreoffice-online \
+                     /var/lib/lool/child-roots \
+                     /var/lib/lool/systemplate
+  chmod u+w /var/lib/lool/child-roots
+  setcap cap_fowner,cap_mknod,cap_sys_chroot=ep /usr/bin/loolforkit
+  setcap cap_sys_admin=ep /usr/bin/loolmount
+}
+
+post_remove() {
+  echo "You may want to remove /var/lib/lool and loop user/group"
+}

Copied: libreoffice-online/repos/community-testing-i686/loolwsd.service (from rev 247192, libreoffice-online/trunk/loolwsd.service)
===================================================================
--- community-testing-i686/loolwsd.service	                        (rev 0)
+++ community-testing-i686/loolwsd.service	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,13 @@
+[Unit]
+Description=loolwsd as a service
+
+[Service]
+User=lool
+Group=lool
+ExecStart=/usr/bin/loolwsd --o:sys_template_path=/var/lib/lool/systemplate --o:lo_template_path=/usr/lib/libreoffice --o:child_root_path=/var/lib/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd
+ExecReload=/bin/kill -HUP $MAINPID
+KillMode=process
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target

Copied: libreoffice-online/repos/community-testing-x86_64/PKGBUILD (from rev 247192, libreoffice-online/trunk/PKGBUILD)
===================================================================
--- community-testing-x86_64/PKGBUILD	                        (rev 0)
+++ community-testing-x86_64/PKGBUILD	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,59 @@
+# $Id$
+# Maintainer: Sergej Pupykin <arch+pub at sergej.pp.ru>
+# Maintainer: Jonas Heinrich <onny at project-insanity.org>
+# Contributor: Jonas Heinrich <onny at project-insanity.org>
+
+pkgname=libreoffice-online
+pkgver=5.4.0.2
+pkgrel=1
+pkgdesc="HTML5-based/cloud-based version of the office suite"
+arch=('x86_64' 'i686')
+url="https://cgit.freedesktop.org/libreoffice/online/"
+license=("MPL")
+makedepends=("cppunit" "poco" "libreoffice-fresh-sdk>=5.4" "jake" "npm" "chrpath" "python-polib")
+depends=("libpng12" "poco" "pcre" "cpio" "libreoffice" "openssl-1.0")
+backup=("etc/libreoffice-online/loolwsd.xml")
+install="libreoffice-online.install"
+source=("${pkgname}-${pkgver}.tar.gz::https://github.com/LibreOffice/online/archive/libreoffice-${pkgver}.tar.gz"
+	"loolwsd.service"
+	"build-fix.patch"
+	"hack-annoying-errors.patch")
+sha512sums=('472ddc83e3dd4502cdfadb9b45899d6f05f4d1969f71e030cba847e46bc6ad32bf720087df16cc305b0fe1d71d958aa2e4f0ffd0178b608000071a4113178ddb'
+            '4a809d8420f42eef99a831b32c94d9ce336b5aa5ccac3c44b99346b94e9d7a6ae8b4e06760057f20e844837c3ab2175146bef63ba99e1a50d016a890704cc2c9'
+            '049036898f59f1a7f18c6f186042b7ecee84b010256c813c633e0854b206b1b94343972cc8a374990eb22919a223429de4db712f70a89851f266e6500b67c2b1'
+            '530dad9becee9504d1e2fff5c7e5115daf62ac48312c5cf42f9b44dc0f21665a05f5788606d988f631d3b6dc4dfcf866d564ac1f8bf087c4efe3c197b3206f2d')
+
+prepare() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  patch -p1 <"$srcdir"/build-fix.patch
+  patch -p1 <"$srcdir"/hack-annoying-errors.patch
+}
+
+build() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  ./autogen.sh
+  export PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig
+  CPPFLAGS="-I/usr/include/openssl-1.0 -Wno-implicit-fallthrough -Wno-format-truncation" \
+  CFLAGS="-I/usr/include/openssl-1.0" \
+  LDFLAGS="-L/usr/lib/openssl-1.0" \
+      ./configure --enable-silent-rules \
+	--with-lokit-path=/usr/include/libreoffice \
+	--with-lo-path=/usr/lib/libreoffice \
+	--prefix=/usr \
+	--sysconfdir=/etc
+  BUILDING_FROM_RPMBUILD=yes make
+}
+
+package() {
+  cd "${srcdir}/online-libreoffice-${pkgver}"
+  BUILDING_FROM_RPMBUILD=yes make DESTDIR=${pkgdir} install
+  install -Dm644 "${srcdir}/loolwsd.service" "${pkgdir}/usr/lib/systemd/system/loolwsd.service"
+  mkdir -p "${pkgdir}/var/lib/lool"
+  mkdir -p "${pkgdir}/var/cache/libreoffice-online"
+  mkdir -p "${pkgdir}/var/lib/lool/child-roots"
+  chmod u+w "${pkgdir}/var/lib/lool/child-roots"
+  sed -i 's|/usr/var/cache/libreoffice-online|/var/cache/libreoffice-online|g' ${pkgdir}/etc/libreoffice-online/loolwsd.xml
+  mkdir -p "${pkgdir}/usr/share/libreoffice-online/loleaflet"
+  cp -r "loleaflet/dist" "${pkgdir}/usr/share/libreoffice-online/loleaflet/"
+  chrpath -d "$pkgdir/usr/bin/"{loolmount,loolforkit}
+}

Copied: libreoffice-online/repos/community-testing-x86_64/build-fix.patch (from rev 247192, libreoffice-online/trunk/build-fix.patch)
===================================================================
--- community-testing-x86_64/build-fix.patch	                        (rev 0)
+++ community-testing-x86_64/build-fix.patch	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,458 @@
+diff -wbBur online-2.1.1/common/Protocol.cpp online-2.1.1.q/common/Protocol.cpp
+--- online-2.1.1/common/Protocol.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Protocol.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -17,7 +17,7 @@
+ #include <string>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ #include <Poco/StringTokenizer.h>
+ 
+diff -wbBur online-2.1.1/common/Protocol.hpp online-2.1.1.q/common/Protocol.hpp
+--- online-2.1.1/common/Protocol.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Protocol.hpp	2017-07-06 13:57:16.563171891 +0300
+@@ -22,7 +22,7 @@
+ #include <Poco/Net/WebSocket.h>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace LOOLProtocol
+ {
+@@ -265,7 +265,7 @@
+ 
+     inline std::string getAbbreviatedMessage(const std::string& message)
+     {
+-        const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n');
++        const auto pos = getDelimiterPosition(message.data(), std::min((unsigned int)message.size(), (unsigned int)500UL), '\n');
+ 
+         // If first line is less than the length (minus newline), add ellipsis.
+         if (pos < static_cast<std::string::size_type>(message.size()) - 1)
+diff -wbBur online-2.1.1/common/Seccomp.cpp online-2.1.1.q/common/Seccomp.cpp
+--- online-2.1.1/common/Seccomp.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Seccomp.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -36,6 +36,12 @@
+ #if defined(__x86_64__)
+ #  define AUDIT_ARCH_NR AUDIT_ARCH_X86_64
+ #  define REG_SYSCALL   REG_RAX
++#elif defined(__i386__)
++#  define AUDIT_ARCH_NR AUDIT_ARCH_I386
++#  define REG_SYSCALL   REG_EAX
++#elif defined(__arm__)
++#  define AUDIT_ARCH_NR AUDIT_ARCH_ARM
++#  define REG_SYSCALL   REG_R7
+ #else
+ #  error "Platform does not support seccomp filtering yet - unsafe."
+ #endif
+@@ -129,12 +135,16 @@
+         KILL_SYSCALL(sendfile),
+         KILL_SYSCALL(shutdown),
+         KILL_SYSCALL(listen),  // server sockets
++#ifdef __NR_accept
+         KILL_SYSCALL(accept),  // server sockets
++#endif
+ #if 0
+         KILL_SYSCALL(wait4),
+ #endif
+         KILL_SYSCALL(kill),   // !
++#ifdef __NR_shmctl
+         KILL_SYSCALL(shmctl),
++#endif
+         KILL_SYSCALL(ptrace), // tracing
+         KILL_SYSCALL(capset),
+         KILL_SYSCALL(uselib),
+diff -wbBur online-2.1.1/common/Util.hpp online-2.1.1.q/common/Util.hpp
+--- online-2.1.1/common/Util.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/common/Util.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -25,7 +25,7 @@
+ #include <Poco/RegularExpression.h>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace Util
+ {
+diff -wbBur online-2.1.1/kit/ChildSession.cpp online-2.1.1.q/kit/ChildSession.cpp
+--- online-2.1.1/kit/ChildSession.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/ChildSession.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -19,6 +19,8 @@
+ #include <Poco/StringTokenizer.h>
+ #include <Poco/URI.h>
+ 
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
++
+ #include "common/FileUtil.hpp"
+ #include "KitHelper.hpp"
+ #include "Log.hpp"
+diff -wbBur online-2.1.1/kit/DummyLibreOfficeKit.cpp online-2.1.1.q/kit/DummyLibreOfficeKit.cpp
+--- online-2.1.1/kit/DummyLibreOfficeKit.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/DummyLibreOfficeKit.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -14,7 +14,7 @@
+ #include <cstring>
+ #include <memory>
+ 
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ #include <LibreOfficeKit/LibreOfficeKitTypes.h>
+ 
+ struct LibLODocument_Impl : public _LibreOfficeKitDocument
+diff -wbBur online-2.1.1/kit/Kit.cpp online-2.1.1.q/kit/Kit.cpp
+--- online-2.1.1/kit/Kit.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/Kit.cpp	2017-07-06 13:44:08.216542616 +0300
+@@ -1,3 +1,4 @@
++#include <sys/sysmacros.h>
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+ /*
+  * This file is part of the LibreOffice project.
+diff -wbBur online-2.1.1/kit/KitHelper.hpp online-2.1.1.q/kit/KitHelper.hpp
+--- online-2.1.1/kit/KitHelper.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/kit/KitHelper.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -14,7 +14,7 @@
+ #include <string>
+ 
+ #define LOK_USE_UNSTABLE_API
+-#include <LibreOfficeKit/LibreOfficeKitEnums.h>
++#include "../bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h"
+ 
+ namespace LOKitHelper
+ {
+@@ -113,7 +113,8 @@
+             return "INVALIDATE_HEADER";
+         case LOK_CALLBACK_CELL_ADDRESS:
+             return "CELL_ADDRESS";
+-
++        default:
++            break;
+        }
+ 
+         return std::to_string(type);
+diff -wbBur online-2.1.1/net/WebSocketHandler.hpp online-2.1.1.q/net/WebSocketHandler.hpp
+--- online-2.1.1/net/WebSocketHandler.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/net/WebSocketHandler.hpp	2017-07-06 13:44:08.216542616 +0300
+@@ -358,14 +358,14 @@
+         else
+         {
+             out.push_back((char)127);
+-            out.push_back(static_cast<char>((len >> 56) & 0xff));
+-            out.push_back(static_cast<char>((len >> 48) & 0xff));
+-            out.push_back(static_cast<char>((len >> 40) & 0xff));
+-            out.push_back(static_cast<char>((len >> 32) & 0xff));
+-            out.push_back(static_cast<char>((len >> 24) & 0xff));
+-            out.push_back(static_cast<char>((len >> 16) & 0xff));
+-            out.push_back(static_cast<char>((len >> 8) & 0xff));
+-            out.push_back(static_cast<char>((len >> 0) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 56) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 48) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 40) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 32) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 24) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 16) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 8) & 0xff));
++            out.push_back(static_cast<char>(((uint64_t)len >> 0) & 0xff));
+         }
+ 
+         // Copy the data.
+diff -wbBur online-2.1.1/test/TileQueueTests.cpp online-2.1.1.q/test/TileQueueTests.cpp
+--- online-2.1.1/test/TileQueueTests.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/test/TileQueueTests.cpp	2017-07-06 13:44:08.256542614 +0300
+@@ -281,7 +281,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> messages =
+     {
+@@ -295,21 +295,21 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(2UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[0], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[1], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testSenderQueueTileDeduplication()
+@@ -320,7 +320,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> part_messages =
+     {
+@@ -334,12 +334,12 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> dup_messages =
+     {
+@@ -353,13 +353,13 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+     // The last one should persist.
+     CPPUNIT_ASSERT_EQUAL(dup_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testInvalidateViewCursorDeduplication()
+@@ -370,7 +370,7 @@
+ 
+     // Empty queue
+     CPPUNIT_ASSERT_EQUAL(false, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> view_messages =
+     {
+@@ -384,21 +384,21 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(3UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(3UL, (unsigned long)queue.size());
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(2UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[0], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[1], std::string(item->data().data(), item->data().size()));
+ 
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(view_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ 
+     const std::vector<std::string> dup_messages =
+     {
+@@ -412,13 +412,13 @@
+         queue.enqueue(std::make_shared<Message>(msg, Message::Dir::Out));
+     }
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)queue.size());
+     CPPUNIT_ASSERT_EQUAL(true, queue.dequeue(item));
+ 
+     // The last one should persist.
+     CPPUNIT_ASSERT_EQUAL(dup_messages[2], std::string(item->data().data(), item->data().size()));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, queue.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)queue.size());
+ }
+ 
+ void TileQueueTests::testCallbackInvalidation()
+diff -wbBur online-2.1.1/test/WhiteBoxTests.cpp online-2.1.1.q/test/WhiteBoxTests.cpp
+--- online-2.1.1/test/WhiteBoxTests.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/test/WhiteBoxTests.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -80,53 +80,53 @@
+     CPPUNIT_ASSERT(LOOLProtocol::getTokenKeywordFromMessage(message, "mumble", map, mumble));
+     CPPUNIT_ASSERT_EQUAL(2, mumble);
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed("A").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed("A").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), Util::trimmed("A"));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed(" X").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed(" X").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("X"), Util::trimmed(" X"));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed("Y ").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed("Y ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("Y"), Util::trimmed("Y "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trimmed(" Z ").size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trimmed(" Z ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), Util::trimmed(" Z "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trimmed(" ").size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trimmed(" ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trimmed(" "));
+ 
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trimmed("   ").size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trimmed("   ").size());
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trimmed("   "));
+ 
+     std::string s;
+ 
+     s = "A";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = "A";
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), Util::trim(s));
+ 
+     s = " X";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = " X";
+     CPPUNIT_ASSERT_EQUAL(std::string("X"), Util::trim(s));
+ 
+     s = "Y ";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = "Y ";
+     CPPUNIT_ASSERT_EQUAL(std::string("Y"), Util::trim(s));
+ 
+     s = " Z ";
+-    CPPUNIT_ASSERT_EQUAL(1UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)Util::trim(s).size());
+     s = " Z ";
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), Util::trim(s));
+ 
+     s = " ";
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trim(s).size());
+     s = " ";
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trim(s));
+ 
+     s = "   ";
+-    CPPUNIT_ASSERT_EQUAL(0UL, Util::trim(s).size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)Util::trim(s).size());
+     s = "   ";
+     CPPUNIT_ASSERT_EQUAL(std::string(""), Util::trim(s));
+ }
+@@ -162,51 +162,51 @@
+     std::vector<std::string> tokens;
+ 
+     tokens = LOOLProtocol::tokenize("");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize("  ");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize("A");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize("  A");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize("A  ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize("\n");
+-    CPPUNIT_ASSERT_EQUAL(0UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(0UL, (unsigned long)tokens.size());
+ 
+     tokens = LOOLProtocol::tokenize(" A  \nZ ");
+-    CPPUNIT_ASSERT_EQUAL(1UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(1UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z\n ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize(" A  Z  \n ");
+-    CPPUNIT_ASSERT_EQUAL(2UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(2UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("A"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("Z"), tokens[1]);
+ 
+     tokens = LOOLProtocol::tokenize("tile part=0 width=256 height=256 tileposx=0 tileposy=0 tilewidth=3840 tileheight=3840 ver=-1");
+-    CPPUNIT_ASSERT_EQUAL(9UL, tokens.size());
++    CPPUNIT_ASSERT_EQUAL(9UL, (unsigned long)tokens.size());
+     CPPUNIT_ASSERT_EQUAL(std::string("tile"), tokens[0]);
+     CPPUNIT_ASSERT_EQUAL(std::string("part=0"), tokens[1]);
+     CPPUNIT_ASSERT_EQUAL(std::string("width=256"), tokens[2]);
+diff -wbBur online-2.1.1/wsd/Admin.cpp online-2.1.1.q/wsd/Admin.cpp
+--- online-2.1.1/wsd/Admin.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/Admin.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -326,7 +326,7 @@
+         if (memWait <= 0)
+         {
+             const auto totalMem = getTotalMemoryUsage();
+-            if (totalMem != _lastTotalMemory)
++            if ((long)totalMem != _lastTotalMemory)
+             {
+                 LOG_TRC("Total memory used: " << totalMem);
+                 _lastTotalMemory = totalMem;
+diff -wbBur online-2.1.1/wsd/Storage.cpp online-2.1.1.q/wsd/Storage.cpp
+--- online-2.1.1/wsd/Storage.cpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/Storage.cpp	2017-07-06 13:44:08.326542611 +0300
+@@ -224,7 +224,7 @@
+     const auto lastModified = file.getLastModified();
+     const auto size = file.getSize();
+ 
+-    _fileInfo = FileInfo({filename, "localhost", lastModified, size});
++    _fileInfo = FileInfo({filename, "localhost", lastModified, (size_t)size});
+ 
+     // Set automatic userid and username
+     return std::unique_ptr<LocalStorage::LocalFileInfo>(new LocalFileInfo({"localhost", std::string("Local Host #") + std::to_string(LastLocalStorageId++)}));
+diff -wbBur online-2.1.1/wsd/TraceFile.hpp online-2.1.1.q/wsd/TraceFile.hpp
+--- online-2.1.1/wsd/TraceFile.hpp	2017-05-18 22:03:26.000000000 +0300
++++ online-2.1.1.q/wsd/TraceFile.hpp	2017-07-06 13:44:08.326542611 +0300
+@@ -406,7 +406,7 @@
+             _records[0].Dir != TraceFileRecord::Direction::Event ||
+             _records[0].Payload.find("NewSession") != 0)
+         {
+-            fprintf(stderr, "Invalid trace file with %ld records. First record: %s\n", _records.size(),
++            fprintf(stderr, "Invalid trace file with %ld records. First record: %s\n", (long)_records.size(),
+                     _records.empty() ? "<empty>" : _records[0].Payload.c_str());
+             throw std::runtime_error("Invalid trace file.");
+         }

Copied: libreoffice-online/repos/community-testing-x86_64/hack-annoying-errors.patch (from rev 247192, libreoffice-online/trunk/hack-annoying-errors.patch)
===================================================================
--- community-testing-x86_64/hack-annoying-errors.patch	                        (rev 0)
+++ community-testing-x86_64/hack-annoying-errors.patch	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,25 @@
+diff -wbBur online-libreoffice-5.3.4.2/kit/Kit.cpp online-libreoffice-5.3.4.2.q/kit/Kit.cpp
+--- online-libreoffice-5.3.4.2/kit/Kit.cpp	2017-07-12 19:24:55.656651908 +0300
++++ online-libreoffice-5.3.4.2.q/kit/Kit.cpp	2017-07-12 19:24:32.139985511 +0300
+@@ -150,8 +150,13 @@
+             File(newPath.parent()).createDirectories();
+             if (link(fpath, newPath.toString().c_str()) == -1)
+             {
++                if(errno != EEXIST)
++                {
++                    if(errno != EXDEV)
++                    {
+                 LOG_SYS("link(\"" << fpath << "\", \"" <<
+                         newPath.toString() << "\") failed. Will copy.");
++                    }
+                 try
+                 {
+                     File(fpath).copyTo(newPath.toString());
+@@ -163,6 +168,7 @@
+                     std::_Exit(Application::EXIT_SOFTWARE);
+                 }
+             }
++            }
+             break;
+         case FTW_D:
+             {

Copied: libreoffice-online/repos/community-testing-x86_64/libreoffice-online.install (from rev 247192, libreoffice-online/trunk/libreoffice-online.install)
===================================================================
--- community-testing-x86_64/libreoffice-online.install	                        (rev 0)
+++ community-testing-x86_64/libreoffice-online.install	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,21 @@
+post_install() {
+  getent group lool > /dev/null || \
+    groupadd -r lool > /dev/null
+  getent passwd lool > /dev/null || \
+    useradd -r -g lool -s /sbin/nologin -d /var/lib/lool -c "Libreoffice Online" lool > /dev/null
+  post_upgrade
+}
+
+post_upgrade() {
+  loolwsd-systemplate-setup /var/lib/lool/systemplate /usr/lib/libreoffice
+  chown -R lool:lool /var/cache/libreoffice-online \
+                     /var/lib/lool/child-roots \
+                     /var/lib/lool/systemplate
+  chmod u+w /var/lib/lool/child-roots
+  setcap cap_fowner,cap_mknod,cap_sys_chroot=ep /usr/bin/loolforkit
+  setcap cap_sys_admin=ep /usr/bin/loolmount
+}
+
+post_remove() {
+  echo "You may want to remove /var/lib/lool and loop user/group"
+}

Copied: libreoffice-online/repos/community-testing-x86_64/loolwsd.service (from rev 247192, libreoffice-online/trunk/loolwsd.service)
===================================================================
--- community-testing-x86_64/loolwsd.service	                        (rev 0)
+++ community-testing-x86_64/loolwsd.service	2017-07-31 18:23:35 UTC (rev 247193)
@@ -0,0 +1,13 @@
+[Unit]
+Description=loolwsd as a service
+
+[Service]
+User=lool
+Group=lool
+ExecStart=/usr/bin/loolwsd --o:sys_template_path=/var/lib/lool/systemplate --o:lo_template_path=/usr/lib/libreoffice --o:child_root_path=/var/lib/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd
+ExecReload=/bin/kill -HUP $MAINPID
+KillMode=process
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target



More information about the arch-commits mailing list