commit c11b6dbc742f8cae64266dd1c8d086b5ecbd5a00 Author: MSVSphere Packaging Team Date: Fri Dec 20 15:15:07 2024 +0300 import rust-curl-sys-0.4.77-1.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..31258b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/curl-sys-0.4.77+curl-8.10.1.crate diff --git a/.rust-curl-sys.metadata b/.rust-curl-sys.metadata new file mode 100644 index 0000000..338e391 --- /dev/null +++ b/.rust-curl-sys.metadata @@ -0,0 +1 @@ +6cc48be9229b3e5f6a4a5408931957835a958ada SOURCES/curl-sys-0.4.77+curl-8.10.1.crate diff --git a/SOURCES/0001-unconditionally-use-pkg-config-to-link-with-system-l.patch b/SOURCES/0001-unconditionally-use-pkg-config-to-link-with-system-l.patch new file mode 100644 index 0000000..97303da --- /dev/null +++ b/SOURCES/0001-unconditionally-use-pkg-config-to-link-with-system-l.patch @@ -0,0 +1,645 @@ +From b20169c69e40a568c510e39b24ef5c844f81ce25 Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Mon, 7 Oct 2024 21:24:01 +0200 +Subject: [PATCH] unconditionally use pkg-config to link with system libcurl + +--- + build.rs | 599 +------------------------------------------------------ + 1 file changed, 5 insertions(+), 594 deletions(-) + +diff --git a/build.rs b/build.rs +index fa57dd9..497789c 100644 +--- a/build.rs ++++ b/build.rs +@@ -1,623 +1,34 @@ +-use std::env; +-use std::fs; +-use std::path::{Path, PathBuf}; + use std::process::Command; + + fn main() { +- println!("cargo:rerun-if-changed=curl"); +- println!( +- "cargo:rustc-check-cfg=cfg(\ +- libcurl_vendored,\ +- link_libnghttp2,\ +- link_libz,\ +- link_openssl,\ +- )" +- ); +- let target = env::var("TARGET").unwrap(); +- let windows = target.contains("windows"); +- +- if cfg!(feature = "mesalink") { +- println!("cargo:warning=MesaLink support has been removed as of curl 7.82.0, will use default TLS backend instead."); +- } +- +- // This feature trumps all others, and is largely set by rustbuild to force +- // usage of the system library to ensure that we're always building an +- // ABI-compatible Cargo. +- if cfg!(feature = "force-system-lib-on-osx") && target.contains("apple") { +- return println!("cargo:rustc-flags=-l curl"); +- } +- +- // If the static-curl feature is disabled, probe for a system-wide libcurl. +- if !cfg!(feature = "static-curl") { +- // OSX ships libcurl by default, so we just use that version +- // so long as it has the right features enabled. +- if target.contains("apple") && (!cfg!(feature = "http2") || curl_config_reports_http2()) { +- return println!("cargo:rustc-flags=-l curl"); +- } +- +- // Next, fall back and try to use pkg-config if its available. +- if windows { +- if try_vcpkg() { +- return; +- } +- } else if try_pkg_config() { +- return; +- } +- } +- +- if !Path::new("curl/.git").exists() { +- let _ = Command::new("git") +- .args(&["submodule", "update", "--init", "curl"]) +- .status(); +- } +- +- if target.contains("apple") { +- // On (older) OSX we need to link against the clang runtime, +- // which is hidden in some non-default path. +- // +- // More details at https://github.com/alexcrichton/curl-rust/issues/279. +- if let Some(path) = macos_link_search_path() { +- println!("cargo:rustc-link-lib=clang_rt.osx"); +- println!("cargo:rustc-link-search={}", path); +- } +- } +- +- let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap()); +- let include = dst.join("include"); +- let build = dst.join("build"); +- println!("cargo:root={}", dst.display()); +- println!("cargo:include={}", include.display()); +- println!("cargo:static=1"); +- println!("cargo:rustc-cfg=libcurl_vendored"); +- fs::create_dir_all(include.join("curl")).unwrap(); +- +- for header in [ +- "curl.h", +- "curlver.h", +- "easy.h", +- "options.h", +- "header.h", +- "mprintf.h", +- "multi.h", +- "stdcheaders.h", +- "system.h", +- "urlapi.h", +- "typecheck-gcc.h", +- "websockets.h", +- ] +- .iter() +- { +- fs::copy( +- format!("curl/include/curl/{}", header), +- include.join("curl").join(header), +- ) +- .unwrap(); +- } +- +- let pkgconfig = dst.join("lib/pkgconfig"); +- fs::create_dir_all(&pkgconfig).unwrap(); +- let contents = fs::read_to_string("curl/libcurl.pc.in").unwrap(); +- fs::write( +- pkgconfig.join("libcurl.pc"), +- contents +- .replace("@prefix@", dst.to_str().unwrap()) +- .replace("@exec_prefix@", "") +- .replace("@libdir@", dst.join("lib").to_str().unwrap()) +- .replace("@includedir@", include.to_str().unwrap()) +- .replace("@CPPFLAG_CURL_STATICLIB@", "-DCURL_STATICLIB") +- .replace("@LIBCURL_LIBS@", "") +- .replace("@SUPPORT_FEATURES@", "") +- .replace("@SUPPORT_PROTOCOLS@", "") +- .replace("@CURLVERSION@", "8.10.1"), +- ) +- .unwrap(); +- +- let mut cfg = cc::Build::new(); +- cfg.out_dir(&build) +- .include("curl/lib") +- .include("curl/include") +- .define("BUILDING_LIBCURL", None) +- .define("CURL_DISABLE_DICT", None) +- .define("CURL_DISABLE_GOPHER", None) +- .define("CURL_DISABLE_IMAP", None) +- .define("CURL_DISABLE_LDAP", None) +- .define("CURL_DISABLE_LDAPS", None) +- .define("CURL_DISABLE_POP3", None) +- .define("CURL_DISABLE_RTSP", None) +- .define("CURL_DISABLE_SMB", None) +- .define("CURL_DISABLE_SMTP", None) +- .define("CURL_DISABLE_TELNET", None) +- .define("CURL_DISABLE_TFTP", None) +- .define("CURL_STATICLIB", None) +- .define("ENABLE_IPV6", None) +- .define("HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID", None) +- .define("HAVE_ASSERT_H", None) +- .define("OS", "\"unknown\"") // TODO +- .define("HAVE_ZLIB_H", None) +- .define("HAVE_LONGLONG", None) +- .define("HAVE_LIBZ", None) +- .define("HAVE_BOOL_T", None) +- .define("HAVE_STDBOOL_H", None) +- .file("curl/lib/asyn-thread.c") +- .file("curl/lib/altsvc.c") +- .file("curl/lib/base64.c") +- .file("curl/lib/bufq.c") +- .file("curl/lib/bufref.c") +- .file("curl/lib/cfilters.c") +- .file("curl/lib/cf-h1-proxy.c") +- .file("curl/lib/cf-haproxy.c") +- .file("curl/lib/cf-https-connect.c") +- .file("curl/lib/cf-socket.c") +- .file("curl/lib/conncache.c") +- .file("curl/lib/connect.c") +- .file("curl/lib/content_encoding.c") +- .file("curl/lib/cookie.c") +- .file("curl/lib/curl_addrinfo.c") +- .file("curl/lib/curl_get_line.c") +- .file("curl/lib/curl_memrchr.c") +- .file("curl/lib/curl_range.c") +- .file("curl/lib/curl_sha512_256.c") +- .file("curl/lib/curl_threads.c") +- .file("curl/lib/curl_trc.c") +- .file("curl/lib/cw-out.c") +- .file("curl/lib/doh.c") +- .file("curl/lib/dynbuf.c") +- .file("curl/lib/dynhds.c") +- .file("curl/lib/easy.c") +- .file("curl/lib/escape.c") +- .file("curl/lib/file.c") +- .file("curl/lib/fileinfo.c") +- .file("curl/lib/fopen.c") +- .file("curl/lib/formdata.c") +- .file("curl/lib/getenv.c") +- .file("curl/lib/getinfo.c") +- .file("curl/lib/hash.c") +- .file("curl/lib/headers.c") +- .file("curl/lib/hmac.c") +- .file("curl/lib/hostasyn.c") +- .file("curl/lib/hostip.c") +- .file("curl/lib/hostip6.c") +- .file("curl/lib/hsts.c") +- .file("curl/lib/http.c") +- .file("curl/lib/http1.c") +- .file("curl/lib/http_aws_sigv4.c") +- .file("curl/lib/http_chunks.c") +- .file("curl/lib/http_digest.c") +- .file("curl/lib/http_proxy.c") +- .file("curl/lib/idn.c") +- .file("curl/lib/if2ip.c") +- .file("curl/lib/inet_ntop.c") +- .file("curl/lib/inet_pton.c") +- .file("curl/lib/llist.c") +- .file("curl/lib/md5.c") +- .file("curl/lib/mime.c") +- .file("curl/lib/macos.c") +- .file("curl/lib/mprintf.c") +- .file("curl/lib/mqtt.c") +- .file("curl/lib/multi.c") +- .file("curl/lib/netrc.c") +- .file("curl/lib/nonblock.c") +- .file("curl/lib/noproxy.c") +- .file("curl/lib/parsedate.c") +- .file("curl/lib/progress.c") +- .file("curl/lib/rand.c") +- .file("curl/lib/rename.c") +- .file("curl/lib/request.c") +- .file("curl/lib/select.c") +- .file("curl/lib/sendf.c") +- .file("curl/lib/setopt.c") +- .file("curl/lib/sha256.c") +- .file("curl/lib/share.c") +- .file("curl/lib/slist.c") +- .file("curl/lib/socks.c") +- .file("curl/lib/socketpair.c") +- .file("curl/lib/speedcheck.c") +- .file("curl/lib/splay.c") +- .file("curl/lib/strcase.c") +- .file("curl/lib/strdup.c") +- .file("curl/lib/strerror.c") +- .file("curl/lib/strtok.c") +- .file("curl/lib/strtoofft.c") +- .file("curl/lib/timeval.c") +- .file("curl/lib/transfer.c") +- .file("curl/lib/url.c") +- .file("curl/lib/urlapi.c") +- .file("curl/lib/version.c") +- .file("curl/lib/vauth/digest.c") +- .file("curl/lib/vauth/vauth.c") +- .file("curl/lib/vquic/curl_msh3.c") +- .file("curl/lib/vquic/curl_ngtcp2.c") +- .file("curl/lib/vquic/curl_osslq.c") +- .file("curl/lib/vquic/curl_quiche.c") +- .file("curl/lib/vquic/vquic.c") +- .file("curl/lib/vquic/vquic-tls.c") +- .file("curl/lib/vtls/hostcheck.c") +- .file("curl/lib/vtls/keylog.c") +- .file("curl/lib/vtls/vtls.c") +- .file("curl/lib/warnless.c") +- .file("curl/lib/timediff.c") +- .define("HAVE_GETADDRINFO", None) +- .define("HAVE_GETPEERNAME", None) +- .define("HAVE_GETSOCKNAME", None) +- .warnings(false); +- +- if cfg!(feature = "ntlm") { +- cfg.file("curl/lib/curl_des.c") +- .file("curl/lib/curl_endian.c") +- .file("curl/lib/curl_gethostname.c") +- .file("curl/lib/curl_ntlm_core.c") +- .file("curl/lib/http_ntlm.c") +- .file("curl/lib/md4.c") +- .file("curl/lib/vauth/ntlm.c") +- .file("curl/lib/vauth/ntlm_sspi.c"); +- } else { +- cfg.define("CURL_DISABLE_NTLM", None); +- } +- +- if cfg!(feature = "protocol-ftp") { +- cfg.file("curl/lib/curl_fnmatch.c") +- .file("curl/lib/ftp.c") +- .file("curl/lib/ftplistparser.c") +- .file("curl/lib/pingpong.c"); +- } else { +- cfg.define("CURL_DISABLE_FTP", None); +- } +- +- if cfg!(feature = "http2") { +- cfg.define("USE_NGHTTP2", None) +- .define("NGHTTP2_STATICLIB", None) +- .file("curl/lib/cf-h2-proxy.c") +- .file("curl/lib/http2.c"); +- +- println!("cargo:rustc-cfg=link_libnghttp2"); +- if let Some(path) = env::var_os("DEP_NGHTTP2_ROOT") { +- let path = PathBuf::from(path); +- cfg.include(path.join("include")); +- } +- } +- +- println!("cargo:rustc-cfg=link_libz"); +- if let Some(path) = env::var_os("DEP_Z_INCLUDE") { +- cfg.include(path); +- } +- +- if cfg!(feature = "spnego") { +- cfg.define("USE_SPNEGO", None) +- .file("curl/lib/http_negotiate.c") +- .file("curl/lib/vauth/vauth.c"); +- } +- +- // Configure TLS backend. Since Cargo does not support mutually exclusive +- // features, make sure we only compile one vtls. +- if cfg!(feature = "rustls") { +- cfg.define("USE_RUSTLS", None) +- .file("curl/lib/vtls/cipher_suite.c") +- .file("curl/lib/vtls/rustls.c") +- .include(env::var_os("DEP_RUSTLS_FFI_INCLUDE").unwrap()); +- } else if cfg!(feature = "windows-static-ssl") { +- if windows { +- cfg.define("USE_OPENSSL", None) +- .file("curl/lib/vtls/openssl.c"); +- // We need both openssl and zlib +- // Those can be installed with +- // ```shell +- // git clone https://github.com/microsoft/vcpkg +- // cd vcpkg +- // ./bootstrap-vcpkg.bat -disableMetrics +- // ./vcpkg.exe integrate install +- // ./vcpkg.exe install openssl:x64-windows-static-md +- // ``` +- #[cfg(target_env = "msvc")] +- vcpkg::Config::new().find_package("openssl").ok(); +- #[cfg(target_env = "msvc")] +- vcpkg::Config::new().find_package("zlib").ok(); +- } else { +- panic!("Not available on non windows platform") +- } +- } else if cfg!(feature = "ssl") { +- if windows { +- // For windows, spnego feature is auto on in case ssl feature is on. +- // Please see definition of USE_SPNEGO in curl_setup.h for more info. +- cfg.define("USE_WINDOWS_SSPI", None) +- .define("USE_SCHANNEL", None) +- .file("curl/lib/http_negotiate.c") +- .file("curl/lib/curl_sspi.c") +- .file("curl/lib/socks_sspi.c") +- .file("curl/lib/vauth/spnego_sspi.c") +- .file("curl/lib/vauth/vauth.c") +- .file("curl/lib/vtls/schannel.c") +- .file("curl/lib/vtls/schannel_verify.c") +- .file("curl/lib/vtls/x509asn1.c"); +- } else if target.contains("-apple-") { +- cfg.define("USE_SECTRANSP", None) +- .file("curl/lib/vtls/cipher_suite.c") +- .file("curl/lib/vtls/sectransp.c") +- .file("curl/lib/vtls/x509asn1.c"); +- if xcode_major_version().map_or(true, |v| v >= 9) { +- // On earlier Xcode versions (<9), defining HAVE_BUILTIN_AVAILABLE +- // would cause __bultin_available() to fail to compile due to +- // unrecognized platform names, so we try to check for Xcode +- // version first (if unknown, assume it's recent, as in >= 9). +- cfg.define("HAVE_BUILTIN_AVAILABLE", "1"); +- } +- } else { +- cfg.define("USE_OPENSSL", None) +- .file("curl/lib/vtls/openssl.c"); +- +- println!("cargo:rustc-cfg=link_openssl"); +- if let Some(path) = env::var_os("DEP_OPENSSL_INCLUDE") { +- cfg.include(path); +- } +- } +- } +- +- // Configure platform-specific details. +- if windows { +- cfg.define("WIN32", None) +- .define("USE_THREADS_WIN32", None) +- .define("HAVE_IOCTLSOCKET_FIONBIO", None) +- .define("USE_WINSOCK", None) +- .file("curl/lib/bufref.c") +- .file("curl/lib/system_win32.c") +- .file("curl/lib/version_win32.c") +- .file("curl/lib/vauth/digest_sspi.c") +- .file("curl/lib/curl_multibyte.c"); +- +- if cfg!(feature = "spnego") { +- cfg.file("curl/lib/vauth/spnego_sspi.c"); +- } +- } else { +- cfg.define("RECV_TYPE_ARG1", "int") +- .define("HAVE_PTHREAD_H", None) +- .define("HAVE_ARPA_INET_H", None) +- .define("HAVE_ERRNO_H", None) +- .define("HAVE_FCNTL_H", None) +- .define("HAVE_NETDB_H", None) +- .define("HAVE_NETINET_IN_H", None) +- .define("HAVE_NETINET_TCP_H", None) +- .define("HAVE_POLL_H", None) +- .define("HAVE_FCNTL_O_NONBLOCK", None) +- .define("HAVE_SYS_SELECT_H", None) +- .define("HAVE_SYS_STAT_H", None) +- .define("HAVE_SYS_TIME_H", None) +- .define("HAVE_UNISTD_H", None) +- .define("HAVE_RECV", None) +- .define("HAVE_SELECT", None) +- .define("HAVE_SEND", None) +- .define("HAVE_SOCKET", None) +- .define("HAVE_STERRROR_R", None) +- .define("HAVE_SOCKETPAIR", None) +- .define("HAVE_STRUCT_TIMEVAL", None) +- .define("HAVE_SYS_UN_H", None) +- .define("USE_THREADS_POSIX", None) +- .define("USE_UNIX_SOCKETS", None) +- .define("RECV_TYPE_ARG2", "void*") +- .define("RECV_TYPE_ARG3", "size_t") +- .define("RECV_TYPE_ARG4", "int") +- .define("RECV_TYPE_RETV", "ssize_t") +- .define("SEND_QUAL_ARG2", "const") +- .define("SEND_TYPE_ARG1", "int") +- .define("SEND_TYPE_ARG2", "void*") +- .define("SEND_TYPE_ARG3", "size_t") +- .define("SEND_TYPE_ARG4", "int") +- .define("SEND_TYPE_RETV", "ssize_t") +- .define("SIZEOF_CURL_OFF_T", "8") +- .define("SIZEOF_INT", "4") +- .define("SIZEOF_SHORT", "2"); +- +- if target.contains("-apple-") { +- cfg.define("__APPLE__", None) +- .define("HAVE_MACH_ABSOLUTE_TIME", None); +- } else { +- cfg.define("HAVE_CLOCK_GETTIME_MONOTONIC", None) +- .define("HAVE_GETTIMEOFDAY", None) +- // poll() on various versions of macOS are janky, so only use it +- // on non-macOS unix-likes. This matches the official default +- // build configuration as well. +- .define("HAVE_POLL_FINE", None); +- } +- +- if cfg!(feature = "spnego") { +- cfg.define("HAVE_GSSAPI", None) +- .file("curl/lib/curl_gssapi.c") +- .file("curl/lib/socks_gssapi.c") +- .file("curl/lib/vauth/spnego_gssapi.c"); +- if let Some(path) = env::var_os("GSSAPI_ROOT") { +- let path = PathBuf::from(path); +- cfg.include(path.join("include")); +- } +- +- // Link against the MIT gssapi library. It might be desirable to add support for +- // choosing between MIT and Heimdal libraries in the future. +- println!("cargo:rustc-link-lib=gssapi_krb5"); +- } +- +- let width = env::var("CARGO_CFG_TARGET_POINTER_WIDTH") +- .unwrap() +- .parse::() +- .unwrap(); +- cfg.define("SIZEOF_SSIZE_T", Some(&(width / 8).to_string()[..])); +- cfg.define("SIZEOF_SIZE_T", Some(&(width / 8).to_string()[..])); +- cfg.define("SIZEOF_LONG", Some(&(width / 8).to_string()[..])); +- +- cfg.flag("-fvisibility=hidden"); +- } +- +- cfg.compile("curl"); +- +- if windows { +- println!("cargo:rustc-link-lib=ws2_32"); +- println!("cargo:rustc-link-lib=crypt32"); +- } +- +- // Illumos/Solaris requires explicit linking with libnsl +- if target.contains("solaris") { +- println!("cargo:rustc-link-lib=nsl"); +- } +- +- if target.contains("-apple-") { +- println!("cargo:rustc-link-lib=framework=Security"); +- println!("cargo:rustc-link-lib=framework=CoreFoundation"); +- println!("cargo:rustc-link-lib=framework=CoreServices"); +- println!("cargo:rustc-link-lib=framework=SystemConfiguration"); +- } +-} +- +-#[cfg(not(target_env = "msvc"))] +-fn try_vcpkg() -> bool { +- false +-} +- +-#[cfg(target_env = "msvc")] +-fn try_vcpkg() -> bool { +- // the import library for the dll is called libcurl_imp +- let mut successful_probe_details = match vcpkg::Config::new() +- .lib_names("libcurl_imp", "libcurl") +- .emit_includes(true) +- .probe("curl") +- { +- Ok(details) => Some(details), +- Err(e) => { +- println!("first run of vcpkg did not find libcurl: {}", e); +- None +- } +- }; +- +- if successful_probe_details.is_none() { +- match vcpkg::Config::new() +- .lib_name("libcurl") +- .emit_includes(true) +- .probe("curl") +- { +- Ok(details) => successful_probe_details = Some(details), +- Err(e) => println!("second run of vcpkg did not find libcurl: {}", e), +- } +- } +- +- if successful_probe_details.is_some() { +- // Found libcurl which depends on openssl, libssh2 and zlib +- // in the a default vcpkg installation. Probe for them +- // but do not fail if they are not present as we may be working +- // with a customized vcpkg installation. +- vcpkg::Config::new() +- .lib_name("libeay32") +- .lib_name("ssleay32") +- .probe("openssl") +- .ok(); +- +- vcpkg::probe_package("libssh2").ok(); +- +- vcpkg::Config::new() +- .lib_names("zlib", "zlib1") +- .probe("zlib") +- .ok(); +- +- println!("cargo:rustc-link-lib=crypt32"); +- println!("cargo:rustc-link-lib=gdi32"); +- println!("cargo:rustc-link-lib=user32"); +- println!("cargo:rustc-link-lib=wldap32"); +- return true; +- } +- false ++ try_pkg_config(); + } + +-fn try_pkg_config() -> bool { ++fn try_pkg_config() { + let mut cfg = pkg_config::Config::new(); + cfg.cargo_metadata(false); +- let lib = match cfg.probe("libcurl") { +- Ok(lib) => lib, +- Err(e) => { +- println!( +- "Couldn't find libcurl from pkgconfig ({:?}), \ +- compiling it from source...", +- e +- ); +- return false; +- } +- }; ++ let lib = cfg.probe("libcurl").unwrap(); + +- // Not all system builds of libcurl have http2 features enabled, so if we've +- // got a http2-requested build then we may fall back to a build from source. + if cfg!(feature = "http2") && !curl_config_reports_http2() { +- return false; ++ panic!("System libcurl was built without HTTP/2 support."); + } + +- // Re-find the library to print cargo's metadata, then print some extra +- // metadata as well. + cfg.cargo_metadata(true).probe("libcurl").unwrap(); + for path in lib.include_paths.iter() { + println!("cargo:include={}", path.display()); + } +- true +-} +- +-fn xcode_major_version() -> Option { +- let status = Command::new("xcode-select").arg("-p").status().ok()?; +- if status.success() { +- let output = Command::new("xcodebuild").arg("-version").output().ok()?; +- if output.status.success() { +- let stdout = String::from_utf8_lossy(&output.stdout); +- println!("xcode version: {}", stdout); +- let mut words = stdout.split_whitespace(); +- if words.next()? == "Xcode" { +- let version = words.next()?; +- return version[..version.find('.')?].parse().ok(); +- } +- } +- } +- println!("unable to determine Xcode version, assuming >= 9"); +- None + } + + fn curl_config_reports_http2() -> bool { +- let output = Command::new("curl-config").arg("--features").output(); +- let output = match output { +- Ok(out) => out, +- Err(e) => { +- println!("failed to run curl-config ({}), building from source", e); +- return false; +- } +- }; ++ let output = Command::new("curl-config").arg("--features").output().unwrap(); + if !output.status.success() { + println!("curl-config failed: {}", output.status); + return false; + } + let stdout = String::from_utf8_lossy(&output.stdout); + if !stdout.contains("HTTP2") { +- println!( +- "failed to find http-2 feature enabled in pkg-config-found \ +- libcurl, building from source" +- ); + return false; + } + + true + } +- +-fn macos_link_search_path() -> Option { +- let output = cc::Build::new() +- .get_compiler() +- .to_command() +- .arg("--print-search-dirs") +- .output() +- .ok()?; +- if !output.status.success() { +- println!( +- "failed to run 'clang --print-search-dirs', continuing without a link search path" +- ); +- return None; +- } +- +- let stdout = String::from_utf8_lossy(&output.stdout); +- for line in stdout.lines() { +- if line.contains("libraries: =") { +- let path = line.split('=').nth(1)?; +- if !path.is_empty() { +- return Some(format!("{}/lib/darwin", path)); +- } +- } +- } +- +- println!("failed to determine link search path, continuing without it"); +- None +-} +-- +2.46.2 + diff --git a/SOURCES/curl-sys-fix-metadata-auto.diff b/SOURCES/curl-sys-fix-metadata-auto.diff new file mode 100644 index 0000000..13a2f8b --- /dev/null +++ b/SOURCES/curl-sys-fix-metadata-auto.diff @@ -0,0 +1,21 @@ +--- curl-sys-0.4.77+curl-8.10.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ curl-sys-0.4.77+curl-8.10.1/Cargo.toml 2024-10-07T19:20:21.308338+00:00 +@@ -12,7 +12,7 @@ + [package] + edition = "2018" + name = "curl-sys" +-version = "0.4.77+curl-8.10.1" ++version = "0.4.77" + authors = ["Alex Crichton "] + build = "build.rs" + links = "curl" +@@ -82,9 +82,4 @@ + version = "0.9.64" + optional = true + +-[target.'cfg(target_env = "msvc")'.build-dependencies.vcpkg] +-version = "0.2" + +-[target."cfg(windows)".dependencies.windows-sys] +-version = "0.52" +-features = ["Win32_Networking_WinSock"] diff --git a/SOURCES/curl-sys-fix-metadata.diff b/SOURCES/curl-sys-fix-metadata.diff new file mode 100644 index 0000000..16697d2 --- /dev/null +++ b/SOURCES/curl-sys-fix-metadata.diff @@ -0,0 +1,48 @@ +--- curl-sys-0.4.77+curl-8.10.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ curl-sys-0.4.77+curl-8.10.1/Cargo.toml 2024-10-07T19:21:27.146697+00:00 +@@ -38,20 +38,6 @@ + [dependencies.libc] + version = "0.2.2" + +-[dependencies.libnghttp2-sys] +-version = "0.1.3" +-optional = true +- +-[dependencies.libz-sys] +-version = "1.0.18" +-features = ["libc"] +-default-features = false +- +-[dependencies.rustls-ffi] +-version = "0.14" +-features = ["no_log_capture"] +-optional = true +- + [build-dependencies.cc] + version = "1.0" + +@@ -60,23 +46,13 @@ + + [features] + default = ["ssl"] +-force-system-lib-on-osx = [] +-http2 = ["libnghttp2-sys"] +-mesalink = [] ++http2 = [] + ntlm = [] + poll_7_68_0 = [] + protocol-ftp = [] +-rustls = ["rustls-ffi"] + spnego = [] + ssl = ["openssl-sys"] +-static-curl = [] +-static-ssl = ["openssl-sys/vendored"] + upkeep_7_62_0 = [] +-windows-static-ssl = [] +-zlib-ng-compat = [ +- "libz-sys/zlib-ng", +- "static-curl", +-] + + [target.'cfg(all(unix, not(target_os = "macos")))'.dependencies.openssl-sys] + version = "0.9.64" diff --git a/SOURCES/rust2rpm.toml b/SOURCES/rust2rpm.toml new file mode 100644 index 0000000..576775d --- /dev/null +++ b/SOURCES/rust2rpm.toml @@ -0,0 +1,26 @@ +[package] +cargo-toml-patch-comments = [ + "drop windows-specific features and dependencies", + "drop optional dependencies and unused features (libnghttp2, mesalink)", + "drop rustls support (rustls is not supported on all architectures)", + "drop optional, unused zlib-ng support", +] + +[[package.extra-patches]] +number = 10 +file = "0001-unconditionally-use-pkg-config-to-link-with-system-l.patch" +comments = [ + "remove code related to building vendored curl sources", + "unconditionally use pkg-config to link with system libcurl", +] + +[requires] +build = ["pkgconfig(libcurl)"] +lib = ["pkgconfig(libcurl)"] + +[scripts] +prep.post = [ + "# remove bundled curl sources", + "rm -vr curl/", +] + diff --git a/SPECS/rust-curl-sys.spec b/SPECS/rust-curl-sys.spec new file mode 100644 index 0000000..d02603a --- /dev/null +++ b/SPECS/rust-curl-sys.spec @@ -0,0 +1,393 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.7.2) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 1; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +# Generated by rust2rpm 26 +%bcond_without check +%global debug_package %{nil} + +%global crate curl-sys +%global upstream_version 0.4.77+curl-8.10.1 + +Name: rust-curl-sys +Version: 0.4.77 +Release: %autorelease +Summary: Native bindings to the libcurl library + +License: MIT +URL: https://crates.io/crates/curl-sys +Source: %{crates_source %{crate} %{upstream_version}} +# Automatically generated patch to strip dependencies and normalize metadata +Patch: curl-sys-fix-metadata-auto.diff +# Manually created patch for downstream crate metadata changes +# * drop windows-specific features and dependencies +# * drop optional dependencies and unused features (libnghttp2, mesalink) +# * drop rustls support (rustls is not supported on all architectures) +# * drop optional, unused zlib-ng support +Patch: curl-sys-fix-metadata.diff +# * remove code related to building vendored curl sources +# * unconditionally use pkg-config to link with system libcurl +Patch10: 0001-unconditionally-use-pkg-config-to-link-with-system-l.patch + +BuildRequires: cargo-rpm-macros >= 24 +BuildRequires: pkgconfig(libcurl) + +%global _description %{expand: +Native bindings to the libcurl library.} + +%description %{_description} + +%package devel +Summary: %{summary} +BuildArch: noarch +Requires: pkgconfig(libcurl) + +%description devel %{_description} + +This package contains library source intended for building other packages which +use the "%{crate}" crate. + +%files devel +%license %{crate_instdir}/LICENSE +%{crate_instdir}/ + +%package -n %{name}+default-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+default-devel %{_description} + +This package contains library source intended for building other packages which +use the "default" feature of the "%{crate}" crate. + +%files -n %{name}+default-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+http2-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+http2-devel %{_description} + +This package contains library source intended for building other packages which +use the "http2" feature of the "%{crate}" crate. + +%files -n %{name}+http2-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+ntlm-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+ntlm-devel %{_description} + +This package contains library source intended for building other packages which +use the "ntlm" feature of the "%{crate}" crate. + +%files -n %{name}+ntlm-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+openssl-sys-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+openssl-sys-devel %{_description} + +This package contains library source intended for building other packages which +use the "openssl-sys" feature of the "%{crate}" crate. + +%files -n %{name}+openssl-sys-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+poll_7_68_0-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+poll_7_68_0-devel %{_description} + +This package contains library source intended for building other packages which +use the "poll_7_68_0" feature of the "%{crate}" crate. + +%files -n %{name}+poll_7_68_0-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+protocol-ftp-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+protocol-ftp-devel %{_description} + +This package contains library source intended for building other packages which +use the "protocol-ftp" feature of the "%{crate}" crate. + +%files -n %{name}+protocol-ftp-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+spnego-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+spnego-devel %{_description} + +This package contains library source intended for building other packages which +use the "spnego" feature of the "%{crate}" crate. + +%files -n %{name}+spnego-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+ssl-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+ssl-devel %{_description} + +This package contains library source intended for building other packages which +use the "ssl" feature of the "%{crate}" crate. + +%files -n %{name}+ssl-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+upkeep_7_62_0-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+upkeep_7_62_0-devel %{_description} + +This package contains library source intended for building other packages which +use the "upkeep_7_62_0" feature of the "%{crate}" crate. + +%files -n %{name}+upkeep_7_62_0-devel +%ghost %{crate_instdir}/Cargo.toml + +%prep +%autosetup -n %{crate}-%{upstream_version} -p1 +%cargo_prep +# remove bundled curl sources +rm -vr curl/ + +%generate_buildrequires +%cargo_generate_buildrequires + +%build +%cargo_build + +%install +%cargo_install + +%if %{with check} +%check +%cargo_test +%endif + +%changelog +* Fri Dec 20 2024 MSVSphere Packaging Team - 0.4.77-1 +- Rebuilt for MSVSphere 10 + +## START: Generated by rpmautospec +* Mon Oct 07 2024 Fabio Valentini - 0.4.77-1 +- Update to version 0.4.77+curl-8.10.1; Fixes RHBZ#2311749 + +* Fri Aug 09 2024 Fabio Valentini - 0.4.74-1 +- Update to version 0.4.74+curl-8.9.0; Fixes RHBZ#2301676 + +* Fri Jul 19 2024 Fedora Release Engineering - 0.4.73-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sun Jul 07 2024 Fabio Valentini - 0.4.73-1 +- Update to version 0.4.73+curl-8.8.0; Fixes RHBZ#2295453 + +* Thu Apr 25 2024 Fabio Valentini - 0.4.72-1 +- Update to version 0.4.72+curl-8.6.0; Fixes RHBZ#2262290 + +* Fri Jan 26 2024 Fedora Release Engineering - 0.4.70-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 13 2024 Fabio Valentini - 0.4.70-1 +- Update to version 0.4.70+curl-8.5.0; Fixes RHBZ#2253472 + +* Tue Oct 17 2023 Fabio Valentini - 0.4.68-1 +- Update to version 0.4.68+curl-8.4.0; Fixes RHBZ#2242878 + +* Tue Sep 19 2023 Fabio Valentini - 0.4.66-1 +- Update to version 0.4.66+curl-8.3.0; Fixes RHBZ#2239531 + +* Sat Jul 29 2023 Fabio Valentini - 0.4.65-1 +- Update to version 0.4.65+curl-8.2.1; Fixes RHBZ#2225628 + +* Fri Jul 21 2023 Fedora Release Engineering - 0.4.63-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jun 12 2023 Fabio Valentini - 0.4.63-1 +- Update to version 0.4.63+curl-8.1.2; Fixes RHBZ#2180058 + +* Tue Feb 28 2023 Fabio Valentini - 0.4.60-1 +- Update to version 0.4.60+curl-7.88.1; Fixes RHBZ#2172110 + +* Fri Jan 20 2023 Fedora Release Engineering - 0.4.59-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Dec 12 2022 Fabio Valentini - 0.4.59-1 +- Update to version 0.4.59+curl-7.86.0; Fixes RHBZ#2138052 + +* Sun Jul 24 2022 Fabio Valentini - 0.4.56-1 +- Update to version 0.4.56+curl-7.83.1; Fixes RHBZ#2109772 + +* Sat Jul 23 2022 Fedora Release Engineering - 0.4.55-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed May 25 2022 Fabio Valentini - 0.4.55-1 +- Update to version 0.4.55+curl-7.83.1; Fixes RHBZ#2063393 + +* Thu Jan 27 2022 Fabio Valentini - 0.4.52-1 +- Update to version 0.4.52+curl-7.81.0; Fixes RHBZ#2038503 + +* Fri Jan 21 2022 Fedora Release Engineering - 0.4.51-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Nov 26 2021 Fabio Valentini - 0.4.51-1 +- Update to version 0.4.51+curl-7.80.0; Fixes RHBZ#2025204 + +* Fri Nov 05 2021 Fabio Valentini - 0.4.50-1 +- Update to version 0.4.50+curl-7.79.1; Fixes RHBZ#2004570 + +* Thu Jul 29 2021 Fabio Valentini - 0.4.45-1 +- Update to version 0.4.45+curl-7.78.0; Fixes RHBZ#1936752 + +* Tue Jul 27 2021 Fedora Release Engineering - 0.4.39-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jan 27 2021 Fedora Release Engineering - 0.4.39-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sun Dec 13 2020 Fabio Valentini - 0.4.39-1 +- Update to version 0.4.39+curl-7.74.0. +- Fixes RHBZ#1888087 + +* Thu Aug 20 2020 Josh Stone - 0.4.36-1 +- Update to 0.4.36+curl-7.71.1 + +* Sat Aug 01 2020 Fedora Release Engineering - 0.4.33-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 0.4.33-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jul 23 2020 Josh Stone - 0.4.33-1 +- Update to 0.4.33+curl-7.71.1 + +* Fri Jun 26 2020 Josh Stone - 0.4.32-1 +- Update to 0.4.32+curl-7.70.0 + +* Sun May 17 16:07:18 CEST 2020 Igor Raits - 0.4.31-2 +- Drop move unneeded dependencies +- Add static features back, but make them noop + +* Wed Apr 29 2020 Josh Stone - 0.4.31-1 +- Update to 0.4.31+curl-7.70.0 + +* Wed Mar 11 2020 Josh Stone - 0.4.30+curl-7.69.1 +- Update to 0.4.30+curl-7.69.1 + +* Tue Mar 10 2020 Josh Stone - 0.4.29-1 +- Update to 0.4.29+curl-7.68.0 + +* Wed Mar 04 2020 Josh Stone - 0.4.28-1 +- Update to 0.4.28+curl-7.69.0 + +* Sat Feb 29 2020 Josh Stone - 0.4.27-1 +- Update to 0.4.27 + +* Thu Feb 20 2020 Josh Stone - 0.4.26-1 +- Update to 0.4.26 + +* Thu Jan 30 2020 Fedora Release Engineering - 0.4.25-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Josh Stone - 0.4.25-1 +- Update to 0.4.25 + +* Tue Nov 19 2019 Josh Stone - 0.4.24-1 +- Update to 0.4.24 + +* Fri Jul 26 2019 Fedora Release Engineering - 0.4.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jun 20 12:41:37 CEST 2019 Igor Gnatenko - 0.4.19-1 +- Update to 0.4.19 + +* Thu May 09 2019 Josh Stone - 0.4.18-1 +- Update to 0.4.18 + +* Wed Mar 13 2019 Igor Gnatenko - 0.4.17-1 +- Update to 0.4.17 + +* Sat Feb 02 2019 Fedora Release Engineering - 0.4.16-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 09 2019 Josh Stone - 0.4.16-1 +- Update to 0.4.16 + +* Thu Dec 20 2018 Igor Gnatenko - 0.4.15-2 +- Run tests in infrastructure + +* Sat Nov 10 2018 Josh Stone - 0.4.15-1 +- Update to 0.4.15 +- Adapt to new packaging + +* Sun Nov 04 2018 Igor Gnatenko - 0.4.13-2 +- Adapt to new packaging + +* Mon Oct 08 2018 Josh Stone - 0.4.13-1 +- Update to 0.4.13 + +* Thu Sep 20 2018 Josh Stone - 0.4.12-1 +- Update to 0.4.12 + +* Tue Sep 18 2018 Josh Stone - 0.4.11-1 +- Update to 0.4.11 + +* Fri Sep 14 2018 Josh Stone - 0.4.10-1 +- Update to 0.4.10 + +* Thu Sep 13 2018 Josh Stone - 0.4.9-1 +- Update to 0.4.9 + +* Sat Aug 04 2018 Josh Stone - 0.4.8-1 +- Update to 0.4.8 + +* Tue Jul 31 2018 Josh Stone - 0.4.7-1 +- Update to 0.4.7 + +* Sat Jul 14 2018 Igor Gnatenko - 0.4.6-1 +- Update to 0.4.6 + +* Sat Jul 14 2018 Fedora Release Engineering - 0.4.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed May 02 2018 Josh Stone - 0.4.5-1 +- Update to 0.4.5 + +* Mon Apr 16 2018 Josh Stone - 0.4.2-1 +- Update to 0.4.2 + +* Fri Feb 09 2018 Fedora Release Engineering - 0.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Igor Gnatenko - 0.4.1-1 +- Update to 0.4.1 + +* Mon Jan 08 2018 Igor Gnatenko - 0.3.15-2 +- Rebuild for rust-packaging v5 + +* Sun Nov 26 2017 Igor Gnatenko - 0.3.15-1 +- Initial package + +## END: Generated by rpmautospec