Skip to content

Commit

Permalink
Remove configure-time probe for DocBook DTD.
Browse files Browse the repository at this point in the history
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/[email protected]
Discussion: https://postgr.es/m/[email protected]
  • Loading branch information
tglsfdc committed Nov 30, 2020
1 parent 275b341 commit 4823c4f
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 142 deletions.
1 change: 0 additions & 1 deletion aclocal.m4
Original file line number Diff line number Diff line change
Expand Up @@ -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])
Expand Down
40 changes: 0 additions & 40 deletions config/docbook.m4

This file was deleted.

137 changes: 50 additions & 87 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -18604,55 +18603,19 @@ $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
if test -z "$XSLTPROC"; then
for ac_prog in xsltproc
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 :
if ${ac_cv_path_XSLTPROC+:} false; then :
$as_echo_n "(cached) " >&6
else
case $DBTOEPUB in
case $XSLTPROC in
[\\/]* | ?:[\\/]*)
ac_cv_path_DBTOEPUB="$DBTOEPUB" # Let the user override the test with a path.
ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
Expand All @@ -18662,7 +18625,7 @@ do
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"
ac_cv_path_XSLTPROC="$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
Expand All @@ -18673,40 +18636,40 @@ 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; }
XSLTPROC=$ac_cv_path_XSLTPROC
if test -n "$XSLTPROC"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
$as_echo "$XSLTPROC" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi


test -n "$DBTOEPUB" && break
test -n "$XSLTPROC" && 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; }
# Report the value of XSLTPROC in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSLTPROC" >&5
$as_echo_n "checking for XSLTPROC... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
$as_echo "$XSLTPROC" >&6; }
fi

if test -z "$XSLTPROC"; then
for ac_prog in xsltproc
if test -z "$FOP"; then
for ac_prog in fop
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_XSLTPROC+:} false; then :
if ${ac_cv_path_FOP+:} false; then :
$as_echo_n "(cached) " >&6
else
case $XSLTPROC in
case $FOP in
[\\/]* | ?:[\\/]*)
ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
ac_cv_path_FOP="$FOP" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
Expand All @@ -18716,7 +18679,7 @@ do
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_XSLTPROC="$as_dir/$ac_word$ac_exec_ext"
ac_cv_path_FOP="$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
Expand All @@ -18727,40 +18690,40 @@ IFS=$as_save_IFS
;;
esac
fi
XSLTPROC=$ac_cv_path_XSLTPROC
if test -n "$XSLTPROC"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
$as_echo "$XSLTPROC" >&6; }
FOP=$ac_cv_path_FOP
if test -n "$FOP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5
$as_echo "$FOP" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi


test -n "$XSLTPROC" && break
test -n "$FOP" && break
done

else
# Report the value of XSLTPROC in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSLTPROC" >&5
$as_echo_n "checking for XSLTPROC... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
$as_echo "$XSLTPROC" >&6; }
# Report the value of FOP in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FOP" >&5
$as_echo_n "checking for FOP... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5
$as_echo "$FOP" >&6; }
fi

if test -z "$FOP"; then
for ac_prog in fop
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_FOP+:} false; then :
if ${ac_cv_path_DBTOEPUB+:} false; then :
$as_echo_n "(cached) " >&6
else
case $FOP in
case $DBTOEPUB in
[\\/]* | ?:[\\/]*)
ac_cv_path_FOP="$FOP" # Let the user override the test with a path.
ac_cv_path_DBTOEPUB="$DBTOEPUB" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
Expand All @@ -18770,7 +18733,7 @@ do
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_FOP="$as_dir/$ac_word$ac_exec_ext"
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
Expand All @@ -18781,25 +18744,25 @@ IFS=$as_save_IFS
;;
esac
fi
FOP=$ac_cv_path_FOP
if test -n "$FOP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5
$as_echo "$FOP" >&6; }
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 "$FOP" && break
test -n "$DBTOEPUB" && break
done

else
# Report the value of FOP in configure's output in all cases.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FOP" >&5
$as_echo_n "checking for FOP... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5
$as_echo "$FOP" >&6; }
# 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


Expand Down
7 changes: 3 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 28 additions & 10 deletions doc/src/sgml/docguide.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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>

Expand Down

0 comments on commit 4823c4f

Please sign in to comment.