Difference between revisions of "Улучшенная поддержка серверов компиляции"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Улучшенная поддержка серве...") |
(...) |
||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Улучшенная поддержка серверов компиляции]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Улучшенная поддержка серверов компиляции]] | ||
− | + | В версии [[Изменения в версии 3.13.0|3.13.0]] поддерживается | |
+ | улучшенный механизм взаимодействия сервера турнира [[ej-contests]] | ||
+ | и серверов компиляции [[e-compile]]. | ||
+ | |||
+ | Главным недостатком "старой" модели поддержки языков программирования было то, что | ||
+ | конфигурации языков программирования в турнире были несинхронизированы с конфигурацией | ||
+ | языков программирования в используемом сервере компиляции [[ej-compile]]. | ||
+ | |||
+ | * При обновлении версий языков программирования информация о версиях не обновляется в конфигурационных файлах турниров. | ||
+ | * Конфигурации языков программирования нужно копировать в каждый турнир. | ||
+ | * При переключении на другой сервер компиляции информация о языках программирования не синхронизируется. | ||
+ | |||
+ | Новый механизм взаимодействия сервера турнира и сервера компиляции доступен, если при конфигурировании ejudge | ||
+ | с помощью <code>configure</code> была указана опция <code>--enable-compile-spool-dir</code>, | ||
+ | доступная с версии [[Изменения в версии 3.8.0|3.8.0]]. Новый механизм не включается автоматически, | ||
+ | он должен быть активирован вручную для каждого турнира. Для его активации нужно | ||
+ | на странице списка турниров в serve-control перейти к редактированию настроек (Settings), | ||
+ | перейти на вкладку Language Settings и в строке "Compilation server integration DISABLED" нажать кнопку "Enable". | ||
+ | Затем потребуется выполнить операцию "COMMIT changes!", и после этого снова открыть экран настроек | ||
+ | языков программирования при редактировании турнира. Новый экран настроек языков | ||
+ | программирования сильно отличается от старого. Изменение сервера компиляции по умолчанию в турнире | ||
+ | тоже потребует сохранения настроек турнира с помощью "COMMIT changes!". | ||
+ | |||
+ | Новая страница редактирования настроек языков программирования позволяет выбирать сервер компиляции | ||
+ | для турнира, если доступно несколько серверов компиляции. Каждый язык программирования может | ||
+ | активироваться и деактивироваться. | ||
+ | |||
+ | ==== Настройка доступных языков программирования в турнире ==== | ||
+ | |||
+ | Новый механизм взаимодействия сервера турнира с сервером компиляции включается, если | ||
+ | установлен в положительное значение глобальный конфигурационный параметр | ||
+ | <code>[[Serve.cfg:global:enable_language_import|enable_language_import]]</code>, например так: | ||
+ | |||
+ | enable_language_import | ||
+ | |||
+ | Если в качестве основного сервера компиляции используется не сервер по умолчанию, его имя | ||
+ | указывается в глобальном конфигурационном параметре | ||
+ | <code>[[Serve.cfg:global:compile_server_id|compile_server_id]]</code>, например так: | ||
+ | |||
+ | compile_server_id = "fast" | ||
+ | |||
+ | Сервер компиляции [[ej-compile]] при старте сохраняет актуальную конфигурацию поддерживаемых | ||
+ | языков в каталог, задаваемый опцией <code>--enable-compile-spool-dir</code>. Таким образом | ||
+ | актуальная конфигурация становится доступной серверу турниров [[ej-contests]]. Сервер турниров | ||
+ | загружает актуальную конфигурацию языков программирования из файла и объединяет с локальными | ||
+ | конфигурационными секциями языков программирования. Локальные конфигурационные секции | ||
+ | могут модифицировать конфигурацию языков от сервера компиляции. | ||
+ | |||
+ | Список разрешенных языков программирования для турнира можно задать с помощью | ||
+ | глобального конфигурационного параметра | ||
+ | <code>[[Serve.cfg:global:language_import|language_import]]</code>. | ||
+ | |||
+ | Например, конфигурация | ||
+ | |||
+ | enable_language_import | ||
+ | language_import = "enable all" | ||
+ | |||
+ | включает все языки программирования, поддерживаемые сервером компиляции, кроме языков, | ||
+ | явно помеченных <code>[[Serve.cfg:language:default_disabled|default_disabled]]</code>. | ||
+ | В текущей версии к ним относятся языки [[Lang:postgres|postgres]] и [[Lang:custom|custom]]. | ||
+ | |||
+ | Выборочно запретить некоторые языки программирования можно следующим образом: | ||
+ | |||
+ | enable_language_import | ||
+ | language_import = "enable all" | ||
+ | language_import = "disable python,vbnc" | ||
+ | |||
+ | Возможна конфигурация языков с разрешением избранных языков и запретом всех остальных: | ||
+ | |||
+ | enable_language_import | ||
+ | language_import = "disable all" | ||
+ | language_import = "enable g++,clang++" | ||
+ | |||
+ | Кроме того, можно изменить конфигурацию языка программирования с помощью явной секции: | ||
+ | |||
+ | enable_language_import | ||
+ | language_import = "disable all" | ||
+ | |||
+ | [language] | ||
+ | short_name = "g++" | ||
+ | compiler_env = "EJUDGE_FLAGS=-O2 -Wall -std=gnu++23" | ||
+ | |||
+ | У секции модификации конфигурации языка должен быть задан параметр | ||
+ | <code>[[Serve.cfg:language:short_name|short_name]]</code> | ||
+ | и не должен быть задан параметр | ||
+ | <code>[[Serve.cfg:language:id|id]]</code>. | ||
+ | Если для языка заданы дополнительные настройки с помощью секции <code>[language]</code>, | ||
+ | такой язык активируется по умолчанию. Его можно не указывать в <code>language_import</code>. |
Latest revision as of 21:03, 9 December 2024
Навигация: Главная страница/Система ejudge/Использование/Улучшенная поддержка серверов компиляции
В версии 3.13.0 поддерживается улучшенный механизм взаимодействия сервера турнира ej-contests и серверов компиляции e-compile.
Главным недостатком "старой" модели поддержки языков программирования было то, что конфигурации языков программирования в турнире были несинхронизированы с конфигурацией языков программирования в используемом сервере компиляции ej-compile.
- При обновлении версий языков программирования информация о версиях не обновляется в конфигурационных файлах турниров.
- Конфигурации языков программирования нужно копировать в каждый турнир.
- При переключении на другой сервер компиляции информация о языках программирования не синхронизируется.
Новый механизм взаимодействия сервера турнира и сервера компиляции доступен, если при конфигурировании ejudge
с помощью configure
была указана опция --enable-compile-spool-dir
,
доступная с версии 3.8.0. Новый механизм не включается автоматически,
он должен быть активирован вручную для каждого турнира. Для его активации нужно
на странице списка турниров в serve-control перейти к редактированию настроек (Settings),
перейти на вкладку Language Settings и в строке "Compilation server integration DISABLED" нажать кнопку "Enable".
Затем потребуется выполнить операцию "COMMIT changes!", и после этого снова открыть экран настроек
языков программирования при редактировании турнира. Новый экран настроек языков
программирования сильно отличается от старого. Изменение сервера компиляции по умолчанию в турнире
тоже потребует сохранения настроек турнира с помощью "COMMIT changes!".
Новая страница редактирования настроек языков программирования позволяет выбирать сервер компиляции для турнира, если доступно несколько серверов компиляции. Каждый язык программирования может активироваться и деактивироваться.
Настройка доступных языков программирования в турнире
Новый механизм взаимодействия сервера турнира с сервером компиляции включается, если
установлен в положительное значение глобальный конфигурационный параметр
enable_language_import
, например так:
enable_language_import
Если в качестве основного сервера компиляции используется не сервер по умолчанию, его имя
указывается в глобальном конфигурационном параметре
compile_server_id
, например так:
compile_server_id = "fast"
Сервер компиляции ej-compile при старте сохраняет актуальную конфигурацию поддерживаемых
языков в каталог, задаваемый опцией --enable-compile-spool-dir
. Таким образом
актуальная конфигурация становится доступной серверу турниров ej-contests. Сервер турниров
загружает актуальную конфигурацию языков программирования из файла и объединяет с локальными
конфигурационными секциями языков программирования. Локальные конфигурационные секции
могут модифицировать конфигурацию языков от сервера компиляции.
Список разрешенных языков программирования для турнира можно задать с помощью
глобального конфигурационного параметра
language_import
.
Например, конфигурация
enable_language_import language_import = "enable all"
включает все языки программирования, поддерживаемые сервером компиляции, кроме языков,
явно помеченных default_disabled
.
В текущей версии к ним относятся языки postgres и custom.
Выборочно запретить некоторые языки программирования можно следующим образом:
enable_language_import language_import = "enable all" language_import = "disable python,vbnc"
Возможна конфигурация языков с разрешением избранных языков и запретом всех остальных:
enable_language_import language_import = "disable all" language_import = "enable g++,clang++"
Кроме того, можно изменить конфигурацию языка программирования с помощью явной секции:
enable_language_import language_import = "disable all"
[language] short_name = "g++" compiler_env = "EJUDGE_FLAGS=-O2 -Wall -std=gnu++23"
У секции модификации конфигурации языка должен быть задан параметр
short_name
и не должен быть задан параметр
id
.
Если для языка заданы дополнительные настройки с помощью секции [language]
,
такой язык активируется по умолчанию. Его можно не указывать в language_import
.