From: Vasudev Kamath Date: Sat, 28 Jul 2018 16:56:41 +0000 (+0530) Subject: Add patch to use libssh2 from system X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~37 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ddfe4b08b4d640a28adee38540c0a8fe87849438;p=cargo.git Add patch to use libssh2 from system --- diff --git a/debian/patches/2003_force-use-system-libssh2.patch b/debian/patches/2003_force-use-system-libssh2.patch new file mode 100644 index 000000000..8294f5695 --- /dev/null +++ b/debian/patches/2003_force-use-system-libssh2.patch @@ -0,0 +1,170 @@ +Description: Use libssh2 from system by default +Author: Vasudev Kamath +Bug: https://github.com/alexcrichton/ssh2-rs/issues/88 +Forwarded: not-needed +Last-Update: 2018-07-28 + +--- a/vendor/libssh2-sys-0.2.8/build.rs ++++ b/vendor/libssh2-sys-0.2.8/build.rs +@@ -1,5 +1,5 @@ +-extern crate pkg_config; + extern crate cmake; ++extern crate pkg_config; + + #[cfg(target_env = "msvc")] + extern crate vcpkg; +@@ -7,7 +7,7 @@ + use std::env; + use std::fs::File; + use std::io::prelude::*; +-use std::path::{PathBuf, Path}; ++use std::path::{Path, PathBuf}; + use std::process::Command; + + fn main() { +@@ -21,19 +21,20 @@ + // The system copy of libssh2 is not used by default because it + // can lead to having two copies of libssl loaded at once. + // See https://github.com/alexcrichton/ssh2-rs/pull/88 +- if env::var("LIBSSH2_SYS_USE_PKG_CONFIG").is_ok() { +- if let Ok(lib) = pkg_config::find_library("libssh2") { +- for path in &lib.include_paths { +- println!("cargo:include={}", path.display()); +- } +- return ++ // if env::var("LIBSSH2_SYS_USE_PKG_CONFIG").is_ok() { ++ if let Ok(lib) = pkg_config::find_library("libssh2") { ++ for path in &lib.include_paths { ++ println!("cargo:include={}", path.display()); + } ++ return; + } ++ // } + +- if !Path::new("libssh2/.git").exists() { +- let _ = Command::new("git").args(&["submodule", "update", "--init"]) +- .status(); +- } ++ // if !Path::new("libssh2/.git").exists() { ++ // let _ = Command::new("git") ++ // .args(&["submodule", "update", "--init"]) ++ // .status(); ++ // } + + let mut cfg = cmake::Config::new("libssh2"); + +@@ -50,7 +51,9 @@ + // link to it, and for MinGW targets we just pass a dummy include dir to + // ensure it's detected (apparently it isn't otherwise?) + match env::var_os("DEP_Z_INCLUDE") { +- Some(path) => { cfg.define("ZLIB_INCLUDE_DIR", path); } ++ Some(path) => { ++ cfg.define("ZLIB_INCLUDE_DIR", path); ++ } + None if target.contains("windows-gnu") => { + cfg.define("ZLIB_INCLUDE_DIR", "/"); + } +@@ -68,18 +71,20 @@ + } + + // Homebrew deprecated OpenSSL and deliberately hides it from cmake, requiring such opt-in +- if target.contains("darwin") && Path::new("/usr/local/opt/openssl/include/openssl/ssl.h").exists() { ++ if target.contains("darwin") ++ && Path::new("/usr/local/opt/openssl/include/openssl/ssl.h").exists() ++ { + cfg.define("OPENSSL_ROOT_DIR", "/usr/local/opt/openssl/"); + } + + let dst = cfg.define("BUILD_SHARED_LIBS", "OFF") +- .define("ENABLE_ZLIB_COMPRESSION", "ON") +- .define("CMAKE_INSTALL_LIBDIR", "lib") +- .define("BUILD_EXAMPLES", "OFF") +- .define("BUILD_TESTING", "OFF") +- .register_dep("OPENSSL") +- .register_dep("Z") +- .build(); ++ .define("ENABLE_ZLIB_COMPRESSION", "ON") ++ .define("CMAKE_INSTALL_LIBDIR", "lib") ++ .define("BUILD_EXAMPLES", "OFF") ++ .define("BUILD_TESTING", "OFF") ++ .register_dep("OPENSSL") ++ .register_dep("Z") ++ .build(); + + // Unfortunately the pkg-config file generated for libssh2 indicates + // that it depends on zlib, but most systems don't actually have a +@@ -115,7 +120,7 @@ + fn register_dep(dep: &str) { + if let Some(s) = env::var_os(&format!("DEP_{}_ROOT", dep)) { + prepend("PKG_CONFIG_PATH", Path::new(&s).join("lib/pkgconfig")); +- return ++ return; + } + if let Some(s) = env::var_os(&format!("DEP_{}_INCLUDE", dep)) { + let root = Path::new(&s).parent().unwrap(); +@@ -123,7 +128,7 @@ + let path = root.join("lib/pkgconfig"); + if path.exists() { + prepend("PKG_CONFIG_PATH", path); +- return ++ return; + } + } + } +@@ -136,28 +141,37 @@ + } + + #[cfg(not(target_env = "msvc"))] +-fn try_vcpkg() -> bool { false } ++fn try_vcpkg() -> bool { ++ false ++} + + #[cfg(target_env = "msvc")] + fn try_vcpkg() -> bool { + vcpkg::Config::new() + .emit_includes(true) +- .probe("libssh2").map(|_| { +- +- // found libssh2 which depends on openssl and zlib +- vcpkg::Config::new() +- .lib_name("libeay32") +- .lib_name("ssleay32") +- .probe("openssl").expect("configured libssh2 from vcpkg but could not \ +- find openssl libraries that it depends on"); +- +- vcpkg::Config::new() +- .lib_names("zlib", "zlib1") +- .probe("zlib").expect("configured libssh2 from vcpkg but could not \ +- find the zlib library that it depends on"); +- +- println!("cargo:rustc-link-lib=crypt32"); +- println!("cargo:rustc-link-lib=gdi32"); +- println!("cargo:rustc-link-lib=user32"); +- }).is_ok() ++ .probe("libssh2") ++ .map(|_| { ++ // found libssh2 which depends on openssl and zlib ++ vcpkg::Config::new() ++ .lib_name("libeay32") ++ .lib_name("ssleay32") ++ .probe("openssl") ++ .expect( ++ "configured libssh2 from vcpkg but could not \ ++ find openssl libraries that it depends on", ++ ); ++ ++ vcpkg::Config::new() ++ .lib_names("zlib", "zlib1") ++ .probe("zlib") ++ .expect( ++ "configured libssh2 from vcpkg but could not \ ++ find the zlib library that it depends on", ++ ); ++ ++ println!("cargo:rustc-link-lib=crypt32"); ++ println!("cargo:rustc-link-lib=gdi32"); ++ println!("cargo:rustc-link-lib=user32"); ++ }) ++ .is_ok() + } diff --git a/debian/patches/series b/debian/patches/series index cf49af978..4b77c485c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ 2004_clean-cargo-deps.patch 2001_use-system-libgit2.patch 2002_disable-net-tests.patch +2003_force-use-system-libssh2.patch