From 1e96c76421621dc58d1af1ae8a4e3693ad5516ff Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 3 Aug 2025 17:35:36 +0200 Subject: [PATCH 1/2] Don't display output if the key isn't set Catched while investigating a broken judgedaemon config. --- webapp/templates/jury/submission.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/templates/jury/submission.html.twig b/webapp/templates/jury/submission.html.twig index 7da1dda839..2ea923714a 100644 --- a/webapp/templates/jury/submission.html.twig +++ b/webapp/templates/jury/submission.html.twig @@ -727,7 +727,7 @@ show complete metadata {% if runsOutput[runIdx].metadata is not null %} - {% if runsOutput[runIdx].output_limit %} + {% if runsOutput[runIdx].output_limit is defined %}
The submission output ({{ runsOutput[runIdx].output_limit }}) was truncated because of the configured output limit. From c16f60f9a81cae9e40734e19ed0226352889c965 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 4 Aug 2025 08:10:10 +0200 Subject: [PATCH 2/2] Configure judgedaemon for inplace-installs Normalliy we symlink but this is not adviced as files under sudoers.d should be owned by root. We could chown this file to root but that would break the Recursing target `distclean' into: etc doc lib sql judge misc-tools webapp make[1]: Entering directory '/srv/domjudge/etc' rm -f dbpasswords.secret restapi.secret symfony_app.secret initial_admin_password.secret make[2]: Entering directory '/srv/domjudge/etc' rm -f apache.conf nginx-conf nginx-conf-inner domjudge-fpm.conf domserver-static.php judgehost-static.php runguard-config.h sudoers-domjudge config.h make[2]: Leaving directory '/srv/domjudge/etc' make[1]: Leaving directory '/srv/domjudge/etc' make[1]: Entering directory '/srv/domjudge/doc' Recursing target `distclean' into: manual examples make[2]: Entering directory '/srv/domjudge/doc/manual' make[3]: Entering directory '/srv/domjudge/doc/manual' rm -rf build/doctrees build/team/.doctrees make -C build/team clean make[4]: Entering directory '/srv/domjudge/doc/manual/build/team' rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz domjudge-team-manual.pdf DOMjudge.pdf domjudge-team-manual.dvi DOMjudge.dvi *.fls *.fdb_latexmk make[4]: Leaving directory '/srv/domjudge/doc/manual/build/team' rm -f version.py substitutions.py html team make[3]: Leaving directory '/srv/domjudge/doc/manual' make[2]: Leaving directory '/srv/domjudge/doc/manual' make[2]: Entering directory '/srv/domjudge/doc/examples' make[3]: Entering directory '/srv/domjudge/doc/examples' rm -f hello.aux fltcmp.aux boolfind.aux hello.log fltcmp.log boolfind.log make[3]: Leaving directory '/srv/domjudge/doc/examples' make[2]: Leaving directory '/srv/domjudge/doc/examples' make[2]: Entering directory '/srv/domjudge/doc' make[2]: Nothing to be done for 'distclean-l'. make[2]: Leaving directory '/srv/domjudge/doc' make[1]: Leaving directory '/srv/domjudge/doc' make[1]: Entering directory '/srv/domjudge/lib' make[2]: Entering directory '/srv/domjudge/lib' rm -f lib.error.o lib.misc.o make[2]: Leaving directory '/srv/domjudge/lib' make[1]: Leaving directory '/srv/domjudge/lib' make[1]: Entering directory '/srv/domjudge/sql' make[2]: Entering directory '/srv/domjudge/sql' rm -f dj_setup_database rm -f files/defaultdata/compare/run \ files/defaultdata/java_javac_detect/DetectMain.class \ files/defaultdata/kt/DetectMain.class make[2]: Leaving directory '/srv/domjudge/sql' make[1]: Leaving directory '/srv/domjudge/sql' make[1]: Entering directory '/srv/domjudge/judge' make[2]: Entering directory '/srv/domjudge/judge' rm -f runguard runpipe evict runguard.o runpipe.o evict.o rm -f judgedaemon chroot-startstop.sh create_cgroups create-cgroups.service domjudge-judgedaemon@.service make[2]: Leaving directory '/srv/domjudge/judge' make[1]: Leaving directory '/srv/domjudge/judge' make[1]: Entering directory '/srv/domjudge/misc-tools' make[2]: Entering directory '/srv/domjudge/misc-tools' rm -f rm -f fix_permissions configure-domjudge import-contest force-passwords dj_make_chroot dj_run_chroot dj_make_chroot_docker dj_judgehost_cleanup make[2]: Leaving directory '/srv/domjudge/misc-tools' make[1]: Leaving directory '/srv/domjudge/misc-tools' make[1]: Entering directory '/srv/domjudge/webapp' Recursing target `distclean' into: config make[2]: Entering directory '/srv/domjudge/webapp/config' make[3]: Entering directory '/srv/domjudge/webapp/config' rm -f rm -f autoload.php static.yaml make[3]: Leaving directory '/srv/domjudge/webapp/config' make[2]: Leaving directory '/srv/domjudge/webapp/config' make[2]: Entering directory '/srv/domjudge/webapp' rm -rf public/bundles/nelmioapidoc rm -f vendor/autoload_runtime.php make[2]: Leaving directory '/srv/domjudge/webapp' make[1]: Leaving directory '/srv/domjudge/webapp' make[1]: Entering directory '/srv/domjudge' rm -rf config.status config.cache config.log autom4te.cache rm -rf cov-int domjudge-scan.t* coverity-scan.tar.xz cov-submit-data-version.sh rm -f paths.mk make[1]: Leaving directory '/srv/domjudge'. --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index fcfd998979..bc1d494aa8 100644 --- a/Makefile +++ b/Makefile @@ -238,6 +238,8 @@ inplace-install-l: @echo " sudo make inplace-postinstall-apache" @echo " - Configure nginx" @echo " sudo make inplace-postinstall-nginx" + @echo " - Configure judgedaemon + @echo " sudo make inplace-postinstall-judgedaemon" @echo " - Set up database" @echo " ./sql/dj_setup_database -u root [-r|-p ROOT_PASS] install" @echo "" @@ -291,6 +293,11 @@ inplace-postinstall-nginx: inplace-postinstall-permissions systemctl restart nginx systemctl restart php$(PHPVERSION)-fpm +inplace-postinstall-judgedaemon: + cp $(CURDIR)/etc/sudoers-domjudge /etc/sudoers.d/domjudge + chown root:root /etc/sudoers.d/domjudge + chmod 0600 /etc/sudoers.d/domjudge + # Removes created symlinks; generated logs, submissions, etc. remain in output subdir. inplace-uninstall-l: rm -rf $(judgehost_libjudgedir)