summaryrefslogtreecommitdiff
path: root/bootstrap.conf
blob: 02e70b379cc6c2e0e94c4fff49dee9b9ccb5a0e5 (plain)
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
# Bootstrap configuration.

# Copyright (C) 2006-2019 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
  alignof
  alloca
  announce-gen
  areadlink-with-size
  argmatch
  argv-iter
  assert
  autobuild
  backupfile
  backup-rename
  base32
  base64
  buffer-lcm
  c-strcase
  c-strtod
  cl-strtod
  cl-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
  explicit_bzero
  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
  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
  mbschr
  mbslen
  mbswidth
  memcasecmp
  memchr
  memcmp2
  mempcpy
  memrchr
  mgetgroups
  mkancesdirs
  mkdir
  mkdir-p
  mkfifo
  mknod
  mkostemp
  mkstemp
  mktime
  modechange
  mountlist
  mpsort
  netinet_in
  non-recursive-gnulib-prefix-hack
  nproc
  nstrftime
  obstack
  open
  openat-safer
  parse-datetime
  pathmax
  perl
  physmem
  pipe-posix
  pipe2
  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
  renameat
  renameatu
  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
  strncat
  strnumcmp
  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
  unlinkdir
  unlocked-io
  unsetenv
  update-copyright
  uptime
  useless-if-before-free
  userspec
  utimecmp
  utimens
  vasprintf-posix
  vc-list-files
  verify
  verror
  version-etc-fsf
  wchar-single
  wcswidth
  wcwidth
  winsz-ioctl
  winsz-termios
  write-any-file
  xalloc
  xbinary-io
  xdectoint
  xfts
  xgetcwd
  xgetgroups
  xgethostname
  xmemcoll
  xnanosleep
  xprintf
  xprintf-posix
  xreadlink
  xstrtod
  xstrtoimax
  xstrtol
  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
"

# 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)

  # 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

  # 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
}