Проблема с Win32-компиляцией

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Fenixoff
Posts:16
Joined:04 November 2012, 01:43
Проблема с Win32-компиляцией

Post by Fenixoff » 04 November 2012, 02:18

Доброго времени суток!
Пытаюсь настроить Win32-компиляцию. Делю все по инструкции. Методом тыка обнаружил уже, что хоть это и прописано в инструкции, но не является очевидным, что в файле win32_compile/bin/nwrun.cfg следует не просто подставить корректную букву диска в spool_dir, а еще и "j:\win32_nwrun" заменить на просто "j:". Однако после этих манипуляций и включения win32-компиляторов в настройках тестового турнира решение не тестируется, в отчете видим

Code: Select all

====== Test #1 =======
--- Input ---
1
1


--- Output ---
2

--- Stderr ---
(file is missing)
--- Checker output ---
generic_read_file(/home/judges/win32_nwrun/result/000001/out/ejudge_G0101010102/) failed
При этом на компилирующей машине имеем вот что:
Image

Image

Заранее спасибо за любые подсказки, что же я сделал не так.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Проблема с Win32-компиляцией

Post by cher » 04 November 2012, 08:33

ej-nwrun ничего больше не выводит?

Какая версия системы на сервере и пакета ejudge-win32?

Fenixoff
Posts:16
Joined:04 November 2012, 01:43

Re: Проблема с Win32-компиляцией

Post by Fenixoff » 04 November 2012, 13:39

Версия на сервере 2.3.24, пакет Win32-компиляции 2.3.20.

Весь вывод ej-nwrun на одну посылку:
Image

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Проблема с Win32-компиляцией

Post by cher » 04 November 2012, 19:17

Попробуйте последнюю версию ejudge из SVN (rev 7140) и соответствующий пакет для win32.

Fenixoff
Posts:16
Joined:04 November 2012, 01:43

Re: Проблема с Win32-компиляцией

Post by Fenixoff » 04 November 2012, 19:51

Спасибо огромнейшее! Вы спасли нашу олимпиаду :) . Теперь тестируется как следует. Видимо следует добавить в Wiki ссылку на новую версию win32-compile.
На будущее, не могли бы Вы рассказать, можно ли самостоятельно собирать пакет win32-тестирования и если да, то как?

Возникла только проблема с нормализацией: программа, отрабатывающая на windows-машине пишет в выходной файл \r\n, соответственно стандартный чекер, сравнивающий файлы побайтно выдает WA.

Кстати, в стандартной конфигурации последняя версия PascalABC.Net содержит компилятор с именем исполняемого файла pabcnetc.exe а не pabcnetcclear.exe, как это прописано в скриптах запуска, но это уже и каждый сам может поправить :).

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Проблема с Win32-компиляцией

Post by cher » 04 November 2012, 21:19

Когда будет выкладываться очередная версия, обновим и ссылку.

Сборка под MinGW стандартная: ./configure-mingw && make. В последних версиях MinGW даже появился пакетный менеджер, что делает установку дополнительных библиотек достаточно удобной.

Побайтный чекер, как правило, никогда не используется при проверке ответа. Если нужно проверять текстовые файлы общего вида, тогда можно использовать построчное сравнение файлов (cmp_file), при которой выполняется нормализация. Или вообще использовать сравнение последовательностей целых или вещественных чисел.

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: Проблема с Win32-компиляцией

Post by dk » 04 November 2012, 21:23

Fenixoff wrote:Спасибо огромнейшее! Вы спасли нашу олимпиаду :) . Теперь тестируется как следует. Видимо следует добавить в Wiki ссылку на новую версию win32-compile.
Кстати, в стандартной конфигурации последняя версия PascalABC.Net содержит компилятор с именем исполняемого файла pabcnetc.exe а не pabcnetcclear.exe, как это прописано в скриптах запуска, но это уже и каждый сам может поправить :).
pabcnetcclear.exe - более "правильный" компилятор с точки зрения ejudge - у него нет разноцветных сообщений об ошибках и нет задержки после вывода сообщения об ошибке.

