Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Нет описания ошибок компиляции для Rust #269

Open
stremin opened this issue Jul 21, 2019 · 8 comments
Open

Comments

@stremin
Copy link

stremin commented Jul 21, 2019

После отправки стратегии получаю ошибку компиляции, в окне "ошибки компиляции" всегда пусто, так что причина не понятна. Не удалось упешно отправить ничего, кроме совсем тривиальных одиночных файлов.

Примеры с ошибками компиляции: 15884 (.rs), 15885 (.zip)

@ciiol
Copy link

ciiol commented Jul 23, 2019

Могу ошибаться, но судя по коду, в текст ошибки попадает только stdout. Полагаю, что cargo пишет ошибки в stderr.

ERRORS="$(eval $COMPILATION_COMMAND)"

@ciiol
Copy link

ciiol commented Jul 23, 2019

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

Там, кстати, подменяется Cargo.toml при сборке, быть может в этом дело. Я отправлял не очень сложное решение в zip архиве, у меня собиралось.

В итоге, правда, я собираю решение локально с нужными мне опциями, зависимостями и версиями. А запускаю там с помощью вспомогательного скрипта, который через execv вызывает лежащий под ногами готовый бинарник.

@alex3d
Copy link
Contributor

alex3d commented Jul 24, 2019

В итоге, правда, я собираю решение локально с нужными мне опциями, зависимостями и версиями. А запускаю там с помощью вспомогательного скрипта, который через execv вызывает лежащий под ногами готовый бинарник.

Это скорее всего нарушение правил.
@SannikovDmitry "а что так можно было"?

@stremin
Copy link
Author

stremin commented Jul 24, 2019

Могу ошибаться, но судя по коду, в текст ошибки попадает только stdout. Полагаю, что cargo пишет ошибки в stderr.

ERRORS="$(eval $COMPILATION_COMMAND)"

Спасибо, базовый докер я не заметил )
Понять бы еще, куда выкладываются при заливке одиночный файл и архив.
Cargo.toml я учитываю. Пока наловчился собирать в один файл и выкладывать его (https://github.com/MarcosCosmos/cg-rust-bundler).

@stremin
Copy link
Author

stremin commented Jul 24, 2019

Получается так (вдруг кому пригодится):

  1. Папка для сборки: /opt/client/solution
  2. Одиночный файл выкладывается в /opt/client/solution/src/main.rs, архив распаковывается в корень /opt/client/solution.
  3. Запускается cargo init --bin /opt/client/solution
  4. В /opt/client/solution выкладывается Cargo.toml из rust докера (https://github.com/MailRuChamps/miniaicups/blob/master/paperio/dockers/rust/Cargo.toml) и заменяет присланный/сгенерированный cargo init
  5. Запускается компиляция cargo build --release --manifest-path /opt/client/solution/Cargo.toml

В архиве исходники правильно передавать вместе с папкой src, а у меня такие эксперименты не работали, потому что код тогда еще был под edition="2018"

@ciiol
Copy link

ciiol commented Jul 24, 2019

Это скорее всего нарушение правил.
@SannikovDmitry "а что так можно было"?

Сложно сказать, нарушение ли. По букве точно нет – это не попытка сломать тестирующую систему. Технически это обычное решение на условном питоне, которое использует вспомогательный файл для работы. То же самое, что собрать решение в библиотеку для питона или подключить как nif в elixir. По духу – скорее нет, это лишь самый быстрый способ запустить решение. Подменяемый Cargo.toml слишком замедляет итерации разработки и усложняет отладку.

@tongohiti
Copy link
Contributor

tongohiti commented Jul 29, 2019

Тоже столкнулся с тем, что когда заливал самый первый вариант на rust, сервер сообщил об ошибке компиляции, но не показал текст ошибки (было пустое окошко). Вслепую догадался, в чём было дело (попытался заюзать rust-2018 до того как он был официально включен).

@SannikovDmitry
Copy link
Contributor

В итоге, правда, я собираю решение локально с нужными мне опциями, зависимостями и версиями. А запускаю там с помощью вспомогательного скрипта, который через execv вызывает лежащий под ногами готовый бинарник.

Это скорее всего нарушение правил.
@SannikovDmitry "а что так можно было"?

Закрою пока рукой глаза :) Главное, чтобы не сломали ничего.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants