parent
56482123b2
commit
495101a35e
@ -0,0 +1 @@
|
||||
/remove_dir_all-0.3.0.crate
|
@ -0,0 +1,58 @@
|
||||
From a52b3a1206ca8ff387e3931d6b35b7b194d11617 Mon Sep 17 00:00:00 2001
|
||||
From: Rolf Karp <rkarp@users.noreply.github.com>
|
||||
Date: Sun, 19 Nov 2017 10:29:29 +0100
|
||||
Subject: [PATCH] Make API the same on all platforms, simplify Linux
|
||||
compilation (#3)
|
||||
|
||||
* Generalize API for Windows to make it the same for all platforms
|
||||
|
||||
* Avoid compiling Windows dependencies on Linux, fix warning
|
||||
---
|
||||
src/fs.rs | 5 +++--
|
||||
src/lib.rs | 2 ++
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/fs.rs b/src/fs.rs
|
||||
index b9eeaf1..852191a 100644
|
||||
--- a/src/fs.rs
|
||||
+++ b/src/fs.rs
|
||||
@@ -25,7 +25,7 @@ struct RmdirContext<'a> {
|
||||
/// remove_dir_all("./temp/").unwrap();
|
||||
/// }
|
||||
/// ```
|
||||
-pub fn remove_dir_all(path: &Path) -> io::Result<()> {
|
||||
+pub fn remove_dir_all<P: AsRef<Path>>(path: P) -> io::Result<()> {
|
||||
// On Windows it is not enough to just recursively remove the contents of a
|
||||
// directory and then the directory itself. Deleting does not happen
|
||||
// instantaneously, but is scheduled.
|
||||
@@ -69,6 +69,7 @@ pub fn remove_dir_all(path: &Path) -> io::Result<()> {
|
||||
|
||||
// Open the path once to get the canonical path, file type and attributes.
|
||||
let (path, metadata) = {
|
||||
+ let path = path.as_ref();
|
||||
let mut opts = OpenOptions::new();
|
||||
opts.access_mode(FILE_READ_ATTRIBUTES);
|
||||
opts.custom_flags(FILE_FLAG_BACKUP_SEMANTICS |
|
||||
@@ -158,7 +159,7 @@ fn rename(file: &File, new: &Path, replace: bool) -> io::Result<()> {
|
||||
unsafe {
|
||||
// Thanks to alignment guarantees on Windows this works
|
||||
// (8 for 32-bit and 16 for 64-bit)
|
||||
- let mut info = data.as_mut_ptr() as *mut FILE_RENAME_INFO;
|
||||
+ let info = data.as_mut_ptr() as *mut FILE_RENAME_INFO;
|
||||
// The type of ReplaceIfExists is BOOL, but it actually expects a
|
||||
// BOOLEAN. This means true is -1, not c::TRUE.
|
||||
(*info).ReplaceIfExists = if replace { -1 } else { FALSE };
|
||||
diff --git a/src/lib.rs b/src/lib.rs
|
||||
index 606fb39..67b0548 100644
|
||||
--- a/src/lib.rs
|
||||
+++ b/src/lib.rs
|
||||
@@ -1,4 +1,6 @@
|
||||
+#[cfg(windows)]
|
||||
extern crate winapi;
|
||||
+#[cfg(windows)]
|
||||
extern crate kernel32 as kernel;
|
||||
|
||||
#[cfg(windows)]
|
||||
--
|
||||
2.16.1
|
||||
|
@ -0,0 +1,11 @@
|
||||
--- remove_dir_all-0.3.0/Cargo.toml 1970-01-01T01:00:00+01:00
|
||||
+++ remove_dir_all-0.3.0/Cargo.toml 2018-01-31T14:47:15.521765+01:00
|
||||
@@ -21,8 +21,3 @@
|
||||
categories = ["filesystem"]
|
||||
license = "MIT/Apache-2.0"
|
||||
repository = "https://github.com/Aaronepower/remove_dir_all.git"
|
||||
-[dependencies.winapi]
|
||||
-version = "0.2"
|
||||
-
|
||||
-[dependencies.kernel32-sys]
|
||||
-version = "0.2"
|
@ -0,0 +1,59 @@
|
||||
# Generated by rust2rpm
|
||||
%bcond_without check
|
||||
%global debug_package %{nil}
|
||||
|
||||
%global crate remove_dir_all
|
||||
|
||||
Name: rust-%{crate}
|
||||
Version: 0.3.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Safe, reliable implementation of remove_dir_all
|
||||
|
||||
License: MIT or ASL 2.0
|
||||
URL: https://crates.io/crates/remove_dir_all
|
||||
Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{version}.crate
|
||||
# Initial patched metadata
|
||||
# * No windows
|
||||
Patch0: remove_dir_all-0.3.0-fix-metadata.diff
|
||||
# https://github.com/Aaronepower/remove_dir_all/commit/a52b3a1206ca8ff387e3931d6b35b7b194d11617
|
||||
Patch0001: 0001-Make-API-the-same-on-all-platforms-simplify-Linux-co.patch
|
||||
|
||||
ExclusiveArch: %{rust_arches}
|
||||
|
||||
BuildRequires: rust-packaging
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
%package devel
|
||||
Summary: %{summary}
|
||||
BuildArch: noarch
|
||||
|
||||
%description devel
|
||||
A safe, reliable implementation of remove_dir_all for Windows.
|
||||
|
||||
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
|
||||
%license LICENCE-MIT LICENCE-APACHE
|
||||
%{cargo_registry}/%{crate}-%{version}/
|
||||
|
||||
%changelog
|
||||
* Wed Jan 31 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.3.0-1
|
||||
- Initial package
|
Loading…
Reference in new issue