# Configuration file for the MO Evaluator
-# (c) 2001--2004 Martin Mares <mj@ucw.cz>
+# (c) 2001--2008 Martin Mares <mj@ucw.cz>
# The root of the whole directory hierarchy
-MO_ROOT=/aux/mo
+MO_ROOT=/mo
# User and group used by the evaluator itself
EVAL_USER=mo-eval
# with EVAL_USER privileges, but beware, this is INSECURE.
#TEST_USER=${TEST_USER:-mo-test1}
TEST_USERS="mo-test1 mo-test2"
+TEST_GROUP=mo-test
-# These values are used when creating logins for eval and contestanst.
+# These values are used when creating logins for eval and contestants
+# (group id's are from the same range)
EVAL_UID_MIN=65000
CT_UID_MIN=65100
CT_UID_MAX=65199
# or (if undefined) scans /etc/passwd for users with UID between CT_UID_MIN and CT_UID_MAX.
CT_USER_LIST=userlist
-### Per-task configuration variables (default values, override in per-task config)
+# (optional) Use remote submitting
+REMOTE_SUBMIT=1
+REMOTE_SUBMIT_USER=mo-submit
+REMOTE_SUBMIT_GROUP=mo-submit
-## Compiler settings:
+### Programming language settings
# Known source file extensions
-EXTENSIONS="c C cpp p pas"
-
-# Extra compiler flags for C (null, but can be overriden)
-EXTRA_CFLAGS=
+EXTENSIONS="c cc C cpp p pas"
-# Extra compiler flags for Pascal
-EXTRA_PFLAGS=
+## Variables which control compilation and execution
+## (see below for values for individual languages)
-# For each source extension, we must give compiler command
-COMP_c='/usr/bin/gcc -O2 -g -o $EXE $EXTRA_CFLAGS $SRC'
-COMP_C='/usr/bin/g++ -O2 -g -o $EXE $EXTRA_CFLAGS $SRC'
-COMP_cpp="$COMP_C"
-COMP_p='/usr/bin/fpc -Ci -Cr -g -O2 -So -Sg -o$EXE $EXTRA_PFLAGS $SRC'
-COMP_pas="$COMP_p"
+# Command used to run the compiler
+COMP=false
# Sandbox options used when compiling
-COMP_SANDBOX_OPTS='-m65536 -t60 -w -e -i/dev/null'
+COMP_SANDBOX_OPTS='-m262144 -w60 -e -i/dev/null'
-# Sandbox initializaton commands for compilation
+# Sandbox initialization commands for compilation
COMP_SANDBOX_INIT=
+## Settings for individual languages
+
+# C
+EXT_c_COMP='/usr/bin/gcc -std=gnu99 -O2 -g -o $EXE $EXTRA_CFLAGS $SRC -lm'
+EXTRA_CFLAGS=
+
+# C++
+EXT_C_COMP='/usr/bin/g++ -O2 -g -o $EXE $EXTRA_CXXFLAGS $SRC -lm'
+EXT_cpp_COMP="$EXT_C_COMP"
+EXT_cc_COMP="$EXT_C_COMP"
+EXTRA_CXXFLAGS=
+
+# Pascal
+EXT_p_COMP='/usr/bin/fpc -Ci -Cr -Ct -g -O2 -Sg -o$EXE $EXTRA_PFLAGS $SRC'
+EXT_pas_COMP="$EXT_p_COMP"
+EXTRA_PFLAGS=
+
+# Translate FreePascal exit codes to names of well-known runtime errors
+FREE_PASCAL_RTE=1
+
+### Per-task configuration variables (default values, override in per-task config)
+
# List of extra files needed for compilation. They are copied to the compiler
# sandbox from the problem's directory.
#COMP_EXTRAS="extras.h"
# Number of points per test
POINTS_PER_TEST=1
-# Time limit in seconds
+# Time limit in seconds (can be fractional, but beware of noise)
TIME_LIMIT=10
# Memory limit in kilobytes
MEM_LIMIT=16384
+# Command used for filtering of program output (optional)
+# If turned on, program output (*.raw) is ran through this filter and the
+# checkers are applied to the output of the filter (*.out).
+# Can exit with code 1 if there is a syntax error in the output.
+#OUTPUT_FILTER='tr -d '\''\r'\'' <$TDIR/$TEST.raw >$TDIR/$TEST.out'
+
# Command used to check output syntax (optional)
# Returns exit code 1 if syntax is wrong, 0 if correct
# fd1 is connect to evaluator log, feel free to log anything
# Checker for interactive tasks
# Returns exit code 1 if test failed, 0 if passed
-# fd1 is connect to evaluator log, feel free to log anything
+# fd0 and fd1 are connected to fd1 and fd0 of the program tested
# fd2 is an optional one-line verdict
# The checker can generate $TDIR/$TEST.pts to assign points irregularly
#IC_CHECK='$PDIR/checker $PDIR/$TEST.in $PDIR/$TEST.chk'
# Sandbox options used when testing
-TEST_SANDBOX_OPTS='-a2 -f -m$MEM_LIMIT -t$TIME_LIMIT'
-# -w for wall clock measuring
+TEST_SANDBOX_OPTS='-a2 -f -m$MEM_LIMIT -t$TIME_LIMIT $BOX_EXTRAS'
+
+# Extra options to be overridden in task configuration
+BOX_EXTRAS=
# Sandbox initialization commands
SANDBOX_INIT=
+
+### Debugging and testing
+
+# DEBUG: Let `ev' run sample tests, too.
+#EV_SAMPLE=1
+
+# DEBUG: Run `pedant' on all input data. Set either to `1' or to pedant's options.
+#EV_PEDANT=1
+
+# DEBUG: Skip checks (useful when generating output files by running model solution)
+#EV_NOCHECK=1
+
+# DEBUG: Skip output filters (if you suspect they are buggy)
+#EV_NOFILTER=1
+
+### Variables overrides (most variables can be overridden for specific tests or source extensions):
+
+#EXT_pas_TIME_LIMIT=100
+#TEST_1_TIME_LIMIT=100
+#EXT_pas_TEST_1_TIME_LIMIT=100