mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-17 12:52:16 +02:00
This fixes a bug noted by Eric Blake. Code was using xfreopen to change files to binary mode, but this fails for stdout when in append mode. Such code should use xsetmode instead. This affects only the port on platforms like MS-Windows which distiguish text from binary I/O. * bootstrap.conf (gnulib_modules): Remove xfreopen and add xsetmode. Sort. * src/base64.c (main): * src/cat.c (main): * src/cksum.c (cksum): * src/head.c (head_file, main): * src/md5sum.c (digest_file): * src/od.c (open_next_file): * src/split.c (main): * src/sum.c (bsd_sum_file, sysv_sum_file): * src/tac.c (tac_file, main): * src/tail.c (tail_file): * src/tee.c (tee_files): * src/tr.c (main): * src/wc.c (wc_file): Use xsetmode, not xfreopen.
393 lines
7.0 KiB
Plaintext
393 lines
7.0 KiB
Plaintext
# Bootstrap configuration.
|
|
|
|
# Copyright (C) 2006-2017 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 <http://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
|
|
alignof
|
|
alloca
|
|
announce-gen
|
|
areadlink-with-size
|
|
argmatch
|
|
argv-iter
|
|
assert
|
|
autobuild
|
|
backupfile
|
|
base32
|
|
base64
|
|
buffer-lcm
|
|
c-strcase
|
|
c-strtod
|
|
c-strtold
|
|
calloc-gnu
|
|
canon-host
|
|
canonicalize
|
|
chown
|
|
cloexec
|
|
closein
|
|
closeout
|
|
config-h
|
|
configmake
|
|
crypto/md5
|
|
crypto/sha1
|
|
crypto/sha256
|
|
crypto/sha512
|
|
cycle-check
|
|
d-ino
|
|
d-type
|
|
di-set
|
|
diacrit
|
|
dirfd
|
|
dirname
|
|
do-release-commit-and-tag
|
|
dtoastr
|
|
dup2
|
|
environ
|
|
error
|
|
euidaccess
|
|
exclude
|
|
exitfail
|
|
faccessat
|
|
fadvise
|
|
fchdir
|
|
fchmodat
|
|
fchownat
|
|
fclose
|
|
fcntl
|
|
fcntl-safer
|
|
fd-reopen
|
|
fdatasync
|
|
fdl
|
|
fdopen
|
|
fdutimensat
|
|
file-has-acl
|
|
file-type
|
|
fileblocks
|
|
filemode
|
|
filenamecat
|
|
filevercmp
|
|
flexmember
|
|
fnmatch-gnu
|
|
fopen-safer
|
|
fprintftime
|
|
freopen
|
|
freopen-safer
|
|
fseeko
|
|
fstatat
|
|
fsusage
|
|
fsync
|
|
ftello
|
|
ftoastr
|
|
ftruncate
|
|
fts
|
|
full-read
|
|
full-write
|
|
getgroups
|
|
gethrxtime
|
|
getline
|
|
getloadavg
|
|
getlogin
|
|
getndelim2
|
|
getopt-gnu
|
|
getpagesize
|
|
getpass-gnu
|
|
gettext-h
|
|
gettime
|
|
gettimeofday
|
|
getugroups
|
|
getusershell
|
|
git-version-gen
|
|
gitlog-to-changelog
|
|
gnu-make
|
|
gnu-web-doc-update
|
|
gnumakefile
|
|
gnupload
|
|
group-member
|
|
hard-locale
|
|
hash
|
|
hash-pjw
|
|
heap
|
|
host-os
|
|
human
|
|
idcache
|
|
ignore-value
|
|
inttostr
|
|
inttypes
|
|
isapipe
|
|
isatty
|
|
isblank
|
|
largefile
|
|
lchmod
|
|
lchown
|
|
ldtoastr
|
|
lib-ignore
|
|
linebuffer
|
|
link
|
|
link-follow
|
|
linkat
|
|
long-options
|
|
lstat
|
|
maintainer-makefile
|
|
malloc-gnu
|
|
manywarnings
|
|
mbrlen
|
|
mbrtowc
|
|
mbsalign
|
|
mbswidth
|
|
memcasecmp
|
|
memchr
|
|
memcmp2
|
|
mempcpy
|
|
memrchr
|
|
mgetgroups
|
|
mkancesdirs
|
|
mkdir
|
|
mkdir-p
|
|
mkfifo
|
|
mknod
|
|
mkstemp
|
|
mktime
|
|
modechange
|
|
mountlist
|
|
mpsort
|
|
netinet_in
|
|
non-recursive-gnulib-prefix-hack
|
|
nproc
|
|
obstack
|
|
parse-datetime
|
|
pathmax
|
|
perl
|
|
physmem
|
|
pipe-posix
|
|
posix-shell
|
|
posixtm
|
|
posixver
|
|
priv-set
|
|
progname
|
|
propername
|
|
pthread
|
|
putenv
|
|
quote
|
|
quotearg
|
|
randint
|
|
randperm
|
|
read-file
|
|
readlink
|
|
readtokens
|
|
readtokens0
|
|
readutmp
|
|
realloc-gnu
|
|
regex
|
|
remove
|
|
rename
|
|
rmdir
|
|
root-dev-ino
|
|
rpmatch
|
|
safe-read
|
|
same
|
|
save-cwd
|
|
savedir
|
|
savewd
|
|
selinux-at
|
|
setenv
|
|
settime
|
|
sig2str
|
|
sigaction
|
|
smack
|
|
ssize_t
|
|
stat-macros
|
|
stat-size
|
|
stat-time
|
|
statat
|
|
stdbool
|
|
stdlib-safer
|
|
stpcpy
|
|
stpncpy
|
|
strdup-posix
|
|
strftime
|
|
strncat
|
|
strnumcmp
|
|
strpbrk
|
|
strsignal
|
|
strtod
|
|
strtoimax
|
|
strtoumax
|
|
symlinkat
|
|
sys_ioctl
|
|
sys_resource
|
|
sys_stat
|
|
sys_wait
|
|
tempname
|
|
termios
|
|
time_rz
|
|
timer-time
|
|
timespec
|
|
tzset
|
|
uname
|
|
unicodeio
|
|
unistd-safer
|
|
unlink-busy
|
|
unlinkat
|
|
unlocked-io
|
|
unsetenv
|
|
update-copyright
|
|
uptime
|
|
useless-if-before-free
|
|
userspec
|
|
utimecmp
|
|
utimens
|
|
vasprintf-posix
|
|
vc-list-files
|
|
verify
|
|
verror
|
|
version-etc-fsf
|
|
wcswidth
|
|
wcwidth
|
|
winsz-ioctl
|
|
winsz-termios
|
|
write-any-file
|
|
xalloc
|
|
xdectoint
|
|
xfts
|
|
xgetcwd
|
|
xgetgroups
|
|
xgethostname
|
|
xmemcoll
|
|
xnanosleep
|
|
xprintf
|
|
xprintf-posix
|
|
xreadlink
|
|
xsetmode
|
|
xstrtod
|
|
xstrtoimax
|
|
xstrtol
|
|
xstrtold
|
|
xstrtoumax
|
|
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
|
|
"
|
|
|
|
# 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 -
|
|
makeinfo 4.13
|
|
patch -
|
|
perl 5.5
|
|
rsync -
|
|
tar -
|
|
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)
|
|
|
|
# Massage lib/gnulib.mk before using it later in the bootstrapping process.
|
|
build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/$gnulib_mk
|
|
|
|
# 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
|
|
|
|
# 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
|
|
}
|