ls: reinstate capability checking in more cases
[coreutils.git] / bootstrap.conf
blob451d32404513c404449943a7b1068d46d1f0145c
1 # Bootstrap configuration.
3 # Copyright (C) 2006-2024 Free Software Foundation, Inc.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
19 # We don't need these modules.
20 avoided_gnulib_modules='
21   --avoid=canonicalize-lgpl
22   --avoid=dummy
23   --avoid=mbuiter
24   --avoid=mbuiterf
27 # gnulib modules used by this package.
28 gnulib_modules="
29   $avoided_gnulib_modules
30   acl
31   alignalloc
32   alignasof
33   alloca
34   announce-gen
35   areadlink-with-size
36   areadlinkat-with-size
37   argmatch
38   argv-iter
39   assert
40   assert-h
41   assure
42   attribute
43   autobuild
44   backup-rename
45   backupfile
46   base32
47   base64
48   btoc32
49   buffer-lcm
50   c-strcase
51   c32iscntrl
52   c32isspace
53   c32width
54   canon-host
55   canonicalize
56   chmodat
57   chown
58   chownat
59   cl-strtod
60   cl-strtold
61   closein
62   closeout
63   config-h
64   configmake
65   copy-file-range
66   crypto/md5
67   crypto/sha1
68   crypto/sha256
69   crypto/sha512
70   crypto/sm3
71   cycle-check
72   d-ino
73   d-type
74   di-set
75   dirfd
76   dirname
77   do-release-commit-and-tag
78   dtoastr
79   dup2
80   endian
81   environ
82   error
83   euidaccess
84   exclude
85   exitfail
86   explicit_bzero
87   faccessat
88   fadvise
89   fchdir
90   fchmodat
91   fchownat
92   fclose
93   fcntl
94   fcntl-safer
95   fd-reopen
96   fdatasync
97   fdopen
98   fdutimensat
99   file-has-acl
100   file-type
101   fileblocks
102   filemode
103   filenamecat
104   filevercmp
105   flexmember
106   fnmatch-gnu
107   fopen-safer
108   fprintftime
109   fpurge
110   free-posix
111   freopen
112   freopen-safer
113   fseeko
114   fstatat
115   fsusage
116   fsync
117   ftoastr
118   ftruncate
119   fts
120   full-read
121   full-write
122   gethrxtime
123   getline
124   getloadavg
125   getlogin
126   getndelim2
127   getopt-gnu
128   getpagesize
129   gettext-h
130   gettime
131   gettime-res
132   git-version-gen
133   gitlog-to-changelog
134   gnu-web-doc-update
135   gnumakefile
136   gnupload
137   hard-locale
138   hash
139   hash-triple
140   heap
141   host-os
142   human
143   idcache
144   idx
145   ignore-value
146   inttostr
147   inttypes
148   isapipe
149   isatty
150   isblank
151   largefile
152   lchmod
153   ldtoastr
154   lib-ignore
155   libgmp
156   linebuffer
157   link
158   link-follow
159   linkat
160   long-options
161   lstat
162   maintainer-makefile
163   malloc-gnu
164   manywarnings
165   mbrlen
166   mbrtoc32
167   mbrtowc
168   mbschr
169   mbslen
170   mbswidth
171   mbszero
172   mcel-prefer
173   memcasecmp
174   memchr
175   memcmp2
176   mempcpy
177   memrchr
178   minmax
179   mkancesdirs
180   mkdir
181   mkdir-p
182   mkdirat
183   mkfifo
184   mkfifoat
185   mknod
186   mkostemp
187   mkstemp
188   mktime
189   modechange
190   mountlist
191   mpsort
192   nproc
193   nstrftime
194   nullptr
195   obstack
196   open
197   openat-safer
198   parse-datetime
199   parse-datetime2
200   pathmax
201   perl
202   physmem
203   pipe-posix
204   pipe2
205   posix-shell
206   posixtm
207   posixver
208   priv-set
209   progname
210   propername-lite
211   pthread-cond
212   pthread-mutex
213   pthread-thread
214   pthread_sigmask
215   putenv-gnu
216   quote
217   quotearg
218   randint
219   randperm
220   rawmemchr
221   read-file
222   readtokens
223   readtokens0
224   readutmp
225   regex
226   remove
227   renameat
228   renameatu
229   rmdir
230   root-dev-ino
231   safe-read
232   same
233   save-cwd
234   savedir
235   savewd
236   select
237   selinux-at
238   setenv
239   settime
240   sig2str
241   sigaction
242   skipchars
243   smack
244   ssize_t
245   stat-macros
246   stat-size
247   stat-time
248   stdbool
249   stdc_leading_zeros
250   stdc_trailing_zeros
251   stdckdint
252   stdlib-safer
253   stpcpy
254   strdup-posix
255   strnlen
256   strnumcmp
257   strsignal
258   strtoimax
259   strtoumax
260   symlinkat
261   sys_ioctl
262   sys_resource
263   sys_stat
264   sys_types
265   sys_wait
266   targetdir
267   tempname
268   termios
269   time_rz
270   timer-time
271   timespec
272   tmpdir
273   uname
274   unicodeio
275   unistd-safer
276   unlink-busy
277   unlinkat
278   unlinkdir
279   unlocked-io
280   unsetenv
281   update-copyright
282   useless-if-before-free
283   userspec
284   utimecmp
285   utimens
286   utimensat
287   vasprintf-posix
288   vc-list-files
289   verify
290   verror
291   version-etc-fsf
292   winsz-ioctl
293   winsz-termios
294   write-any-file
295   xalignalloc
296   xalloc
297   xbinary-io
298   xdectoint
299   xfts
300   xgetcwd
301   xgetgroups
302   xgethostname
303   xmemcoll
304   xnanosleep
305   xprintf
306   xprintf-posix
307   xreadlink
308   xstrtod
309   xstrtoimax
310   xstrtol
311   xstrtol-error
312   xstrtold
313   xstrtoumax
314   xvasprintf
315   year2038-recommended
316   yesno
319 # Other locale categories that need message catalogs.
320 EXTRA_LOCALE_CATEGORIES=LC_TIME
322 # Additional xgettext options to use.  Use "\\\newline" to break lines.
323 XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
324  --flag=asnprintf:3:c-format\\\
325  --flag=asprintf:2:c-format\\\
326  --flag=error:3:c-format\\\
327  --flag=error_at_line:5:c-format\\\
328  --flag=vasnprintf:3:c-format\\\
329  --flag=vasprintf:2:c-format\\\
330  --flag=verror:3:c-format\\\
331  --flag=verror_at_line:5:c-format\\\
332  --flag=wrapf:1:c-format\\\
333  --flag=xasprintf:1:c-format\\\
334  --flag=xfprintf:2:c-format\\\
335  --flag=xprintf:1:c-format\\\
336  --from-code=UTF-8\\\
339 # Append these, since we use the propername module.
340 see_manual='"This is a proper name. See the gettext manual, section Names."'
341 see_manual=\'"$see_manual"\'
342 XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
343  --keyword=proper_name:1,'"$see_manual"'\\\
344  --keyword=proper_name_lite:1,'"$see_manual"'\\\
347 gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\
348  --makefile-name=gnulib.mk --automake-subdir
351 # Build prerequisites
352 buildreq="\
353 autoconf   2.64
354 automake   1.11.2
355 autopoint  0.19.2
356 bison      -
357 gettext    0.19.2
358 git        1.4.4
359 gperf      -
360 gzip       -
361 m4         -
362 makeinfo   6.1
363 texi2pdf   6.1
364 patch      -
365 perl       5.5
366 tar        -
367 wget       -
368 xz         -
371 bootstrap_post_import_hook ()
373   # Automake requires that ChangeLog exist.
374   touch ChangeLog || return 1
375   # List of coreutils programs.  See heading comments in the invoked
376   # script for more info.  Keep this in sync with the rules in
377   (m4f=m4/cu-progs.m4 mkf=src/cu-progs.mk tmp=cu-progs.tmp \
378     && rm -f $m4f $mkf $tmp-1 $tmp-2 \
379     && build-aux/gen-lists-of-programs.sh --autoconf >$tmp-1 \
380     && build-aux/gen-lists-of-programs.sh --automake >$tmp-2 \
381     && chmod a-w $tmp-1 $tmp-2 \
382     && mv -f $tmp-1 $m4f && mv -f $tmp-2 $mkf)
384   # Regenerate src/single-binary.mk
385   (mkf=src/single-binary.mk tmp=single-binary.tmp \
386     && rm -f $mkf $tmp \
387     && build-aux/gen-single-binary.sh src/local.mk >$tmp \
388     && chmod a-w $tmp \
389     && mv -f $tmp $mkf)
391   # Copy tests/init.sh from Gnulib.
392   $gnulib_tool --copy-file tests/init.sh
396 bootstrap_epilogue()
398   # Since this is a "GNU" package, replace this line
399   #   if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null \
400   #      | grep -v 'libtool:' >/dev/null; then
401   # with this:
402   #   if true; then
403   # Why?  That pipeline searches all files in $(top_srcdir), and if you
404   # happen to have large files (or apparently large sparse files), the
405   # first grep may well run out of memory.
406   perl -pi -e 's/if LC_ALL=C grep .GNU .PACKAGE.*; then/if true; then/' \
407     po/Makefile.in.in
409   # Add dummy 'install-html' target, required for packages using
410   # non-recursive makefiles with older gettext.
411   # See https://debbugs.gnu.org/25690
412   if ! grep -w 'install-html' po/Makefile.in.in ; then
413     printf 'install-%s:;\n' dvi ps pdf html >> po/Makefile.in.in
414   fi
416   # Install our git hooks, as long as "cp" accepts the --backup option,
417   # so that we can back up any existing files.
418   case $(cp --help) in *--backup*) backup=1;; *) backup=0;; esac
419   if test $backup = 1; then
420     hooks=$(cd scripts/git-hooks && git ls-files)
421     for f in $hooks; do
422       # If it is identical, skip it.
423       cmp scripts/git-hooks/$f .git/hooks/$f > /dev/null \
424         && continue
425       cp --backup=numbered scripts/git-hooks/$f .git/hooks
426       chmod a-w .git/hooks/$f
427     done
428   fi