From d4bffea880c576736436e8d3387d83d6d7768e82 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 8 Feb 2026 22:14:30 +0700 Subject: [PATCH] Update nushell and add to CI --- config/x86_64/ci.toml | 2 +- recipes/shells/nushell/recipe.toml | 14 +- recipes/shells/nushell/redox.patch | 707 +++++++++++++++++++++++++++++ 3 files changed, 713 insertions(+), 10 deletions(-) create mode 100644 recipes/shells/nushell/redox.patch diff --git a/config/x86_64/ci.toml b/config/x86_64/ci.toml index b21712a9..8863f350 100644 --- a/config/x86_64/ci.toml +++ b/config/x86_64/ci.toml @@ -126,6 +126,7 @@ netutils = {} neverball = {} nghttp2 = {} nginx = {} +nushell = {} onefetch = {} openjazz = {} openssh = {} @@ -281,7 +282,6 @@ zstd = {} #newlib = {} # obsolete #newlibtest = {} # obsolete #noto-color-emoji = {} -#nushell = {} # needs cargo update #openjk = {} #openposixtestsuite = {} #opentyrian = {} diff --git a/recipes/shells/nushell/recipe.toml b/recipes/shells/nushell/recipe.toml index e2559c66..db22b6c4 100644 --- a/recipes/shells/nushell/recipe.toml +++ b/recipes/shells/nushell/recipe.toml @@ -1,11 +1,8 @@ -#TODO: build fails to link, we need the following in relibc -# - getgrgid_r -# - getgrouplist -# Additionally, openssl fails to link fprintf and sscanf - +#TODO: Reduce crate patches [source] -git = "https://github.com/jackpot51/nushell.git" -branch = "redox" +git = "https://github.com/nushell/nushell" +rev = "172a070a4bbeff15a289813bc73d4628a3032210" +patches = ["redox.patch"] [build] dependencies = [ @@ -13,8 +10,7 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT export OPENSSL_DIR="${COOKBOOK_SYSROOT}" -export OPENSSL_STATIC="true" cookbook_cargo """ - diff --git a/recipes/shells/nushell/redox.patch b/recipes/shells/nushell/redox.patch new file mode 100644 index 00000000..5e33b030 --- /dev/null +++ b/recipes/shells/nushell/redox.patch @@ -0,0 +1,707 @@ +diff --git a/Cargo.lock b/Cargo.lock +index 96aeafeae..01486a61d 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -180,14 +180,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" + dependencies = [ + "clipboard-win", +- "core-graphics", +- "image", + "log", +- "objc2 0.5.2", ++ "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", +- "windows-sys 0.48.0", + "wl-clipboard-rs", + "x11rb", + ] +@@ -884,16 +881,7 @@ version = "0.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" + dependencies = [ +- "objc2 0.5.2", +-] +- +-[[package]] +-name = "block2" +-version = "0.6.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +-dependencies = [ +- "objc2 0.6.3", ++ "objc2", + ] + + [[package]] +@@ -987,12 +975,6 @@ version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +-[[package]] +-name = "byteorder-lite" +-version = "0.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" +- + [[package]] + name = "bytes" + version = "1.11.1" +@@ -1438,30 +1420,6 @@ version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +-[[package]] +-name = "core-graphics" +-version = "0.23.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +-dependencies = [ +- "bitflags 1.3.2", +- "core-foundation 0.9.4", +- "core-graphics-types", +- "foreign-types 0.5.0", +- "libc", +-] +- +-[[package]] +-name = "core-graphics-types" +-version = "0.1.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +-dependencies = [ +- "bitflags 1.3.2", +- "core-foundation 0.9.4", +- "libc", +-] +- + [[package]] + name = "cpufeatures" + version = "0.2.17" +@@ -1639,17 +1597,6 @@ dependencies = [ + "memchr", + ] + +-[[package]] +-name = "ctrlc" +-version = "3.5.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" +-dependencies = [ +- "dispatch2", +- "nix 0.30.1", +- "windows-sys 0.61.0", +-] +- + [[package]] + name = "curl" + version = "0.4.47" +@@ -1881,18 +1828,6 @@ dependencies = [ + "windows-sys 0.61.0", + ] + +-[[package]] +-name = "dispatch2" +-version = "0.3.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +-dependencies = [ +- "bitflags 2.10.0", +- "block2 0.6.2", +- "libc", +- "objc2 0.6.3", +-] +- + [[package]] + name = "displaydoc" + version = "0.2.5" +@@ -2016,7 +1951,6 @@ version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e49905ece098e793ca21a019598e9efc9a66459ad1d76bd7619e771a42dae2fc" + dependencies = [ +- "arboard", + "crossterm 0.29.0", + "edit", + "edtui-jagged", +@@ -2228,26 +2162,6 @@ version = "2.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +-[[package]] +-name = "fax" +-version = "0.2.6" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +-dependencies = [ +- "fax_derive", +-] +- +-[[package]] +-name = "fax_derive" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 2.0.114", +-] +- + [[package]] + name = "fd-lock" + version = "4.0.2" +@@ -2259,15 +2173,6 @@ dependencies = [ + "windows-sys 0.52.0", + ] + +-[[package]] +-name = "fdeflate" +-version = "0.3.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +-dependencies = [ +- "simd-adler32", +-] +- + [[package]] + name = "file-id" + version = "0.2.2" +@@ -2408,28 +2313,7 @@ version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + dependencies = [ +- "foreign-types-shared 0.1.1", +-] +- +-[[package]] +-name = "foreign-types" +-version = "0.5.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +-dependencies = [ +- "foreign-types-macros", +- "foreign-types-shared 0.3.1", +-] +- +-[[package]] +-name = "foreign-types-macros" +-version = "0.2.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 2.0.114", ++ "foreign-types-shared", + ] + + [[package]] +@@ -2438,12 +2322,6 @@ version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +-[[package]] +-name = "foreign-types-shared" +-version = "0.3.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +- + [[package]] + name = "form_urlencoded" + version = "1.2.2" +@@ -2711,17 +2589,6 @@ dependencies = [ + "tracing", + ] + +-[[package]] +-name = "half" +-version = "2.7.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +-dependencies = [ +- "cfg-if", +- "crunchy", +- "zerocopy 0.8.34", +-] +- + [[package]] + name = "halfbrown" + version = "0.4.0" +@@ -3154,20 +3021,6 @@ dependencies = [ + "icu_properties", + ] + +-[[package]] +-name = "image" +-version = "0.25.9" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +-dependencies = [ +- "bytemuck", +- "byteorder-lite", +- "moxcms", +- "num-traits", +- "png", +- "tiff", +-] +- + [[package]] + name = "indexmap" + version = "2.13.0" +@@ -3932,7 +3785,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" + dependencies = [ + "adler2", +- "simd-adler32", + ] + + [[package]] +@@ -3982,16 +3834,6 @@ dependencies = [ + "tokio", + ] + +-[[package]] +-name = "moxcms" +-version = "0.7.11" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +-dependencies = [ +- "num-traits", +- "pxfm", +-] +- + [[package]] + name = "multipart-rs" + version = "0.1.13" +@@ -4119,7 +3961,6 @@ version = "0.110.1" + dependencies = [ + "assert_cmd", + "crossterm 0.29.0", +- "ctrlc", + "dirs", + "fancy-regex", + "lexopt", +@@ -5043,15 +4884,6 @@ dependencies = [ + "objc2-encode", + ] + +-[[package]] +-name = "objc2" +-version = "0.6.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +-dependencies = [ +- "objc2-encode", +-] +- + [[package]] + name = "objc2-app-kit" + version = "0.2.2" +@@ -5059,9 +4891,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" + dependencies = [ + "bitflags 2.10.0", +- "block2 0.5.1", ++ "block2", + "libc", +- "objc2 0.5.2", ++ "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", +@@ -5075,8 +4907,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" + dependencies = [ + "bitflags 2.10.0", +- "block2 0.5.1", +- "objc2 0.5.2", ++ "block2", ++ "objc2", + "objc2-foundation", + ] + +@@ -5095,8 +4927,8 @@ version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" + dependencies = [ +- "block2 0.5.1", +- "objc2 0.5.2", ++ "block2", ++ "objc2", + "objc2-foundation", + "objc2-metal", + ] +@@ -5114,9 +4946,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" + dependencies = [ + "bitflags 2.10.0", +- "block2 0.5.1", ++ "block2", + "libc", +- "objc2 0.5.2", ++ "objc2", + ] + + [[package]] +@@ -5136,8 +4968,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" + dependencies = [ + "bitflags 2.10.0", +- "block2 0.5.1", +- "objc2 0.5.2", ++ "block2", ++ "objc2", + "objc2-foundation", + ] + +@@ -5148,8 +4980,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" + dependencies = [ + "bitflags 2.10.0", +- "block2 0.5.1", +- "objc2 0.5.2", ++ "block2", ++ "objc2", + "objc2-foundation", + "objc2-metal", + ] +@@ -5241,7 +5073,7 @@ checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" + dependencies = [ + "bitflags 2.10.0", + "cfg-if", +- "foreign-types 0.3.2", ++ "foreign-types", + "libc", + "once_cell", + "openssl-macros", +@@ -5638,19 +5470,6 @@ dependencies = [ + "time", + ] + +-[[package]] +-name = "png" +-version = "0.18.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +-dependencies = [ +- "bitflags 2.10.0", +- "crc32fast", +- "fdeflate", +- "flate2", +- "miniz_oxide", +-] +- + [[package]] + name = "polars" + version = "0.52.0" +@@ -6392,27 +6211,12 @@ dependencies = [ + "thiserror 1.0.69", + ] + +-[[package]] +-name = "pxfm" +-version = "0.1.27" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" +-dependencies = [ +- "num-traits", +-] +- + [[package]] + name = "quick-error" + version = "1.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +-[[package]] +-name = "quick-error" +-version = "2.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" +- + [[package]] + name = "quick-xml" + version = "0.36.2" +@@ -7948,7 +7752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "36e39da5d30887b5690e29de4c5ebb8ddff64ebd9933f98a01daaa4fd11b36ea" + dependencies = [ + "peresil", +- "quick-error 1.2.3", ++ "quick-error", + "sxd-document", + ] + +@@ -8169,20 +7973,6 @@ dependencies = [ + "once_cell", + ] + +-[[package]] +-name = "tiff" +-version = "0.10.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +-dependencies = [ +- "fax", +- "flate2", +- "half", +- "quick-error 2.0.1", +- "weezl", +- "zune-jpeg", +-] +- + [[package]] + name = "time" + version = "0.3.47" +@@ -8510,7 +8300,7 @@ dependencies = [ + "chrono", + "libc", + "log", +- "objc2 0.5.2", ++ "objc2", + "objc2-foundation", + "once_cell", + "percent-encoding", +@@ -9353,12 +9143,6 @@ dependencies = [ + "rustls-pki-types", + ] + +-[[package]] +-name = "weezl" +-version = "0.1.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" +- + [[package]] + name = "which" + version = "4.4.2" +@@ -10242,18 +10026,3 @@ dependencies = [ + "cc", + "pkg-config", + ] +- +-[[package]] +-name = "zune-core" +-version = "0.4.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +- +-[[package]] +-name = "zune-jpeg" +-version = "0.4.21" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +-dependencies = [ +- "zune-core", +-] +diff --git a/Cargo.toml b/Cargo.toml +index 1ec173b6d..4c9293791 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -89,7 +89,6 @@ chrono-tz = "0.10" + crossbeam-channel = "0.5.15" + crossterm = "0.29.0" + csv = "1.4" +-ctrlc = "3.5" + devicons = "0.6.12" + dialoguer = { default-features = false, version = "0.12" } + digest = { default-features = false, version = "0.10" } +@@ -248,7 +247,6 @@ nu-mcp = { path = "./crates/nu-mcp", version = "0.110.1", optional = true } + reedline = { workspace = true, features = ["bashisms"] } + + crossterm = { workspace = true } +-ctrlc = { workspace = true } + dirs = { workspace = true } + log = { workspace = true } + lexopt = { workspace = true } +diff --git a/crates/nu-command/src/default_context.rs b/crates/nu-command/src/default_context.rs +index fcc7fa3f9..a80237429 100644 +--- a/crates/nu-command/src/default_context.rs ++++ b/crates/nu-command/src/default_context.rs +@@ -271,9 +271,6 @@ pub fn add_shell_command_context(mut engine_state: EngineState) -> EngineState { + Whoami, + }; + +- #[cfg(all(unix, feature = "os"))] +- bind_command! { ULimit }; +- + #[cfg(all(unix, feature = "os"))] + bind_command! { UMask }; + +diff --git a/crates/nu-command/src/filesystem/ls.rs b/crates/nu-command/src/filesystem/ls.rs +index 554ec0fd9..7aae4bdc3 100644 +--- a/crates/nu-command/src/filesystem/ls.rs ++++ b/crates/nu-command/src/filesystem/ls.rs +@@ -773,20 +773,12 @@ pub(crate) fn dir_entry_dict( + + record.push( + "user", +- if let Some(user) = users::get_user_by_uid(md.uid().into()) { +- Value::string(user.name, span) +- } else { +- Value::int(md.uid().into(), span) +- }, ++ Value::int(md.uid().into(), span) + ); + + record.push( + "group", +- if let Some(group) = users::get_group_by_gid(md.gid().into()) { +- Value::string(group.name, span) +- } else { +- Value::int(md.gid().into(), span) +- }, ++ Value::int(md.gid().into(), span) + ); + } + } +diff --git a/crates/nu-command/src/filesystem/ucp.rs b/crates/nu-command/src/filesystem/ucp.rs +index 2198911e6..b193dab2c 100644 +--- a/crates/nu-command/src/filesystem/ucp.rs ++++ b/crates/nu-command/src/filesystem/ucp.rs +@@ -320,7 +320,8 @@ fn make_attributes(preserve: Option) -> Result) -> Result) -> PermissionResult { + + #[cfg(unix)] + pub mod users { +- use nix::unistd::{Gid, Group, Uid, User}; +- +- pub fn get_user_by_uid(uid: Uid) -> Option { +- User::from_uid(uid).ok().flatten() +- } +- +- pub fn get_group_by_gid(gid: Gid) -> Option { +- Group::from_gid(gid).ok().flatten() +- } ++ use nix::unistd::{Gid, Uid}; + + pub fn get_current_uid() -> Uid { + Uid::current() +@@ -60,7 +52,7 @@ pub mod users { + + #[cfg(not(any(target_os = "linux", target_os = "freebsd", target_os = "android")))] + pub fn get_current_username() -> Option { +- get_user_by_uid(get_current_uid()).map(|user| user.name) ++ None + } + + #[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "android"))] +@@ -127,22 +119,7 @@ pub mod users { + nix::libc::getgrouplist(name.as_ptr(), gid.as_raw(), buff.as_mut_ptr(), &mut count) + }; + +- if res < 0 { +- None +- } else { +- buff.truncate(count as usize); +- buff.sort_unstable(); +- buff.dedup(); +- // allow trivial cast: on macos i is i32, on linux it's already gid_t +- #[allow(trivial_numeric_casts)] +- Some( +- buff.into_iter() +- .map(|id| Gid::from_raw(id as gid_t)) +- .filter_map(get_group_by_gid) +- .map(|group| group.gid) +- .collect(), +- ) +- } ++ None + } + } + +diff --git a/rust-toolchain.toml b/rust-toolchain.toml +deleted file mode 100644 +index 37ca9dfd1..000000000 +--- a/rust-toolchain.toml ++++ /dev/null +@@ -1,17 +0,0 @@ +-# So, you want to update the Rust toolchain... +-# The key is making sure all our dependencies support the version of Rust we're using, +-# and that nushell compiles on all the platforms tested in our CI. +- +-# Here's some documentation on how to use this file: +-# https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file +- +-[toolchain] +-# The default profile includes rustc, rust-std, cargo, rust-docs, rustfmt and clippy. +-# https://rust-lang.github.io/rustup/concepts/profiles.html +-profile = "default" +-# The current plan is to be 2 releases behind the latest stable release. So, if the +-# latest stable release is 1.72.0, the channel should be 1.70.0. We want to do this +-# so that we give repo maintainers and package managers a chance to update to a more +-# recent version of rust. However, if there is a "cool new feature" that we want to +-# use in nushell, we may opt to use the bleeding edge stable version of rust. +-channel = "1.91.1" +diff --git a/src/signals.rs b/src/signals.rs +index c3a4b8379..d5be1009c 100644 +--- a/src/signals.rs ++++ b/src/signals.rs +@@ -25,10 +25,4 @@ pub(crate) fn ctrlc_protection(engine_state: &mut EngineState) { + .expect("Failed to register interrupt signal handler"); + + engine_state.signal_handlers = Some(signal_handlers.clone()); +- +- ctrlc::set_handler(move || { +- interrupt.store(true, Ordering::Relaxed); +- signal_handlers.run(SignalAction::Interrupt); +- }) +- .expect("Error setting Ctrl-C handler"); + }