[Libreoffice-commits] online.git: configure.ac Makefile.am test/Makefile.am test/run_unit.sh.in wsd/LOOLWSD.cpp wsd/LOOLWSD.hpp
Ashod Nakashian (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 1 04:14:59 UTC 2020
Makefile.am | 11 ++++-
configure.ac | 2
test/Makefile.am | 109 +++++++++++++++++++++++-----------------------------
test/run_unit.sh.in | 2
wsd/LOOLWSD.cpp | 16 +++++++
wsd/LOOLWSD.hpp | 1
6 files changed, 76 insertions(+), 65 deletions(-)
New commits:
commit 9a427524d11908e2b8c475e7c6328563f300f076
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
AuthorDate: Sun Jun 28 11:30:22 2020 -0400
Commit: Ashod Nakashian <ashnakash at gmail.com>
CommitDate: Wed Jul 1 06:14:39 2020 +0200
wsd: support --cleanup in loolwsd
Leaving behind jails with bind-mount
entries makes build-workspace removal
complicated, and jenkins builds start failing.
The cleanup stage is integrated in Makefiles
and should be transparent.
In the event that manual cleanup is necessary,
'loolwsd --cleanup' can be invoked.
Change-Id: Ia4b99b0c66e56dfa2d50e79b0ba98f714cf32886
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97470
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/Makefile.am b/Makefile.am
index d3f18e6a3..0eba81cf5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -321,6 +321,8 @@ EXTRA_DIST = discovery.xml \
scripts/unocommands.py \
$(man_MANS)
+CLEANUP_COMMAND=if test -s ./loolwsd; then echo "Cleaning up..." && ./loolwsd --cleanup --o:logging.level=trace; fi
+
if HAVE_LO_PATH
SYSTEM_STAMP = @SYSTEMPLATE_PATH@/system_stamp
@@ -328,13 +330,16 @@ CAPABILITIES = $(if @ENABLE_SETCAP@,true,false)
RUN_GDB = $(if $(GDB_FRONTEND),$(GDB_FRONTEND),gdb --tui --args)
$(SYSTEM_STAMP) : ${top_srcdir}/loolwsd-systemplate-setup
+ if test -s ./loolwsd; then ./loolwsd --cleanup; fi
if test "z at SYSTEMPLATE_PATH@" != "z"; then rm -rf "@SYSTEMPLATE_PATH@"; fi
${top_srcdir}/loolwsd-systemplate-setup "@SYSTEMPLATE_PATH@" "@LO_PATH@" && touch $@
@JAILS_PATH@ :
mkdir -p $@
+ $(CLEANUP_COMMAND)
clean-local:
+ $(CLEANUP_COMMAND)
if test "z at JAILS_PATH@" != "z"; then rm -rf "@JAILS_PATH@"; fi
if test "z at SYSTEMPLATE_PATH@" != "z"; then rm -rf "@SYSTEMPLATE_PATH@"; fi
rm -f $(abs_srcdir)/compile_commands.json
@@ -457,8 +462,9 @@ endif
# installing. When building for packaging, no need for this, as the
# capabilities won't survive packaging anyway. Instead, handle it when
# installing the RPM or Debian package.
+.PHONY: caps_bins
-all-local: loolforkit loolmount @JAILS_PATH@ $(SYSTEM_STAMP)
+caps_bins: loolforkit loolmount
if ENABLE_SETCAP
sudo @SETCAP@ cap_fowner,cap_mknod,cap_sys_chroot=ep loolforkit
sudo @SETCAP@ cap_sys_admin=ep loolmount
@@ -466,6 +472,9 @@ else
echo "Skipping capability setting"
endif
+all-local: loolwsd caps_bins @JAILS_PATH@ $(SYSTEM_STAMP)
+ $(CLEANUP_COMMAND)
+
# just run the build without any tests
build-nocheck: all-am
diff --git a/configure.ac b/configure.ac
index 740dc2e3c..7a8177e91 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1140,7 +1140,7 @@ if test "$enable_androidapp" = "yes"; then
$srcdir/android/lib/src/main/cpp/CMakeLists.txt:android/lib/src/main/cpp/CMakeLists.txt.in])
fi
-AC_CONFIG_FILES([test/run_unit.sh:test/run_unit.sh.in],[chmod +x test/run_unit.sh])
+AC_CONFIG_FILES([test/run_unit.sh],[chmod +x test/run_unit.sh])
AC_OUTPUT
diff --git a/test/Makefile.am b/test/Makefile.am
index 275a214c2..ad48899a1 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -189,8 +189,11 @@ else
SYSTEM_STAMP =
endif
+CLEANUP_COMMAND=if test -s ../loolwsd; then echo "Cleaning up..." && ../loolwsd --cleanup --o:logging.level=trace; fi
+
if HAVE_LO_PATH
check-local:
+ $(CLEANUP_COMMAND)
./fakesockettest
@fc-cache "@LO_PATH@"/share/fonts/truetype
@@ -228,71 +231,57 @@ TESTS = \
# Start forced grouping of tests using stamp files
-# unit-base.log
-unit-tiletest.log : unit-base.log
-unit-integration.log : unit-base.log
-unit-httpws.log : unit-base.log
-unit-crash.log : unit-base.log
-
-group1.log: unit-httpws.log unit-crash.log unit-tiletest.log unit-integration.log
- touch $@
-
-unit-typing.log : group1.log
-unit-convert.log : group1.log
-unit-tilecache.log : group1.log
-unit-timeout.log : group1.log
-
-group1a.log: unit-typing.log unit-convert.log unit-tilecache.log unit-timeout.log
- touch $@
-
# isolate this one - it's not a happy test.
-unit-copy-paste.log : group1a.log
-
-group2.log: unit-copy-paste.log
- touch $@
-
-unit-prefork.log : group2.log
-unit-oauth.log : group2.log
-unit-wopi.log : group2.log
-unit-wopi-saveas.log : group2.log
-unit-wopi-ownertermination.log : group2.log
-unit-wopi-versionrestore.log : group2.log
-unit-wopi-documentconflict.log : group2.log
-unit_wopi_renamefile.log : group2.log
-unit_wopi_watermark.log : group2.log
-
-group3.log: unit-oauth.log unit-wopi.log unit-wopi-saveas.log unit-wopi-ownertermination.log unit-wopi-versionrestore.log unit-wopi-documentconflict.log unit_wopi_renamefile.log unit_wopi_watermark.log
+group0.log: unit-copy-paste.log
touch $@
-unit-http.log : group3.log
-unit-tiff-load.log : group3.log
-unit-large-paste.log : group3.log
-unit-paste.log : group3.log
-unit-load-torture.log : group3.log
-unit-rendering-options.log : group3.log
-unit-password-protected.log : group3.log
-unit-render-shape.log : group3.log
-unit-each-view.log : group3.log
-
-group4.log: unit-http.log unit-tiff-load.log unit-large-paste.log unit-paste.log unit-load-torture.log unit-rendering-options.log unit-password-protected.log unit-render-shape.log unit-each-view.log
+# group1.log
+unit-crash.log : group0.log
+unit-tiletest.log : group0.log
+unit-insert-delete.log : group0.log
+unit-each-view.log : group0.log
+unit-httpws.log : group0.log
+unit-close.log : group0.log
+unit-wopi-documentconflict.log : group0.log
+unit-prefork.log : group0.log
+unit-wopi-versionrestore.log : group0.log
+unit-wopi-temp.log : group0.log
+unit_wopi_renamefile.log : group0.log
+unit_wopi_watermark.log : group0.log
+unit-wopi.log : group0.log
+unit-wopi-ownertermination.log : group0.log
+unit-load-torture.log : group0.log
+
+unit-wopi-saveas.log : group0.log
+unit-password-protected.log : group0.log
+unit-http.log : group0.log
+unit-tiff-load.log : group0.log
+unit-render-shape.log : group0.log
+unit-oauth.log : group0.log
+unit-large-paste.log : group0.log
+unit-paste.log : group0.log
+unit-rendering-options.log : group0.log
+
+unit-session.log : group0.log
+unit-uno-command.log : group0.log
+unit-load.log : group0.log
+unit-cursor.log : group0.log
+unit-calc.log : group0.log
+unit-bad-doc-load.log : group0.log
+unit-hosting.log : group0.log
+unit-wopi-loadencoded.log : group0.log
+
+unit-integration.log : group0.log
+unit-convert.log : group0.log
+unit-typing.log : group0.log
+unit-tilecache.log : group0.log
+unit-timeout.log : group0.log
+unit-base.log: group0.log
+
+group1.log: unit-crash.log unit-tiletest.log unit-insert-delete.log unit-each-view.log unit-httpws.log unit-close.log unit-wopi-documentconflict.log unit-prefork.log unit-wopi-versionrestore.log unit-wopi-temp.log unit_wopi_renamefile.log unit_wopi_watermark.log unit-wopi.log unit-wopi-ownertermination.log unit-load-torture.log unit-wopi-saveas.log unit-password-protected.log unit-http.log unit-tiff-load.log unit-render-shape.log unit-oauth.log unit-large-paste.log unit-paste.log unit-rendering-options.log unit-session.log unit-uno-command.log unit-load.log unit-cursor.log unit-calc.log unit-bad-doc-load.log unit-hosting.log unit-wopi-loadencoded.log unit-integration.log unit-convert.log unit-typing.log unit-tilecache.log unit-timeout.log unit-base.log
+ $(CLEANUP_COMMAND)
touch $@
-unit-session.log : group4.log
-unit-uno-command.log : group4.log
-unit-load.log : group4.log
-unit-cursor.log : group4.log
-unit-calc.log : group4.log
-unit-insert-delete.log : group4.log
-
-group5.log: unit-session.log unit-uno-command.log unit-load.log unit-cursor.log unit-calc.log unit-insert-delete.log
- touch $@
-
-unit-close.log : group5.log
-unit-bad-doc-load.log : group5.log
-unit-hosting.log : group5.log
-unit-wopi-loadencoded.log : group5.log
-unit-wopi-temp.log : group5.log
-
# end forced grouping
endif
diff --git a/test/run_unit.sh.in b/test/run_unit.sh.in
index 6fbfc15e7..4b893f23c 100755
--- a/test/run_unit.sh.in
+++ b/test/run_unit.sh.in
@@ -74,7 +74,6 @@ echo "Running $tst | $tst_log ...";
if ${trace} \
${abs_top_builddir}/loolwsd --o:sys_template_path="$systemplate_path" \
--o:child_root_path="$jails_path" \
- --o:mount_jail_tree=false \
--o:storage.filesystem[@allow]=true \
--o:logging.level=trace \
--o:ssl.key_file_path="${abs_top_builddir}/etc/key.pem" \
@@ -91,7 +90,6 @@ else
echo "Test failed on unit: $tst re-run with:"
echo " $ gdb --args ${abs_top_builddir}/loolwsd --o:sys_template_path=\"$systemplate_path\" \\"
echo " --o:child_root_path=\"$jails_path\" \\"
- echo " --o:mount_jail_tree=false \\"
echo " --o:storage.filesystem[@allow]=true \\"
echo " --o:storage.ssl.enable=false \\"
echo " --o:logging.level=trace \\"
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 7b99e16f4..6b1900443 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -731,6 +731,7 @@ std::string LOOLWSD::LogLevel = "trace";
std::string LOOLWSD::UserInterface = "classic";
bool LOOLWSD::AnonymizeUserData = false;
bool LOOLWSD::CheckLoolUser = true;
+bool LOOLWSD::CleanupOnly = false; //< If we should cleanup and exit.
bool LOOLWSD::IsProxyPrefixEnabled = false;
#if ENABLE_SSL
Util::RuntimeConstant<bool> LOOLWSD::SSLEnabled;
@@ -1188,6 +1189,13 @@ void LOOLWSD::initialize(Application& self)
}
else
{
+ if (CleanupOnly)
+ {
+ // Cleanup and exit.
+ JailUtil::cleanupJails(ChildRoot);
+ std::exit(EX_OK);
+ }
+
if (ChildRoot[ChildRoot.size() - 1] != '/')
ChildRoot += '/';
@@ -1475,7 +1483,7 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
.required(false)
.repeatable(false));
- optionSet.addOption(Option("version-hash", "", "Display product version-hash information.")
+ optionSet.addOption(Option("version-hash", "", "Display product version-hash information and exit.")
.required(false)
.repeatable(false));
@@ -1483,6 +1491,10 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
.required(false)
.repeatable(false));
+ optionSet.addOption(Option("cleanup", "", "Cleanup jails and other temporary data and exit.")
+ .required(false)
+ .repeatable(false));
+
optionSet.addOption(Option("port", "", "Port number to listen to (default: " +
std::to_string(DEFAULT_CLIENT_PORT_NUMBER) + "),")
.required(false)
@@ -1565,6 +1577,8 @@ void LOOLWSD::handleOption(const std::string& optionName,
}
else if (optionName == "version")
DisplayVersion = true;
+ else if (optionName == "cleanup")
+ CleanupOnly = true; // Flag for later as we need the config.
else if (optionName == "port")
ClientPortNumber = std::stoi(value);
else if (optionName == "disable-ssl")
diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp
index bbc6bc430..654546d30 100644
--- a/wsd/LOOLWSD.hpp
+++ b/wsd/LOOLWSD.hpp
@@ -245,6 +245,7 @@ public:
static std::string LogLevel;
static bool AnonymizeUserData;
static bool CheckLoolUser;
+ static bool CleanupOnly;
static bool IsProxyPrefixEnabled;
static std::atomic<unsigned> NumConnections;
static std::unique_ptr<TraceFileWriter> TraceDumper;
More information about the Libreoffice-commits
mailing list