summaryrefslogtreecommitdiffstats
path: root/debian/patches/cargo
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:01 +0000
commitc29d7c1ba10d6debd11f9d8aad5d069a6491e60e (patch)
treea2ad46eb513b315f0efd8170af5eb08870165757 /debian/patches/cargo
parentMerging upstream version 1.76.0+dfsg1. (diff)
downloadrustc-c29d7c1ba10d6debd11f9d8aad5d069a6491e60e.tar.xz
rustc-c29d7c1ba10d6debd11f9d8aad5d069a6491e60e.zip
Adding debian version 1.76.0+dfsg1-1.debian/1.76.0+dfsg1-1debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches/cargo')
-rw-r--r--debian/patches/cargo/c-0003-tests-add-missing-cross-disabled-checks.patch42
-rw-r--r--debian/patches/cargo/c-2002_disable-net-tests.patch595
-rw-r--r--debian/patches/cargo/c-2003-workaround-qemu-vfork-command-not-found.patch28
-rw-r--r--debian/patches/cargo/c-2200-workaround-x32-test.patch22
-rw-r--r--debian/patches/cargo/c-disable-fs-specific-test.patch22
-rw-r--r--debian/patches/cargo/d-0012-cargo-always-return-dev-channel.patch26
6 files changed, 735 insertions, 0 deletions
diff --git a/debian/patches/cargo/c-0003-tests-add-missing-cross-disabled-checks.patch b/debian/patches/cargo/c-0003-tests-add-missing-cross-disabled-checks.patch
new file mode 100644
index 000000000..fef435fc6
--- /dev/null
+++ b/debian/patches/cargo/c-0003-tests-add-missing-cross-disabled-checks.patch
@@ -0,0 +1,42 @@
+From: =?utf-8?q?Fabian_Gr=C3=BCnbichler?= <debian@fabian.gruenbichler.email>
+Date: Sat, 19 Nov 2022 10:24:08 +0100
+Subject: [PATCH] tests: add missing cross disabled checks
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+cross_conmpile::alternate states it should only be used in test cases
+after checking cross_compile::disabled(), which is missing here. these
+tests fail despite setting CFG_DISABLE_CROSS_TESTS on i386, since both
+the host and the alternate cross target would be i686 in that case.
+
+
+Signed-off-by: Fabian Grünbichler <debian@fabian.gruenbichler.email>
+---
+ src/tools/cargo/tests/testsuite/build_script.rs | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/tools/cargo/tests/testsuite/build_script.rs b/src/tools/cargo/tests/testsuite/build_script.rs
+index f7361fc..f587ddd 100644
+--- a/src/tools/cargo/tests/testsuite/build_script.rs
++++ b/src/tools/cargo/tests/testsuite/build_script.rs
+@@ -734,6 +734,9 @@ fn custom_build_linker_bad_host_with_arch() {
+ #[cargo_test]
+ fn custom_build_env_var_rustc_linker_cross_arch_host() {
+ let target = rustc_host();
++ if cross_compile::disabled() {
++ return;
++ }
+ let cross_target = cross_compile::alternate();
+ let p = project()
+ .file(
+@@ -772,6 +775,9 @@ fn custom_build_env_var_rustc_linker_cross_arch_host() {
+ #[cargo_test]
+ fn custom_build_linker_bad_cross_arch_host() {
+ let target = rustc_host();
++ if cross_compile::disabled() {
++ return;
++ }
+ let cross_target = cross_compile::alternate();
+ let p = project()
+ .file(
diff --git a/debian/patches/cargo/c-2002_disable-net-tests.patch b/debian/patches/cargo/c-2002_disable-net-tests.patch
new file mode 100644
index 000000000..5ed606980
--- /dev/null
+++ b/debian/patches/cargo/c-2002_disable-net-tests.patch
@@ -0,0 +1,595 @@
+From: Ximin Luo <infinity0@debian.org>
+Date: Thu, 13 Jun 2024 11:16:38 +0200
+Subject: Disable network tests
+
+Forwarded: TODO
+---
+ .../cargo/tests/testsuite/credential_process.rs | 14 +--
+ src/tools/cargo/tests/testsuite/git_auth.rs | 4 +-
+ src/tools/cargo/tests/testsuite/net_config.rs | 4 +-
+ src/tools/cargo/tests/testsuite/publish.rs | 104 ++++++++++-----------
+ 4 files changed, 63 insertions(+), 63 deletions(-)
+
+diff --git a/src/tools/cargo/tests/testsuite/credential_process.rs b/src/tools/cargo/tests/testsuite/credential_process.rs
+index 815089f..477e5d2 100644
+--- a/src/tools/cargo/tests/testsuite/credential_process.rs
++++ b/src/tools/cargo/tests/testsuite/credential_process.rs
+@@ -63,7 +63,7 @@ fn get_token_test() -> (Project, TestRegistry) {
+ (p, server)
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish() {
+ // Checks that credential-process is used for `cargo publish`.
+ let (p, _t) = get_token_test();
+@@ -85,7 +85,7 @@ You may press ctrl-c [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn basic_unsupported() {
+ // Non-action commands don't support login/logout.
+ let registry = registry::RegistryBuilder::new()
+@@ -121,7 +121,7 @@ Caused by:
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn login() {
+ let registry = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -142,7 +142,7 @@ fn login() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn logout() {
+ let server = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -161,7 +161,7 @@ fn logout() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn yank() {
+ let (p, _t) = get_token_test();
+
+@@ -176,7 +176,7 @@ fn yank() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn owner() {
+ let (p, _t) = get_token_test();
+
+@@ -191,7 +191,7 @@ fn owner() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn invalid_token_output() {
+ // Error when credential process does not output the expected format for a token.
+ let cred_proj = project()
+diff --git a/src/tools/cargo/tests/testsuite/git_auth.rs b/src/tools/cargo/tests/testsuite/git_auth.rs
+index c79ae7c..b15582e 100644
+--- a/src/tools/cargo/tests/testsuite/git_auth.rs
++++ b/src/tools/cargo/tests/testsuite/git_auth.rs
+@@ -103,7 +103,7 @@ fn setup_failed_auth_test() -> (SocketAddr, JoinHandle<()>, Arc<AtomicUsize>) {
+ }
+
+ // Tests that HTTP auth is offered from `credential.helper`.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn http_auth_offered() {
+ let (addr, t, connections) = setup_failed_auth_test();
+ let p = project()
+@@ -167,7 +167,7 @@ Caused by:
+ }
+
+ // Boy, sure would be nice to have a TLS implementation in rust!
+-#[cargo_test]
++#[allow(dead_code)]
+ fn https_something_happens() {
+ let server = TcpListener::bind("127.0.0.1:0").unwrap();
+ let addr = server.local_addr().unwrap();
+diff --git a/src/tools/cargo/tests/testsuite/net_config.rs b/src/tools/cargo/tests/testsuite/net_config.rs
+index 569ec55..27c4132 100644
+--- a/src/tools/cargo/tests/testsuite/net_config.rs
++++ b/src/tools/cargo/tests/testsuite/net_config.rs
+@@ -2,7 +2,7 @@
+
+ use cargo_test_support::project;
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn net_retry_loads_from_config() {
+ let p = project()
+ .file(
+@@ -38,7 +38,7 @@ fn net_retry_loads_from_config() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn net_retry_git_outputs_warning() {
+ let p = project()
+ .file(
+diff --git a/src/tools/cargo/tests/testsuite/publish.rs b/src/tools/cargo/tests/testsuite/publish.rs
+index 5d29ac8..05d0f02 100644
+--- a/src/tools/cargo/tests/testsuite/publish.rs
++++ b/src/tools/cargo/tests/testsuite/publish.rs
+@@ -88,7 +88,7 @@ fn validate_upload_li() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -130,7 +130,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+
+ // Check that the `token` key works at the root instead of under a
+ // `[registry]` table.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_publish_with_http() {
+ let _reg = registry::RegistryBuilder::new()
+ .http_api()
+@@ -170,7 +170,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_publish_with_asymmetric() {
+ let _reg = registry::RegistryBuilder::new()
+ .http_api()
+@@ -213,7 +213,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn old_token_location() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -270,7 +270,7 @@ You may press ctrl-c [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_with_index() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -315,7 +315,7 @@ You may press ctrl-c [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn git_deps() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -353,7 +353,7 @@ the `git` specification will be removed from the dependency declaration.
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn path_dependency_no_version() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -393,7 +393,7 @@ the `path` specification will be removed from the dependency declaration.
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn unpublishable_crate() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -426,7 +426,7 @@ fn unpublishable_crate() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn dont_publish_dirty() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -468,7 +468,7 @@ to proceed despite this and include the uncommitted changes, pass the `--allow-d
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_clean() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -516,7 +516,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_in_sub_repo() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -565,7 +565,7 @@ You may press ctrl-c [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_when_ignored() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -614,7 +614,7 @@ You may press ctrl-c [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn ignore_when_crate_ignored() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -662,7 +662,7 @@ You may press ctrl-c [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn new_crate_rejected() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -695,7 +695,7 @@ fn new_crate_rejected() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn dry_run() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -738,7 +738,7 @@ See [..]
+ assert!(!registry::api_path().join("api/v1/crates/new").exists());
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn registry_not_in_publish_list() {
+ let p = project()
+ .file(
+@@ -771,7 +771,7 @@ The registry `alternative` is not listed in the `package.publish` value in Cargo
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_empty_list() {
+ let p = project()
+ .file(
+@@ -800,7 +800,7 @@ fn publish_empty_list() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_allowed_registry() {
+ let _registry = RegistryBuilder::new()
+ .http_api()
+@@ -860,7 +860,7 @@ You may press ctrl-c [..]
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_implicitly_to_only_allowed_registry() {
+ let _registry = RegistryBuilder::new()
+ .http_api()
+@@ -963,7 +963,7 @@ fn publish_failed_with_index_and_only_allowed_registry() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_fail_with_no_registry_specified() {
+ let p = project().build();
+
+@@ -997,7 +997,7 @@ The registry `crates-io` is not listed in the `package.publish` value in Cargo.t
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn block_publish_no_registry() {
+ let p = project()
+ .file(
+@@ -1027,7 +1027,7 @@ fn block_publish_no_registry() {
+ }
+
+ // Explicitly setting `crates-io` in the publish list.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_crates_io_explicit() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1080,7 +1080,7 @@ You may press ctrl-c [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_select_features() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1131,7 +1131,7 @@ You may press ctrl-c [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_all_features() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1182,7 +1182,7 @@ You may press ctrl-c [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_no_default_features() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1218,7 +1218,7 @@ fn publish_with_no_default_features() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_patch() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+ Package::new("bar", "1.0.0").publish();
+@@ -1324,7 +1324,7 @@ You may press ctrl-c [..]
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_checks_for_token_before_verify() {
+ let registry = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -1373,7 +1373,7 @@ fn publish_checks_for_token_before_verify() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_bad_source() {
+ let p = project()
+ .file(
+@@ -1422,7 +1422,7 @@ include `--registry crates-io` to use crates.io
+ }
+
+ // A dependency with both `git` and `version`.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_git_with_version() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -1566,7 +1566,7 @@ You may press ctrl-c [..]
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_dev_dep_no_version() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -1656,7 +1656,7 @@ repository = "foo"
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn credentials_ambiguous_filename() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1712,7 +1712,7 @@ You may press ctrl-c [..]
+
+ // --index will not load registry.token to avoid possibly leaking
+ // crates.io token to another server.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn index_requires_token() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1747,7 +1747,7 @@ fn index_requires_token() {
+ }
+
+ // publish with source replacement without --registry
+-#[cargo_test]
++#[allow(dead_code)]
+ fn cratesio_source_replacement() {
+ registry::init();
+ let p = project()
+@@ -1776,7 +1776,7 @@ include `--registry dummy-registry` or `--registry crates-io`
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_missing_readme() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1824,7 +1824,7 @@ Caused by:
+ }
+
+ // Registry returns an API error.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_json() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1872,7 +1872,7 @@ Caused by:
+ }
+
+ // Registry returns an API error with a 200 status code.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_200() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1920,7 +1920,7 @@ Caused by:
+ }
+
+ // Registry returns an error code without a JSON message.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_code() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1975,7 +1975,7 @@ Caused by:
+ }
+
+ // Registry has a network error.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_curl_error() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -2025,7 +2025,7 @@ Caused by:
+ }
+
+ // Registry returns an invalid response.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_other_error() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -2075,7 +2075,7 @@ Caused by:
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -2127,7 +2127,7 @@ You may press ctrl-c [..]
+ validate_upload_li();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn with_duplicate_spec_in_members() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2179,7 +2179,7 @@ fn with_duplicate_spec_in_members() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_with_members_with_features_old() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -2230,7 +2230,7 @@ You may press ctrl-c [..]
+ validate_upload_li();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_virtual_workspace() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2266,7 +2266,7 @@ fn in_virtual_workspace() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_virtual_workspace_with_p() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -2324,7 +2324,7 @@ You may press ctrl-c [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_not_found() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2369,7 +2369,7 @@ error: package ID specification `li` did not match any packages
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_found_multiple() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2426,7 +2426,7 @@ error: the `-p` argument must be specified to select a single package to publish
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ // https://github.com/rust-lang/cargo/issues/10536
+ fn publish_path_dependency_without_workspace() {
+ // Use local registry for faster test times since no publish will occur
+@@ -2473,7 +2473,7 @@ error: package ID specification `bar` did not match any packages
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn http_api_not_noop() {
+ let registry = registry::RegistryBuilder::new().http_api().build();
+
+@@ -2534,7 +2534,7 @@ You may press ctrl-c [..]
+ p.cargo("build").run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_first_publish() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2616,7 +2616,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ /// A separate test is needed for package names with - or _ as they hit
+ /// the responder twice per cargo invocation. If that ever gets changed
+ /// this test will need to be changed accordingly.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_first_publish_underscore() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2712,7 +2712,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ p.cargo("build").with_status(0).run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_subsequent_publish() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2804,7 +2804,7 @@ You may press ctrl-c to skip waiting; the crate should be available shortly.
+ p.cargo("check").with_status(0).run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn skip_wait_for_publish() {
+ // Intentionally using local registry so the crate never makes it to the index
+ let registry = registry::init();
diff --git a/debian/patches/cargo/c-2003-workaround-qemu-vfork-command-not-found.patch b/debian/patches/cargo/c-2003-workaround-qemu-vfork-command-not-found.patch
new file mode 100644
index 000000000..3daad1651
--- /dev/null
+++ b/debian/patches/cargo/c-2003-workaround-qemu-vfork-command-not-found.patch
@@ -0,0 +1,28 @@
+From: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Date: Thu, 13 Jun 2024 11:16:38 +0200
+Subject: c-2003-workaround-qemu-vfork-command-not-found
+
+===================================================================
+---
+ src/tools/cargo/crates/cargo-test-macro/src/lib.rs | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/tools/cargo/crates/cargo-test-macro/src/lib.rs b/src/tools/cargo/crates/cargo-test-macro/src/lib.rs
+index 14672ab..9208cb3 100644
+--- a/src/tools/cargo/crates/cargo-test-macro/src/lib.rs
++++ b/src/tools/cargo/crates/cargo-test-macro/src/lib.rs
+@@ -222,6 +222,14 @@ fn has_command(command: &str) -> bool {
+ }
+ };
+ if !output.status.success() {
++ // Debian specific patch, upstream wontfix:
++ // qemu has a faulty vfork where it fails to fail if a command is not
++ // found, with a unix_wait_status of 32512, or 0x7f00, 7f meaning
++ // exit code 127. See https://github.com/rust-lang/rust/issues/90825
++ use std::os::unix::process::ExitStatusExt;
++ if output.status.into_raw() == 0x7f00 {
++ return false;
++ }
+ panic!(
+ "expected command `{}` to be runnable, got error {}:\n\
+ stderr:{}\n\
diff --git a/debian/patches/cargo/c-2200-workaround-x32-test.patch b/debian/patches/cargo/c-2200-workaround-x32-test.patch
new file mode 100644
index 000000000..eb78ec51c
--- /dev/null
+++ b/debian/patches/cargo/c-2200-workaround-x32-test.patch
@@ -0,0 +1,22 @@
+From: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Date: Thu, 13 Jun 2024 11:16:38 +0200
+Subject: c-2200-workaround-x32-test
+
+Bug: https://github.com/rust-lang/cargo/issues/10005
+---
+ src/tools/cargo/tests/testsuite/cfg.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tools/cargo/tests/testsuite/cfg.rs b/src/tools/cargo/tests/testsuite/cfg.rs
+index dcce654..c9e2e0c 100644
+--- a/src/tools/cargo/tests/testsuite/cfg.rs
++++ b/src/tools/cargo/tests/testsuite/cfg.rs
+@@ -272,7 +272,7 @@ fn any_ok() {
+
+ // https://github.com/rust-lang/cargo/issues/5313
+ #[cargo_test]
+-#[cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu"))]
++#[cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu", target_pointer_width = "64"))]
+ fn cfg_looks_at_rustflags_for_target() {
+ let p = project()
+ .file(
diff --git a/debian/patches/cargo/c-disable-fs-specific-test.patch b/debian/patches/cargo/c-disable-fs-specific-test.patch
new file mode 100644
index 000000000..84d887702
--- /dev/null
+++ b/debian/patches/cargo/c-disable-fs-specific-test.patch
@@ -0,0 +1,22 @@
+From: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Date: Thu, 13 Jun 2024 11:16:38 +0200
+Subject: c-disable-fs-specific-test
+
+===================================================================
+---
+ src/tools/cargo/tests/testsuite/metadata.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tools/cargo/tests/testsuite/metadata.rs b/src/tools/cargo/tests/testsuite/metadata.rs
+index 888cdce..f06f73f 100644
+--- a/src/tools/cargo/tests/testsuite/metadata.rs
++++ b/src/tools/cargo/tests/testsuite/metadata.rs
+@@ -3997,7 +3997,7 @@ fn dep_kinds_workspace() {
+ // Creating non-utf8 path is an OS-specific pain, so let's run this only on
+ // linux, where arbitrary bytes work.
+ #[cfg(target_os = "linux")]
+-#[cargo_test]
++#[allow(dead_code)]
+ fn cargo_metadata_non_utf8() {
+ use std::ffi::OsString;
+ use std::os::unix::ffi::OsStringExt;
diff --git a/debian/patches/cargo/d-0012-cargo-always-return-dev-channel.patch b/debian/patches/cargo/d-0012-cargo-always-return-dev-channel.patch
new file mode 100644
index 000000000..7cbe41213
--- /dev/null
+++ b/debian/patches/cargo/d-0012-cargo-always-return-dev-channel.patch
@@ -0,0 +1,26 @@
+From: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Date: Mon, 6 May 2024 10:25:32 +0200
+Subject: d-0012-cargo-always-return-dev-channel
+
+Last-Update: 2023-05-30
+Forwarded: not-needed
+---
+ src/tools/cargo/src/cargo/core/features.rs | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/tools/cargo/src/cargo/core/features.rs b/src/tools/cargo/src/cargo/core/features.rs
+index 4f5b069..0a42077 100644
+--- a/src/tools/cargo/src/cargo/core/features.rs
++++ b/src/tools/cargo/src/cargo/core/features.rs
+@@ -1205,9 +1205,8 @@ pub fn channel() -> String {
+ return "dev".to_string();
+ }
+ }
+- crate::version()
+- .release_channel
+- .unwrap_or_else(|| String::from("dev"))
++ // Debian: always return dev channel
++ String::from("dev")
+ }
+
+ /// Only for testing and developing. See ["Running with gitoxide as default git backend in tests"][1].