Link uu_ binaries directly, without the shell wrapper

The multicall binary `uutils-coreutils` already strips arbitrary
prefixes up to a non-alphabetic character, so our `uu_` prefix works
fine when linked directly.

(cherry picked from commit c4440c160e)
This commit is contained in:
Josh Stone 2025-03-12 10:45:57 -07:00 committed by Michel Lind
commit 962d783b23
No known key found for this signature in database
GPG key ID: 8B229D2F7CCC04F2
3 changed files with 6 additions and 46 deletions

View file

@ -1,23 +0,0 @@
#!/bin/sh
# Wrapper to invoke coreutils multicall via individual libexec symlink
#
# To use:
# - symlink this to /usr/bin/uu_$utility
# - it will invoke /usr/libexec/uutils-coreutils/$utility
# - that is in turn a symlink to /usr/bin/uutils-coreutils, which is a
# multicall binary that behaves like $utility when that is argv[0]
CALLED_AS=$(basename "$0")
UTILITY=${CALLED_AS#uu_}
CMD="/usr/libexec/uutils-coreutils/$UTILITY"
if [ -L "$CMD" ]; then
# we want the argv to be passed as-is here
# shellcheck disable=SC2068
"$CMD" $@
else
echo "Error: $CMD not found" >&2
exit 1
fi

View file

@ -11,10 +11,8 @@ Summary: coreutils ~ GNU coreutils reimplementation in Rust
License: MIT
URL: https://crates.io/crates/coreutils
Source: %{crates_source}
# * Wrapper to invoke coreutils multicall via individual libexec symlink
Source1: coreutils-wrapper.sh
# * Script to list available coreutils commands
Source2: coreutils-ls-commands.sh
Source1: coreutils-ls-commands.sh
# Manually created patch for downstream crate metadata changes
# * drop uudoc, unneeded
# * allow up to rstest 0.23
@ -152,8 +150,6 @@ Obsoletes: uu_yes < %{obsolete_uu_nvr}
%doc README.md
%{_bindir}/uutils-coreutils
%{_bindir}/uu_*
%dir %{_libexecdir}/uutils-coreutils
%{_libexecdir}/uutils-coreutils/*
%{_mandir}/man1/*
%{bash_completions_dir}/*
%{fish_completions_dir}/*
@ -162,10 +158,8 @@ Obsoletes: uu_yes < %{obsolete_uu_nvr}
%prep
%autosetup -n %{crate}-%{version} -p1
%cargo_prep
# coreutils-wrapper.sh script
cp -p %{SOURCE1} .
# coreutils-ls-commands.sh script
cp -p %{SOURCE2} .
cp -p %{SOURCE1} .
%generate_buildrequires
%cargo_generate_buildrequires
@ -194,11 +188,8 @@ target/rpm/coreutils completion coreutils fish > data/completions/fish/uutils-co
%install
%cargo_install
mv %{buildroot}/%{_bindir}/coreutils %{buildroot}/%{_bindir}/uutils-coreutils
mkdir -p %{buildroot}%{_libexecdir}/uutils-coreutils/misc
cp -p coreutils-wrapper.sh %{buildroot}%{_libexecdir}/uutils-coreutils/misc/
for utility in $(./coreutils-ls-commands.sh target/rpm/coreutils); do
ln -sr %{buildroot}%{_bindir}/uutils-coreutils %{buildroot}%{_libexecdir}/uutils-coreutils/$utility
ln -sr %{buildroot}%{_libexecdir}/uutils-coreutils/misc/coreutils-wrapper.sh %{buildroot}%{_bindir}/uu_$utility
ln -sr %{buildroot}%{_bindir}/uutils-coreutils %{buildroot}%{_bindir}/uu_$utility
done
mkdir -p %{buildroot}%{_mandir}/man1
cp -p data/man/man1/* %{buildroot}%{_mandir}/man1/

View file

@ -10,8 +10,7 @@ cargo-toml-patch-comments = [
"allow procfs 0.17",
]
extra-sources = [
{ "number" = 1, "file" = "coreutils-wrapper.sh", "comments" = ["Wrapper to invoke coreutils multicall via individual libexec symlink"] },
{ "number" = 2, "file" = "coreutils-ls-commands.sh", "comments" = ["Script to list available coreutils commands"] },
{ "number" = 1, "file" = "coreutils-ls-commands.sh", "comments" = ["Script to list available coreutils commands"] },
]
extra-patches = [
{ "number" = 2, "file" = "coreutils-fix-seq-neg-num-tests.diff", "comments" = ["Fix seq tests that pass negative numbers"] },
@ -21,8 +20,6 @@ bin-package-name = "uutils-coreutils"
extra-files = [
"%{_bindir}/uu_*",
"%dir %{_libexecdir}/uutils-coreutils",
"%{_libexecdir}/uutils-coreutils/*",
"%{_mandir}/man1/*",
"%{bash_completions_dir}/*",
"%{fish_completions_dir}/*",
@ -34,10 +31,8 @@ coreutils = "uutils-coreutils"
[scripts]
prep.post = ["""\
# coreutils-wrapper.sh script
cp -p %{SOURCE1} .
# coreutils-ls-commands.sh script
cp -p %{SOURCE2} ."""]
cp -p %{SOURCE1} ."""]
build.post = ["""\
mkdir -p data/man/man1
@ -58,11 +53,8 @@ target/rpm/coreutils completion coreutils fish > data/completions/fish/uutils-co
"""]
install.post = ["""\
mkdir -p %{buildroot}%{_libexecdir}/uutils-coreutils/misc
cp -p coreutils-wrapper.sh %{buildroot}%{_libexecdir}/uutils-coreutils/misc/
for utility in $(./coreutils-ls-commands.sh target/rpm/coreutils); do
ln -sr %{buildroot}%{_bindir}/uutils-coreutils %{buildroot}%{_libexecdir}/uutils-coreutils/$utility
ln -sr %{buildroot}%{_libexecdir}/uutils-coreutils/misc/coreutils-wrapper.sh %{buildroot}%{_bindir}/uu_$utility
ln -sr %{buildroot}%{_bindir}/uutils-coreutils %{buildroot}%{_bindir}/uu_$utility
done
mkdir -p %{buildroot}%{_mandir}/man1
cp -p data/man/man1/* %{buildroot}%{_mandir}/man1/