coreutils: rebase of the patches
Sylvestre Ledru
1 year, 8 months ago
0 | rust-coreutils (0.0.15-1~exp1) UNRELEASED-FIXME-AUTOGENERATED-DEBCARGO; urgency=medium | |
1 | ||
2 | * New upstream release | |
3 | - Update of the desc as all binaries exist now | |
4 | (some options are still missing) | |
5 | ||
6 | -- Sylvestre Ledru <sylvestre@debian.org> Tue, 23 Aug 2022 22:25:13 +0200 | |
7 | ||
0 | 8 | rust-coreutils (0.0.14-4~exp2) experimental; urgency=medium |
1 | 9 | |
2 | 10 | * Fix the FTBFS on 32 bit with selinux |
69 | 69 | This packages replaces the GNU coreutils package written in C. |
70 | 70 | It should be a drop-in replacement but: |
71 | 71 | * Some options have NOT been implemented, |
72 | * A few binaries are missing (ex: dd), | |
73 | 72 | * Might have important bugs, |
74 | 73 | * Might be slower, |
75 | 74 | * Output of the binaries might be slightly different. |
1 | 1 | =================================================================== |
2 | 2 | --- coreutils.orig/src/uu/cp/Cargo.toml |
3 | 3 | +++ coreutils/src/uu/cp/Cargo.toml |
4 | @@ -35,7 +35,7 @@ winapi = { version="0.3", features=["fil | |
4 | @@ -32,7 +32,7 @@ winapi = { version="0.3", features=["fil | |
5 | 5 | |
6 | 6 | [target.'cfg(unix)'.dependencies] |
7 | 7 | xattr="0.2.3" |
8 | -exacl= { version = "0.8.0", optional=true } | |
8 | -exacl= { version = "0.9.0", optional=true } | |
9 | 9 | +exacl= { version = "0", optional=true } |
10 | 10 | |
11 | 11 | [[bin]] |
4 | 4 | @@ -16,7 +16,7 @@ num-traits = "0.2.15" # used in src/nume |
5 | 5 | |
6 | 6 | [dependencies] |
7 | clap = { version = "3.1", features = ["wrap_help", "cargo"] } | |
7 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
8 | 8 | -coz = { version = "0.1.3", optional = true } |
9 | 9 | +#coz = { version = "0.1.3", optional = true } |
10 | 10 | num-traits = "0.2.15" # Needs at least version 0.2.15 for "OverflowingAdd" |
11 | 11 | rand = { version = "0.8", features = ["small_rng"] } |
12 | smallvec = "1.7" # TODO(nicoo): Use `union` feature, requires Rust 1.49 or later. | |
12 | smallvec = "1.9" # TODO(nicoo): Use `union` feature, requires Rust 1.49 or later. |
1 | 1 | =================================================================== |
2 | 2 | --- coreutils.orig/GNUmakefile |
3 | 3 | +++ coreutils/GNUmakefile |
4 | @@ -1,4 +1,4 @@ | |
5 | -# spell-checker:ignore (misc) testsuite runtest findstring (targets) busytest distclean manpages pkgs ; (vars/env) BINDIR BUILDDIR CARGOFLAGS DESTDIR DOCSDIR INSTALLDIR INSTALLEES MULTICALL DATAROOTDIR | |
6 | +# spell-checker:ignore (misc) testsuite runtest findstring (targets) busytest d65;6602;1cistclean manpages pkgs ; (vars/env) BINDIR BUILDDIR CARGOFLAGS DESTDIR DOCSDIR INSTALLDIR INSTALLEES MULTICALL DATAROOTDIR | |
7 | ||
8 | # Config options | |
9 | PROFILE ?= debug | |
10 | 4 | @@ -330,13 +330,13 @@ else |
11 | 5 | $(INSTALL) $(BUILDDIR)/$(prog) $(INSTALLDIR_BIN)/$(PROG_PREFIX)$(prog);) |
12 | 6 | $(if $(findstring test,$(INSTALLEES)), $(INSTALL) $(BUILDDIR)/test $(INSTALLDIR_BIN)/$(PROG_PREFIX)[) |
0 | Index: coreutils/src/uu/tail/Cargo.toml | |
1 | =================================================================== | |
2 | --- coreutils.orig/src/uu/tail/Cargo.toml | |
3 | +++ coreutils/src/uu/tail/Cargo.toml | |
4 | @@ -18,7 +18,7 @@ path = "src/tail.rs" | |
5 | [dependencies] | |
6 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
7 | libc = "0.2.132" | |
8 | -notify = { version = "=5.0.0-pre.16", features=["macos_kqueue"]} | |
9 | +notify = "4" | |
10 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore", features=["ringbuffer", "lines"] } | |
11 | ||
12 | [target.'cfg(windows)'.dependencies] |
3 | 3 | +++ coreutils/src/uu/sort/Cargo.toml |
4 | 4 | @@ -24,7 +24,7 @@ itertools = "0.10.0" |
5 | 5 | memchr = "2.5.0" |
6 | ouroboros = "0.15.0" | |
6 | ouroboros = "0.15.2" | |
7 | 7 | rand = "0.8" |
8 | 8 | -rayon = "1.5" |
9 | 9 | +rayon = "1" |
10 | 10 | tempfile = "3" |
11 | 11 | unicode-width = "0.1.8" |
12 | uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["fs"] } | |
12 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore", features=["fs"] } |
1 | 1 | =================================================================== |
2 | 2 | --- coreutils.orig/Cargo.toml |
3 | 3 | +++ coreutils/Cargo.toml |
4 | @@ -266,7 +266,7 @@ lazy_static = { version="1.3" } | |
4 | @@ -267,7 +267,7 @@ phf = "0.10.1" | |
5 | selinux = { version="0.2", optional = true } | |
5 | 6 | textwrap = { version="0.15", features=["terminal_size"] } |
6 | uucore = { version=">=0.0.11", package="uucore", path="src/uucore" } | |
7 | selinux = { version="0.2", optional = true } | |
7 | uucore = { version=">=0.0.15", package="uucore", path="src/uucore" } | |
8 | 8 | -zip = { version = "0.6.0", optional=true, default_features=false, features=["deflate"] } |
9 | 9 | +zip = { version = "0", optional=true, default_features=false, features=["deflate"] } |
10 | 10 | # * uutils |
11 | uu_test = { optional=true, version="0.0.14", package="uu_test", path="src/uu/test" } | |
11 | uu_test = { optional=true, version="0.0.15", package="uu_test", path="src/uu/test" } | |
12 | 12 | # |
2 | 2 | --- coreutils.orig/src/uu/stdbuf/src/libstdbuf/Cargo.toml |
3 | 3 | +++ coreutils/src/uu/stdbuf/src/libstdbuf/Cargo.toml |
4 | 4 | @@ -22,4 +22,4 @@ libc = "0.2" |
5 | uucore = { version=">=0.0.11", package="uucore", path="../../../../uucore" } | |
5 | uucore = { version=">=0.0.15", package="uucore", path="../../../../uucore" } | |
6 | 6 | |
7 | 7 | [build-dependencies] |
8 | 8 | -cpp_build = "0.4" |
8 | 8 | -memmap2 = "0.5" |
9 | 9 | +memmap2 = "0" |
10 | 10 | regex = "1" |
11 | clap = { version = "3.1", features = ["wrap_help", "cargo"] } | |
12 | uucore = { version=">=0.0.11", package="uucore", path="../../uucore" } | |
11 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
12 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore" } |
0 | Index: coreutils/Cargo.toml | |
1 | =================================================================== | |
2 | --- coreutils.orig/Cargo.toml | |
3 | +++ coreutils/Cargo.toml | |
4 | @@ -262,7 +262,7 @@ uudoc = [ "zip" ] | |
5 | [dependencies] | |
6 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
7 | clap_complete = "3.1" | |
8 | -once_cell = "1.13.1" | |
9 | +once_cell = "1" | |
10 | phf = "0.10.1" | |
11 | selinux = { version="0.2", optional = true } | |
12 | textwrap = { version="0.15", features=["terminal_size"] } | |
13 | Index: coreutils/src/uu/ls/Cargo.toml | |
14 | =================================================================== | |
15 | --- coreutils.orig/src/uu/ls/Cargo.toml | |
16 | +++ coreutils/src/uu/ls/Cargo.toml | |
17 | @@ -24,7 +24,7 @@ termsize = "0.1.6" | |
18 | glob = "0.3.0" | |
19 | lscolors = { version = "0.12.0", features = ["ansi_term"] } | |
20 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore", features = ["entries", "fs"] } | |
21 | -once_cell = "1.13.1" | |
22 | +once_cell = "1" | |
23 | atty = "0.2" | |
24 | selinux = { version="0.2", optional = true } | |
25 | ||
26 | Index: coreutils/src/uucore/Cargo.toml | |
27 | =================================================================== | |
28 | --- coreutils.orig/src/uucore/Cargo.toml | |
29 | +++ coreutils/src/uucore/Cargo.toml | |
30 | @@ -33,7 +33,7 @@ data-encoding = { version="2.1", optiona | |
31 | data-encoding-macro = { version="0.1.12", optional=true } | |
32 | z85 = { version="3.0.5", optional=true } | |
33 | libc = { version="0.2.132", optional=true } | |
34 | -once_cell = "1.13.1" | |
35 | +once_cell = "1" | |
36 | os_display = "0.1.3" | |
37 | ||
38 | [target.'cfg(unix)'.dependencies] | |
39 | @@ -42,7 +42,7 @@ nix = { version = "0.25", optional = tru | |
40 | ||
41 | [dev-dependencies] | |
42 | clap = "3.2" | |
43 | -once_cell = "1.13" | |
44 | +once_cell = "1" | |
45 | ||
46 | [target.'cfg(target_os = "windows")'.dependencies] | |
47 | winapi = { version = "0.3", features = ["errhandlingapi", "fileapi", "handleapi", "winerror"] } |
0 | Index: coreutils/Cargo.toml | |
1 | =================================================================== | |
2 | --- coreutils.orig/Cargo.toml | |
3 | +++ coreutils/Cargo.toml | |
4 | @@ -390,7 +390,7 @@ glob = "0.3.0" | |
5 | libc = "0.2" | |
6 | pretty_assertions = "1" | |
7 | rand = "0.8" | |
8 | -regex = "1.6" | |
9 | +regex = "1" | |
10 | sha1 = { version="0.10", features=["std"] } | |
11 | tempfile = "3" | |
12 | time = {version="0.3", features=["local-offset"]} | |
13 | Index: coreutils/src/uu/csplit/Cargo.toml | |
14 | =================================================================== | |
15 | --- coreutils.orig/src/uu/csplit/Cargo.toml | |
16 | +++ coreutils/src/uu/csplit/Cargo.toml | |
17 | @@ -17,7 +17,7 @@ path = "src/csplit.rs" | |
18 | [dependencies] | |
19 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
20 | thiserror = "1.0" | |
21 | -regex = "1.6.0" | |
22 | +regex = "1" | |
23 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore", features=["entries", "fs"] } | |
24 | ||
25 | [[bin]] | |
26 | Index: coreutils/src/uu/hashsum/Cargo.toml | |
27 | =================================================================== | |
28 | --- coreutils.orig/src/uu/hashsum/Cargo.toml | |
29 | +++ coreutils/src/uu/hashsum/Cargo.toml | |
30 | @@ -20,7 +20,7 @@ clap = { version = "3.2", features = ["w | |
31 | hex = "0.4.3" | |
32 | memchr = "2" | |
33 | md-5 = "0.10.1" | |
34 | -regex = "1.6.0" | |
35 | +regex = "1" | |
36 | sha1 = "0.10.1" | |
37 | sha2 = "0.10.2" | |
38 | sha3 = "0.10.2" | |
39 | Index: coreutils/src/uu/nl/Cargo.toml | |
40 | =================================================================== | |
41 | --- coreutils.orig/src/uu/nl/Cargo.toml | |
42 | +++ coreutils/src/uu/nl/Cargo.toml | |
43 | @@ -16,7 +16,7 @@ path = "src/nl.rs" | |
44 | ||
45 | [dependencies] | |
46 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
47 | -regex = "1.6.0" | |
48 | +regex = "1" | |
49 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore" } | |
50 | ||
51 | [[bin]] | |
52 | Index: coreutils/src/uu/pr/Cargo.toml | |
53 | =================================================================== | |
54 | --- coreutils.orig/src/uu/pr/Cargo.toml | |
55 | +++ coreutils/src/uu/pr/Cargo.toml | |
56 | @@ -20,7 +20,7 @@ uucore = { version=">=0.0.15", package=" | |
57 | chrono = { version="^0.4.19", default-features=false, features=["std", "alloc", "clock"]} | |
58 | quick-error = "2.0.1" | |
59 | itertools = "0.10.0" | |
60 | -regex = "1.6" | |
61 | +regex = "1" | |
62 | ||
63 | [[bin]] | |
64 | name = "pr" | |
65 | Index: coreutils/src/uu/ptx/Cargo.toml | |
66 | =================================================================== | |
67 | --- coreutils.orig/src/uu/ptx/Cargo.toml | |
68 | +++ coreutils/src/uu/ptx/Cargo.toml | |
69 | @@ -16,7 +16,7 @@ path = "src/ptx.rs" | |
70 | ||
71 | [dependencies] | |
72 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
73 | -regex = "1.6.0" | |
74 | +regex = "1" | |
75 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore" } | |
76 | ||
77 | [[bin]] |
4 | 4 | @@ -16,8 +16,8 @@ path = "src/uniq.rs" |
5 | 5 | |
6 | 6 | [dependencies] |
7 | clap = { version = "3.1", features = ["wrap_help", "cargo"] } | |
8 | -strum = "0.24.0" | |
9 | -strum_macros = "0.24.0" | |
7 | clap = { version = "3.2", features = ["wrap_help", "cargo"] } | |
8 | -strum = "0.24.1" | |
9 | -strum_macros = "0.24.2" | |
10 | 10 | +strum = "0" |
11 | 11 | +strum_macros = "0" |
12 | uucore = { version=">=0.0.11", package="uucore", path="../../uucore" } | |
12 | uucore = { version=">=0.0.15", package="uucore", path="../../uucore" } | |
13 | 13 | |
14 | 14 | [[bin]] |
0 | Index: coreutils/src/uu/more/Cargo.toml | |
1 | =================================================================== | |
2 | --- coreutils.orig/src/uu/more/Cargo.toml | |
3 | +++ coreutils/src/uu/more/Cargo.toml | |
4 | @@ -20,7 +20,7 @@ uucore = { version=">=0.0.15", package=" | |
5 | crossterm = ">=0.19" | |
6 | atty = "0.2" | |
7 | unicode-width = "0.1.7" | |
8 | -unicode-segmentation = "1.9.0" | |
9 | +unicode-segmentation = "1" | |
10 | ||
11 | [target.'cfg(all(unix, not(target_os = "fuchsia")))'.dependencies] | |
12 | nix = { version = "0.25", default-features = false } |
1 | 1 | =================================================================== |
2 | 2 | --- coreutils.orig/Cargo.toml |
3 | 3 | +++ coreutils/Cargo.toml |
4 | @@ -403,7 +403,7 @@ rlimit = "0.8.3" | |
4 | @@ -405,7 +405,7 @@ rlimit = "0.8.3" | |
5 | 5 | |
6 | 6 | [target.'cfg(unix)'.dev-dependencies] |
7 | nix = { version = "0.24.1", default-features = false, features = ["process", "signal", "user"] } | |
8 | -rust-users = { version="0.10", package="users" } | |
9 | +rust-users = { version="0.11", package="users" } | |
7 | nix = { version = "0.25", default-features = false, features = ["process", "signal", "user"] } | |
8 | -rust-users = { version="0.11", package="users" } | |
9 | +rust-users = { version="0", package="users" } | |
10 | 10 | unix_socket = "0.5.0" |
11 | 11 | |
12 | 12 | [build-dependencies] |
0 | Index: coreutils/src/uucore/Cargo.toml | |
1 | =================================================================== | |
2 | --- coreutils.orig/src/uucore/Cargo.toml | |
3 | +++ coreutils/src/uucore/Cargo.toml | |
4 | @@ -31,7 +31,7 @@ time = { version="0.3", optional=true, f | |
5 | # * "problem" dependencies (pinned) | |
6 | data-encoding = { version="2.1", optional=true } | |
7 | data-encoding-macro = { version="0.1.12", optional=true } | |
8 | -z85 = { version="3.0.5", optional=true } | |
9 | +z85 = { version="3", optional=true } | |
10 | libc = { version="0.2.132", optional=true } | |
11 | once_cell = "1" | |
12 | os_display = "0.1.3" |
0 | From 8bfd8765790d3c2d53be0e3ba836e01a8cb9589f Mon Sep 17 00:00:00 2001 | |
1 | From: Sylvestre Ledru <sylvestre@debian.org> | |
2 | Date: Fri, 10 Jun 2022 21:14:15 +0200 | |
3 | Subject: [PATCH] cp: Replace ioctl-sys by libc for the call to ficlone | |
4 | ||
5 | --- | |
6 | src/uu/cp/Cargo.toml | 3 --- | |
7 | src/uu/cp/src/cp.rs | 21 +++++++++++++-------- | |
8 | 3 files changed, 13 insertions(+), 18 deletions(-) | |
9 | ||
10 | diff --git a/src/uu/cp/Cargo.toml b/src/uu/cp/Cargo.toml | |
11 | index c350e158e..1bdf80a2f 100644 | |
12 | --- a/src/uu/cp/Cargo.toml | |
13 | +++ b/src/uu/cp/Cargo.toml | |
14 | @@ -27,9 +27,6 @@ selinux = { version="0.2", optional=true } | |
15 | uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "fs", "perms", "mode"] } | |
16 | walkdir = "2.2" | |
17 | ||
18 | -[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] | |
19 | -ioctl-sys = "0.8" | |
20 | - | |
21 | [target.'cfg(target_os = "windows")'.dependencies] | |
22 | winapi = { version="0.3", features=["fileapi"] } | |
23 | ||
24 | diff --git a/src/uu/cp/src/cp.rs b/src/uu/cp/src/cp.rs | |
25 | index 41466abc8..ff3136129 100644 | |
26 | --- a/src/uu/cp/src/cp.rs | |
27 | +++ b/src/uu/cp/src/cp.rs | |
28 | @@ -10,9 +10,6 @@ | |
29 | ||
30 | // spell-checker:ignore (ToDO) ficlone linkgs lstat nlink nlinks pathbuf reflink strs xattrs symlinked | |
31 | ||
32 | -#[cfg(any(target_os = "linux", target_os = "android"))] | |
33 | -#[macro_use] | |
34 | -extern crate ioctl_sys; | |
35 | #[macro_use] | |
36 | extern crate quick_error; | |
37 | #[macro_use] | |
38 | @@ -61,9 +58,6 @@ use uucore::error::{set_exit_code, ExitCode, UClapError, UError, UResult}; | |
39 | use uucore::fs::{canonicalize, MissingHandling, ResolveMode}; | |
40 | use walkdir::WalkDir; | |
41 | ||
42 | -#[cfg(any(target_os = "linux", target_os = "android"))] | |
43 | -ioctl!(write ficlone with 0x94, 9; std::os::raw::c_int); | |
44 | - | |
45 | quick_error! { | |
46 | #[derive(Debug)] | |
47 | pub enum Error { | |
48 | @@ -230,6 +224,15 @@ pub struct Options { | |
49 | verbose: bool, | |
50 | } | |
51 | ||
52 | +// From /usr/include/linux/fs.h: | |
53 | +// #define FICLONE _IOW(0x94, 9, int) | |
54 | +#[cfg(any(target_os = "linux", target_os = "android"))] | |
55 | +macro_rules! FICLONE { | |
56 | + () => { | |
57 | + 0x40049409 | |
58 | + }; | |
59 | +} | |
60 | + | |
61 | static ABOUT: &str = "Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY."; | |
62 | static LONG_HELP: &str = ""; | |
63 | static EXIT_ERR: i32 = 1; | |
64 | @@ -1567,7 +1570,8 @@ fn copy_on_write_linux( | |
65 | .context(context)?; | |
66 | match mode { | |
67 | ReflinkMode::Always => unsafe { | |
68 | - let result = ficlone(dst_file.as_raw_fd(), src_file.as_raw_fd() as *const i32); | |
69 | + let result = libc::ioctl(dst_file.as_raw_fd(), FICLONE!(), src_file.as_raw_fd()); | |
70 | + | |
71 | if result != 0 { | |
72 | Err(format!( | |
73 | "failed to clone {:?} from {:?}: {}", | |
74 | @@ -1581,7 +1585,8 @@ fn copy_on_write_linux( | |
75 | } | |
76 | }, | |
77 | ReflinkMode::Auto => unsafe { | |
78 | - let result = ficlone(dst_file.as_raw_fd(), src_file.as_raw_fd() as *const i32); | |
79 | + let result = libc::ioctl(dst_file.as_raw_fd(), FICLONE!(), src_file.as_raw_fd()); | |
80 | + | |
81 | if result != 0 { | |
82 | fs::copy(source, dest).context(context)?; | |
83 | } | |
84 | -- | |
85 | 2.35.1 | |
86 |
0 | From 51cfa0fc85b535ef6525c3785dbcec9992544121 Mon Sep 17 00:00:00 2001 | |
1 | From: Koutheir Attouchi <koutheir@gmail.com> | |
2 | Date: Fri, 5 Aug 2022 11:59:05 -0400 | |
3 | Subject: [PATCH] Use `u64` instead of `ino_t`/`dev_t` types | |
4 | ||
5 | --- | |
6 | src/uu/chcon/src/chcon.rs | 44 +++++++++++++++++++++++++++++--------- | |
7 | src/uu/chcon/src/errors.rs | 3 +++ | |
8 | 2 files changed, 37 insertions(+), 10 deletions(-) | |
9 | ||
10 | Index: rust-coreutils-0.0.14/src/uu/chcon/src/chcon.rs | |
11 | =================================================================== | |
12 | --- rust-coreutils-0.0.14.orig/src/uu/chcon/src/chcon.rs | |
13 | +++ rust-coreutils-0.0.14/src/uu/chcon/src/chcon.rs | |
14 | @@ -448,10 +448,36 @@ enum CommandLineMode { | |
15 | }, | |
16 | } | |
17 | ||
18 | +#[derive(Debug, Clone, Copy, PartialEq, Eq)] | |
19 | +struct DeviceAndINode { | |
20 | + device_id: u64, | |
21 | + inode: u64, | |
22 | +} | |
23 | + | |
24 | +#[cfg(unix)] | |
25 | +impl From<fs::Metadata> for DeviceAndINode { | |
26 | + fn from(md: fs::Metadata) -> Self { | |
27 | + use std::os::unix::fs::MetadataExt; | |
28 | + | |
29 | + Self { device_id: md.dev(), inode: md.ino() } | |
30 | + } | |
31 | +} | |
32 | + | |
33 | +impl TryFrom<&libc::stat> for DeviceAndINode { | |
34 | + type Error = Error; | |
35 | + | |
36 | + #[allow(clippy::useless_conversion)] | |
37 | + fn try_from(st: &libc::stat) -> Result<Self> { | |
38 | + let device_id = u64::try_from(st.st_dev).map_err(|_r| Error::OutOfRange)?; | |
39 | + let inode = u64::try_from(st.st_ino).map_err(|_r| Error::OutOfRange)?; | |
40 | + Ok(Self { device_id, inode }) | |
41 | + } | |
42 | +} | |
43 | + | |
44 | fn process_files( | |
45 | options: &Options, | |
46 | context: &SELinuxSecurityContext, | |
47 | - root_dev_ino: Option<(libc::ino_t, libc::dev_t)>, | |
48 | + root_dev_ino: Option<DeviceAndINode>, | |
49 | ) -> Vec<Error> { | |
50 | let fts_options = options.recursive_mode.fts_open_options(); | |
51 | let mut fts = match fts::FTS::new(options.files.iter(), fts_options) { | |
52 | @@ -483,7 +509,7 @@ fn process_file( | |
53 | options: &Options, | |
54 | context: &SELinuxSecurityContext, | |
55 | fts: &mut fts::FTS, | |
56 | - root_dev_ino: Option<(libc::ino_t, libc::dev_t)>, | |
57 | + root_dev_ino: Option<DeviceAndINode>, | |
58 | ) -> Result<()> { | |
59 | let mut entry = fts.last_entry_ref().unwrap(); | |
60 | ||
61 | @@ -504,8 +530,8 @@ fn process_file( | |
62 | }; | |
63 | ||
64 | // SAFETY: If `entry.fts_statp` is not null, then is is assumed to be valid. | |
65 | - let file_dev_ino = if let Some(stat) = entry.stat() { | |
66 | - (stat.st_ino, stat.st_dev) | |
67 | + let file_dev_ino: DeviceAndINode = if let Some(st) = entry.stat() { | |
68 | + st.try_into()? | |
69 | } else { | |
70 | return Err(err("Getting meta data", io::ErrorKind::InvalidInput)); | |
71 | }; | |
72 | @@ -692,17 +718,15 @@ pub(crate) fn os_str_to_c_string(s: &OsS | |
73 | ||
74 | /// Call `lstat()` to get the device and inode numbers for `/`. | |
75 | #[cfg(unix)] | |
76 | -fn get_root_dev_ino() -> Result<(libc::ino_t, libc::dev_t)> { | |
77 | - use std::os::unix::fs::MetadataExt; | |
78 | - | |
79 | +fn get_root_dev_ino() -> Result<DeviceAndINode> { | |
80 | fs::symlink_metadata("/") | |
81 | - .map(|md| (md.ino(), md.dev())) | |
82 | + .map(DeviceAndINode::from) | |
83 | .map_err(|r| Error::from_io1("std::fs::symlink_metadata", "/", r)) | |
84 | } | |
85 | ||
86 | fn root_dev_ino_check( | |
87 | - root_dev_ino: Option<(libc::ino_t, libc::dev_t)>, | |
88 | - dir_dev_ino: (libc::ino_t, libc::dev_t), | |
89 | + root_dev_ino: Option<DeviceAndINode>, | |
90 | + dir_dev_ino: DeviceAndINode, | |
91 | ) -> bool { | |
92 | root_dev_ino.map_or(false, |root_dev_ino| root_dev_ino == dir_dev_ino) | |
93 | } | |
94 | Index: rust-coreutils-0.0.14/src/uu/chcon/src/errors.rs | |
95 | =================================================================== | |
96 | --- rust-coreutils-0.0.14.orig/src/uu/chcon/src/errors.rs | |
97 | +++ rust-coreutils-0.0.14/src/uu/chcon/src/errors.rs | |
98 | @@ -14,6 +14,9 @@ pub(crate) enum Error { | |
99 | #[error("No files are specified")] | |
100 | MissingFiles, | |
101 | ||
102 | + #[error("Data is out of range")] | |
103 | + OutOfRange, | |
104 | + | |
105 | #[error("{0}")] | |
106 | ArgumentsMismatch(String), | |
107 |
6 | 6 | relax-strum.diff |
7 | 7 | fix-install-path.diff |
8 | 8 | fix-completion-path.diff |
9 | unsound_local_offset.diff | |
10 | 9 | bump-exacl.diff |
11 | 10 | delegate-ln-to-dh.diff |
11 | relax-once-cell.diff | |
12 | relax-regex.diff | |
13 | relax-z85.diff | |
14 | relax-unicode-segmentation.diff | |
15 | lower-notify.diff |
0 | Index: coreutils/.cargo/config | |
1 | =================================================================== | |
2 | --- coreutils.orig/.cargo/config | |
3 | +++ coreutils/.cargo/config | |
4 | @@ -14,7 +14,7 @@ rustflags = [ | |
5 | # See https://github.com/time-rs/time/issues/293#issuecomment-1005002386. The | |
6 | # unsoundness here is not in the `time` library, but in the Rust stdlib, and as | |
7 | # such it needs to be fixed there. | |
8 | -rustflags = "--cfg unsound_local_offset" | |
9 | +rustflags = ["--cfg", "unsound_local_offset"] | |
10 | ||
11 | [target.'cfg(target_os = "linux")'] | |
12 | rustflags = ["--cfg", "unsound_local_offset"] |