Изменения в версии 2.3.6

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.6

В основном исправления замеченных ошибок. Внесен ряд усовершенствований для облегчения распараллеливания проверки на несколько компьютеров.

Изменена структура каталогов системы. Теперь файлы и каталоги, которые должны быть локальными для каждого проверяющего компьютера, размещаются в /var/lib/ejudge. В /home/ejudge (или в другом каталоге, задаваемом с помощью опции --enable-contests-home-dir) оставлены каталоги, которые должны быть общими для всех проверяющих компьютеров или могут безопасно разделяться ими. Для совместимости с предыдущими версиями по умолчанию сохраняется старое поведение. Чтобы активировать новое поведение необходимо использовать опцию --enable-local-dir скрипта configure.

При компиляции системы по умолчанию не используется флаг gcc -Werror. Чтобы включить флаг -Werror используйте опцию скрипта configure --enable-werror.

Исправлены ошибки компиляции, возникавшие, если в командной строке configure не была задана опция --enable-charset.

Программы запуска dos-компиляторов (bppemu, и др.) предполагают, что dosemu размещается в каталоге, задаваемом опцией --enable-local-dir.

configure

Новая опция --enable-local-dir=DIR, которая позволяет задавать путь к каталогу локальных (не разделяемых) файлов. Рекомендуемое значение этой опции - /var/lib/ejudge. Если опция указана, то в этом каталоге размещаются:

  • образ локального диска work-img для ограничения дискового пространства проверяемых программ;
  • каталог work-dir, в который монтируется образ дискового пространства;
  • рабочий каталог compile/work программы compile, в котором программа размещает компилируемую программу и запускает компилятор;
  • рабочий каталог <CONTEST_NUM>/work, в котором размещаются рабочие файлы при тестировании посылки заданного турнира.

Таким образом, если используется опция --enable-local-dir, то каталог /home/judges (или тот каталог, который задан в опции --enable-contests-home-dir) может безопасно монтироваться с клиентских компьютеров по NFS.

Новая опция --enable-werror. Если она указана, то при компиляции ejudge включается флаг -Werror. Рекомендуется только для разработчиков.

ejudge-control

Добавлены два режима работы: slave и master. В режиме работы slave запускаются только программы compile и super-serve, которая сама запускается в режиме slave, то есть не принимает и обрабатывает управляющие запросы (например, редактирование турниров и пр.). В режиме работы master запускаются все программы, кроме compile. Программа super-serve запускается в master-режиме, то есть тестирование турниров не обслуживается, но обслуживаются управляющие запросы.

Режим работы master может использоваться на главном компьютере, который обрабатывает запросы от пользователей, но сам тестирование не выполняет. Режим работы slave может использоваться на тестирующих компьютерах. По умолчанию система запускается в автономном режиме, то есть данный компьютер как обрабатывает запросы пользователей, так и выполняет тестирование.

Сводка новых опций:

  • -s slave mode
  • -m master mode
  • -r обслуживать все контесты в slave mode (может использоваться только совместно с ключем -s) - см. #super-serve ниже

super-serve

Исправлен ряд ошибок в поддержке суффиксов CGI файлов, устанавливаемых с помощью опции --enable-cgi-suffix скрипта configure.

Уменьшен интервал проверки каталогов заданий на тестирование. Теперь в случае распределенного тестирования задержка при запуске программы тестирования не превышает 10 секунд (вместо 1 минуты).

Добавлен новый режим запуска master (задаётся ключем -m в командной строке). В этом режиме не обрабатываются запросы на тестирование в турнирах (то есть программы run не запускаются), но обрабатываются запросы пользователей (например, на редактирование турниров). Данный режим работы может использоваться на главном компьютере, который принимает запросы от пользователей, но сам тестирование не производит. См. выше описание #ejudge-control.

Добавлен новый ключ `-r' для управления тестированием всех турниров в режиме slave. Ключ `-r' может использоваться только совместно с ключем `-s'. По умолчанию в режиме slave тестирование разрешено только для тех турниров, у которых в XML-файле описания турниров явно прописано разрешение на тестировании на данном компьютере, например:

 <slave_rules>
   <run_managed_on>pc1</run_managed_on>
   <run_managed_on>pc2</run_managed_on>
 </slave_rules>

Это фрагмент XML-файла задает, что тестирование турнира разрешено в режиме slave на компьютерах pc1 и pc2. Если при старте программы super-serve в режиме slave указана опция -r, то тестирование будет разрешено для всех турниров. Опция -r может указываться и в командной строке программы #ejudge-control, см. выше. В этом случае она просто передается в super-serve.

Поддерживаются опции --version и --help.

new-server

Генерируемый HTML с текущими результатами теперь является корректным XHTML.

Исправлен ряд ошибок, из-за которых не работал new-server-cmd.

Добавлена глобальная конфигурационная переменная stand_use_login. Если она установлена в ненулевое значение, в таблице текущих результатов турнира в столбце "User" используется поле `login' пользователя, а не поле `name'.

Добавлена конфигурационная переменная `score_latest' раздела описания задачи. Если она установлена в ненулевое значение, то в турнире по системе KIROV вклад в общий результат участника будет давать последняя посылка по этой задаче, а не лучшая. Опция может использоваться, когда в турнирах по системе KIROV есть задачи, проверяемые в off-line режиме.

new-server-cmd

Добавлены новые команды управления турниром:

  • start contest
  • stop-contest
  • continue-contest
  • suspend-contest
  • resume-contest
  • suspend-printing
  • resume-printing
  • set-judging-mode
  • set-accepting-mode
  • set-testing-finished
  • clear-testing-finished
  • rejudge-all

Они соответсвуют командам, доступным через веб-интерфейс администратора турнира.

super-serve

Поддерживается редактирование новых конфигурационных переменных stand_use_login и score_latest.

ejudge-setup

Поддерживается --enable-local-dir

execute

Исправлена потенциальная ошибка компиляции (неиспользуемая переменная).