К сожалению, на сайте pascalabc.net выложена старая версия 1.6 компилятора pabcnetcclear.exe, которая не работает вместе с версией 1.8. Я написал разработчикам pascalABC.NET просьбу сделать новую версию pabcnetcclear.exe, надеюсь, скоро сделают.

Fenixoff
Posts:16
Joined:04 November 2012, 01:43

Re: Проблема с Win32-компиляцией

Post by Fenixoff » 04 November 2012, 22:58

Спасибо. Насколько я понимаю, cmp_file игнорирует завершающие пробелы в строках файла, что в общем-то не очень хорошо, особенно когда речь идет о проверке задачи, ответом которой является произвольная строка.

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: Проблема с Win32-компиляцией

Post by dk » 05 November 2012, 13:05

Fenixoff wrote:Спасибо. Насколько я понимаю, cmp_file игнорирует завершающие пробелы в строках файла, что в общем-то не очень хорошо, особенно когда речь идет о проверке задачи, ответом которой является произвольная строка.
Как правило, на олимпиадах не принято давать задачи, где важны пробелы в концах строках, неужели у вас такие задачи? Поэтому как правило используется именно cmp_bytes, а не cmp_file.

vk
Posts:165
Joined:24 August 2007, 13:44
Location:Ханты-Мансийск
Contact:

Re: Проблема с Win32-компиляцией

Post by vk » 05 November 2012, 13:20

dk wrote:Поэтому как правило используется именно cmp_bytes, а не cmp_file.
Наверное наоборот, вы хотели сказать =)

П.С. На своих олимпиадах мы всегда используем либо cmp_file, либо внешние чекеры. Не припомню ни одной задачи, где что-то другое.

Fenixoff
Posts:16
Joined:04 November 2012, 01:43

Re: Проблема с Win32-компиляцией

Post by Fenixoff » 05 November 2012, 15:37

У нас принято давать задачи, в решении которых не допускается наличие ведущих либо концевых пробелов в строке и ответ типа '23 67 90 ' должен засчитываться как PE.

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: Проблема с Win32-компиляцией

Post by dk » 05 November 2012, 16:32

Fenixoff wrote:У нас принято давать задачи, в решении которых не допускается наличие ведущих либо концевых пробелов в строке и ответ типа '23 67 90 ' должен засчитываться как PE.
Это, конечно, ваше право, но зачем?

То есть если нужно вывести содержимое массива, то код типа
for (i = 0; i < n; ++i) cout << A << " " ;

будет неправильным?

Совершенно не вижу причин так делать.

Fenixoff
Posts:16
Joined:04 November 2012, 01:43

Re: Проблема с Win32-компиляцией

Post by Fenixoff » 05 November 2012, 21:04

Такие правила на олимпиадах вышестоящих уровней (районных, городских, областных, республиканской).

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: Проблема с Win32-компиляцией

Post by dk » 06 November 2012, 08:43

Fenixoff wrote:Такие правила на олимпиадах вышестоящих уровней (районных, городских, областных, республиканской).
А можно поинтересоваться, где это?

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: Проблема с Win32-компиляцией

Post by dk » 06 November 2012, 08:45

dk wrote:К сожалению, на сайте pascalabc.net выложена старая версия 1.6 компилятора pabcnetcclear.exe, которая не работает вместе с версией 1.8. Я написал разработчикам pascalABC.NET просьбу сделать новую версию pabcnetcclear.exe, надеюсь, скоро сделают.
На http://pascalabc.net/ssyilki-dlya-skachivaniya.html выложили сборку 511 версии 1.8 PascalABC.NET: http://pascalabc.net/ssyilki-dlya-skachivaniya.html

Там компилятор pabcnetcclear.exe уже включен в дистрибутив.

Post Reply