1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

stdbuf: add feat_external_stdbuf

Fixes https://github.com/uutils/coreutils/issues/6591

 "feat_external_stdbuf": use an external libstdbuf.so for stdbuf instead of embedding it into
 the stdbuf binary.
 There are 2 use-cases:
 1. Installation of uutils-coreutils using cargo install (e.g. from crates.io
    which supports only "cargo install" as installation method).  In this case,
    installing libstdbuf.so is impossible, because "cargo install" installs
    only binary programs (no cdylib), thus libstdbuf.so must be embedded into
    stdbuf and written to /tmp at runtime.  This is a hack, and may not work
    on some platforms, e.g. because the SELinux permissions may not allow
    stdbuf to write to /tmp, /tmp may be read-only, libstdbuf.so may not work
    at all without SELinux labels, etc.

 2. Installation of uutils-coreutils using an external tool, e.g. dpkg/apt on
    debian. In this case, libstdbuf.so should be installed separately to its
    correct location and the environment variable LIBSTDBUF_PATH configures the
    installation path during the build. E.g. LIBSTDBUF_PATH="/lib/libstdbuf.so"

Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
This commit is contained in:
Etienne Cordonnier 2025-05-27 21:06:02 +02:00
parent 83424751c1
commit 99aa51a9a9
5 changed files with 82 additions and 9 deletions

View file

@ -37,6 +37,9 @@ test_risky_names = []
# * only build `uudoc` when `--feature uudoc` is activated
uudoc = ["zip", "dep:uuhelp_parser"]
## features
## 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"]
# "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.