From da120070bf2cf107f0fb1eda6085bac7cc15a46f Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Fri, 5 Jan 2018 00:20:12 +0100 Subject: [PATCH] initial import Signed-off-by: Igor Gnatenko --- .gitignore | 1 + 0001-deps-update-nix-to-0.9.patch | 64 ++++++++++++++++++++++++++++++ ctrlc-3.0.3-fix-metadata.diff | 17 ++++++++ rust-ctrlc.spec | 65 +++++++++++++++++++++++++++++++ sources | 1 + 5 files changed, 148 insertions(+) create mode 100644 .gitignore create mode 100644 0001-deps-update-nix-to-0.9.patch create mode 100644 ctrlc-3.0.3-fix-metadata.diff create mode 100644 rust-ctrlc.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f96e09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/ctrlc-3.0.3.crate diff --git a/0001-deps-update-nix-to-0.9.patch b/0001-deps-update-nix-to-0.9.patch new file mode 100644 index 0000000..cfb1331 --- /dev/null +++ b/0001-deps-update-nix-to-0.9.patch @@ -0,0 +1,64 @@ +From 6f9feb2f34ce539cd67850d708768352485946c6 Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Thu, 4 Jan 2018 23:52:45 +0100 +Subject: [PATCH] deps: update nix to 0.9 + +Signed-off-by: Igor Gnatenko +--- + src/lib.rs | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/lib.rs b/src/lib.rs +index db6b72e..91e8afb 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -95,13 +95,21 @@ mod platform { + + static mut PIPE: (RawFd, RawFd) = (-1, -1); + +- extern fn os_handler(_: nix::c_int) { ++ extern fn os_handler(_: nix::libc::c_int) { + // Assuming this always succeeds. Can't really handle errors in any meaningful way. + unsafe { + unistd::write(PIPE.1, &[0u8]).is_ok(); + } + } + ++ fn nix_err_to_io_err(err: nix::Error) -> io::Error { ++ if let nix::Error::Sys(err_no) = err { ++ io::Error::from(err_no) ++ } else { ++ panic!("unexpected nix error type: {:?}", err) ++ } ++ } ++ + /// Register os signal handler. + /// + /// Must be called before calling [`block_ctrl_c()`](fn.block_ctrl_c.html) +@@ -115,12 +123,12 @@ mod platform { + use self::nix::fcntl; + use self::nix::sys::signal; + +- PIPE = unistd::pipe2(fcntl::O_CLOEXEC).map_err(|e| Error::System(e.into()))?; ++ PIPE = unistd::pipe2(fcntl::O_CLOEXEC).map_err(|e| Error::System(nix_err_to_io_err(e)))?; + + let close_pipe = |e: nix::Error| -> Error { + unistd::close(PIPE.1).is_ok(); + unistd::close(PIPE.0).is_ok(); +- Error::System(e.into()) ++ Error::System(nix_err_to_io_err(e)) + }; + + // Make sure we never block on write in the os handler. +@@ -172,7 +180,7 @@ mod platform { + Ok(1) => break, + Ok(_) => return Err(Error::System(io::ErrorKind::UnexpectedEof.into()).into()), + Err(nix::Error::Sys(nix::Errno::EINTR)) => {}, +- Err(e) => return Err(Error::System(e.into())), ++ Err(e) => return Err(Error::System(nix_err_to_io_err(e))), + } + } + +-- +2.15.1 + diff --git a/ctrlc-3.0.3-fix-metadata.diff b/ctrlc-3.0.3-fix-metadata.diff new file mode 100644 index 0000000..bec7c44 --- /dev/null +++ b/ctrlc-3.0.3-fix-metadata.diff @@ -0,0 +1,17 @@ +--- ctrlc-3.0.3/Cargo.toml 1970-01-01T01:00:00+01:00 ++++ ctrlc-3.0.3/Cargo.toml 2018-01-04T23:55:57.200531+01:00 +@@ -26,13 +26,7 @@ + path = "src/tests.rs" + harness = false + [dependencies.nix] +-version = "0.8" +- +-[dependencies.winapi] +-version = "0.2" +- +-[dependencies.kernel32-sys] +-version = "0.2" ++version = "0.9" + + [features] + termination = [] diff --git a/rust-ctrlc.spec b/rust-ctrlc.spec new file mode 100644 index 0000000..cb01d3f --- /dev/null +++ b/rust-ctrlc.spec @@ -0,0 +1,65 @@ +# Generated by rust2rpm +%bcond_without check +%global debug_package %{nil} + +%global crate ctrlc + +Name: rust-%{crate} +Version: 3.0.3 +Release: 1%{?dist} +Summary: Easy Ctrl-C handler for Rust projects + +# License files are in upstream, but not yet in release +# https://github.com/Detegr/rust-ctrlc/commit/587c77eb89b6e0a312ef066445ad8253ca08c785 +License: MIT or ASL 2.0 +URL: https://crates.io/crates/ctrlc +Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{version}.crate +# Initial patched metadata +# * No windows +# * Bump nix to 0.9, https://github.com/Detegr/rust-ctrlc/pull/35 +Patch0: ctrlc-3.0.3-fix-metadata.diff +# Make it work with nix v0.9 +Patch1: 0001-deps-update-nix-to-0.9.patch + +ExclusiveArch: %{rust_arches} + +BuildRequires: rust-packaging +# [dependencies] +BuildRequires: (crate(nix) >= 0.9.0 with crate(nix) < 0.10.0) + +%description +%{summary}. + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel +Easy Ctrl-C handler for Rust projects. + +This package contains library source intended for building other packages +which use %{crate} from crates.io. + +%prep +%autosetup -n %{crate}-%{version} -p1 +%cargo_prep + +%build +%cargo_build + +%install +%cargo_install + +%if %{with check} +%check +%cargo_test +%endif + +%files devel +%doc README.md +%{cargo_registry}/%{crate}-%{version}/ +%exclude %{cargo_registry}/%{crate}-%{version}/appveyor.yml + +%changelog +* Thu Jan 04 2018 Igor Gnatenko - 3.0.3-1 +- Initial package diff --git a/sources b/sources new file mode 100644 index 0000000..7d3f2da --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (ctrlc-3.0.3.crate) = 4ea771c4ee780ef3dc45377a4abd6afb705faff7e50bd789ffa7c178da180354eb8889832d6bef09a7bbb23da540b40affb28e1cc601dc4b0c440795c4708623