mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
This modernizes the source code somewhat, to take advantage of advances in GCC over the years, and Gnulib’s ‘assure’ module. Include assure.h in files that now need it. Do not include assert.h directly; it’s no longer needed. * bootstrap.conf (gnulib_modules): Add ‘assure’. * gl/lib/randread.c (randread_error): * src/chmod.c (describe_change): * src/chown-core.c (describe_change): * src/cp.c (decode_preserve_arg): * src/head.c (diagnose_copy_fd_failure): * src/ls.c (parse_ls_color): * src/od.c (decode_one_format): * src/split.c (main): * src/test.c (binary_operator, posixtest): Prefer affirm to abort, since it has better diagnostics in the normal case and better performance with -DNDEBUG. * gl/lib/xdectoint.c, src/die.h: Include stddef.h, for unreachable. * gl/lib/xdectoint.c: Do not include verify.h; no longer needed. * gl/lib/xdectoint.c (__xnumtoint): * src/die.h (die): Prefer C23 unreachable () to assume (false). * gl/lib/xfts.c (xfts_open): * src/basenc.c (base32hex_encode): * src/copy.c (abandon_move, copy_internal, valid_options): * src/cut.c (cut_fields): * src/df.c (alloc_field, decode_output_arg, get_dev): * src/du.c (process_file, main): * src/echo.c (usage): * src/factor.c (udiv_qrnnd, mod2, gcd2_odd, factor_insert_large) (mulredc2, factor_using_pollard_rho, isqrt2, div_smallq) (factor_using_squfof): * src/iopoll.c (iopoll_internal, fwrite_wait): * src/join.c (add_field): * src/ls.c (dev_ino_pop, main, gobble_file, sort_files): * src/mv.c (do_move): * src/od.c (decode_format_string, read_block, dump, main): * src/remove.c (rm): * src/rm.c (main): * src/sort.c (stream_open): * src/split.c (next_file_name, lines_chunk_split): * src/stdbuf.c (main): * src/stty.c (set_speed): * src/tac-pipe.c (line_ptr_decrement, line_ptr_increment): * src/touch.c (touch): * src/tr.c (find_bracketed_repeat, get_next) (validate_case_classes, get_spec_stats, string2_extend, main): * src/tsort.c (search_item, tsort): * src/wc.c (main): Prefer affirm to assert, as it allows for better static checking when compiling with -DNDEBUG. * src/chown-core.c (change_file_owner): * src/df.c (get_field_list): * src/expr.c (printv, null, tostring, toarith, eval2): * src/ls.c (time_type_to_statx, calc_req_mask, get_funky_string) (print_long_format): * src/numfmt.c (simple_strtod_fatal): * src/od.c (decode_one_format): * src/stty.c (mode_type_flag): * src/tail.c (xlseek): * src/tr.c (is_char_class_member, get_next, get_spec_stats) (string2_extend): Prefer unreachable () to abort () or assert (false) when merely pacifying the compiler, e.g., in a switch statement on an enum where all cases are covered. * src/copy.c (valid_options): Now returns void; the bool was useless. Caller no longer needs to assert. * src/csplit.c (find_line): * src/expand-common.c (next_file): * src/shred.c (incname): * src/sort.c (main): * src/tr.c (append_normal_char, append_range, append_char_class) (append_repeated_char, append_equiv_class): * src/tsort.c (search_item): Omit assert, since the hardware will check for us. * src/df.c (header_mode): Now the enum type it should have been. * src/du.c (process_file): * src/ls.c (assert_matching_dev_ino): * src/tail.c (valid_file_spec): * src/tr.c (validate_case_classes): Mark defns with MAYBE_UNUSED if they’re not used when -DNDEBUG. * src/factor.c (prime_p, prime2_p, mp_prime_p): Now ATTRIBUTE_PURE. Prefer affirm to error+abort. No need to translate this diagnostic. * src/fmt.c (get_paragraph): * src/stty.c (display_changed, display_all, sane_mode): * src/who.c (idle_string): Prefer assume to assert, since the goal is merely pacification and assert doesn’t pacify anyway if -DNDEBUG is used. * src/join.c (decode_field_spec): Omit unreachable abort. * src/ls.c (assert_matching_dev_ino, main): * src/tr.c (get_next): Prefer assure to assert, since the check is relatively expensive and won’t help static analysis. * src/ls.c (main): Prefer static_assert to assert of a constant expression. (format_inode): Redo to make it clear that buflen doesn’t matter, and that buf must have a certain number of bytes. All callers changed. This pacifies -Wformat-overflow. * src/od.c (decode_one_format): Omit an assert that tested for obviously undefined behavior, as the compiler could optimize it away anyway. * src/od.c (decode_one_format, decode_format_string): Prefer ATTRIBUTE_NONNULL to runtime checking. * src/stat.c: Do not include <stddef.h> since system.h does that now. * src/sync.c (sync_arg): Prefer unreachable () to assert (true), which was a typo. * src/system.h: Include stddef.h, for unreachable. * src/tail.c (xlseek): Simplify by relying on ‘error’ to exit.
435 lines
7.6 KiB
Plaintext
435 lines
7.6 KiB
Plaintext
# Bootstrap configuration.
|
|
|
|
# Copyright (C) 2006-2023 Free Software Foundation, Inc.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
# We don't need these modules.
|
|
avoided_gnulib_modules='
|
|
--avoid=canonicalize-lgpl
|
|
--avoid=dummy
|
|
'
|
|
|
|
# gnulib modules used by this package.
|
|
gnulib_modules="
|
|
$avoided_gnulib_modules
|
|
acl
|
|
alignalloc
|
|
alignasof
|
|
alloca
|
|
announce-gen
|
|
areadlink-with-size
|
|
areadlinkat-with-size
|
|
argmatch
|
|
argv-iter
|
|
assert
|
|
assert-h
|
|
assure
|
|
attribute
|
|
autobuild
|
|
backupfile
|
|
backup-rename
|
|
base32
|
|
base64
|
|
btowc
|
|
buffer-lcm
|
|
byteswap
|
|
c-strcase
|
|
cl-strtod
|
|
cl-strtold
|
|
calloc-gnu
|
|
canon-host
|
|
canonicalize
|
|
chmodat
|
|
chown
|
|
chownat
|
|
cloexec
|
|
closein
|
|
closeout
|
|
config-h
|
|
configmake
|
|
copy-file-range
|
|
count-leading-zeros
|
|
crypto/md5
|
|
crypto/sha1
|
|
crypto/sha256
|
|
crypto/sha512
|
|
crypto/sm3
|
|
cycle-check
|
|
d-ino
|
|
d-type
|
|
di-set
|
|
dirfd
|
|
dirname
|
|
do-release-commit-and-tag
|
|
dtoastr
|
|
dup2
|
|
environ
|
|
error
|
|
euidaccess
|
|
exclude
|
|
exitfail
|
|
explicit_bzero
|
|
faccessat
|
|
fadvise
|
|
fchdir
|
|
fchmodat
|
|
fchownat
|
|
fclose
|
|
fcntl
|
|
fcntl-safer
|
|
fd-reopen
|
|
fdatasync
|
|
fdopen
|
|
fdutimensat
|
|
file-has-acl
|
|
file-type
|
|
fileblocks
|
|
filemode
|
|
filenamecat
|
|
filevercmp
|
|
flexmember
|
|
fnmatch-gnu
|
|
fopen-safer
|
|
fprintftime
|
|
free-posix
|
|
freopen
|
|
freopen-safer
|
|
fseeko
|
|
fstatat
|
|
fsusage
|
|
fsync
|
|
ftoastr
|
|
ftruncate
|
|
fts
|
|
full-read
|
|
full-write
|
|
getgroups
|
|
gethrxtime
|
|
getline
|
|
getloadavg
|
|
getlogin
|
|
getndelim2
|
|
getopt-gnu
|
|
getpagesize
|
|
getpass-gnu
|
|
gettext-h
|
|
gettime
|
|
gettime-res
|
|
getugroups
|
|
getusershell
|
|
git-version-gen
|
|
gitlog-to-changelog
|
|
gnu-make
|
|
gnu-web-doc-update
|
|
gnumakefile
|
|
gnupload
|
|
group-member
|
|
hard-locale
|
|
hash
|
|
hash-triple
|
|
heap
|
|
host-os
|
|
human
|
|
idcache
|
|
idx
|
|
ignore-value
|
|
inttostr
|
|
inttypes
|
|
isapipe
|
|
isatty
|
|
isblank
|
|
largefile
|
|
lchmod
|
|
lchown
|
|
ldtoastr
|
|
lib-ignore
|
|
libgmp
|
|
linebuffer
|
|
link
|
|
link-follow
|
|
linkat
|
|
long-options
|
|
lstat
|
|
maintainer-makefile
|
|
malloc-gnu
|
|
manywarnings
|
|
mbrlen
|
|
mbrtowc
|
|
mbsalign
|
|
mbschr
|
|
mbslen
|
|
mbswidth
|
|
memcasecmp
|
|
memchr
|
|
memcmp2
|
|
mempcpy
|
|
memrchr
|
|
minmax
|
|
mgetgroups
|
|
mkancesdirs
|
|
mkdir
|
|
mkdir-p
|
|
mkdirat
|
|
mkfifo
|
|
mkfifoat
|
|
mknod
|
|
mkostemp
|
|
mkstemp
|
|
mktime
|
|
nullptr
|
|
modechange
|
|
mountlist
|
|
mpsort
|
|
netinet_in
|
|
nproc
|
|
nstrftime
|
|
obstack
|
|
open
|
|
openat-safer
|
|
parse-datetime
|
|
parse-datetime2
|
|
pathmax
|
|
perl
|
|
physmem
|
|
pipe-posix
|
|
pipe2
|
|
posix-shell
|
|
posixtm
|
|
posixver
|
|
priv-set
|
|
progname
|
|
propername
|
|
pthread-cond
|
|
pthread-mutex
|
|
pthread-thread
|
|
pthread_sigmask
|
|
putenv
|
|
quote
|
|
quotearg
|
|
randint
|
|
randperm
|
|
rawmemchr
|
|
read-file
|
|
readlink
|
|
readtokens
|
|
readtokens0
|
|
readutmp
|
|
realloc-gnu
|
|
regex
|
|
remove
|
|
rename
|
|
renameat
|
|
renameatu
|
|
rmdir
|
|
root-dev-ino
|
|
rpmatch
|
|
safe-read
|
|
same
|
|
save-cwd
|
|
savedir
|
|
savewd
|
|
select
|
|
selinux-at
|
|
setenv
|
|
settime
|
|
sig2str
|
|
sigaction
|
|
smack
|
|
ssize_t
|
|
stat-macros
|
|
stat-size
|
|
stat-time
|
|
stdbool
|
|
stdlib-safer
|
|
stpcpy
|
|
stpncpy
|
|
strdup-posix
|
|
strncat
|
|
strnumcmp
|
|
strsignal
|
|
strtoimax
|
|
strtoumax
|
|
symlinkat
|
|
sys_ioctl
|
|
sys_resource
|
|
sys_stat
|
|
sys_wait
|
|
targetdir
|
|
tempname
|
|
termios
|
|
time_rz
|
|
timer-time
|
|
timespec
|
|
tmpfile
|
|
tzset
|
|
uname
|
|
unicodeio
|
|
unistd-safer
|
|
unlink-busy
|
|
unlinkat
|
|
unlinkdir
|
|
unlocked-io
|
|
unsetenv
|
|
update-copyright
|
|
uptime
|
|
useless-if-before-free
|
|
userspec
|
|
utimecmp
|
|
utimens
|
|
utimensat
|
|
vasprintf-posix
|
|
vc-list-files
|
|
verify
|
|
verror
|
|
version-etc-fsf
|
|
wchar-single
|
|
wcswidth
|
|
wcwidth
|
|
winsz-ioctl
|
|
winsz-termios
|
|
write-any-file
|
|
xalignalloc
|
|
xalloc
|
|
xbinary-io
|
|
xdectoint
|
|
xfts
|
|
xgetcwd
|
|
xgetgroups
|
|
xgethostname
|
|
xmemcoll
|
|
xnanosleep
|
|
xprintf
|
|
xprintf-posix
|
|
xreadlink
|
|
xstrtod
|
|
xstrtoimax
|
|
xstrtol
|
|
xstrtol-error
|
|
xstrtold
|
|
xstrtoumax
|
|
year2038-recommended
|
|
yesno
|
|
"
|
|
|
|
# Other locale categories that need message catalogs.
|
|
EXTRA_LOCALE_CATEGORIES=LC_TIME
|
|
|
|
# Additional xgettext options to use. Use "\\\newline" to break lines.
|
|
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
|
|
--flag=asnprintf:3:c-format\\\
|
|
--flag=asprintf:2:c-format\\\
|
|
--flag=error:3:c-format\\\
|
|
--flag=error_at_line:5:c-format\\\
|
|
--flag=vasnprintf:3:c-format\\\
|
|
--flag=vasprintf:2:c-format\\\
|
|
--flag=verror:3:c-format\\\
|
|
--flag=verror_at_line:5:c-format\\\
|
|
--flag=wrapf:1:c-format\\\
|
|
--flag=xasprintf:1:c-format\\\
|
|
--flag=xfprintf:2:c-format\\\
|
|
--flag=xprintf:1:c-format\\\
|
|
--from-code=UTF-8\\\
|
|
'
|
|
|
|
# Append these, since we use the propername module.
|
|
see_manual='"This is a proper name. See the gettext manual, section Names."'
|
|
see_manual=\'"$see_manual"\'
|
|
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
|
|
--keyword=proper_name:1,'"$see_manual"'\\\
|
|
--keyword=proper_name_utf8:1,'"$see_manual"'\\\
|
|
'
|
|
|
|
gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\
|
|
--makefile-name=gnulib.mk --automake-subdir
|
|
"
|
|
|
|
# Build prerequisites
|
|
buildreq="\
|
|
autoconf 2.64
|
|
automake 1.11.2
|
|
autopoint 0.19.2
|
|
bison -
|
|
gettext 0.19.2
|
|
git 1.4.4
|
|
gperf -
|
|
gzip -
|
|
m4 -
|
|
makeinfo 6.1
|
|
texi2pdf 6.1
|
|
patch -
|
|
perl 5.5
|
|
tar -
|
|
wget -
|
|
xz -
|
|
"
|
|
|
|
bootstrap_post_import_hook ()
|
|
{
|
|
# Automake requires that ChangeLog exist.
|
|
touch ChangeLog || return 1
|
|
# List of coreutils programs. See heading comments in the invoked
|
|
# script for more info. Keep this in sync with the rules in
|
|
(m4f=m4/cu-progs.m4 mkf=src/cu-progs.mk tmp=cu-progs.tmp \
|
|
&& rm -f $m4f $mkf $tmp-1 $tmp-2 \
|
|
&& build-aux/gen-lists-of-programs.sh --autoconf >$tmp-1 \
|
|
&& build-aux/gen-lists-of-programs.sh --automake >$tmp-2 \
|
|
&& chmod a-w $tmp-1 $tmp-2 \
|
|
&& mv -f $tmp-1 $m4f && mv -f $tmp-2 $mkf)
|
|
|
|
# Regenerate src/single-binary.mk
|
|
(mkf=src/single-binary.mk tmp=single-binary.tmp \
|
|
&& rm -f $mkf $tmp \
|
|
&& build-aux/gen-single-binary.sh src/local.mk >$tmp \
|
|
&& chmod a-w $tmp \
|
|
&& mv -f $tmp $mkf)
|
|
}
|
|
|
|
|
|
bootstrap_epilogue()
|
|
{
|
|
# Since this is a "GNU" package, replace this line
|
|
# if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null \
|
|
# | grep -v 'libtool:' >/dev/null; then
|
|
# with this:
|
|
# if true; then
|
|
# Why? That pipeline searches all files in $(top_srcdir), and if you
|
|
# happen to have large files (or apparently large sparse files), the
|
|
# first grep may well run out of memory.
|
|
perl -pi -e 's/if LC_ALL=C grep .GNU .PACKAGE.*; then/if true; then/' \
|
|
po/Makefile.in.in
|
|
|
|
# Add dummy 'install-html' target, required for packages using
|
|
# non-recursive makefiles with older gettext.
|
|
# See https://debbugs.gnu.org/25690
|
|
if ! grep -w 'install-html' po/Makefile.in.in ; then
|
|
printf 'install-%s:;\n' dvi ps pdf html >> po/Makefile.in.in
|
|
fi
|
|
|
|
# Install our git hooks, as long as "cp" accepts the --backup option,
|
|
# so that we can back up any existing files.
|
|
case $(cp --help) in *--backup*) backup=1;; *) backup=0;; esac
|
|
if test $backup = 1; then
|
|
hooks=$(cd scripts/git-hooks && git ls-files)
|
|
for f in $hooks; do
|
|
# If it is identical, skip it.
|
|
cmp scripts/git-hooks/$f .git/hooks/$f > /dev/null \
|
|
&& continue
|
|
cp --backup=numbered scripts/git-hooks/$f .git/hooks
|
|
chmod a-w .git/hooks/$f
|
|
done
|
|
fi
|
|
}
|