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 %}
{{ 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)