summaryrefslogtreecommitdiffstats
path: root/debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch')
-rw-r--r--debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch b/debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch
new file mode 100644
index 000000000..13e1cceda
--- /dev/null
+++ b/debian/patches/prune/d-0001-pkg-config-no-special-snowflake.patch
@@ -0,0 +1,96 @@
+From: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Date: Sat, 2 Oct 2021 01:08:00 +0100
+Subject: d-0001-pkg-config-no-special-snowflake
+
+Description: always enable cross compilation via pkgconf, and set the right binary name.
+
+Forwarded: not-needed
+---
+ vendor/pkg-config/src/lib.rs | 25 ++++++++++---------------
+ vendor/pkg-config/tests/test.rs | 2 --
+ 2 files changed, 10 insertions(+), 17 deletions(-)
+
+diff --git a/vendor/pkg-config/src/lib.rs b/vendor/pkg-config/src/lib.rs
+index 3653032..553ac75 100644
+--- a/vendor/pkg-config/src/lib.rs
++++ b/vendor/pkg-config/src/lib.rs
+@@ -117,11 +117,8 @@ pub enum Error {
+ /// Contains the name of the responsible environment variable.
+ EnvNoPkgConfig(String),
+
+- /// Detected cross compilation without a custom sysroot.
+- ///
+- /// Ignore the error with `PKG_CONFIG_ALLOW_CROSS=1`,
+- /// which may let `pkg-config` select libraries
+- /// for the host's architecture instead of the target's.
++ /// Cross compilation detected. Kept for compatibility;
++ /// the Debian package never emits this.
+ CrossCompilation,
+
+ /// Failed to run `pkg-config`.
+@@ -161,14 +158,6 @@ impl fmt::Display for Error {
+ fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+ match *self {
+ Error::EnvNoPkgConfig(ref name) => write!(f, "Aborted because {} is set", name),
+- Error::CrossCompilation => f.write_str(
+- "pkg-config has not been configured to support cross-compilation.\n\
+- \n\
+- Install a sysroot for the target platform and configure it via\n\
+- PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_PATH, or install a\n\
+- cross-compiling wrapper for pkg-config and set it via\n\
+- PKG_CONFIG environment variable.",
+- ),
+ Error::Command {
+ ref command,
+ ref cause,
+@@ -226,7 +215,7 @@ impl fmt::Display for Error {
+ )?;
+ format_output(output, f)
+ }
+- Error::__Nonexhaustive => panic!(),
++ Error::CrossCompilation | Error::__Nonexhaustive => panic!(),
+ }
+ }
+ }
+@@ -420,6 +409,8 @@ impl Config {
+ if host == target {
+ return true;
+ }
++ // always enable PKG_CONFIG_ALLOW_CROSS override in Debian
++ return true;
+
+ // pkg-config may not be aware of cross-compilation, and require
+ // a wrapper script that sets up platform-specific prefixes.
+@@ -477,7 +468,11 @@ impl Config {
+ }
+
+ fn run(&self, name: &str, args: &[&str]) -> Result<Vec<u8>, Error> {
+- let pkg_config_exe = self.targetted_env_var("PKG_CONFIG");
++ let pkg_config_exe = self.targetted_env_var("PKG_CONFIG")
++ .or_else(|| {
++ self.env_var_os("DEB_HOST_GNU_TYPE")
++ .map(|mut t| { t.push(OsString::from("-pkgconf")); t })
++ });
+ let fallback_exe = if pkg_config_exe.is_none() {
+ Some(OsString::from("pkgconf"))
+ } else {
+diff --git a/vendor/pkg-config/tests/test.rs b/vendor/pkg-config/tests/test.rs
+index 0f37c72..f70e8b7 100644
+--- a/vendor/pkg-config/tests/test.rs
++++ b/vendor/pkg-config/tests/test.rs
+@@ -31,7 +31,6 @@ fn find(name: &str) -> Result<pkg_config::Library, Error> {
+ pkg_config::probe_library(name)
+ }
+
+-#[test]
+ fn cross_disabled() {
+ let _g = LOCK.lock();
+ reset();
+@@ -43,7 +42,6 @@ fn cross_disabled() {
+ }
+ }
+
+-#[test]
+ fn cross_enabled() {
+ let _g = LOCK.lock();
+ reset();