testing/loolwsd: new aport

* fixes #8307
This commit is contained in:
Duncan Bellamy 2020-07-06 09:28:00 +00:00 committed by Leo
parent d6f6c00072
commit 42e8e61b20
2 changed files with 276 additions and 0 deletions

View File

@ -0,0 +1,230 @@
fix differences between musl and glibc
* change error funtion to err
* change sys/poll.h to poll.h
* add ftw-missing.h with defines missing in alpine ftw.h
* remove test subdir from makefile.am as tests fail
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,7 @@
else
-SUBDIRS = . test loleaflet
+SUBDIRS = . loleaflet
export ENABLE_DEBUG
--- a/common/FileUtil.cpp
+++ b/common/FileUtil.cpp
@@ -12,6 +12,7 @@
#include "FileUtil.hpp"
#include <ftw.h>
+#include "ftw-missing.h"
#include <sys/stat.h>
#ifdef __linux
#include <sys/vfs.h>
--- a/common/IoUtil.cpp
+++ b/common/IoUtil.cpp
@@ -11,7 +11,7 @@
#include "IoUtil.hpp"
-#include <sys/poll.h>
+#include <poll.h>
#include <cassert>
#include <cstdlib>
--- a/common/Seccomp.cpp
+++ b/common/Seccomp.cpp
@@ -17,6 +17,7 @@
#include <dlfcn.h>
#include <ftw.h>
+#include "ftw-missing.h"
#include <linux/audit.h>
#include <linux/filter.h>
#if DISABLE_SECCOMP == 0
--- a/common/Session.cpp
+++ b/common/Session.cpp
@@ -14,6 +14,7 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <ftw.h>
+#include "ftw-missing.h"
#include <utime.h>
#include <cassert>
--- a/common/SigUtil.cpp
+++ b/common/SigUtil.cpp
@@ -11,11 +11,11 @@
#include "SigUtil.hpp"
-#if !defined(__ANDROID__)
+#if !defined(__ANDROID__) && defined(__GLIBC__)
# include <execinfo.h>
#endif
#include <csignal>
-#include <sys/poll.h>
+#include <poll.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <unistd.h>
@@ -265,7 +265,7 @@
void dumpBacktrace()
{
-#if !defined(__ANDROID__)
+#if !defined(__ANDROID__) && defined(__GLIBC__)
Log::signalLog("\nBacktrace ");
Log::signalLogNumber(getpid());
Log::signalLog(":\n");
@@ -278,7 +278,7 @@
backtrace_symbols_fd(backtraceBuffer, numSlots, STDERR_FILENO);
}
#else
- LOG_SYS("Backtrace not available on Android.");
+ LOG_SYS("Backtrace not available on Android or Musl.");
#endif
if (std::getenv("LOOL_DEBUG"))
--- a/common/Util.cpp
+++ b/common/Util.cpp
@@ -12,7 +12,7 @@
#include "Util.hpp"
#include <csignal>
-#include <sys/poll.h>
+#include <poll.h>
#ifdef __linux
#include <sys/prctl.h>
#include <sys/syscall.h>
--- /dev/null
+++ b/common/ftw-missing.h
@@ -0,0 +1,6 @@
+#define FTW_ACTIONRETVAL 16
+
+#define FTW_CONTINUE 0
+#define FTW_STOP 1
+#define FTW_SKIP_SUBTREE 2
+#define FTW_SKIP_SIBLINGS 3
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -16,6 +16,7 @@
#include <dlfcn.h>
#ifdef __linux
#include <ftw.h>
+#include "ftw-missing.h"
#include <sys/capability.h>
#include <sys/sysmacros.h>
#endif
--- a/tools/map.cpp
+++ b/tools/map.cpp
@@ -20,7 +20,7 @@
#include <string.h>
#include <ctype.h>
#include <errno.h>
-#include <error.h>
+#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
@@ -99,7 +99,7 @@
snprintf(path_proc, sizeof(path_proc), "/proc/%d/%s", proc_id, name);
int fd = open(path_proc, 0);
if (fd < 0)
- error(EXIT_FAILURE, errno, "Failed to open %s", path_proc);
+ err(EXIT_FAILURE, "Failed to open %s", path_proc);
return fd;
}
@@ -259,7 +259,7 @@
data.resize (map.size());
if (lseek(mem_fd, map.getStart(), SEEK_SET) < 0 ||
read(mem_fd, &data[0], map.size()) != (int)map.size())
- error(EXIT_FAILURE, errno, "Failed to seek in /proc/%d/mem to %lld",
+ err(EXIT_FAILURE, "Failed to seek in /proc/%d/mem to %lld",
_proc_id, map.getStart());
scanForSalStrings(map, data);
@@ -341,9 +341,9 @@
parentData.resize(0x1000);
if (lseek(mem_fd, page, SEEK_SET) < 0)
- error(EXIT_FAILURE, errno, "Failed to seek in /proc/<pid>/mem to %lld", page);
+ err(EXIT_FAILURE, "Failed to seek in /proc/<pid>/mem to %lld", page);
if (read(mem_fd, &pageData[0], 0x1000) != 0x1000)
- error(EXIT_FAILURE, errno, "Failed to read page %lld from /proc/<pid>/mem", page);
+ err(EXIT_FAILURE, "Failed to read page %lld from /proc/<pid>/mem", page);
if (lseek(parent_fd, page, SEEK_SET) < 0)
parentData.resize(0);
@@ -450,10 +450,10 @@
for (addr_t p : vaddrs)
{
if (lseek(fd, (p / 0x1000 * 8), SEEK_SET) < 0)
- error(EXIT_FAILURE, errno, "Failed to seek in pagemap");
+ err(EXIT_FAILURE, "Failed to seek in pagemap");
addr_t vaddrData;
if (read(fd, &vaddrData, 8) < 0)
- error(EXIT_FAILURE, errno, "Failed to read vaddrdata");
+ err(EXIT_FAILURE, "Failed to read vaddrdata");
{
// https://patchwork.kernel.org/patch/6787921/
// fprintf(stderr, "addr: 0x%8llx bits: 0x%8llx : %s\n", p, vaddrData,
@@ -521,7 +521,7 @@
std::vector<addr_t> *pushTo = nullptr;
if ((file_pointer = fopen(file, "r")) == nullptr)
- error(EXIT_FAILURE, errno, "%s", file);
+ err(EXIT_FAILURE, "%s", file);
while (fgets(buffer, sizeof(buffer), file_pointer))
{
@@ -612,7 +612,7 @@
char buffer[4096];
int len;
if ((len = read(fd, buffer, sizeof (buffer))) < 0)
- error(EXIT_FAILURE, errno, "Failed to read /proc/%d/stat", proc_id);
+ err(EXIT_FAILURE, "Failed to read /proc/%d/stat", proc_id);
close (fd);
buffer[len] = '\0';
@@ -679,12 +679,12 @@
root_proc = opendir("/proc");
if (!root_proc)
- error(EXIT_FAILURE, errno, "%s", "/proc");
+ err(EXIT_FAILURE, "%s", "/proc");
while ((dir_proc = readdir(root_proc)))
{
if (!dir_proc && !dir_proc->d_name[0])
- error(EXIT_FAILURE, ENOTDIR, "bad dir");
+ err(EXIT_FAILURE, "bad dir");
if (*dir_proc->d_name > '0' && *dir_proc->d_name <= '9')
{
--- a/wsd/Admin.cpp
+++ b/wsd/Admin.cpp
@@ -11,7 +11,7 @@
#include <cassert>
#include <mutex>
-#include <sys/poll.h>
+#include <poll.h>
#include <unistd.h>
#include <Poco/Net/HTTPCookie.h>
--- a/wsd/AdminModel.hpp
+++ b/wsd/AdminModel.hpp
@@ -13,6 +13,7 @@
#include <memory>
#include <set>
#include <string>
+#include <list>
#include <Poco/Process.h>

46
testing/loolwsd/APKBUILD Normal file
View File

@ -0,0 +1,46 @@
# Contributor: Duncan Bellamy <dunk@denkimushi.com>
# Maintainer: Duncan Bellamy <dunk@denkimushi.com>
pkgname=loolwsd
pkgver=6.4.0.2
pkgrel=0
pkgdesc="LibreOffice Online WebSocket server"
url="https://github.com/LibreOffice/online"
arch="all !s390x !mips !mips64 !x86 !armv7" #x86 and armv7 fail to build with size errors
license="MPL-2.0"
makedepends="automake autoconf libtool libreofficekit bash py3-lxml py3-polib libpng-dev
cppunit-dev libcap-dev linux-pam-dev npm openssl-dev krb5-dev poco-dev libseccomp-dev"
subpackages="$pkgname-doc"
source="https://github.com/LibreOffice/online/archive/libreoffice-$pkgver.tar.gz
10-musl.patch"
builddir="$srcdir/online-libreoffice-$pkgver"
build() {
./autogen.sh
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--enable-silent-rules \
--with-lokit-path=/usr/include/libreoffice \
--with-lo-path=/usr/lib/libreoffice \
--with-poco-includes=/usr/include/Poco \
--with-vendor="Alpine Linux" \
--enable-browsersync \
--disable-seccomp \
--disable-setcap \
--enable-anonymization
make CXXFLAGS="$CXXFLAGS -DNDEBUG" all-local
}
check() {
make check
}
package() {
make DESTDIR="$pkgdir/" install
}
sha512sums="e2e8846023c314a22fecf1452a8b00854a7fb6c67a61640335e624ee8d14ee934af14a880cf61a5a64f6291a77165a5cc698e861a75d5294b1ff6405161e9dac libreoffice-6.4.0.2.tar.gz
58c3dfb81913a2ddf995fb8eccd9e4038252b3d29b2f37ed754e1e6f9a9ae5bbcc8464ceaef2e98f916715443fa35305a7ae2925779348231547960ee96cbb91 10-musl.patch"