On Fri, 05 Mar 2021 19:00:19 -0500 Daniel Kahn Gillmor <[email protected]> 
wrote:
> Package: debcargo
> Version: 2.4.4-1
> Control: affects -1 src:rust-nettle-sys
> 
> in Cargo.toml from nettle-sys 2.0.5, we see:
> 
> [target."cfg(target_env = \"msvc\")".build-dependencies.vcpkg]
> version = "0.2.9"
> 
> 
> But debcargo 2.4.4 translates that into actual Build-Depends: and
> Depends: fields, despite the target environment not being the MSVC
> compiler.  It generates:
> 
> -----
> Source: rust-nettle-sys
> Section: rust
> Priority: optional
> Build-Depends: debhelper (>= 12),
>  dh-cargo (>= 24),
>  cargo:native <!nocheck>,
>  rustc:native <!nocheck>,
>  libstd-rust-dev <!nocheck>,
>  librust-bindgen-0.55-dev <!nocheck> | librust-bindgen-0.54-dev <!nocheck> | 
> librust-bindgen-0.53-dev (>= 0.53.1-~~) <!nocheck>,
>  librust-pkg-config-0.3+default-dev <!nocheck>,
>  librust-vcpkg-0.2+default-dev (>= 0.2.9-~~) <!nocheck>,
>  nettle-dev (>= 3.5.1~~) <!nocheck>,
>  llvm
> Maintainer: Debian Rust Maintainers 
> <[email protected]>
> Uploaders:
>  Daniel Kahn Gillmor <[email protected]>,
>  kpcyrd <[email protected]>
> Standards-Version: 4.5.1
> Vcs-Git: https://salsa.debian.org/rust-team/debcargo-conf.git [src/nettle-sys]
> Vcs-Browser: 
> https://salsa.debian.org/rust-team/debcargo-conf/tree/master/src/nettle-sys
> Rules-Requires-Root: no
> 
> Package: librust-nettle-sys-dev
> Architecture: any
> Multi-Arch: same
> Depends:
>  ${misc:Depends},
>  librust-bindgen-0.55-dev | librust-bindgen-0.54-dev | 
> librust-bindgen-0.53-dev (>= 0.53.1-~~),
>  librust-pkg-config-0.3+default-dev,
>  librust-vcpkg-0.2+default-dev (>= 0.2.9-~~),
>  nettle-dev (>= 3.5.1~~)
> Provides:
> 
> -----
> 
> So, i'll probably patch this out of the upstream sources for now, but
> debcargo should have handled this more cleanly.

just a short update on this - I've had a chat with decathorpe,
the Fedora rust packaging maintainer, who has written a tool
that does exactly this:

https://codeberg.org/rust2rpm/rust2rpm-helper/src/branch/main/Cargo.toml

the current plan is to restructure and rename this crate to
make it usable by debcargo, and then extend it to also support
some of the other low-hanging fruit that fall into the "generate
patch for Cargo.toml" category.

in the end, we will have a (default true) flag in debcargo.toml
along the lines of "disable_foreign_targets", and debcargo
will then synthesize a patch for Cargo.toml removing all
dependencies conditionalized for certain targets, as well as
feature entries that reference them.

since Cargo.toml post patching will then no longer have those
dependencies, neither will d/control or d/test/control.

Reply via email to