Update to version 1.1.12; Fixes RHBZ#2224862

epel9 imports/e9/rust-libz-sys-1.1.12-1.el9
Fabio Valentini 2 years ago
parent 496e4dbf89
commit b002825f28
No known key found for this signature in database
GPG Key ID: 5AC5F572E5D410AF

1
.gitignore vendored

@ -11,3 +11,4 @@
/libz-sys-1.1.6.crate /libz-sys-1.1.6.crate
/libz-sys-1.1.8.crate /libz-sys-1.1.8.crate
/libz-sys-1.1.9.crate /libz-sys-1.1.9.crate
/libz-sys-1.1.12.crate

@ -0,0 +1,277 @@
From 1d8cd791f014ff2a3e043730eaaaf3b7c5be114f Mon Sep 17 00:00:00 2001
From: Fabio Valentini <decathorpe@gmail.com>
Date: Sat, 29 Jul 2023 16:48:39 +0200
Subject: [PATCH] unconditionally use pkg-config to link with system zlib
---
build.rs | 188 ++-------------------------------------------------
build_zng.rs | 60 ----------------
2 files changed, 5 insertions(+), 243 deletions(-)
delete mode 100644 build_zng.rs
diff --git a/build.rs b/build.rs
index 51ebe6b..8d1acf7 100644
--- a/build.rs
+++ b/build.rs
@@ -1,187 +1,9 @@
-use std::env;
-use std::fs;
-use std::path::PathBuf;
-
fn main() {
- println!("cargo:rerun-if-env-changed=LIBZ_SYS_STATIC");
println!("cargo:rerun-if-changed=build.rs");
- let host = env::var("HOST").unwrap();
- let target = env::var("TARGET").unwrap();
-
- let host_and_target_contain = |s| host.contains(s) && target.contains(s);
-
- let want_ng = cfg!(feature = "zlib-ng") && !cfg!(feature = "stock-zlib");
-
- if want_ng && target != "wasm32-unknown-unknown" {
- return build_zlib_ng(&target, true);
- }
-
- // Don't run pkg-config if we're linking statically (we'll build below) and
- // also don't run pkg-config on FreeBSD/DragonFly. That'll end up printing
- // `-L /usr/lib` which wreaks havoc with linking to an OpenSSL in /usr/local/lib
- // (Ports, etc.)
- let want_static =
- cfg!(feature = "static") || env::var("LIBZ_SYS_STATIC").unwrap_or(String::new()) == "1";
- if !want_static &&
- !target.contains("msvc") && // pkg-config just never works here
- !(host_and_target_contain("freebsd") ||
- host_and_target_contain("dragonfly"))
- {
- // Don't print system lib dirs to cargo since this interferes with other
- // packages adding non-system search paths to link against libraries
- // that are also found in a system-wide lib dir.
- let zlib = pkg_config::Config::new()
- .cargo_metadata(true)
- .print_system_libs(false)
- .probe("zlib");
- match zlib {
- Ok(_) => return,
- Err(e) => {
- println!("cargo-warning={}", e.to_string())
- }
- }
- }
-
- if target.contains("windows") {
- if try_vcpkg() {
- return;
- }
- }
-
- // All android compilers should come with libz by default, so let's just use
- // the one already there. Likewise, Haiku always ships with libz, so we can
- // link to it even when cross-compiling.
- if target.contains("android") || target.contains("haiku") {
- println!("cargo:rustc-link-lib=z");
- return;
- }
-
- let mut cfg = cc::Build::new();
-
- // Situations where we build unconditionally.
- //
- // MSVC basically never has it preinstalled, MinGW picks up a bunch of weird
- // paths we don't like, `want_static` may force us, and cross compiling almost
- // never has a prebuilt version.
- //
- // Apple platforms have libz.1.dylib, and it's usually available even when
- // cross compiling (via fat binary or in the target's Xcode SDK)
- let cross_compiling = target != host;
- let apple_to_apple = host.contains("-apple-") && target.contains("-apple-");
- if target.contains("msvc")
- || target.contains("pc-windows-gnu")
- || want_static
- || (cross_compiling && !apple_to_apple)
- {
- return build_zlib(&mut cfg, &target);
- }
-
- // If we've gotten this far we're probably a pretty standard platform.
- // Almost all platforms here ship libz by default, but some don't have
- // pkg-config files that we would find above.
- //
- // In any case test if zlib is actually installed and if so we link to it,
- // otherwise continue below to build things.
- if zlib_installed(&mut cfg) {
- println!("cargo:rustc-link-lib=z");
- return;
- }
-
- build_zlib(&mut cfg, &target)
-}
-
-fn build_zlib(cfg: &mut cc::Build, target: &str) {
- let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());
- let lib = dst.join("lib");
-
- cfg.warnings(false).out_dir(&lib).include("src/zlib");
-
- cfg.file("src/zlib/adler32.c")
- .file("src/zlib/compress.c")
- .file("src/zlib/crc32.c")
- .file("src/zlib/deflate.c")
- .file("src/zlib/infback.c")
- .file("src/zlib/inffast.c")
- .file("src/zlib/inflate.c")
- .file("src/zlib/inftrees.c")
- .file("src/zlib/trees.c")
- .file("src/zlib/uncompr.c")
- .file("src/zlib/zutil.c");
-
- if !cfg!(feature = "libc") || target.starts_with("wasm32") {
- cfg.define("Z_SOLO", None);
- } else {
- cfg.file("src/zlib/gzclose.c")
- .file("src/zlib/gzlib.c")
- .file("src/zlib/gzread.c")
- .file("src/zlib/gzwrite.c");
- }
-
- if !target.contains("windows") {
- cfg.define("STDC", None);
- cfg.define("_LARGEFILE64_SOURCE", None);
- cfg.define("_POSIX_SOURCE", None);
- cfg.flag("-fvisibility=hidden");
- }
- if target.contains("apple") {
- cfg.define("_C99_SOURCE", None);
- }
- if target.contains("solaris") {
- cfg.define("_XOPEN_SOURCE", "700");
- }
-
- cfg.compile("z");
-
- fs::create_dir_all(dst.join("include")).unwrap();
- fs::copy("src/zlib/zlib.h", dst.join("include/zlib.h")).unwrap();
- fs::copy("src/zlib/zconf.h", dst.join("include/zconf.h")).unwrap();
-
- fs::create_dir_all(lib.join("pkgconfig")).unwrap();
- fs::write(
- lib.join("pkgconfig/zlib.pc"),
- fs::read_to_string("src/zlib/zlib.pc.in")
- .unwrap()
- .replace("@prefix@", dst.to_str().unwrap()),
- )
- .unwrap();
-
- println!("cargo:root={}", dst.to_str().unwrap());
- println!("cargo:rustc-link-search=native={}", lib.to_str().unwrap());
- println!("cargo:include={}/include", dst.to_str().unwrap());
-}
-
-#[cfg(not(feature = "zlib-ng"))]
-fn build_zlib_ng(_target: &str, _compat: bool) {}
-
-#[cfg(feature = "zlib-ng")]
-mod build_zng;
-#[cfg(feature = "zlib-ng")]
-use build_zng::build_zlib_ng;
-
-fn try_vcpkg() -> bool {
- // see if there is a vcpkg tree with zlib installed
- match vcpkg::Config::new()
- .emit_includes(true)
- .find_package("zlib")
- {
- Ok(_) => true,
- Err(e) => {
- println!("note, vcpkg did not find zlib: {}", e);
- false
- }
- }
-}
-
-fn zlib_installed(cfg: &mut cc::Build) -> bool {
- let mut cmd = cfg.get_compiler().to_command();
- cmd.arg("src/smoke.c").arg("-o").arg("/dev/null").arg("-lz");
-
- println!("running {:?}", cmd);
- if let Ok(status) = cmd.status() {
- if status.success() {
- return true;
- }
- }
- false
+ pkg_config::Config::new()
+ .cargo_metadata(true)
+ .print_system_libs(false)
+ .probe("zlib")
+ .unwrap();
}
diff --git a/build_zng.rs b/build_zng.rs
deleted file mode 100644
index 2557625..0000000
--- a/build_zng.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-use std::env;
-
-pub fn build_zlib_ng(target: &str, compat: bool) {
- let mut cmake = cmake::Config::new("src/zlib-ng");
- cmake
- .define("BUILD_SHARED_LIBS", "OFF")
- .define("ZLIB_COMPAT", if compat { "ON" } else { "OFF" })
- .define("ZLIB_ENABLE_TESTS", "OFF")
- .define("WITH_GZFILEOP", "ON");
- if target.contains("s390x") {
- // Enable hardware compression on s390x.
- cmake
- .define("WITH_DFLTCC_DEFLATE", "1")
- .define("WITH_DFLTCC_INFLATE", "1")
- .cflag("-DDFLTCC_LEVEL_MASK=0x7e");
- }
- if target == "i686-pc-windows-msvc" {
- cmake.define("CMAKE_GENERATOR_PLATFORM", "Win32");
- }
-
- let install_dir = cmake.build();
-
- let includedir = install_dir.join("include");
- let libdir = install_dir.join("lib");
- let libdir64 = install_dir.join("lib64");
- println!(
- "cargo:rustc-link-search=native={}",
- libdir.to_str().unwrap()
- );
- println!(
- "cargo:rustc-link-search=native={}",
- libdir64.to_str().unwrap()
- );
- let mut debug_suffix = "";
- let libname = if target.contains("windows") && target.contains("msvc") {
- if env::var("OPT_LEVEL").unwrap() == "0" {
- debug_suffix = "d";
- }
- "zlibstatic"
- } else {
- "z"
- };
- println!(
- "cargo:rustc-link-lib=static={}{}{}",
- libname,
- if compat { "" } else { "-ng" },
- debug_suffix,
- );
- println!("cargo:root={}", install_dir.to_str().unwrap());
- println!("cargo:include={}", includedir.to_str().unwrap());
- if !compat {
- println!("cargo:rustc-cfg=zng");
- }
-}
-
-#[allow(dead_code)]
-fn main() {
- let target = env::var("TARGET").unwrap();
- build_zlib_ng(&target, false);
-}
--
2.41.0

