Remove configure-time probe for DocBook DTD.

Checking for DocBook being installed was valuable when we were on the
OpenSP docs toolchain, because that was rather hard to get installed
fully.  Nowadays, as long as you have xmllint and xsltproc installed,
you're good, because those programs will fetch the DocBook files off
the net at need.  Moreover, testing this at configure time means that
a network access may well occur whether or not you have any interest
in building the docs later.  That can be slow (typically 2 or 3
seconds, though much higher delays have been reported), and it seems
not very nice to be doing an off-machine access without warning, too.

Hence, drop the PGAC_CHECK_DOCBOOK probe, and adjust related
documentation.  Without that macro, there's not much left of
config/docbook.m4 at all, so I just removed it.

Back-patch to v11, where we started to use xmllint in the
PGAC_CHECK_DOCBOOK probe.

Discussion: https://postgr.es/m/E2EE6B76-2D96-408A-B961-CAE47D1A86F0@yesql.se
Discussion: https://postgr.es/m/A55A7FC9-FA60-47FE-98B5-139CDC57CE6E@gmail.com
This commit is contained in:
Tom Lane 2020-11-30 15:24:13 -05:00
parent 275b3411d9
commit 4823c4f6ac
5 changed files with 87 additions and 148 deletions

1
aclocal.m4 vendored
View File

@ -5,7 +5,6 @@ m4_include([config/ax_pthread.m4])
m4_include([config/c-compiler.m4])
m4_include([config/c-library.m4])
m4_include([config/check_decls.m4])
m4_include([config/docbook.m4])
m4_include([config/general.m4])
m4_include([config/libtool.m4])
m4_include([config/llvm.m4])

View File

@ -1,40 +0,0 @@
# config/docbook.m4
# PGAC_PATH_XMLLINT
# -----------------
AC_DEFUN([PGAC_PATH_XMLLINT],
[PGAC_PATH_PROGS(XMLLINT, xmllint)])
# PGAC_CHECK_DOCBOOK(VERSION)
# ---------------------------
AC_DEFUN([PGAC_CHECK_DOCBOOK],
[AC_REQUIRE([PGAC_PATH_XMLLINT])
AC_CACHE_CHECK([for DocBook XML V$1], [pgac_cv_check_docbook],
[cat >conftest.xml <<EOF
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V$1//EN" "http://www.oasis-open.org/docbook/xml/$1/docbookx.dtd">
<book>
<title>test</title>
<chapter>
<title>random</title>
<sect1>
<title>testsect</title>
<para>text</para>
</sect1>
</chapter>
</book>
EOF
pgac_cv_check_docbook=no
if test -n "$XMLLINT"; then
$XMLLINT --noout --valid conftest.xml 1>&AS_MESSAGE_LOG_FD 2>&1
if test $? -eq 0; then
pgac_cv_check_docbook=yes
fi
fi
rm -f conftest.xml])
have_docbook=$pgac_cv_check_docbook
AC_SUBST([have_docbook])
])# PGAC_CHECK_DOCBOOK

149
configure vendored
View File

