groff/bootstrap.conf
G. Branden Robinson 834afa4e0d [libgroff]: Fix Savannah #65980 (open directory).
* src/libs/libgroff/searchpath.cpp (is_directory): New function uses
  stat(2) to check file name argument to see if it's a directory, and
  returns a Boolean.

  (search_path::open_file):
  (search_path::open_file_cautious): Use `is_directory()` before
  attempting to `fopen()` a file specification; fail and set `errno` to
  `EISDIR` if it's a directory so that the caller reports a useful
  diagnostic.

* bootstrap.conf: Add gnulib `stat` module, because the story of
  POSIX and non-POSIX systems alike trying and failing to sensibly
  implement the fundamental Unix file system model is a sorry tale of
  indifference and self-owns by rock star programmers.  (Seriously, read
  the "sys/stat.h" and "stat" sections of the gnulib manual.)

Fixes <https://savannah.gnu.org/bugs/?65980>.  Thanks to Dave Kemper for
the report.
2024-07-13 13:51:01 -05:00

110 lines
2.9 KiB
Plaintext

# 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/>.
# gnulib m4 macro
m4_base=gnulib_m4
# gnulib C source files
source_base=lib
# additional standard files, particularly added by
# automake --add-missing
build_aux=build-aux
gnulib_name=libgnu
# This file is not distributed and used to check if the bootstrap
# script is not launched on a tarball
checkout_only_file=README.git
# gnulib modules used by this package.
# havelib provides config.rpath
# can be get through gettext though
gnulib_modules="
attribute
git-version-gen
havelib
wcwidth
fprintf-posix
snprintf
vsnprintf
stat
stdbool-c99
stdint
sys_wait
"
# Name of the Makefile.am
gnulib_tool_option_extras="
--makefile-name=gnulib.mk
--automake-subdir"
# Additional xgettext options to use. Use "\\\newline" to break lines.
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
--from-code=UTF-8\\\
--flag=asprintf:2:c-format --flag=vasprintf:2:c-format\\\
--flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format\\\
--flag=wrapf:1:c-format\\\
'
# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
# appears in configure.ac, exclude some unnecessary files.
# Without grep's -E option (not portable enough, pre-configure),
# the following test is ugly. Also, this depends on the existence
# of configure.ac, not the obsolescent-named configure.in. But if
# you're using this infrastructure, you should care about such things.
gettext_external=0
grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null &&
gettext_external=1
grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
gettext_external=1
if test $gettext_external = 1; then
# Gettext supplies these files, but we don't need them since
# we don't have an intl subdirectory.
excluded_files='
m4/glibc2.m4
m4/intdiv0.m4
m4/lcmessage.m4
m4/lock.m4
m4/printf-posix.m4
m4/size_max.m4
m4/uintmax_t.m4
m4/ulonglong.m4
m4/visibility.m4
m4/xsize.m4
'
fi
# Build prerequisites
buildreq="\
autoconf 2.68
automake 1.12.2
git 1.5.5
libtool 2.2.2
tar -
pkg-config -
"
bootstrap_post_import_hook ()
{
# Automake requires that ChangeLog exist.
touch ChangeLog || return 1
}