1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
|
# Bootstrap configuration.
# Copyright (C) 2006-2022 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
alignof
alloca
announce-gen
areadlink-with-size
areadlinkat-with-size
argmatch
argv-iter
assert
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
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
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
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
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
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 -
makeinfo 6.1
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)
# 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
}
|