@ -1,8 +0,0 @@
--- libz-sys-1.1.9/Cargo.toml 1970-01-01T00:00:01+00:00
+++ libz-sys-1.1.9/Cargo.toml 2023-05-01T11:31:00.134761+00:00
@@ -66,5 +66,3 @@
"cmake",
]
-[target."cfg(target_env = \"msvc\")".build-dependencies.vcpkg]
-version = "0.2"

@ -1,6 +1,6 @@
--- libz-sys-1.1.9/Cargo.toml 1970-01-01T00:00:01+00:00 --- libz-sys-1.1.12/Cargo.toml 1970-01-01T00:00:01+00:00
+++ libz-sys-1.1.9/Cargo.toml 2023-05-01T11:31:33.242720+00:00 +++ libz-sys-1.1.12/Cargo.toml 2023-07-29T14:43:10.223812+00:00
@@ -46,23 +46,12 @@ @@ -47,25 +47,12 @@
[build-dependencies.cc] [build-dependencies.cc]
version = "1.0.18" version = "1.0.18"
@ -11,6 +11,9 @@
[build-dependencies.pkg-config] [build-dependencies.pkg-config]
version = "0.3.9" version = "0.3.9"
-[build-dependencies.vcpkg]
-version = "0.2"
-
[features] [features]
-asm = [] -asm = []
default = [ default = [
@ -23,4 +26,3 @@
- "libc", - "libc",
- "cmake", - "cmake",
-] -]
-

