Size: a a a

Rust — русскоговорящее сообществo

2020 October 29

f

folex in Rust — русскоговорящее сообществo
А какой наименее болезненный способ ссылаться на файлы в тестах независимо от расположения теста?

Например у меня всегда есть project/artifacts/test_file.wasm, как мне на него сослаться из  project/moduleA/tests и из project/moduleB/tests?

Я вижу есть CARGO_MANIFEST_DIR, но оно указывает на project/moduleA и project/moduleB, а мне бы получить путь до project
источник

f

folex in Rust — русскоговорящее сообществo
я вот смотрю люди страдают достаточно давно https://github.com/rust-lang/cargo/issues/3946#issuecomment-454336188
источник

G

George in Rust — русскоговорящее сообществo
folex
А какой наименее болезненный способ ссылаться на файлы в тестах независимо от расположения теста?

Например у меня всегда есть project/artifacts/test_file.wasm, как мне на него сослаться из  project/moduleA/tests и из project/moduleB/tests?

Я вижу есть CARGO_MANIFEST_DIR, но оно указывает на project/moduleA и project/moduleB, а мне бы получить путь до project
Есть трюк с /../
Указываешь типа "$CARGO_MANIFEST_DIR/../" и попадёшь из project/moduleA в project/
источник

f

folex in Rust — русскоговорящее сообществo
да, но для этого нужно знать структуру директорий заранее, а в моем случае это невозможно(
источник

f

folex in Rust — русскоговорящее сообществo
потому что я делаю утилитарную функцию, которая должна загружать одни и те же артефакты для разных тестов. И структура у меня может быть как project/moduleA/tests, так и project/crates/something/tests, или например project/moduleB/tests/foo/bar.rs
источник

f

folex in Rust — русскоговорящее сообществo
т.е. кол-во директорий вверх заранее не известно
источник

f

folex in Rust — русскоговорящее сообществo
видимо остается только $ cargo metadata --format-version=1 | jq .workspace_root
источник

DG

Danil Guskov in Rust — русскоговорящее сообществo
Vladimir
Если ваши, то простора больше.
Можно например неявно передавать пути, в вышестоящие скрипты, через: https://doc.rust-lang.org/cargo/reference/build-scripts.html#the-links-manifest-key

Почему вообще статические либы не юзаете?
И я не сильно понимаю какая именно проблема у вас сейчас?
Статически не получится, там есть две либы с одинаковыми именами функций. Ну а проблемы вроде нет, просто интересно, как принято поступать в похожих ситуациях
источник

V

Vladimir in Rust — русскоговорящее сообществo
Danil Guskov
Статически не получится, там есть две либы с одинаковыми именами функций. Ну а проблемы вроде нет, просто интересно, как принято поступать в похожих ситуациях
Разве нейминг как-то мешает? Эти ж имена в разных пространствах имён
источник

DG

Danil Guskov in Rust — русскоговорящее сообществo
Vladimir
Разве нейминг как-то мешает? Эти ж имена в разных пространствах имён
В сишных либах нет никаких пространств имен. Надо все уникальным делать
источник

DG

Danil Guskov in Rust — русскоговорящее сообществo
А так бы да, собирать бы все под каким-нибудь musl-ом и вообще об этом не думать...
источник

DG

Danil Guskov in Rust — русскоговорящее сообществo
Ну вот все же интересно про pkg-config, допустим cargo моего бинарника натянул кучу .so-шек из зависимостей. Неужели нет команды cargo my-awesome-install --prefix /usr/local, чтобы все .so-шки и бинарник куда-нибудь экспортировать
источник

d

diabolo in Rust — русскоговорящее сообществo
Danil Guskov
Ну вот все же интересно про pkg-config, допустим cargo моего бинарника натянул кучу .so-шек из зависимостей. Неужели нет команды cargo my-awesome-install --prefix /usr/local, чтобы все .so-шки и бинарник куда-нибудь экспортировать
install --root
источник

DG

Danil Guskov in Rust — русскоговорящее сообществo
diabolo
install --root
Пробовал, это на работает.  So-шки так не экспортируются, только бинарник
источник

d

diabolo in Rust — русскоговорящее сообществo
Danil Guskov
Пробовал, это на работает.  So-шки так не экспортируются, только бинарник
это да, артефакты падают в target-dir
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
Danil Guskov
Всем привет.
Хотелось бы узнать как вы решаете проблему линковки сишных динамических библиотек в бинарниках?
Мы в свое время решали это через переменные окружения в build.rs. то есть при явном указании этой переменной в папку бинарника все работало.
Сейчас вот решил пересмотреть эту логику. Интересует, а можно ли сделать лучше?
RPATH, LD_PRELOAD.
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
Danil Guskov
Ну cargo build сам собирает .so -файлы, которые непонятно где лежат в target
cargo умеет экспортить env vars, на которые потом можно ссылаться в других build.rs
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
https://intellij-rust.github.io/assets/posts/changelog-133/5189.gif

"Support configuring workspace features in Cargo.toml. Now it is possible to enable or disable any specific workspace feature in the Cargo.toml file, and Go to Declaration and other code insight features will take them into account."

клевую штуку в ijrust завозят
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
источник

A

Aleksey23 in Rust — русскоговорящее сообществo
В чём заключаются плюсы и минусы раст, как вы думаете?
источник