#1107279 dh-cargo: silently ignores --sourcedirectory

#1107279#5
Date:
2025-06-04 13:28:46 UTC
From:
To:
Dear Maintainer,

I have dh $@ --buildsystem cargo with
  dh_auto_clean     --sourcedirectory=b3sum
  dh_auto_configure --sourcedirectory=b3sum
  dh_auto_build     --sourcedirectory=b3sum
  dh_auto_test      --sourcedirectory=b3sum
  dh_auto_install   --sourcedirectory=b3sum --destdir=debian/b3sum/
but these all silently ignore --sourcedirectory until install which errors
  make[1]: Entering directory '/srv/rust-blake3'
  dh_auto_install   --sourcedirectory=b3sum --destdir=debian/b3sum/
  debian cargo wrapper: options = ['parallel=24'], profiles = [], parallel = ['-j24'], lto =
  debian cargo wrapper: rust_type = x86_64-unknown-linux-gnu, gnu_type = x86_64-linux-gnu
  debian cargo wrapper: installing into destdir 'debian/libblake3-0' prefix '/usr'
  debian cargo wrapper: running subprocess (['env', 'RUST_BACKTRACE=1', 'CARGO_TARGET_DIR=/srv/rust-blake3/target', '/usr/bin/cargo', '-Zavoid-dev-deps', 'install', '--verbose', '--verbose', '-j24', '--target', 'x86_64-unknown-linux-gnu', '--path', '/srv/rust-blake3', '--root', 'debian/libblake3-0/usr'],) {'check': True}
  error: no packages found with binaries or examples
  Traceback (most recent call last):
    File "/usr/share/cargo/bin/cargo", line 259, in <module>
      sys.exit(main(*sys.argv[1:]))
               ~~~~^^^^^^^^^^^^^^^
    File "/usr/share/cargo/bin/cargo", line 249, in main
      return install(os.getenv("DESTDIR", ""),
          os.environ["DEB_CARGO_CRATE"],
      ...<2 lines>...
          os.getenv("DEB_CARGO_INSTALL_PREFIX", "/usr"),
          *newargs)
    File "/usr/share/cargo/bin/cargo", line 137, in install
      logrun(["env", "RUST_BACKTRACE=1",
      ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          # set CARGO_TARGET_DIR so build products are saved in target/
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      ...<3 lines>...
          ([crate, "--vers", version] if crate_in_registry else ["--path", in_cwd()]) +
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          ["--root", install_target], check=True)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/share/cargo/bin/cargo", line 76, in logrun
      return subprocess.run(*args, **kwargs)
             ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.13/subprocess.py", line 577, in run
      raise CalledProcessError(retcode, process.args,
                               output=stdout, stderr=stderr)
  subprocess.CalledProcessError: Command '['env', 'RUST_BACKTRACE=1', 'CARGO_TARGET_DIR=/srv/rust-blake3/target', '/usr/bin/cargo', '-Zavoid-dev-deps', 'install', '--verbose', '--verbose', '-j24', '--target', 'x86_64-unknown-linux-gnu', '--path', '/srv/rust-blake3', '--root', 'debian/libblake3-0/usr']' returned non-zero exit status 101.
for unrelated reasons.

dh-cargo should either correctly support --sourcedirectory or reject it.

Best,