Difference between revisions of "Улучшенная поддержка серверов компиляции"

From EjudgeWiki
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Улучшенная поддержка серве...")
 
(...)
 
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Улучшенная поддержка серверов компиляции]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Улучшенная поддержка серверов компиляции]]
  
Поддерживается с версии [[Изменения в версии 3.13.0|3.13.0]].
+
В версии [[Изменения в версии 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.