@ -630,10 +630,9 @@ vpath_build
PG_SYSROOT
PG_VERSION_NUM
PROVE
DBTOEPUB
FOP
XSLTPROC
DBTOEPUB
have_docbook
XMLLINT
TCL_SHLIB_LD_LIBS
TCL_SHARED_BUILD
@ -18548,7 +18547,7 @@ fi
fi
#
# Check for DocBook and tools
# Check for documentation-building tools
#
if test -z "$XMLLINT"; then
for ac_prog in xmllint
@ -18604,96 +18603,6 @@ $as_echo_n "checking for XMLLINT... " >&6; }
$as_echo "$XMLLINT" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DocBook XML V4.5" >&5
$as_echo_n "checking for DocBook XML V4.5... " >&6; }
if ${pgac_cv_check_docbook+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.xml <<EOF
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<book>
<title>test</title>
<chapter>
<title>random</title>
<sect1>
<title>testsect</title>
<para>text</para>
</sect1>
</chapter>
</book>
EOF
pgac_cv_check_docbook=no
if test -n "$XMLLINT"; then
$XMLLINT --noout --valid conftest.xml 1>&5 2>&1
if test $? -eq 0; then
pgac_cv_check_docbook=yes
fi
fi
rm -f conftest.xml
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_check_docbook" >&5
$as_echo "$pgac_cv_check_docbook" >&6; }
have_docbook=$pgac_cv_check_docbook
if test -z "$DBTOEPUB"; then
for ac_prog in dbtoepub
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_DBTOEPUB+:} false; then :
$as_echo_n "(cached) " >&6
else
case $DBTOEPUB in
[\\/]* | ?:[\\/]*)
ac_cv_path_DBTOEPUB="$DBTOEPUB" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_DBTOEPUB="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
DBTOEPUB=$ac_cv_path_DBTOEPUB
if test -n "$DBTOEPUB"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBTOEPUB" >&5
$as_echo "$DBTOEPUB" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$DBTOEPUB" && break
done
else
# Report the value of DBTOEPUB in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBTOEPUB" >&5
$as_echo_n "checking for DBTOEPUB... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBTOEPUB" >&5
$as_echo "$DBTOEPUB" >&6; }
fi
if test -z "$XSLTPROC"; then
for ac_prog in xsltproc
do
@ -18802,6 +18711,60 @@ $as_echo_n "checking for FOP... " >&6; }
$as_echo "$FOP" >&6; }
fi
if test -z "$DBTOEPUB"; then
for ac_prog in dbtoepub
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_DBTOEPUB+:} false; then :
$as_echo_n "(cached) " >&6
else
case $DBTOEPUB in
[\\/]* | ?:[\\/]*)
ac_cv_path_DBTOEPUB="$DBTOEPUB" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_DBTOEPUB="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
DBTOEPUB=$ac_cv_path_DBTOEPUB
if test -n "$DBTOEPUB"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBTOEPUB" >&5
$as_echo "$DBTOEPUB" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$DBTOEPUB" && break
done
else
# Report the value of DBTOEPUB in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBTOEPUB" >&5
$as_echo_n "checking for DBTOEPUB... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBTOEPUB" >&5
$as_echo "$DBTOEPUB" >&6; }
fi
#
# Check for test tools

View File

@ -2237,13 +2237,12 @@ if test "$with_python" = yes; then
fi
#
# Check for DocBook and tools
# Check for documentation-building tools
#
PGAC_PATH_XMLLINT
PGAC_CHECK_DOCBOOK(4.5)
PGAC_PATH_PROGS(DBTOEPUB, dbtoepub)
PGAC_PATH_PROGS(XMLLINT, xmllint)
PGAC_PATH_PROGS(XSLTPROC, xsltproc)
PGAC_PATH_PROGS(FOP, fop)
PGAC_PATH_PROGS(DBTOEPUB, dbtoepub)
#
# Check for test tools

View File

@ -155,10 +155,12 @@
You can get away with not installing DocBook XML and the DocBook XSLT
stylesheets locally, because the required files will be downloaded from the
Internet and cached locally. This may in fact be the preferred solution if
your operating system packages provide only an old version of especially
the stylesheets or if no packages are available at all. See
the <option>--nonet</option> option for <command>xmllint</command>
and <command>xsltproc</command> for more information.
your operating system packages provide only an old version of these files,
or if no packages are available at all.
If you want to prevent any attempt to access the Internet while building
the documentation, you need to pass the <option>--nonet</option> option
to <command>xmllint</command> and <command>xsltproc</command>; see below
for an example.
</para>
<sect2>
@ -228,21 +230,37 @@ brew install docbook docbook-xsl fop
<para>
Before you can build the documentation you need to run the
<filename>configure</filename> script as you would when building
<filename>configure</filename> script, as you would when building
the <productname>PostgreSQL</productname> programs themselves.
Check the output near the end of the run, it should look something
Check the output near the end of the run; it should look something
like this:
<screen>
checking for xmllint... xmllint
checking for DocBook XML V4.5... yes
checking for dbtoepub... dbtoepub
checking for xsltproc... xsltproc
checking for fop... fop
checking for dbtoepub... dbtoepub
</screen>
If <filename>xmllint</filename> was not found then some of the following
tests will be skipped.
If <filename>xmllint</filename> or <filename>xsltproc</filename> is not
found, you will not be able to build any of the documentation.
<filename>fop</filename> is only needed to build the documentation in
PDF format.
<filename>dbtoepub</filename> is only needed to build the documentation
in EPUB format.
</para>
<para>
If necessary, you can tell <filename>configure</filename> where to find
these programs, for example
<screen>
./configure ... XMLLINT=/opt/local/bin/xmllint ...
</screen>
Also, if you want to ensure that <filename>xmllint</filename>
and <filename>xsltproc</filename> will not perform any network access,
you can do something like
<screen>
./configure ... XMLLINT="xmllint --nonet" XSLTPROC="xsltproc --nonet" ...
</screen>
</para>
</sect2>
</sect1>