Cargo: Crate introuvable dans les tests d'intégration si `crate-type = ["cdylib"]`

Créé le 13 févr. 2019  ·  3Commentaires  ·  Source: rust-lang/cargo

Problème
Je développe du code qui doit fonctionner avec python, ce qui m'oblige à avoir un type de caisse de cdylib . Il s'avère que lorsque vous suivez la recommandation d'utiliser un répertoire tests , le code dans le répertoire ne peut pas trouver la caisse, échouant avec une erreur comme la suivante :

   Compiling cargo_issue_6659 v0.1.0 (/home/cfkaran2/Desktop/cargo_issue_6659)
     Running `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
     Running `rustc --edition=2018 --crate-name cargo_issue_6659 src/lib.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=b9fa70b838dfddae -C extra-filename=-b9fa70b838dfddae --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
error[E0463]: can't find crate for `rustc_issue_report_cdylib`
 --> tests/tester.rs:1:1
  |
1 | extern crate rustc_issue_report_cdylib;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `cargo_issue_6659`.

Caused by:
  process didn't exit successfully: `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Pas

  1. Consultez le référentiel sur https://github.com/ckaran/cargo_issue_6659.
  2. Suivez les instructions dans le README.md

Solutions possibles)

Aucun connu.

Remarques

$ cargo -V -vvv
cargo 1.32.0 (8610973aa 2019-01-02)
release: 1.32.0
commit-hash: 8610973aaf48615ba7dc9a38a9a2795ba6f36a31
commit-date: 2019-01-02

$ rustc -Vv
rustc 1.32.0 (9fda7c223 2019-01-16)
binary: rustc
commit-hash: 9fda7c2237db910e41d6a712e9a2139b352e558b
commit-date: 2019-01-16
host: x86_64-unknown-linux-gnu
release: 1.32.0
LLVM version: 8.0

$ uname -a
Linux EMANE 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic
A-crate-types A-documenting-cargo-itself

Commentaire le plus utile

Vous pouvez ajouter rlib (ou lib ) à la liste crate-type , et cela devrait fonctionner. Les tests ne peuvent pas être liés au cdylib.

BTW, il y a une faute de frappe dans votre exemple, tests/tester.rs devrait avoir extern crate cargo_issue_6659; .

Tous les 3 commentaires

Vous pouvez ajouter rlib (ou lib ) à la liste crate-type , et cela devrait fonctionner. Les tests ne peuvent pas être liés au cdylib.

BTW, il y a une faute de frappe dans votre exemple, tests/tester.rs devrait avoir extern crate cargo_issue_6659; .

Ah, désolé, puisqu'il y a un problème de poule et d'œuf entre la création d'un dépôt qui porte le même nom que le problème auquel il est destiné, j'oublie parfois de changer les noms. Maintenant corrigé.

En ce qui concerne le réglage sur rlib ou lib , le problème est que j'utilise pyo3 , qui dit que vous devez définir le type de bibliothèque sur cdylib , et ne pas avoir mon le travail des tests d'intégration m'a surpris. Si l'on sait que les tests ne peuvent pas être liés aux bibliothèques de types cdylib , il peut être utile de mettre à jour la documentation de cargo (ou peut-être de rustc ) pour refléter ce fait .

Oui, la documentation des types de caisses pourrait certainement être améliorée en général.

N'hésitez pas à laisser plus de commentaires ici si vous rencontrez d'autres problèmes. Sinon, je vais simplement laisser cela ouvert en tant que problème de documentation.

Cette page vous a été utile?
0 / 5 - 0 notes