@ -5,18 +5,19 @@
%global crate libz-sys %global crate libz-sys
Name: rust-libz-sys Name: rust-libz-sys
Version: 1.1.9 Version: 1.1.12
Release: %autorelease Release: %autorelease
Summary: Low-level bindings to the system libz library (also known as zlib) Summary: Low-level bindings to the system libz library (also known as zlib)
License: MIT OR Apache-2.0 License: MIT OR Apache-2.0
URL: https://crates.io/crates/libz-sys URL: https://crates.io/crates/libz-sys
Source: %{crates_source} Source: %{crates_source}
# Automatically generated patch to strip foreign dependencies
Patch: libz-sys-fix-metadata-auto.diff
# Manually created patch for downstream crate metadata changes # Manually created patch for downstream crate metadata changes
# * drop features for zlib-ng, static linking, and unavailalbe asm optimizations # * drop features for zlib-ng, static linking, and unavailalbe asm optimizations
Patch: libz-sys-fix-metadata.diff Patch: libz-sys-fix-metadata.diff
# * remove code related to building vendored zlib / zlib-ng sources
# * unconditionally use pkg-config to link with system libz
Patch: 0001-unconditionally-use-pkg-config-to-link-with-system-z.patch
BuildRequires: rust-packaging >= 21 BuildRequires: rust-packaging >= 21

@ -1 +1 @@
SHA512 (libz-sys-1.1.9.crate) = 0d474b79aa55f1cdda8f52c87fd2cde84da80db5e18485b3e6845d40c49c6f3b3b92ae73e286b06acbc0e05f36ef3975231fb57e1b5b6546ad90a46752fa88b2 SHA512 (libz-sys-1.1.12.crate) = 03daeb5f03193887b692cbe8d631c83ac632f3e92fca4f10e881058fea38d85e11c090de04be9d70d52a22dec669474a0044a3d45d4adeb3a0f39e3398cdac11

Loading…
Cancel
Save