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

From EjudgeWiki

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

Полностью переработана поддержка компиляторов и интерпретаторов языков программирования. Определение и настройка поддерживаемых компиляторов и интерпретаторов исключена из скрипта configure и перенесена в программу начальной настройки ejudge-setup. Для конфигурирования языков программирования после установки предназначена новая программа ejudge-configure-compilers.

Упрощено добавление новых (не поддерживаемых в стандартной конфигурации) языков программирования. Теперь достаточно написать два скрипта: LANG-version.in для настройки и LANG.in для работы. Параметры настройки для языков программирования хранятся отдельно в файле LANG.cfg в каталоге файлов конфигурации языков программирования (см. ниже).

"Заготовки" для скриптов настройки и компиляции LANG-version.in и LANG.in теперь не обрабатываются скриптом configure, а инсталлируются в каталог PREFIX/libexec/ejudge/lang/in. Они обрабатываются (в них выполняются некоторые текстовые подстановки) и копируются в каталог PREFIX/libexec/ejudge/lang при работе программ ejudge-setup или ejudge-configure-compilers.

Добавлена поддержка для языков программирования PHP и Ruby.

compile

Поддерживается новая глобальная конфигурационная переменная `lang_config_dir' файла compile.cfg. Эта переменная позволяет указать путь к каталогу, в котором хранятся конфигурационные файлы языков программирования. Если переменная установлена, программа compile работает в новом режиме конфигурации.

Новый режим конфигурации означает, что наличие или отсутствие того или иного компилятора определяется не по наличию или отсутствию соответствующей секции [language] в файле compile.cfg, а по конфигурационному файлу LANG.cfg соответствующего компилятора или интерпретатора. В частности, если переменная `version' конфигурационного файла компилятора не пуста, компилятор или интерпретатор может быть использован.

В новом режиме конфигурации файл compile.cfg содержит секции описания для всех компиляторов или интерпретаторов, конфигурационные скрипты которых (LANG-version.in) были обнаружены в каталоге конфигурационных скриптов. Файл compile.cfg перегенерируется при каждом запуске ejudge-configure-compilers, поэтому не должен редактироваться вручную.

configure

Добавлена опция --enable-lang-config-dir=DIR, позволяющая настраивать путь к каталогу файлов конфигурации языков программирования. По умолчанию этот путь равен CONTESTS-HOME/compile/conf/lang.d, где CONTESTS-HOME - это корневой каталог турниров (/home/judges по умолчанию). Этот каталог создаётся и заполняется файлами конфигурации при начальной настройке системы с помощью ejudge-setup, и при обновлении конфигурации с помощью ejudge-configure-compilers.

Опции --with-gcc, --with-gpp и т. д. помечены "устаревшими", попытка их использования вызывает завершение configure со следующим сообщением об ошибке:

ERROR:
The configure script now does not configure programming language
compilers. Options like --with-gcc are no longer supported.
To configure programming language compilers please use ejudge-setup
or ejudge-configure-compilers programs.

Для указания нестандартных путей к компиляторам и интерпретаторам необходимо использовать программы ejudge-setup или ejudge-configure-compilers.

В глобальный конфигурационный файл ejudge.xml добавлен атрибут "disable_cookie_ip_check" элемента <config>. Если этот атрибут установлен в значение "истина" (например, disable_cookie_ip_check="yes"), то при проверке сессионного ключа не будет проверяться IP-адрес, с которого идёт данное обращение, на соответствие IP-адресу, использованному при создании сессионного ключа. Включение этого режима существенно понижает безопасность, но может помочь, когда клиентские компьютеры подключаются к Интернету через корпоративные балансировщики нагрузки.

ejudge-configure-compilers

Новая программа, предназначенная для обновления конфигурации языков программирования. Программа может работать в пакетном и визуальном режиме.

В пакетном режиме ее работа аналогична работе скрипта configure. Диагностический вывод идет на стандартный поток ошибок, вмешательства пользователя не требуется. Нестандартные значения настроек указываются с помощью опций командной строки. Пакетный режим активируется указанием опции --batch командной строки.

В визуальном режиме для редактирования настроек предоставляется визуальный интерфейс текстового режима, аналогичный интерфейсу программы ejudge-setup.

В результате работы программы могут быть обновлены файлы конфигурации языков программирования LANG.cfg, а так же файл конфигурации сервера компиляции compile.cfg.

Программа поддерживает все опции настройки языков программирования, которые до этого были реализованы в скрипте configure, например, --with-gcc=PATH, и еще несколько дополнительных опций. Для вывода полного списка опций командной строки можно использовать команду ejudge-configure-compilers --help

Полная документация по программе ejudge-configure-compilers будет размещена в Wiki-разделе сайта.

ejudge-setup

Добавлен новый пункт меню "Setup compilers", который позволяет выполнить начальное конфигурирование языков программирования.

Обновлен тестовый турнир. В него добавлены решения для новых поддерживаемых языков программирования: C#, Visual Basic .NET, PHP, Ruby.

new-server

В именах команд поддерживаются произвольные символы (в том числе, кавычки, апострофы, амперсенты и т. д.).

Исправлены проблемы с переключением на русский язык отображения страниц в некоторых дистрибутивах Linux (в частности Ubuntu).

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

Для языков программирования добавлен флаг "insecure". Установка флага означает, что данный язык программирования по тем или иным причинам не может использоваться в безопасном режиме проведения турнира (задаваемым конфигурационной переменной secure_run), например, язык не поддерживает необходимое ограничение прав работающей программы, или же в ограниченном окружении программа на этом языке неработоспособна. Если в разделе описания языка программирования конфигурационного файла serve.cfg этот флаг установлен в 1, этот язык автоматически запрещается для использования непривилегированными пользователями при работе турнира в безопасном режиме.

Для языка LANG флаг небезопастности изначально устанавливается в конфирурационном файле LANG.cfg языка программирования скриптом конфигурации LANG-version, затем копируется в конфигурационный файл сервера компиляции compiler.cfg при работе программы ejudge-configure-compilers, оттуда копируется в конфигурационный файл турнира при редактировании настроек турнира с помощью serve-control.

При отображении условий из XML-файла задачи автоматически добавляется информация об именах входного и выходного файла, ограничении времени и ограничении памяти.

run

Программа run не завершается по ошибке, если в конфигурационном файле турнира нет задач, подлежащих автоматическому тестированию.

serve-control

При создании новых турниров с нуля режим сохранения полного архива вывода программы `enable_full_archive' теперь отключен, а режим навигации по задачам с помощью закладок (`problem_navigation') включен.

Корректно поддерживается непустое значение CGI_PROG_SUFFIX.

userlist-server

Поддерживается атрибут "disable_cookie_ip_check" конфигурационного файла ejudge.xml. Если он установлен, при проверке сессионного ключа не требуется совпадение IP-адресов.