rust install dependencies
¿Cómo usar panic=abortar con dependencias externas? (1)
Parece que es porque c_vec
especifica dylib
como uno de sus tipos de biblioteca.
Archivé esto como un problema en Github aquí: https://github.com/rust-lang/cargo/issues/2738
Y obtuve una respuesta de uno de los desarrolladores:
ah desafortunadamente ese es un mensaje de error malo pero es debido a crate-type = ["dylib", "rlib"] en el c_vec crate. Esto hace que Cargo pase -C prefiera-dinámico, que se vincula con el dylib que enviamos, que se compila contra panic_unwind, lo que significa que el modo abortar no es válido (este error proviene del compilador).
La solución aquí sería eliminar "dylib" de la caja c_vec.
Por supuesto, tendrías que bifurcar tu propio lodepng
y c_vec
para encargarse de esto.
Para proyectos de cajones individuales, agregar estas líneas a Cargo.toml
funciona como se esperaba.
[profile.release]
panic = "abort"
Luego crea el proyecto:
cargo build --release
Sin embargo, en un proyecto que ha usado dependencias indirectamente, recibo un error.
Compiling c_vec v1.0.12
error: the linked panic runtime `panic_unwind` is not compiled with this crate''s panic strategy `abort`
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: Could not compile `c_vec`.
La caja c_vec
es una dependencia indirectamente utilizada.
¿Cómo usar panic=abort
en un proyecto de múltiples cajas sin conflictos?
Detalles en caso de que importen:
- Rustc 1.12.0
- Biblioteca con problema: lodepng-rust
- Linux, 64 bits