mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
Add the --enable-single-binary option to the configure file.
When enabled, this option builds a single binary file containing
the selected tools. Which tool gets executed depends on the value
of argv[0] which can be set implicitly through symlinks to the
single program.
This setup reduces significantly the size of a complete coreutils
install, since code from lib/libcoreutils.a is not duplicated in
every one of the more than 100 binaries. Runtime overhead is
increased due to more dynamic libraries being loaded, and extra
initialization being performed for all utils. Also initially
a larger binary is loaded from storage, though this is usually
alleviated due to caching and lazy mmaping of unused blocks,
and in fact the single binary should have better caching
characteristics.
Comparing the size of the individual versus single binary on x86_64:
$ cd src
$ size coreutils
$ size -t $(../build-aux/gen-lists-of-programs.sh --list-progs |
grep -Ev '(coreutils|libstdbuf)') | tail -n1
text data bss dec hex filename
1097416 5388 88432 1191236 122d44 src/coreutils
4901010 124964 163768 5189742 4f306e (TOTALS)
Storage requirements are reduced similarly:
$ cd src
$ du -h coreutils
$ du -ch $(../build-aux/gen-lists-of-programs.sh --list-progs |
grep -Ev '(coreutils|libstdbuf)') | tail -n1
1.2M coreutils
5.3M total
When installing, the makefile will create either symlinks or
shebangs based on the --enable-single-binary setting, for
each configured tool. In this way, all the tools are still
callable individually, but they are all implemented by the same
"coreutils" binary installed on the same directory.
* .gitignore: Add new generated files.
* Makefile.am: New rules to generate build-aux/gen-single-binary.sh
and install symlinks.
* NEWS: Mention the new feature.
* README: Add "coreutils" to the list of utils.
* bootstrap.conf: Regenerate src/single-binary.mk
* build-aux/gen-lists-of-programs.sh: New --list-progs option.
* build-aux/gen-single-binary.sh: Regenerate
* configure.ac: New --enable-single-binary option and other variables.
Disallow --enable-single-binary=symlinks with --program-prefix et. al.
* man/coreutils.x: Manpage hook.
* man/local.mk: Add manpage hook and fix dependencies.
* src/coreutils.c: Multicall implementation.
* src/local.mk: New rules for the single binary option.
* tests/local.mk: Add $single_binary_progs to support
require_built_() from init.cfg
* tests/misc/env.sh: Avoid the use of symlink to echo.
* tests/misc/help-version.sh: Add exception for coreutils.
* tests/install/basic-1.sh: Really avoid using ginstall strip
functionality if there is an issue with the independent strip command.
* src/kill.c: Changes to call exit() in main.
* src/readlink.c: Likewise.
* src/shuf.c: Likewise.
* src/timeout.c: Likewise.
* src/truncate.c: Likewise.
113 lines
3.6 KiB
Plaintext
113 lines
3.6 KiB
Plaintext
Here are the names of the programs in this package,
|
|
each followed by the name(s) of its author(s).
|
|
|
|
arch: David MacKenzie, Karel Zak
|
|
base64: Simon Josefsson
|
|
basename: David MacKenzie
|
|
cat: Torbjörn Granlund, Richard M. Stallman
|
|
chcon: Russell Coker, Jim Meyering
|
|
chgrp: David MacKenzie, Jim Meyering
|
|
chmod: David MacKenzie, Jim Meyering
|
|
chown: David MacKenzie, Jim Meyering
|
|
chroot: Roland McGrath
|
|
cksum: Q. Frank Xia
|
|
comm: Richard M. Stallman, David MacKenzie
|
|
coreutils: Alex Deymo
|
|
cp: Torbjörn Granlund, David MacKenzie, Jim Meyering
|
|
csplit: Stuart Kemp, David MacKenzie
|
|
cut: David M. Ihnat, David MacKenzie, Jim Meyering
|
|
date: David MacKenzie
|
|
dd: Paul Rubin, David MacKenzie, Stuart Kemp
|
|
df: Torbjörn Granlund, David MacKenzie, Paul Eggert
|
|
dir: Richard M. Stallman, David MacKenzie
|
|
dircolors: H. Peter Anvin
|
|
dirname: David MacKenzie, Jim Meyering
|
|
du: Torbjörn Granlund, David MacKenzie, Paul Eggert, Jim Meyering
|
|
echo: Brian Fox, Chet Ramey
|
|
env: Richard Mlynarik, David MacKenzie
|
|
expand: David MacKenzie
|
|
expr: Mike Parker, James Youngman, Paul Eggert
|
|
factor: Paul Rubin, Torbjörn Granlund, Niels Möller
|
|
false: Jim Meyering
|
|
fmt: Ross Paterson
|
|
fold: David MacKenzie
|
|
ginstall: David MacKenzie
|
|
groups: David MacKenzie, James Youngman
|
|
head: David MacKenzie, Jim Meyering
|
|
hostid: Jim Meyering
|
|
hostname: Jim Meyering
|
|
id: Arnold Robbins, David MacKenzie
|
|
join: Mike Haertel
|
|
kill: Paul Eggert
|
|
link: Michael Stone
|
|
ln: Mike Parker, David MacKenzie
|
|
logname: FIXME: unknown
|
|
ls: Richard M. Stallman, David MacKenzie
|
|
md5sum: Ulrich Drepper, Scott Miller, David Madore
|
|
mkdir: David MacKenzie
|
|
mkfifo: David MacKenzie
|
|
mknod: David MacKenzie
|
|
mktemp: Jim Meyering, Eric Blake
|
|
mv: Mike Parker, David MacKenzie, Jim Meyering
|
|
nice: David MacKenzie
|
|
nl: Scott Bartram, David MacKenzie
|
|
nohup: Jim Meyering
|
|
nproc: Giuseppe Scrivano
|
|
numfmt: Assaf Gordon
|
|
od: Jim Meyering
|
|
paste: David M. Ihnat, David MacKenzie
|
|
pathchk: Paul Eggert, David MacKenzie, Jim Meyering
|
|
pinky: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
|
|
pr: Pete TerMaat, Roland Huebner
|
|
printenv: David MacKenzie, Richard Mlynarik
|
|
printf: David MacKenzie
|
|
ptx: François Pinard
|
|
pwd: Jim Meyering
|
|
readlink: Dmitry V. Levin
|
|
realpath: Pádraig Brady
|
|
rm: Paul Rubin, David MacKenzie, Richard M. Stallman, Jim Meyering
|
|
rmdir: David MacKenzie
|
|
runcon: Russell Coker
|
|
seq: Ulrich Drepper
|
|
sha1sum: Ulrich Drepper, Scott Miller, David Madore
|
|
sha224sum: Ulrich Drepper, Scott Miller, David Madore
|
|
sha256sum: Ulrich Drepper, Scott Miller, David Madore
|
|
sha384sum: Ulrich Drepper, Scott Miller, David Madore
|
|
sha512sum: Ulrich Drepper, Scott Miller, David Madore
|
|
shred: Colin Plumb
|
|
shuf: Paul Eggert
|
|
sleep: Jim Meyering, Paul Eggert
|
|
sort: Mike Haertel, Paul Eggert
|
|
split: Torbjörn Granlund, Richard M. Stallman
|
|
stat: Michael Meskes
|
|
stdbuf: Pádraig Brady
|
|
stty: David MacKenzie
|
|
sum: Kayvan Aghaiepour, David MacKenzie
|
|
sync: Jim Meyering
|
|
tac: Jay Lepreau, David MacKenzie
|
|
tail: Paul Rubin, David MacKenzie, Ian Lance Taylor, Jim Meyering
|
|
tee: Mike Parker, Richard M. Stallman, David MacKenzie
|
|
test: Kevin Braunsdorf, Matthew Bradburn
|
|
timeout: Pádraig Brady
|
|
touch: Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, Randy Smith
|
|
tr: Jim Meyering
|
|
true: Jim Meyering
|
|
truncate: Pádraig Brady
|
|
tsort: Mark Kettenis
|
|
tty: David MacKenzie
|
|
uname: David MacKenzie
|
|
unexpand: David MacKenzie
|
|
uniq: Richard M. Stallman, David MacKenzie
|
|
unlink: Michael Stone
|
|
uptime: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
|
|
users: Joseph Arceneaux, David MacKenzie
|
|
vdir: Richard M. Stallman, David MacKenzie
|
|
wc: Paul Rubin, David MacKenzie
|
|
who: Joseph Arceneaux, David MacKenzie, Michael Stone
|
|
whoami: Richard Mlynarik
|
|
yes: David MacKenzie
|
|
|
|
;; Local Variables:
|
|
;; coding: utf-8
|
|
;; End:
|