mirror of
https://github.com/uutils/coreutils
synced 2024-11-15 17:28:03 +00:00
f4c4d0e635
.## [why] Reorganizing and minor renaming of features within *Cargo.toml* will hopefully help to place new utilities into the best feature set, encouraging the "universal" / cross-platform aspect of the project. "feat_require_..." sets are used to segregate utilities with restrictions limiting cross-platform availability and are annotated with the reasons for the limitations.
337 lines
9.9 KiB
TOML
337 lines
9.9 KiB
TOML
# uutils / coreutils
|
|
# * see the repository LICENSE, README, and CONTRIBUTING files for more information
|
|
|
|
[package]
|
|
name = "uutils"
|
|
description = "uutils ~ universal (as in cross-platform) CLI utils, written in Rust"
|
|
license = "MIT"
|
|
repository = "https://github.com/uutils/coreutils"
|
|
version = "0.0.1"
|
|
authors = []
|
|
build = "build.rs"
|
|
autotests = false
|
|
|
|
[features]
|
|
default = [ "feat_common_core" ]
|
|
## OS feature shortcodes
|
|
macos = [ "feat_os_macos" ]
|
|
unix = [ "feat_os_unix" ]
|
|
windows = [ "feat_os_windows" ]
|
|
## project-specific feature shortcodes
|
|
nightly = []
|
|
test_unimplemented = []
|
|
## feature sets
|
|
## (common/core and Tier1) feature sets
|
|
# "feat_common_core" == baseline core set of utilities which can be built/run on most targets
|
|
feat_common_core = [
|
|
"base32",
|
|
"base64",
|
|
"basename",
|
|
"cat",
|
|
"cksum",
|
|
"comm",
|
|
"cp",
|
|
"cut",
|
|
"date",
|
|
"dircolors",
|
|
"dirname",
|
|
"echo",
|
|
"env",
|
|
"expand",
|
|
"expr",
|
|
"factor",
|
|
"false",
|
|
"fmt",
|
|
"fold",
|
|
"hashsum",
|
|
"head",
|
|
"join",
|
|
"link",
|
|
"ln",
|
|
"ls",
|
|
"mkdir",
|
|
"mktemp",
|
|
"more",
|
|
"mv",
|
|
"nl",
|
|
"od",
|
|
"paste",
|
|
"printenv",
|
|
"printf",
|
|
"ptx",
|
|
"pwd",
|
|
"readlink",
|
|
"realpath",
|
|
"relpath",
|
|
"rm",
|
|
"rmdir",
|
|
"seq",
|
|
"shred",
|
|
"shuf",
|
|
"sleep",
|
|
"sort",
|
|
"split",
|
|
"sum",
|
|
"tac",
|
|
"tail",
|
|
"tee",
|
|
"test",
|
|
"tr",
|
|
"true",
|
|
"truncate",
|
|
"tsort",
|
|
"unexpand",
|
|
"uniq",
|
|
"wc",
|
|
"yes",
|
|
]
|
|
# "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 = [
|
|
"feat_common_core",
|
|
#
|
|
"arch",
|
|
"hostname",
|
|
"nproc",
|
|
"sync",
|
|
"touch",
|
|
"whoami",
|
|
]
|
|
## (primary platforms) feature sets
|
|
# "feat_os_macos" == set of utilities which can be built/run on the MacOS platform
|
|
feat_os_macos = [
|
|
"feat_os_unix", ## == a modern/usual *nix platform
|
|
]
|
|
# "feat_os_unix" == set of utilities which can be built/run on modern/usual *nix platforms
|
|
feat_os_unix = [
|
|
"feat_Tier1",
|
|
#
|
|
"feat_require_crate_cpp",
|
|
"feat_require_unix",
|
|
"feat_require_unix_utmpx",
|
|
]
|
|
# "feat_os_windows" == set of utilities which can be built/run on modern/usual windows platforms
|
|
feat_os_windows = [
|
|
"feat_Tier1", ## == "feat_os_windows_legacy" + "hostname"
|
|
]
|
|
## (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 = [
|
|
"feat_Tier1",
|
|
#
|
|
"feat_require_unix",
|
|
"feat_require_unix_utmpx",
|
|
]
|
|
# "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>)
|
|
feat_os_unix_musl = [
|
|
"feat_Tier1",
|
|
#
|
|
"feat_require_unix",
|
|
]
|
|
## 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
|
|
#
|
|
# "feat_require_crate_cpp" == set of utilities requiring the `cpp` crate (which fail to compile on several platforms; as of 2020-04-23)
|
|
feat_require_crate_cpp = [
|
|
"stdbuf",
|
|
]
|
|
# "feat_require_unix" == set of utilities requiring support which is only available on unix platforms (as of 2020-04-23)
|
|
feat_require_unix = [
|
|
"chgrp",
|
|
"chmod",
|
|
"chown",
|
|
"chroot",
|
|
"du",
|
|
"groups",
|
|
"hostid",
|
|
"id",
|
|
"install",
|
|
"kill",
|
|
"logname",
|
|
"mkfifo",
|
|
"mknod",
|
|
"nice",
|
|
"numfmt",
|
|
"nohup",
|
|
"pathchk",
|
|
"stat",
|
|
"timeout",
|
|
"tty",
|
|
"uname",
|
|
"unlink",
|
|
]
|
|
# "feat_require_unix_utmpx" == set of utilites requiring unix utmp/utmpx support
|
|
# * ref: <https://wiki.musl-libc.org/faq.html#Q:-Why-is-the-utmp/wtmp-functionality-only-implemented-as-stubs?>
|
|
feat_require_unix_utmpx = [
|
|
"pinky",
|
|
"uptime",
|
|
"users",
|
|
"who",
|
|
]
|
|
## (alternate/newer/smaller platforms) feature sets
|
|
# "feat_os_unix_fuchsia" == set of utilities which can be built/run on the "Fuschia" OS (refs: <https://fuchsia.dev>; <https://en.wikipedia.org/wiki/Google_Fuchsia>)
|
|
feat_os_unix_fuchsia = [
|
|
"feat_common_core",
|
|
#
|
|
"feat_require_crate_cpp",
|
|
#
|
|
"chgrp",
|
|
"chmod",
|
|
"chown",
|
|
"du",
|
|
"groups",
|
|
"hostid",
|
|
"install",
|
|
"logname",
|
|
"mkfifo",
|
|
"mknod",
|
|
"nice",
|
|
"pathchk",
|
|
"tty",
|
|
"uname",
|
|
"unlink",
|
|
]
|
|
# "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 = [
|
|
"feat_common_core",
|
|
#
|
|
"uname",
|
|
"chmod",
|
|
"install",
|
|
]
|
|
# "feat_os_windows_legacy" == slightly restricted set of utilities which can be built/run on early windows platforms (eg, "WinXP")
|
|
feat_os_windows_legacy = [
|
|
"feat_common_core",
|
|
#
|
|
"arch",
|
|
"nproc",
|
|
"sync",
|
|
"touch",
|
|
"whoami",
|
|
]
|
|
|
|
[workspace]
|
|
|
|
[dependencies]
|
|
uucore = "0.0.2"
|
|
arch = { optional=true, path="src/uu/arch" }
|
|
base32 = { optional=true, path="src/uu/base32" }
|
|
base64 = { optional=true, path="src/uu/base64" }
|
|
basename = { optional=true, path="src/uu/basename" }
|
|
cat = { optional=true, path="src/uu/cat" }
|
|
chgrp = { optional=true, path="src/uu/chgrp" }
|
|
chmod = { optional=true, path="src/uu/chmod" }
|
|
chown = { optional=true, path="src/uu/chown" }
|
|
chroot = { optional=true, path="src/uu/chroot" }
|
|
cksum = { optional=true, path="src/uu/cksum" }
|
|
comm = { optional=true, path="src/uu/comm" }
|
|
cp = { optional=true, path="src/uu/cp" }
|
|
cut = { optional=true, path="src/uu/cut" }
|
|
date = { optional=true, path="src/uu/date" }
|
|
dircolors= { optional=true, path="src/uu/dircolors" }
|
|
dirname = { optional=true, path="src/uu/dirname" }
|
|
du = { optional=true, path="src/uu/du" }
|
|
echo = { optional=true, path="src/uu/echo" }
|
|
env = { optional=true, path="src/uu/env" }
|
|
expand = { optional=true, path="src/uu/expand" }
|
|
expr = { optional=true, path="src/uu/expr" }
|
|
factor = { optional=true, path="src/uu/factor" }
|
|
false = { optional=true, path="src/uu/false" }
|
|
fmt = { optional=true, path="src/uu/fmt" }
|
|
fold = { optional=true, path="src/uu/fold" }
|
|
groups = { optional=true, path="src/uu/groups" }
|
|
hashsum = { optional=true, path="src/uu/hashsum" }
|
|
head = { optional=true, path="src/uu/head" }
|
|
hostid = { optional=true, path="src/uu/hostid" }
|
|
hostname = { optional=true, path="src/uu/hostname" }
|
|
id = { optional=true, path="src/uu/id" }
|
|
install = { optional=true, path="src/uu/install" }
|
|
join = { optional=true, path="src/uu/join" }
|
|
kill = { optional=true, path="src/uu/kill" }
|
|
link = { optional=true, path="src/uu/link" }
|
|
ln = { optional=true, path="src/uu/ln" }
|
|
ls = { optional=true, path="src/uu/ls" }
|
|
logname = { optional=true, path="src/uu/logname" }
|
|
mkdir = { optional=true, path="src/uu/mkdir" }
|
|
mkfifo = { optional=true, path="src/uu/mkfifo" }
|
|
mknod = { optional=true, path="src/uu/mknod" }
|
|
mktemp = { optional=true, path="src/uu/mktemp" }
|
|
more = { optional=true, path="src/uu/more" }
|
|
mv = { optional=true, path="src/uu/mv" }
|
|
nice = { optional=true, path="src/uu/nice" }
|
|
nl = { optional=true, path="src/uu/nl" }
|
|
nohup = { optional=true, path="src/uu/nohup" }
|
|
nproc = { optional=true, path="src/uu/nproc" }
|
|
numfmt = { optional=true, path="src/uu/numfmt" }
|
|
od = { optional=true, path="src/uu/od" }
|
|
paste = { optional=true, path="src/uu/paste" }
|
|
pathchk = { optional=true, path="src/uu/pathchk" }
|
|
pinky = { optional=true, path="src/uu/pinky" }
|
|
printenv = { optional=true, path="src/uu/printenv" }
|
|
printf = { optional=true, path="src/uu/printf" }
|
|
ptx = { optional=true, path="src/uu/ptx" }
|
|
pwd = { optional=true, path="src/uu/pwd" }
|
|
readlink = { optional=true, path="src/uu/readlink" }
|
|
realpath = { optional=true, path="src/uu/realpath" }
|
|
relpath = { optional=true, path="src/uu/relpath" }
|
|
rm = { optional=true, path="src/uu/rm" }
|
|
rmdir = { optional=true, path="src/uu/rmdir" }
|
|
seq = { optional=true, path="src/uu/seq" }
|
|
shred = { optional=true, path="src/uu/shred" }
|
|
shuf = { optional=true, path="src/uu/shuf" }
|
|
sleep = { optional=true, path="src/uu/sleep" }
|
|
sort = { optional=true, path="src/uu/sort" }
|
|
split = { optional=true, path="src/uu/split" }
|
|
stat = { optional=true, path="src/uu/stat" }
|
|
stdbuf = { optional=true, path="src/uu/stdbuf" }
|
|
sum = { optional=true, path="src/uu/sum" }
|
|
sync = { optional=true, path="src/uu/sync" }
|
|
tac = { optional=true, path="src/uu/tac" }
|
|
tail = { optional=true, path="src/uu/tail" }
|
|
tee = { optional=true, path="src/uu/tee" }
|
|
test = { optional=true, path="src/uu/test" }
|
|
timeout = { optional=true, path="src/uu/timeout" }
|
|
touch = { optional=true, path="src/uu/touch" }
|
|
tr = { optional=true, path="src/uu/tr" }
|
|
true = { optional=true, path="src/uu/true" }
|
|
truncate = { optional=true, path="src/uu/truncate" }
|
|
tsort = { optional=true, path="src/uu/tsort" }
|
|
tty = { optional=true, path="src/uu/tty" }
|
|
uname = { optional=true, path="src/uu/uname" }
|
|
unexpand = { optional=true, path="src/uu/unexpand" }
|
|
uniq = { optional=true, path="src/uu/uniq" }
|
|
unlink = { optional=true, path="src/uu/unlink" }
|
|
uptime = { optional=true, path="src/uu/uptime" }
|
|
users = { optional=true, path="src/uu/users" }
|
|
wc = { optional=true, path="src/uu/wc" }
|
|
who = { optional=true, path="src/uu/who" }
|
|
whoami = { optional=true, path="src/uu/whoami" }
|
|
yes = { optional=true, path="src/uu/yes" }
|
|
#
|
|
# * transitive dependency via 'failure'; pin to <= v0.3.30 to avoid increasing MinSRV to v1.33.0
|
|
backtrace = ">= 0.3.3, <= 0.3.30"
|
|
|
|
[dev-dependencies]
|
|
filetime = "0.2"
|
|
lazy_static = "1.3"
|
|
libc = "0.2"
|
|
rand = "0.6"
|
|
regex = "1.0"
|
|
tempdir = "0.3"
|
|
time = "0.1"
|
|
unindent = "0.1"
|
|
|
|
[target.'cfg(unix)'.dev-dependencies]
|
|
# FIXME: this should use the normal users crate, but it conflicts with the users utility
|
|
rust-users = { git = "https://github.com/uutils/rust-users" }
|
|
unix_socket = "0.5.0"
|
|
|
|
[[bin]]
|
|
name = "uutils"
|
|
path = "src/bin/uutils.rs"
|
|
|
|
[[test]]
|
|
name = "tests"
|
|
|
|
[patch.crates-io]
|
|
uucore = { git = "https://github.com/uutils/uucore/", tag = "0.0.2" }
|