2020-05-24 23:43:59 -05:00
# coreutils (uutils)
2020-04-13 22:10:20 +02:00
# * see the repository LICENSE, README, and CONTRIBUTING files for more information
2020-04-13 20:01:20 +02:00
2026-04-05 07:45:42 +09:00
# spell-checker:ignore (libs) bigdecimal datetime foldhash serde gethostid kqueue libselinux mangen memmap uuhelp startswith constness expl unnested logind cfgs interner getauxval
2021-08-02 20:36:06 +02:00
2015-08-01 00:49:14 +02:00
[ package ]
2020-05-24 18:14:37 -05:00
name = "coreutils"
2020-06-01 17:24:19 -05:00
description = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
2022-01-20 16:46:49 +01:00
default-run = "coreutils"
2020-05-24 18:14:37 -05:00
repository = "https://github.com/uutils/coreutils"
2026-02-06 22:58:51 +00:00
edition . workspace = true
rust-version . workspace = true
2025-04-09 03:49:10 -04:00
version . workspace = true
license . workspace = true
homepage . workspace = true
keywords . workspace = true
categories . workspace = true
2015-08-01 00:49:14 +02:00
2024-06-28 10:26:23 +02:00
[ package . metadata . docs . rs ]
all-features = true
2015-08-01 00:49:14 +02:00
[ features ]
2023-06-08 09:07:12 +02:00
default = [ "feat_common_core" ]
2020-04-08 00:21:25 -05:00
## OS feature shortcodes
2023-06-08 09:07:12 +02:00
unix = [ "feat_os_unix" ]
windows = [ "feat_os_windows" ]
2020-04-08 00:21:25 -05:00
## project-specific feature shortcodes
2024-06-26 15:36:41 +02:00
expensive_tests = []
2024-12-23 00:14:15 -05:00
# "test_risky_names" == enable tests that create problematic file names (would make a network share inaccessible to Windows, breaks SVN on Mac OS, etc.)
test_risky_names = []
2022-12-29 23:39:40 -06:00
# * only build `uudoc` when `--feature uudoc` is activated
2026-03-15 18:03:30 +01:00
uudoc = [
"dep:clap_complete" ,
"dep:clap_mangen" ,
"dep:fluent-syntax" ,
2026-03-15 22:15:50 +01:00
"dep:jiff" ,
2026-03-15 18:03:30 +01:00
"dep:regex" ,
"dep:zip" ,
]
2022-12-29 23:39:40 -06:00
## features
2025-05-27 21:06:02 +02:00
## Optional feature for stdbuf
# "feat_external_libstdbuf" == use an external libstdbuf.so for stdbuf instead of embedding it
feat_external_libstdbuf = [ "stdbuf/feat_external_libstdbuf" ]
2025-08-23 19:05:40 +02:00
# "feat_systemd_logind" == enable feat_systemd_logind support for utmpx replacement
feat_systemd_logind = [
"pinky/feat_systemd_logind" ,
"uptime/feat_systemd_logind" ,
"users/feat_systemd_logind" ,
"uucore/feat_systemd_logind" ,
"who/feat_systemd_logind" ,
]
2022-12-29 23:39:40 -06:00
# "feat_acl" == enable support for ACLs (access control lists; by using`--features feat_acl`)
# NOTE:
# * On linux, the posix-acl/acl-sys crate requires `libacl` headers and shared library to be accessible in the C toolchain at compile time.
# * On FreeBSD and macOS this is not required.
feat_acl = [ "cp/feat_acl" ]
# "feat_selinux" == enable support for SELinux Security Context (by using `--features feat_selinux`)
# NOTE:
# * The selinux(-sys) crate requires `libselinux` headers and shared library to be accessible in the C toolchain at compile time.
# * Running a uutils compiled with `feat_selinux` requires an SELinux enabled Kernel at run time.
2023-06-08 09:07:12 +02:00
feat_selinux = [
"cp/selinux" ,
2025-07-09 00:13:58 -04:00
"feat_require_selinux" ,
2023-06-08 09:07:12 +02:00
"id/selinux" ,
2025-05-09 22:17:21 +02:00
"install/selinux" ,
2023-06-08 09:07:12 +02:00
"ls/selinux" ,
2025-04-08 17:10:27 -04:00
"mkdir/selinux" ,
2025-04-23 09:41:27 +02:00
"mkfifo/selinux" ,
2025-04-21 23:43:29 +02:00
"mknod/selinux" ,
2023-06-08 09:07:12 +02:00
"selinux" ,
2025-07-09 00:13:58 -04:00
"stat/selinux" ,
2023-06-08 09:07:12 +02:00
]
2025-12-28 05:41:29 -05:00
# "feat_smack" == enable support for SMACK Security Context (by using `--features feat_smack`)
# NOTE:
# * Running a uutils compiled with `feat_smack` requires a SMACK enabled Kernel at run time.
2025-12-29 16:13:46 +00:00
feat_smack = [
"id/smack" ,
"ls/smack" ,
"mkdir/smack" ,
"mkfifo/smack" ,
"mknod/smack" ,
]
2022-12-29 23:39:40 -06:00
##
2020-04-08 00:21:25 -05:00
## feature sets
2020-04-19 22:05:49 -05:00
## (common/core and Tier1) feature sets
2020-04-08 00:21:25 -05:00
# "feat_common_core" == baseline core set of utilities which can be built/run on most targets
2020-01-01 13:21:51 -06:00
feat_common_core = [
2023-06-08 09:07:12 +02:00
"base32" ,
"base64" ,
"basename" ,
"basenc" ,
"cat" ,
"cksum" ,
2026-01-09 15:43:12 +01:00
"b2sum" ,
2026-01-06 23:39:27 +01:00
"md5sum" ,
2026-01-09 16:40:17 +01:00
"sha1sum" ,
2026-01-09 17:03:13 +01:00
"sha224sum" ,
2026-01-09 17:18:39 +01:00
"sha256sum" ,
2026-01-09 17:44:43 +01:00
"sha384sum" ,
2026-01-09 17:58:36 +01:00
"sha512sum" ,
2023-06-08 09:07:12 +02:00
"comm" ,
"cp" ,
"csplit" ,
"cut" ,
"date" ,
2025-07-09 00:13:58 -04:00
"dd" ,
2023-06-08 09:07:12 +02:00
"df" ,
"dir" ,
"dircolors" ,
"dirname" ,
"du" ,
"echo" ,
"env" ,
"expand" ,
"expr" ,
"factor" ,
"false" ,
"fmt" ,
"fold" ,
"head" ,
"join" ,
"link" ,
"ln" ,
"ls" ,
"mkdir" ,
"mktemp" ,
"more" ,
"mv" ,
"nl" ,
"numfmt" ,
"od" ,
"paste" ,
2026-03-26 05:40:30 +09:00
"pathchk" ,
2023-06-08 09:07:12 +02:00
"pr" ,
"printenv" ,
"printf" ,
"ptx" ,
"pwd" ,
"readlink" ,
"realpath" ,
"rm" ,
"rmdir" ,
"seq" ,
"shred" ,
"shuf" ,
"sleep" ,
"sort" ,
"split" ,
"sum" ,
"tac" ,
"tail" ,
"tee" ,
"test" ,
2025-07-09 00:13:58 -04:00
"touch" ,
2023-06-08 09:07:12 +02:00
"tr" ,
"true" ,
"truncate" ,
"tsort" ,
"unexpand" ,
"uniq" ,
"unlink" ,
"vdir" ,
"wc" ,
"yes" ,
2015-11-29 17:27:54 -05:00
]
2020-04-19 22:05:49 -05:00
# "feat_Tier1" == expanded set of utilities which can be built/run on the usual rust "Tier 1" target platforms (ref: <https://forge.rust-lang.org/release/platform-support.html>)
feat_Tier1 = [
2023-06-08 09:07:12 +02:00
"feat_common_core" ,
"arch" ,
"hostname" ,
"nproc" ,
"sync" ,
"uname" ,
"whoami" ,
2020-04-19 22:05:49 -05:00
]
## (primary platforms) feature sets
2026-03-05 07:52:28 +09:00
# "feat_wasm" == set of utilities which can be built for wasm target
# We don't need to support all of wasm targets. So the ambiguous name is used at here
# It is bit complex to deduplicate with other lists
feat_wasm = [
2026-03-31 15:10:45 +09:00
"arch" ,
2026-03-05 07:52:28 +09:00
"base32" ,
"base64" ,
2026-03-31 23:03:41 +02:00
"basename" ,
2026-04-10 01:29:09 +01:00
"basenc" ,
2026-03-30 20:42:26 +02:00
"cat" ,
2026-03-31 23:03:41 +02:00
"comm" ,
2026-03-31 22:50:40 +02:00
"cp" ,
2026-03-31 23:03:41 +02:00
"csplit" ,
2026-03-05 07:52:28 +09:00
"cut" ,
"date" ,
2026-03-31 23:03:41 +02:00
"dir" ,
2026-03-05 07:52:28 +09:00
"dircolors" ,
"dirname" ,
"echo" ,
"expand" ,
"factor" ,
"false" ,
"fmt" ,
"fold" ,
2026-03-31 23:03:41 +02:00
"head" ,
2026-03-05 07:52:28 +09:00
"join" ,
"link" ,
2026-03-31 23:03:41 +02:00
"ln" ,
"ls" ,
"mkdir" ,
2026-03-31 22:50:40 +02:00
"mv" ,
2026-03-05 07:52:28 +09:00
"nl" ,
2026-03-31 23:03:41 +02:00
"nproc" ,
2026-03-05 07:52:28 +09:00
"numfmt" ,
"od" ,
"paste" ,
2026-03-26 05:40:30 +09:00
"pathchk" ,
2026-03-05 07:52:28 +09:00
"pr" ,
"printenv" ,
"printf" ,
"ptx" ,
"pwd" ,
2026-03-31 23:03:41 +02:00
"readlink" ,
"realpath" ,
"rm" ,
"rmdir" ,
2026-03-05 07:52:28 +09:00
"seq" ,
"shred" ,
"shuf" ,
"sleep" ,
2026-04-03 12:15:13 +02:00
"sort" ,
2026-04-10 01:29:09 +01:00
"split" ,
2026-03-05 07:52:28 +09:00
"sum" ,
2026-04-03 12:14:59 +02:00
"tail" ,
2026-03-05 07:52:28 +09:00
"tee" ,
2026-03-31 23:03:41 +02:00
"touch" ,
2026-03-31 22:50:40 +02:00
"tr" ,
2026-03-05 07:52:28 +09:00
"true" ,
"truncate" ,
2026-03-31 23:03:41 +02:00
"tsort" ,
2026-03-31 15:10:45 +09:00
"uname" ,
2026-03-05 07:52:28 +09:00
"unexpand" ,
"uniq" ,
"unlink" ,
2026-03-31 23:03:41 +02:00
"vdir" ,
2026-03-05 07:52:28 +09:00
"wc" ,
"yes" ,
# cksum family
"cksum" ,
"b2sum" ,
"md5sum" ,
"sha1sum" ,
"sha224sum" ,
"sha256sum" ,
"sha384sum" ,
"sha512sum" ,
]
2025-04-12 20:25:32 +02:00
# "feat_os_unix" == set of utilities which can be built/run on modern/usual *nix platforms.
2020-04-19 22:05:49 -05:00
feat_os_unix = [
2023-06-08 09:07:12 +02:00
"feat_Tier1" ,
#
"feat_require_unix" ,
2023-08-20 15:06:08 +02:00
"feat_require_unix_hostid" ,
2025-07-09 00:13:58 -04:00
"feat_require_unix_utmpx" ,
2020-04-19 22:05:49 -05:00
]
2025-09-09 11:16:39 +02:00
# "feat_os_unix_musl" == set of utilities which can be built/run on targets binding to the "musl" library (ref: <https://musl.libc.org/about.html>)
# It excludes stdbuf due to cdylib limitations (https://github.com/rust-lang/rust/issues/82193)
feat_os_unix_musl = [
"feat_Tier1" ,
#
"feat_require_unix_musl" ,
"feat_require_unix_hostid" ,
"feat_require_unix_utmpx" ,
]
2020-04-19 22:05:49 -05:00
# "feat_os_windows" == set of utilities which can be built/run on modern/usual windows platforms
feat_os_windows = [
2023-06-08 09:07:12 +02:00
"feat_Tier1" , ## == "feat_os_windows_legacy" + "hostname"
2020-05-10 21:14:58 -05:00
]
2020-04-19 22:05:49 -05:00
## (secondary platforms) feature sets
# "feat_os_unix_gnueabihf" == set of utilities which can be built/run on the "arm-unknown-linux-gnueabihf" target (ARMv6 Linux [hardfloat])
feat_os_unix_gnueabihf = [
2023-06-08 09:07:12 +02:00
"feat_Tier1" ,
#
"feat_require_unix" ,
"feat_require_unix_hostid" ,
"feat_require_unix_utmpx" ,
2020-04-19 22:05:49 -05:00
]
2022-02-09 13:08:28 -05:00
feat_os_unix_android = [
2023-06-08 09:07:12 +02:00
"feat_Tier1" ,
#
"feat_require_unix" ,
2020-04-19 22:05:49 -05:00
]
## feature sets with requirements (restricting cross-platform availability)
#
# ** NOTE: these `feat_require_...` sets should be minimized as much as possible to encourage cross-platform availability of utilities
#
2025-05-07 20:01:49 +02:00
# "feat_require_unix" == set of utilities requiring support which is only available on unix platforms
2025-09-09 11:16:39 +02:00
feat_require_unix = [ "feat_require_unix_core" , "stdbuf" ]
# "feat_require_unix_musl" == set of utilities requiring unix support, excluding stdbuf (cdylib not supported on musl)
feat_require_unix_musl = [ "feat_require_unix_core" ]
# "feat_require_unix_core" == core unix utilities (shared between regular unix and musl)
feat_require_unix_core = [
2023-06-08 09:07:12 +02:00
"chgrp" ,
"chmod" ,
"chown" ,
"chroot" ,
"groups" ,
"id" ,
"install" ,
"kill" ,
"logname" ,
"mkfifo" ,
"mknod" ,
"nice" ,
"nohup" ,
"stat" ,
"stty" ,
"timeout" ,
"tty" ,
2020-04-19 22:05:49 -05:00
]
2020-05-01 23:35:55 +02:00
# "feat_require_unix_utmpx" == set of utilities requiring unix utmp/utmpx support
2020-04-19 22:05:49 -05:00
# * ref: <https://wiki.musl-libc.org/faq.html#Q:-Why-is-the-utmp/wtmp-functionality-only-implemented-as-stubs?>
2023-06-08 09:07:12 +02:00
feat_require_unix_utmpx = [ "pinky" , "uptime" , "users" , "who" ]
2022-12-29 23:39:40 -06:00
# "feat_require_unix_hostid" == set of utilities requiring gethostid in libc (only some unixes provide)
2023-06-08 09:07:12 +02:00
feat_require_unix_hostid = [ "hostid" ]
2021-08-05 00:39:37 -04:00
# "feat_require_selinux" == set of utilities depending on SELinux.
2023-06-08 09:07:12 +02:00
feat_require_selinux = [ "chcon" , "runcon" ]
2020-04-19 22:05:49 -05:00
## (alternate/newer/smaller platforms) feature sets
2020-05-01 23:35:55 +02:00
# "feat_os_unix_fuchsia" == set of utilities which can be built/run on the "Fuchsia" OS (refs: <https://fuchsia.dev>; <https://en.wikipedia.org/wiki/Google_Fuchsia>)
2020-04-19 22:05:49 -05:00
feat_os_unix_fuchsia = [
2023-06-08 09:07:12 +02:00
"feat_common_core" ,
#
"chgrp" ,
"chmod" ,
"chown" ,
"du" ,
"groups" ,
"hostid" ,
"install" ,
"logname" ,
"mkfifo" ,
"mknod" ,
"nice" ,
"tty" ,
"uname" ,
"unlink" ,
2020-04-19 22:05:49 -05:00
]
# "feat_os_unix_redox" == set of utilities which can be built/run on "Redox OS" (refs: <https://www.redox-os.org>; <https://en.wikipedia.org/wiki/Redox_(operating_system)>)
feat_os_unix_redox = [
2023-06-08 09:07:12 +02:00
"feat_common_core" ,
#
"chmod" ,
2023-11-05 18:11:04 -08:00
"stat" ,
2023-06-08 09:07:12 +02:00
"uname" ,
2020-04-19 22:05:49 -05:00
]
# "feat_os_windows_legacy" == slightly restricted set of utilities which can be built/run on early windows platforms (eg, "WinXP")
feat_os_windows_legacy = [
2023-06-08 09:07:12 +02:00
"feat_common_core" ,
#
"arch" ,
"nproc" ,
"sync" ,
"whoami" ,
2020-04-19 22:05:49 -05:00
]
2020-05-05 01:47:26 -05:00
##
2020-05-21 22:41:49 -05:00
# * bypass/override ~ translate 'test' feature name to avoid dependency collision with rust core 'test' crate (o/w surfaces as compiler errors during testing)
2023-06-08 09:07:12 +02:00
test = [ "uu_test" ]
2015-08-01 00:49:14 +02:00
2025-06-06 07:56:08 -04:00
[ workspace ]
resolver = "3"
members = [
"." ,
"src/uu/*" ,
"src/uu/stdbuf/src/libstdbuf" ,
"src/uucore" ,
"src/uucore_procs" ,
"tests/uutests" ,
# "fuzz", # TODO
]
2024-06-30 10:50:45 +02:00
[ workspace . package ]
2025-04-09 03:49:10 -04:00
categories = [ "command-line-utilities" ]
edition = "2024"
2026-02-06 22:58:51 +00:00
rust-version = "1.88.0"
2025-04-09 03:49:10 -04:00
homepage = "https://github.com/uutils/coreutils"
keywords = [ "coreutils" , "uutils" , "cross-platform" , "cli" , "utility" ]
license = "MIT"
2024-06-30 10:50:45 +02:00
readme = "README.package.md"
2026-03-22 09:21:54 +01:00
version = "0.8.0"
2024-06-30 10:50:45 +02:00
2023-02-11 15:05:28 +01:00
[ workspace . dependencies ]
2024-05-01 10:16:15 +02:00
ansi-width = "0.1.0"
2023-07-05 10:30:04 +00:00
bigdecimal = "0.4"
2023-02-11 15:05:28 +01:00
binary-heap-plus = "0.5.0"
2024-03-12 10:39:25 -04:00
bstr = "1.9.1"
2024-04-19 10:13:05 +00:00
bytecount = "0.6.8"
2023-10-06 05:01:49 +00:00
byteorder = "1.5.0"
2025-08-24 20:52:49 +02:00
clap = { version = "4.5" , features = [ "wrap_help" , "cargo" , "color" ] }
2023-08-24 18:30:39 +00:00
clap_complete = "4.4"
2026-03-27 20:26:56 +00:00
clap_mangen = "0.3"
2023-02-11 15:05:28 +01:00
compare = "0.1.0"
2026-01-26 02:02:10 +00:00
crossterm = { version = "0.29.0" , default-features = false }
2026-04-13 05:12:15 +00:00
ctor = "0.10.0"
2026-03-12 13:47:00 +00:00
ctrlc = { version = "3.5.2" , features = [ "termination" ] }
divan = { package = "codspeed-divan-compat" , version = "4.4.1" }
2025-08-22 21:43:21 +00:00
dns-lookup = { version = "3.0.0" }
2024-02-03 05:15:12 +00:00
exacl = "0.12.0"
2023-02-11 15:05:28 +01:00
file_diff = "1.0.0"
2024-05-01 13:10:13 +00:00
filetime = "0.2.23"
2026-03-04 22:33:37 +00:00
foldhash = "0.2.0"
2023-03-28 05:53:55 +00:00
fs_extra = "1.3.0"
2025-03-25 13:45:02 +01:00
fts-sys = "0.2.16"
2023-03-28 12:50:30 +00:00
gcd = "2.3"
2023-03-27 05:36:00 +00:00
glob = "0.3.1"
2024-05-01 14:08:42 +00:00
half = "2.4.1"
2024-04-01 13:29:20 +00:00
hostname = "0.4"
2026-03-17 23:36:04 +00:00
icu_calendar = { version = "2.0.0" , default-features = false }
icu_collator = { version = "2.0.0" , default-features = false }
icu_datetime = { version = "2.0.0" , default-features = false }
icu_decimal = { version = "2.0.0" , default-features = false }
icu_locale = { version = "2.0.0" , default-features = false }
icu_provider = { version = "2.0.0" , default-features = false }
2025-07-04 12:30:38 +00:00
indicatif = "0.18.0"
2025-01-01 09:25:14 +01:00
itertools = "0.14.0"
2025-03-26 10:34:54 +01:00
itoa = "1.0.15"
2026-01-07 22:25:55 -08:00
jiff = "0.2.18"
2026-01-26 20:27:46 +00:00
jiff-icu = "0.2.2"
2026-04-09 17:37:48 +01:00
# Pin due to https://github.com/nix-rust/nix/issues/2750
libc = "=0.2.182"
2025-10-19 20:48:29 +00:00
lscolors = { version = "0.21.0" , default-features = false , features = [
2023-11-30 11:04:14 +01:00
"gnu_legacy" ,
2023-06-08 09:07:12 +02:00
] }
2024-05-01 15:02:31 +00:00
memchr = "2.7.2"
2024-05-01 15:57:19 +00:00
memmap2 = "0.9.4"
2026-03-12 13:47:00 +00:00
nix = { version = "0.31.2" , default-features = false }
2025-01-27 09:43:24 +01:00
nom = "8.0.0"
2025-08-03 16:57:49 +00:00
notify = { version = "=8.2.0" , features = [ "macos_kqueue" ] }
2023-08-23 00:11:14 +00:00
num-bigint = "0.4.4"
2026-02-23 10:30:41 +01:00
num-prime = "0.5.0"
2024-05-03 23:02:03 +00:00
num-traits = "0.2.19"
2025-05-24 07:43:10 +02:00
onig = { version = "~6.5.1" , default-features = false }
2026-02-14 21:53:17 +01:00
parse_datetime = "0.14.0"
2025-08-23 15:10:53 +02:00
phf = "0.13.1"
phf_codegen = "0.13.1"
2024-04-11 08:10:57 +00:00
platform-info = "2.0.3"
2026-03-15 00:16:14 +00:00
pretty_assertions = "1.4.1"
2025-10-21 16:15:39 +09:00
procfs = "0.18"
2026-04-11 14:15:18 +02:00
rand = { version = "0.10.1" , features = [ "std_rng" ] }
2026-03-01 21:10:56 +00:00
rand_chacha = { version = "0.10.0" }
2024-03-24 07:39:46 +00:00
rayon = "1.10"
2024-03-23 12:35:14 +00:00
regex = "1.10.4"
2026-02-01 18:35:46 +00:00
rlimit = "0.11.0"
2025-07-26 22:00:01 +00:00
rstest = "0.26.0"
2026-02-08 13:37:00 +01:00
rstest_reuse = "0.7.0"
2026-02-04 05:01:05 +09:00
rustc-hash = "2.1.1"
2024-04-09 14:02:29 +00:00
rust-ini = "0.21.0"
2026-04-05 07:45:42 +09:00
# binary name of coreutils can be hijacked by overriding getauxval via LD_PRELOAD
# So we use param and avoid libc backend
rustix = { version = "1.1.4" , features = [ "param" ] }
2023-02-11 15:05:28 +01:00
same-file = "1.0.6"
2024-05-03 16:54:38 +00:00
self_cell = "1.0.4"
2026-04-11 15:52:38 +01:00
selinux = "0.6"
2025-12-27 22:45:33 +01:00
string-interner = "0.19.0"
2025-01-03 14:40:37 +01:00
tempfile = "3.15.0"
2024-09-25 04:48:26 +00:00
terminal_size = "0.4.0"
2024-02-17 20:06:01 +00:00
textwrap = { version = "0.16.1" , features = [ "terminal_size" ] }
2024-11-25 09:28:35 +01:00
thiserror = "2.0.3"
2024-05-02 08:51:50 +00:00
time = { version = "0.3.36" }
2024-12-02 15:03:28 +01:00
unicode-width = "0.2.0"
2025-11-18 09:37:38 +01:00
unit-prefix = "0.5"
2024-05-16 17:54:22 +03:30
utmp-classic = "0.1.6"
2026-03-13 19:00:12 +00:00
uutils_term_grid = "0.8"
2024-03-01 18:54:09 +00:00
walkdir = "2.5"
2024-04-25 03:25:44 +00:00
winapi-util = "0.1.8"
2025-09-05 07:50:12 +02:00
windows-sys = { version = "0.61.0" , default-features = false }
2024-01-15 03:14:26 +00:00
xattr = "1.3.1"
2026-02-15 00:29:50 +00:00
zip = { version = "8.0.0" , default-features = false , features = [ "deflate" ] }
2023-02-11 15:05:28 +01:00
2023-02-13 11:40:16 +08:00
hex = "0.4.3"
2023-09-22 15:40:11 +00:00
md-5 = "0.10.6"
2023-09-21 16:11:20 +00:00
sha1 = "0.10.6"
2023-09-26 16:57:54 +00:00
sha2 = "0.10.8"
2023-05-05 19:32:32 +00:00
sha3 = "0.10.8"
2023-09-10 22:42:02 +00:00
blake2b_simd = "1.0.2"
2024-03-12 09:35:22 +00:00
blake3 = "1.5.1"
2026-03-28 16:43:41 +01:00
sm3 = "0.5.0"
2026-03-17 17:24:52 +00:00
crc-fast = { version = "1.5.0" , default-features = false }
2023-05-22 12:49:11 +00:00
digest = "0.10.7"
2023-02-13 11:40:16 +08:00
2025-05-18 18:38:05 +02:00
# Fluent dependencies
2025-05-24 14:46:52 +02:00
fluent = "0.17.0"
2025-05-18 18:38:05 +02:00
unic-langid = "0.9.6"
2025-06-02 22:28:48 +02:00
fluent-syntax = "0.12.0"
2025-05-18 18:38:05 +02:00
2026-03-22 09:21:54 +01:00
uucore = { version = "0.8.0" , package = "uucore" , path = "src/uucore" }
uucore_procs = { version = "0.8.0" , package = "uucore_procs" , path = "src/uucore_procs" }
uu_ls = { version = "0.8.0" , path = "src/uu/ls" }
uu_base32 = { version = "0.8.0" , path = "src/uu/base32" }
uu_checksum_common = { version = "0.8.0" , path = "src/uu/checksum_common" }
uutests = { version = "0.8.0" , package = "uutests" , path = "tests/uutests" }
2023-02-11 15:05:28 +01:00
[ dependencies ]
2026-03-15 22:15:50 +01:00
clap . workspace = true
2025-10-18 21:25:23 -07:00
clap_complete = { workspace = true , optional = true }
clap_mangen = { workspace = true , optional = true }
fluent-syntax = { workspace = true , optional = true }
2026-01-31 12:16:31 +00:00
itertools . workspace = true
2026-03-15 22:15:50 +01:00
jiff = { workspace = true , optional = true }
2025-07-09 00:13:58 -04:00
phf . workspace = true
2026-03-15 22:15:50 +01:00
regex = { workspace = true , optional = true }
2023-06-08 09:07:12 +02:00
selinux = { workspace = true , optional = true }
2025-07-09 00:13:58 -04:00
textwrap . workspace = true
2025-10-18 21:25:23 -07:00
uucore . workspace = true
2023-06-08 09:07:12 +02:00
zip = { workspace = true , optional = true }
2023-02-11 15:05:28 +01:00
2023-03-17 08:55:08 +01:00
2020-05-03 15:18:48 -05:00
# * uutils
2026-03-22 09:21:54 +01:00
uu_test = { optional = true , version = "0.8.0" , package = "uu_test" , path = "src/uu/test" }
2020-05-05 01:47:26 -05:00
#
2026-03-22 09:21:54 +01:00
arch = { optional = true , version = "0.8.0" , package = "uu_arch" , path = "src/uu/arch" }
base32 = { optional = true , version = "0.8.0" , package = "uu_base32" , path = "src/uu/base32" }
base64 = { optional = true , version = "0.8.0" , package = "uu_base64" , path = "src/uu/base64" }
basename = { optional = true , version = "0.8.0" , package = "uu_basename" , path = "src/uu/basename" }
basenc = { optional = true , version = "0.8.0" , package = "uu_basenc" , path = "src/uu/basenc" }
cat = { optional = true , version = "0.8.0" , package = "uu_cat" , path = "src/uu/cat" }
chcon = { optional = true , version = "0.8.0" , package = "uu_chcon" , path = "src/uu/chcon" }
chgrp = { optional = true , version = "0.8.0" , package = "uu_chgrp" , path = "src/uu/chgrp" }
chmod = { optional = true , version = "0.8.0" , package = "uu_chmod" , path = "src/uu/chmod" }
chown = { optional = true , version = "0.8.0" , package = "uu_chown" , path = "src/uu/chown" }
chroot = { optional = true , version = "0.8.0" , package = "uu_chroot" , path = "src/uu/chroot" }
cksum = { optional = true , version = "0.8.0" , package = "uu_cksum" , path = "src/uu/cksum" }
b2sum = { optional = true , version = "0.8.0" , package = "uu_b2sum" , path = "src/uu/b2sum" }
md5sum = { optional = true , version = "0.8.0" , package = "uu_md5sum" , path = "src/uu/md5sum" }
sha1sum = { optional = true , version = "0.8.0" , package = "uu_sha1sum" , path = "src/uu/sha1sum" }
sha224sum = { optional = true , version = "0.8.0" , package = "uu_sha224sum" , path = "src/uu/sha224sum" }
sha256sum = { optional = true , version = "0.8.0" , package = "uu_sha256sum" , path = "src/uu/sha256sum" }
sha384sum = { optional = true , version = "0.8.0" , package = "uu_sha384sum" , path = "src/uu/sha384sum" }
sha512sum = { optional = true , version = "0.8.0" , package = "uu_sha512sum" , path = "src/uu/sha512sum" }
comm = { optional = true , version = "0.8.0" , package = "uu_comm" , path = "src/uu/comm" }
cp = { optional = true , version = "0.8.0" , package = "uu_cp" , path = "src/uu/cp" }
csplit = { optional = true , version = "0.8.0" , package = "uu_csplit" , path = "src/uu/csplit" }
cut = { optional = true , version = "0.8.0" , package = "uu_cut" , path = "src/uu/cut" }
date = { optional = true , version = "0.8.0" , package = "uu_date" , path = "src/uu/date" }
dd = { optional = true , version = "0.8.0" , package = "uu_dd" , path = "src/uu/dd" }
df = { optional = true , version = "0.8.0" , package = "uu_df" , path = "src/uu/df" }
dir = { optional = true , version = "0.8.0" , package = "uu_dir" , path = "src/uu/dir" }
dircolors = { optional = true , version = "0.8.0" , package = "uu_dircolors" , path = "src/uu/dircolors" }
dirname = { optional = true , version = "0.8.0" , package = "uu_dirname" , path = "src/uu/dirname" }
du = { optional = true , version = "0.8.0" , package = "uu_du" , path = "src/uu/du" }
echo = { optional = true , version = "0.8.0" , package = "uu_echo" , path = "src/uu/echo" }
env = { optional = true , version = "0.8.0" , package = "uu_env" , path = "src/uu/env" }
expand = { optional = true , version = "0.8.0" , package = "uu_expand" , path = "src/uu/expand" }
expr = { optional = true , version = "0.8.0" , package = "uu_expr" , path = "src/uu/expr" }
factor = { optional = true , version = "0.8.0" , package = "uu_factor" , path = "src/uu/factor" }
false = { optional = true , version = "0.8.0" , package = "uu_false" , path = "src/uu/false" }
fmt = { optional = true , version = "0.8.0" , package = "uu_fmt" , path = "src/uu/fmt" }
fold = { optional = true , version = "0.8.0" , package = "uu_fold" , path = "src/uu/fold" }
groups = { optional = true , version = "0.8.0" , package = "uu_groups" , path = "src/uu/groups" }
head = { optional = true , version = "0.8.0" , package = "uu_head" , path = "src/uu/head" }
hostid = { optional = true , version = "0.8.0" , package = "uu_hostid" , path = "src/uu/hostid" }
hostname = { optional = true , version = "0.8.0" , package = "uu_hostname" , path = "src/uu/hostname" }
id = { optional = true , version = "0.8.0" , package = "uu_id" , path = "src/uu/id" }
install = { optional = true , version = "0.8.0" , package = "uu_install" , path = "src/uu/install" }
join = { optional = true , version = "0.8.0" , package = "uu_join" , path = "src/uu/join" }
kill = { optional = true , version = "0.8.0" , package = "uu_kill" , path = "src/uu/kill" }
link = { optional = true , version = "0.8.0" , package = "uu_link" , path = "src/uu/link" }
ln = { optional = true , version = "0.8.0" , package = "uu_ln" , path = "src/uu/ln" }
ls = { optional = true , version = "0.8.0" , package = "uu_ls" , path = "src/uu/ls" }
logname = { optional = true , version = "0.8.0" , package = "uu_logname" , path = "src/uu/logname" }
mkdir = { optional = true , version = "0.8.0" , package = "uu_mkdir" , path = "src/uu/mkdir" }
mkfifo = { optional = true , version = "0.8.0" , package = "uu_mkfifo" , path = "src/uu/mkfifo" }
mknod = { optional = true , version = "0.8.0" , package = "uu_mknod" , path = "src/uu/mknod" }
mktemp = { optional = true , version = "0.8.0" , package = "uu_mktemp" , path = "src/uu/mktemp" }
more = { optional = true , version = "0.8.0" , package = "uu_more" , path = "src/uu/more" }
mv = { optional = true , version = "0.8.0" , package = "uu_mv" , path = "src/uu/mv" }
nice = { optional = true , version = "0.8.0" , package = "uu_nice" , path = "src/uu/nice" }
nl = { optional = true , version = "0.8.0" , package = "uu_nl" , path = "src/uu/nl" }
nohup = { optional = true , version = "0.8.0" , package = "uu_nohup" , path = "src/uu/nohup" }
nproc = { optional = true , version = "0.8.0" , package = "uu_nproc" , path = "src/uu/nproc" }
numfmt = { optional = true , version = "0.8.0" , package = "uu_numfmt" , path = "src/uu/numfmt" }
od = { optional = true , version = "0.8.0" , package = "uu_od" , path = "src/uu/od" }
paste = { optional = true , version = "0.8.0" , package = "uu_paste" , path = "src/uu/paste" }
pathchk = { optional = true , version = "0.8.0" , package = "uu_pathchk" , path = "src/uu/pathchk" }
pinky = { optional = true , version = "0.8.0" , package = "uu_pinky" , path = "src/uu/pinky" }
pr = { optional = true , version = "0.8.0" , package = "uu_pr" , path = "src/uu/pr" }
printenv = { optional = true , version = "0.8.0" , package = "uu_printenv" , path = "src/uu/printenv" }
printf = { optional = true , version = "0.8.0" , package = "uu_printf" , path = "src/uu/printf" }
ptx = { optional = true , version = "0.8.0" , package = "uu_ptx" , path = "src/uu/ptx" }
pwd = { optional = true , version = "0.8.0" , package = "uu_pwd" , path = "src/uu/pwd" }
readlink = { optional = true , version = "0.8.0" , package = "uu_readlink" , path = "src/uu/readlink" }
realpath = { optional = true , version = "0.8.0" , package = "uu_realpath" , path = "src/uu/realpath" }
rm = { optional = true , version = "0.8.0" , package = "uu_rm" , path = "src/uu/rm" }
rmdir = { optional = true , version = "0.8.0" , package = "uu_rmdir" , path = "src/uu/rmdir" }
runcon = { optional = true , version = "0.8.0" , package = "uu_runcon" , path = "src/uu/runcon" }
seq = { optional = true , version = "0.8.0" , package = "uu_seq" , path = "src/uu/seq" }
shred = { optional = true , version = "0.8.0" , package = "uu_shred" , path = "src/uu/shred" }
shuf = { optional = true , version = "0.8.0" , package = "uu_shuf" , path = "src/uu/shuf" }
sleep = { optional = true , version = "0.8.0" , package = "uu_sleep" , path = "src/uu/sleep" }
sort = { optional = true , version = "0.8.0" , package = "uu_sort" , path = "src/uu/sort" }
split = { optional = true , version = "0.8.0" , package = "uu_split" , path = "src/uu/split" }
stat = { optional = true , version = "0.8.0" , package = "uu_stat" , path = "src/uu/stat" }
stdbuf = { optional = true , version = "0.8.0" , package = "uu_stdbuf" , path = "src/uu/stdbuf" }
stty = { optional = true , version = "0.8.0" , package = "uu_stty" , path = "src/uu/stty" }
sum = { optional = true , version = "0.8.0" , package = "uu_sum" , path = "src/uu/sum" }
sync = { optional = true , version = "0.8.0" , package = "uu_sync" , path = "src/uu/sync" }
tac = { optional = true , version = "0.8.0" , package = "uu_tac" , path = "src/uu/tac" }
tail = { optional = true , version = "0.8.0" , package = "uu_tail" , path = "src/uu/tail" }
tee = { optional = true , version = "0.8.0" , package = "uu_tee" , path = "src/uu/tee" }
timeout = { optional = true , version = "0.8.0" , package = "uu_timeout" , path = "src/uu/timeout" }
touch = { optional = true , version = "0.8.0" , package = "uu_touch" , path = "src/uu/touch" }
tr = { optional = true , version = "0.8.0" , package = "uu_tr" , path = "src/uu/tr" }
true = { optional = true , version = "0.8.0" , package = "uu_true" , path = "src/uu/true" }
truncate = { optional = true , version = "0.8.0" , package = "uu_truncate" , path = "src/uu/truncate" }
tsort = { optional = true , version = "0.8.0" , package = "uu_tsort" , path = "src/uu/tsort" }
tty = { optional = true , version = "0.8.0" , package = "uu_tty" , path = "src/uu/tty" }
uname = { optional = true , version = "0.8.0" , package = "uu_uname" , path = "src/uu/uname" }
unexpand = { optional = true , version = "0.8.0" , package = "uu_unexpand" , path = "src/uu/unexpand" }
uniq = { optional = true , version = "0.8.0" , package = "uu_uniq" , path = "src/uu/uniq" }
unlink = { optional = true , version = "0.8.0" , package = "uu_unlink" , path = "src/uu/unlink" }
uptime = { optional = true , version = "0.8.0" , package = "uu_uptime" , path = "src/uu/uptime" }
users = { optional = true , version = "0.8.0" , package = "uu_users" , path = "src/uu/users" }
vdir = { optional = true , version = "0.8.0" , package = "uu_vdir" , path = "src/uu/vdir" }
wc = { optional = true , version = "0.8.0" , package = "uu_wc" , path = "src/uu/wc" }
who = { optional = true , version = "0.8.0" , package = "uu_who" , path = "src/uu/who" }
whoami = { optional = true , version = "0.8.0" , package = "uu_whoami" , path = "src/uu/whoami" }
yes = { optional = true , version = "0.8.0" , package = "uu_yes" , path = "src/uu/yes" }
2021-05-17 19:22:56 +02:00
2026-04-05 07:45:42 +09:00
[ target . 'cfg(any(target_os = "linux", target_os = "android"))' . dependencies ]
rustix . workspace = true
2021-05-29 14:29:46 +02:00
# this breaks clippy linting with: "tests/by-util/test_factor_benches.rs: No such file or directory (os error 2)"
# factor_benches = { optional = true, version = "0.0.0", package = "uu_factor_benches", path = "tests/benches/factor" }
2021-05-17 19:22:56 +02:00
2020-01-02 18:22:13 -06:00
#
2020-05-22 00:17:56 -05:00
# * pinned transitive dependencies
2021-03-25 23:28:47 +01:00
# Not needed for now. Keep as examples:
#pin_cc = { version="1.0.61, < 1.0.62", package="cc" } ## cc v1.0.62 has compiler errors for MinRustV v1.32.0, requires 1.34 (for `std::str::split_ascii_whitespace()`)
2015-08-01 00:49:14 +02:00
2015-11-16 00:25:01 -05:00
[ dev-dependencies ]
2025-07-09 00:13:58 -04:00
ctor . workspace = true
filetime . workspace = true
glob . workspace = true
2026-01-06 15:06:35 -08:00
jiff . workspace = true
2025-07-09 00:13:58 -04:00
libc . workspace = true
2026-01-23 06:48:42 +09:00
bytecount . workspace = true
2025-07-09 00:13:58 -04:00
num-prime . workspace = true
2026-03-15 00:16:14 +00:00
pretty_assertions . workspace = true
2025-07-09 00:13:58 -04:00
rand . workspace = true
regex . workspace = true
2026-02-18 21:08:41 +09:00
rustc-hash . workspace = true
2024-07-30 15:19:58 +02:00
sha1 = { workspace = true , features = [ "std" ] }
2025-07-09 00:13:58 -04:00
tempfile . workspace = true
2023-06-08 09:07:12 +02:00
time = { workspace = true , features = [ "local-offset" ] }
2026-01-23 06:48:42 +09:00
unicode-width . workspace = true
2024-05-02 09:48:44 +00:00
unindent = "0.2.3"
2025-07-09 00:13:58 -04:00
uutests . workspace = true
2024-05-21 09:49:45 +02:00
uucore = { workspace = true , features = [
"mode" ,
2024-06-22 16:36:03 +05:30
"entries" ,
2026-01-17 14:28:04 +01:00
"pipes" ,
2024-05-21 09:49:45 +02:00
"process" ,
"signals" ,
2024-06-22 16:36:03 +05:30
"utmpx" ,
2024-05-21 09:49:45 +02:00
] }
2025-07-09 00:13:58 -04:00
walkdir . workspace = true
2025-03-25 08:37:05 +00:00
hex-literal = "1.0.0"
2025-07-09 00:13:58 -04:00
rstest . workspace = true
2026-02-08 13:37:00 +01:00
rstest_reuse . workspace = true
2015-08-01 00:49:14 +02:00
2021-09-13 20:09:13 +02:00
[ target . 'cfg(unix)' . dev-dependencies ]
2025-07-09 06:47:16 -07:00
nix = { workspace = true , features = [
"process" ,
"signal" ,
"socket" ,
"term" ,
2026-01-22 17:55:40 +00:00
"user" ,
2025-07-09 06:47:16 -07:00
] }
2026-01-24 10:50:52 +00:00
rlimit = { workspace = true }
2017-01-07 23:16:32 -06:00
2024-06-22 16:36:03 +05:30
2022-01-30 04:56:44 -05:00
[ build-dependencies ]
2025-07-09 00:13:58 -04:00
phf_codegen . workspace = true
2022-01-30 04:56:44 -05:00
2015-08-01 00:49:14 +02:00
[[ bin ]]
2020-05-24 18:14:37 -05:00
name = "coreutils"
path = "src/bin/coreutils.rs"
2022-01-20 15:00:16 +01:00
[[ bin ]]
name = "uudoc"
path = "src/bin/uudoc.rs"
2022-04-24 23:18:04 +02:00
required-features = [ "uudoc" ]
2023-03-06 21:52:52 +01:00
[ profile . release ]
lto = true
2025-11-12 19:28:42 +09:00
panic = "abort"
2025-10-03 15:14:23 +09:00
codegen-units = 1
2023-03-06 21:52:52 +01:00
# A release-like profile that is as small as possible.
[ profile . release-small ]
2026-02-07 07:54:25 +09:00
inherits = "release"
2023-03-06 21:52:52 +01:00
opt-level = "z"
strip = true
2024-06-28 11:28:25 +02:00
2025-11-12 19:28:42 +09:00
# A release-like profile with debug info for profiling.
2025-04-29 22:37:41 +08:00
# See https://github.com/mstange/samply .
[ profile . profiling ]
inherits = "release"
2025-11-12 19:28:42 +09:00
panic = "unwind"
2025-04-29 22:37:41 +08:00
debug = true
2025-10-13 10:34:42 +02:00
[ lints ]
workspace = true
2025-04-09 03:12:36 -04:00
# This is the linting configuration for all crates.
# In order to use these, all crates have `[lints] workspace = true` section.
[ workspace . lints . rust ]
2026-01-04 16:59:27 +01:00
# Allow "fuzzing" as a "cfg" condition name and "cygwin" as a value for "target_os"
2025-10-09 16:17:05 +02:00
# https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html
2026-01-04 16:59:27 +01:00
unexpected_cfgs = { level = "warn" , check-cfg = [
'cfg(fuzzing)' ,
'cfg(target_os, values("cygwin"))' ,
2026-04-12 15:19:04 +02:00
'cfg(wasi_runner)' ,
2026-01-04 16:59:27 +01:00
] }
2026-02-04 04:55:21 +08:00
unused_qualifications = "warn"
2025-04-09 03:12:36 -04:00
[ workspace . lints . clippy ]
2026-02-07 13:42:18 +00:00
collapsible_if = { level = "allow" , priority = 127 } # remove me
2025-04-09 14:21:06 -04:00
# The counts were generated with this command:
# cargo clippy --all-targets --workspace --message-format=json --quiet \
# | jq -r '.message.code.code | select(. != null and startswith("clippy::"))' \
# | sort | uniq -c | sort -h -r
#
all = { level = "warn" , priority = -1 }
cargo = { level = "warn" , priority = -1 }
pedantic = { level = "warn" , priority = -1 }
2025-10-07 14:30:16 +02:00
use_self = "warn" # nursery lint
2025-04-09 14:21:06 -04:00
cargo_common_metadata = "allow" # 3240
2025-07-09 00:13:58 -04:00
multiple_crate_versions = "allow" # 2882
missing_errors_doc = "allow" # 1572
2025-04-09 14:21:06 -04:00
missing_panics_doc = "allow" # 946
must_use_candidate = "allow" # 322
2025-07-09 00:13:58 -04:00
match_same_arms = "allow" # 204
cast_possible_truncation = "allow" # 122
too_many_lines = "allow" # 101
cast_possible_wrap = "allow" # 78
2025-04-09 14:21:06 -04:00
cast_sign_loss = "allow" # 70
struct_excessive_bools = "allow" # 68
cast_precision_loss = "allow" # 52
2025-07-09 00:13:58 -04:00
cast_lossless = "allow" # 35
ignored_unit_patterns = "allow" # 21
2025-04-09 14:21:06 -04:00
similar_names = "allow" # 20
2025-07-09 00:13:58 -04:00
needless_pass_by_value = "allow" # 16
2025-04-09 14:21:06 -04:00
float_cmp = "allow" # 12
2025-07-09 00:13:58 -04:00
items_after_statements = "allow" # 11
return_self_not_must_use = "allow" # 8
inline_always = "allow" # 6
fn_params_excessive_bools = "allow" # 6
used_underscore_items = "allow" # 2
should_panic_without_expect = "allow" # 2
2025-09-29 17:49:50 +02:00
doc_markdown = "allow"
unused_self = "allow"
enum_glob_use = "allow"
unnested_or_patterns = "allow"
implicit_hasher = "allow"
doc_link_with_quotes = "allow"
format_push_string = "allow"
flat_map_option = "allow"
from_iter_instead_of_collect = "allow"
large_types_passed_by_value = "allow"
2026-01-21 17:29:29 +00:00
[ workspace . metadata . cargo-shear ]
2026-02-03 20:26:49 +00:00
ignored = [ "clap" , "fluent" , "libstdbuf" ]