summaryrefslogtreecommitdiff
path: root/doc/src/sgml/Makefile
AgeCommit message (Collapse)Author
2025-10-06Revert "Improve docs syntax checking"Andrew Dunstan
This reverts commit b292256272623d1a7532f3893a4565d1944742b4. Further discussion is needed Discussion: https://postgr.es/m/0198ec0f-0269-4cf4-b4a7-22c05b3047cb@eisentraut.org
2025-10-02Improve docs syntax checkingAndrew Dunstan
Move the checks out of the Makefile into a perl script that can be called from both the Makefile and meson.build. The set of files checked is simplified, so it is just all the sgml and xsl files found in docs/src/sgml directory tree. Along the way make some adjustments to .cirrus.tasks.yml to support this better in CI. Also ensure that the checks are part of the Makefile's html target. Author: Nazir Bilal Yavuz <byavuz81@gmail.com> Co-Author: Andrew Dunstan <andrew@dunslane.net> Discussion: https://postgr.es/m/CAN55FZ3BnM+0twT-ZWL8As9oBEte_b+SBU==cz6Hk8JUCM_5Wg@mail.gmail.com
2025-09-25Teach doc/src/sgml/Makefile about the new func/*.sgml files.Tom Lane
These were omitted from build dependencies and also tab/nbsp checks, with the result that "make" did nothing after modifying a func/*.sgml file. Oversight in 4e23c9ef6. AFAICT we don't need any comparable changes in meson.build, or at least I don't see it doing anything special for the pre-existing ref/*.sgml files.
2025-02-07PDF docs build: avoid spurious "warn" in build logs.Tom Lane
Improve on e4c886519 so that the string "warn" appears in the output when there's a problem, and not when there isn't. This should silence noise I've been seeing in my buildfarm warning scraper.
2024-12-04Return actual error code from FOP failure in PDF buildBruce Momjian
Previously we returned "1" on error. Improvement on 77c189cdafe. Backpatch-through: master
2024-12-03Properly use $(AWK) in Makefile, not 'awk'Bruce Momjian
Fix for commit 498f1307569. Backpatch-through: master
2024-12-03Fix Makefile so invalid characters warning preserves error codeBruce Momjian
Fix for commit e4c8865196f. Reported-by: Peter Eisentraut Discussion: https://postgr.es/m/88cb6ecf-22bb-431e-974b-1cd236a80364@eisentraut.org Backpatch-through: master
2024-12-02doc Makefile: issue warning about chars that cannot be outputBruce Momjian
A follow-up improvement to commit 641a5b7a144. Reported-by: Tatsuo Ishii, Tom Lane Discussion: https://postgr.es/m/20241126.182513.1752581942460106099.ishii@postgresql.org Backpatch-through: master
2024-11-04doc: remove check of SVG files, since they are derivedBruce Momjian
revert of change from commit 641a5b7a144 Reported-by: Peter Eisentraut Discussion: https://postgr.es/m/2c5dd601-b245-4092-9c27-6d1ad51609df@eisentraut.org Backpatch-through: master
2024-11-01doc: improve build for non-Latin1 charactersBruce Momjian
Add README.non-ASCII to explain non-ASCII doc behavior; some text moved from release.sgml. Change UTF8 SGML characters to use HTML entities. Remove unnecessary UTF8 spaces. Add SVG file check for check-nbsp target. Add dummy 'pdf' Makefile target. Reported-by: Yugo Nagata Discussion: https://postgr.es/m/20241011114122.c90f8a871462da36f2e2afeb@sraoss.co.jp Backpatch-through: master
2024-10-08Doc: add check to detect non-breaking spaces in the docs.Tatsuo Ishii
There were multiple instances where accidentally adding non-breaking space (nbsp, U+00A0, 0xc2a0 in UTF-8) to sgml files. This commit adds additional checking to detect nbsp. You can check the nbsp by: make -C doc/src/sgml check or make -C doc/src/sgml check-nbsp Authors: Yugo Nagata, Daniel Gustafsson Reviewed-by: Tatsuo Ishii, Daniel Gustafsson Discussion: https://postgr.es/m/20240930.153404.202479334310259810.ishii%40postgresql.org
2024-01-29Remove make function vpathsearchPeter Eisentraut
This function served to support having prebuilt files in the source tree for vpath builds. This is no longer possible (since 721856ff24b); all built files are now always in the build tree. The invocations of this function are no longer required.
2023-12-22Stop generating plain-text INSTALL instructions.Tom Lane
Up to now, our distribution tarballs have included a plain-text form of the installation.sgml chapter. The rationale for that was that a recipient might not have either ready internet access or HTML-viewing tools; a theory that seems downright quaint today. Maintaining the ability to generate this file is not without cost, because it puts special requirements on installation.sgml that are often overlooked. Moreover, we are moving in the direction of making our distribution tarballs be pure git snapshots for traceability/reproducibility reasons; including generated files doesn't fit into that plan. Hence, let's just drop INSTALL and remove the infrastructure for generating it. The top-level README will now recommend visiting our website to see the installation instructions. As a useful side-effect, we can get rid of README.git which has provoked confusion. Discussion: https://postgr.es/m/20231220114927.faccqqprmuyrzdip@alap3.anarazel.de Discussion: https://postgr.es/m/e07408d9-e5f2-d9fd-5672-f53354e9305e@eisentraut.org
2023-11-20meson: Document build targets, add 'help' targetAndres Freund
Currently important build targets are somewhat hard to discover. This commit documents important meson build targets in the sgml documentation. But it's awkward to have to lookup build targets in the docs when hacking, so this also adds a 'help' target, printing out the same information. To avoid having to duplicate information in two places, generate both docbook and interactive docs from a single source. Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/20231108232121.ww542mt6lfo6f26f@awork3.anarazel.de
2023-11-20docs: meson: Change what 'docs' target buildsAndres Freund
This undoes the change in what the 'docs' target builds 969509c3f2e. Tom was concerned with having a target to just build the html docs, which a prior commit now provided explicitly. A subsequent commit will overhaul the documentation for the documentation targets. While at it, move all target in doc/src/sgml/Makefile up to just after the default "html" target, and add a comment explaining "all" is *not* the default target. Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/20230209203855.njrepiupc3rmehfw@awork3.anarazel.de Discussion: https://postgr.es/m/20231103163848.26egkh5qdgw3vmil@awork3.anarazel.de
2023-11-06Remove distprepPeter Eisentraut
A PostgreSQL release tarball contains a number of prebuilt files, in particular files produced by bison, flex, perl, and well as html and man documentation. We have done this consistent with established practice at the time to not require these tools for building from a tarball. Some of these tools were hard to get, or get the right version of, from time to time, and shipping the prebuilt output was a convenience to users. Now this has at least two problems: One, we have to make the build system(s) work in two modes: Building from a git checkout and building from a tarball. This is pretty complicated, but it works so far for autoconf/make. It does not currently work for meson; you can currently only build with meson from a git checkout. Making meson builds work from a tarball seems very difficult or impossible. One particular problem is that since meson requires a separate build directory, we cannot make the build update files like gram.h in the source tree. So if you were to build from a tarball and update gram.y, you will have a gram.h in the source tree and one in the build tree, but the way things work is that the compiler will always use the one in the source tree. So you cannot, for example, make any gram.y changes when building from a tarball. This seems impossible to fix in a non-horrible way. Second, there is increased interest nowadays in precisely tracking the origin of software. We can reasonably track contributions into the git tree, and users can reasonably track the path from a tarball to packages and downloads and installs. But what happens between the git tree and the tarball is obscure and in some cases non-reproducible. The solution for both of these issues is to get rid of the step that adds prebuilt files to the tarball. The tarball now only contains what is in the git tree (*). Getting the additional build dependencies is no longer a problem nowadays, and the complications to keep these dual build modes working are significant. And of course we want to get the meson build system working universally. This commit removes the make distprep target altogether. The make dist target continues to do its job, it just doesn't call distprep anymore. (*) - The tarball also contains the INSTALL file that is built at make dist time, but not by distprep. This is unchanged for now. The make maintainer-clean target, whose job it is to remove the prebuilt files in addition to what make distclean does, is now just an alias to make distprep. (In practice, it is probably obsolete given that git clean is available.) The following programs are now hard build requirements in configure (they were already required by meson.build): - bison - flex - perl Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://www.postgresql.org/message-id/flat/e07408d9-e5f2-d9fd-5672-f53354e9305e@eisentraut.org
2023-07-05Generate automatically code and documentation related to wait eventsMichael Paquier
The documentation and the code is generated automatically from a new file called wait_event_names.txt, formatted in sections dedicated to each wait event class (Timeout, Lock, IO, etc.) with three tab-separated fields: - C symbol in enums - Format in the system views - Description in the docs Using this approach has several advantages, as we have proved to be rather bad in maintaining this area of the tree across the years: - The order of each item in the documentation and the code, which should be alphabetical, has become incorrect multiple times, and the script generating the code and documentation has a few rules to enforce that, making the maintenance a no-brainer. - Some wait events were added to the code, but not documented, so this cannot be missed now. - The order of the tables for each wait event class is enforced in the documentation (the input .txt file does so as well for clarity, though this is not mandatory). - Less code, shaving 1.2k lines from the tree, with 1/3 of the savings coming from the code, the rest from the documentation. The wait event types "Lock" and "LWLock" still have their own code path for their code, hence only the documentation is created for them. These classes are listed with a special marker called WAIT_EVENT_DOCONLY in the input file. Adding a new wait event now requires only an update of wait_event_names.txt, with "Lock" and "LWLock" treated as exceptions. This commit has been tested with configure/Makefile, the CI and VPATH build. clean, distclean and maintainer-clean were working fine. Author: Bertrand Drouvot, Michael Paquier Discussion: https://postgr.es/m/77a86b3a-c4a8-5f5d-69b9-d70bbf2e9b98@gmail.com
2023-04-04docs: html: load stylesheet via custom.css.sourceAndres Freund
Until now the meson built docs did not have a working reference to the css stylesheet, it was copied in the make target. Instead of duplicating that for meson, use the docbook-xsl parameter custom.css.source to reference it. An additional benefit of that approach is that the stylesheet is now included in the single-file HTML documentation. Reported-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com> Discussion: https://postgr.es/m/3fc3bb9b-f7f8-d442-35c1-ec82280c564a@enterprisedb.com
2023-04-04docs: html: copy images to output as part of xslt buildAndres Freund
Until now the meson built HTML docs had non-working references to images. They were copied in the make target. Instead of duplicating that for meson, copy them as part of the xslt stylesheet. Reported-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com> Discussion: https://postgr.es/m/3fc3bb9b-f7f8-d442-35c1-ec82280c564a@enterprisedb.com
2023-04-04docs: Remove support for 'htmlhelp' formatAndres Freund
We had partial support for generating documentation suitable for .chm files. However, we only had wired up generating the input files using docbook-xsl, not generating an actual .chm file. Nor did we document how to do so. Additionally, it was very slow to generate htmlhelp, as we never applied the docbook-xsl stylesheet performance improvements to htmlhelp. It doesn't look like there's any interest in the htmlhelp output, so remove it, instead of spending cycles to finish the support. Discussion: https://postgr.es/m/20230324165822.wcrj3akllbqquy7u@awork3.anarazel.de
2023-02-08Stop recommending auto-download of DTD files, and indeed disable it.Tom Lane
It appears no longer possible to build the SGML docs without a local installation of the DocBook DTD, because sourceforge.net now only permits HTTPS access, and no common version of xsltproc supports that. Hence, remove the bits of our documentation suggesting that that's possible or useful. In fact, we might as well add the --nonet option to the build recipes automatically, for a bit of extra security. Also fix our documentation-tool-installation recipes for macOS to ensure that xmllint and xsltproc are pulled in from MacPorts or Homebrew. The previous recipes assumed you could use the Apple-supplied versions of these tools; which still works, except that you'd need to set an environment variable to ensure that they would find DTD files provided by those package managers. Simpler and easier to just recommend pulling in the additional packages. In HEAD, also document how to build docs using Meson, and adjust "ninja docs" to just build the HTML docs, for consistency with the default behavior of doc/src/sgml/Makefile. In a fit of neatnik-ism, I also made the ordering of the package lists match the order in which the tools are described at the head of the appendix. Aleksander Alekseev, Peter Eisentraut, Tom Lane Discussion: https://postgr.es/m/CAJ7c6TO8Aro2nxg=EQsVGiSDe-TstP4EsSvDHd7DSRsP40PgGA@mail.gmail.com
2022-09-14Run xmllint validation only oncePeter Eisentraut
Before, each documentation target that built something from postgres.sgml ran xmllint first to validate the input. Here, we change it so that the validation only runs once and produces an output file, and all the other targets build from that output file. This avoids redundant work when building multiple documentation targets (such as html and man). Also, when we run xmllint, we can resolve entities (included files). This helps with tools that don't support vpath builds, such as dbtoepub. All this also organizes the make targets a bit better for implementing equivalent steps in meson. Discussion: https://www.postgresql.org/message-id/e3ae16de-c9f9-f559-2d11-70b1342ae3d1@enterprisedb.com
2021-08-27Change Texinfo output to UTF-8Peter Eisentraut
Since the whole documentation tool chain is now UTF-8 and there is an increasing number of non-ISO-8859-1 characters in the text, keeping the Texinfo output in ISO 8859-1 just creates unnecessary complications. Depending on the platform, there are conversion failures and thus build failures, or weirdly converted characters. By changing the output to UTF-8, the whole encoding conversion business is sidestepped.
2019-08-19doc: Fix image use in PDF build with vpathPeter Eisentraut
In a vpath build, we need to point to the source directory to allow FOP to find the images.
2019-05-07doc: Generate keywords table automaticallyPeter Eisentraut
The SQL keywords table in the documentation had until now been generated by some ad hoc scripting outside the source tree once for each major release. This changes it to an automated process. We have the PostgreSQL keywords available in a parseable format in parser/kwlist.h. For the relevant SQL standard versions, keep the keyword lists in new text files. A new script generate-keywords-table.pl pulls it all together and produces a DocBook table. The final output in the documentation should be identical after this change. Discussion: https://www.postgresql.org/message-id/flat/07daeadd-8c82-0d95-5e19-e350502cb749%402ndquadrant.com
2019-03-27doc: Add some imagesPeter Eisentraut
Add infrastructure for having images in the documentation, in SVG format. Add two images to start with. See the included README file for instructions. Author: Jürgen Purtz <juergen@purtz.de> Author: Peter Eisentraut <peter.eisentraut@2ndquadrant.com> Discussion: https://www.postgresql.org/message-id/flat/aaa54502-05c0-4ea5-9af8-770411a6bf4b@purtz.de
2019-03-27doc: Move htmlhelp output to subdirectoryPeter Eisentraut
This makes it behave more like the html output. That will make some subsequent changes across all output formats easier.
2019-03-27Use Pandoc also for plain-text documentation outputPeter Eisentraut
The makefile rule for the (rarely used) plain-text output postgres.txt was still written to use lynx, but in 96b8b8b6f9d8de4af01a77797273ad88c7a8e32e, where the INSTALL file was switched to pandoc, the rest of the makefile support for lynx was removed, so this was broken. Rewrite the rule to also use pandoc for postgres.txt.
2019-02-21Fix dbtoepub output file namePeter Eisentraut
In previous releases, the input file of dbtoepub was postgres.xml, and dbtoepub knows to derive the output file name postgres.epub from that automatically. But now the intput file is postgres.sgml (since postgres.sgml is itself an XML file and we no longer need the intermediate postgres.xml file), but dbtoepub doesn't know how to deal with the .sgml suffix, so the automatically derived output file name becomes postgres.sgml.epub. Fix by adding an explicit -o option.
2019-01-13Make INSTALL makefile rule more robustPeter Eisentraut
With the previous rule, if pandoc was missing, a zero-length output file would be created without an error from make. To improve that, write the rule as two separate commands without a pipe. Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
2019-01-11Create INSTALL file using PandocPeter Eisentraut
Replace using lynx with using pandoc. Pandoc creates better looking output and it avoids the delicate locale/encoding issues of lynx because it always uses UTF-8 for both input and output. Note: requires Pandoc >=1.13 Discussion: https://www.postgresql.org/message-id/flat/dcfaa74d-8037-bb32-f9e0-3fea7ccf4551@2ndquadrant.com/ Reviewed-by: Mi Tar <mmitar@gmail.com>
2018-04-09Fix partial-build problems introduced by having more generated headers.Tom Lane
Commit 372728b0d created some problems for usages like building a subdirectory without having first done "make all" at the top level, or for proceeding directly to "make install" without "make all". The only reasonably clean way to fix this seems to be to force the submake-generated-headers rule to fire in *any* "make all" or "make install" command anywhere in the tree. To avoid lots of redundant work, as well as parallel make jobs possibly clobbering each others' output, we still need to be sure that the rule fires only once in a recursive build. For that, adopt the same MAKELEVEL hack previously used for "temp-install". But try to document it a bit better. The submake-errcodes mechanism previously used in src/port/ and src/common/ is subsumed by this, so we can get rid of those special cases. It was inadequate for src/common/ anyway after the aforesaid commit, and it always risked parallel attempts to build errcodes.h. Discussion: https://postgr.es/m/E1f5FAB-0006LU-MB@gemulon.postgresql.org
2017-11-23Convert documentation to DocBook XMLPeter Eisentraut
Since some preparation work had already been done, the only source changes left were changing empty-element tags like <xref linkend="foo"> to <xref linkend="foo"/>, and changing the DOCTYPE. The source files are still named *.sgml, but they are actually XML files now. Renaming could be considered later. In the build system, the intermediate step to convert from SGML to XML is removed. Everything is build straight from the source files again. The OpenSP (or the old SP) package is no longer needed. The documentation toolchain instructions are updated and are much simpler now. Peter Eisentraut, Alexander Lakhin, Jürgen Purtz
2017-11-10Add -wnet to SP invocationsPeter Eisentraut
This causes a warning when accidentally backpatching an XML-style empty-element tag like <xref linkend="abc"/>.
2017-11-09Remove junk left from DSSSL to XSL conversionPeter Eisentraut
2017-10-17Don't use SGML empty tagsPeter Eisentraut
For DocBook XML compatibility, don't use SGML empty tags (</>) anymore, replace by the full tag name. Add a warning option to catch future occurrences. Alexander Lakhin, Jürgen Purtz
2017-09-28Remove SGML marked sectionsPeter Eisentraut
For XML compatibility, replace marked sections <![IGNORE[ ]]> with comments <!-- -->. In some cases it seemed better to remove the ignored text altogether, and in one case the text should not have been ignored.
2017-09-27Get rid of parameterized marked sections in SGMLPeter Eisentraut
Previously, we created a variant of the installation instructions for producing the plain-text INSTALL file by marking up certain parts of installation.sgml using SGML parameterized marked sections. Marked sections will not work anymore in XML, so before we can convert the documentation to XML, we need a new approach. DocBook provides a "profiling" feature that allows selecting content based on attributes, which would work here. But it imposes a noticeable overhead when building the full documentation and causes complications when building some output formats, and given that we recently spent a fair amount of effort optimizing the documentation build time, it seems sad to have to accept that. So as an alternative, (1) we create our own mini-profiling layer that adjusts just the text we want, and (2) assemble the pieces of content that we want in the INSTALL file using XInclude. That way, there is no overhead when building the full documentation and most of the "ugly" stuff in installation.sgml can be removed and dealt with out of line.
2017-09-06Escape < and & in SGMLPeter Eisentraut
This is not required in SGML, but will be in XML, so this is a step to prepare for the conversion to XML. (It is still not required to escape >, but we did it here in some cases for symmetry.) Add a command-line option to osx/onsgmls calls to warn about unescaped occurrences in the future. Author: Alexander Law <exclusion@gmail.com> Author: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
2017-04-07doc: Add SPFLAGS to osx callsPeter Eisentraut
This enables the same OpenSP warnings on osx calls that we get from onsgmls (make check) and formerly from openjade. Older tool chains apparently have some of these warnings on by default (see comment at SPFLAGS assignment). So users of such tool chains would complain about warnings or errors that users of newer tool chains would not see, unless they used "make check".
2017-04-06Remove use of Jade and DSSSLPeter Eisentraut
All documentation is now built using XSLT. Remove all references to Jade, DSSSL, also JadeTex and some other outdated tooling. For chunked HTML builds, this changes nothing, but removes the transitional "oldhtml" target. The single-page HTML build is ported over to XSLT. For PDF builds, this removes the JadeTex builds and moves the FOP builds in their place.
2017-03-08Create INSTALL file via XSLTPeter Eisentraut
As before, create an INSTALL.html file for processing with lynx, but use xsltproc and a new XSLT stylesheet instead of jade and DSSSL. Replacing jade with xsltproc removes jade from the requirements for distribution building. Reviewed-by: Magnus Hagander <magnus@hagander.net>
2016-11-15Build HTML documentation using XSLT stylesheets by defaultPeter Eisentraut
The old DSSSL build is still available for a while using the make target "oldhtml".
2016-11-04doc: Don't reformat .fo files before processing by fopPeter Eisentraut
This messes up the whitespace in the output PDF document in some places.
2016-10-11Remove "sco" and "unixware" ports.Tom Lane
SCO OpenServer and SCO UnixWare are more or less dead platforms. We have never had a buildfarm member testing the "sco" port, and the last "unixware" member was last heard from in 2012, so it's fair to doubt that the code even compiles anymore on either one. Remove both ports. We can always undo this if someone shows up with an interest in maintaining and testing these platforms. Discussion: <17177.1476136994@sss.pgh.pa.us>
2015-06-10doc: Call xmllint for validity also in the fop buildPeter Eisentraut
This was somehow missed in commit 5d93ce2d0c619ba1b408eb749715e7223e23f6ae.
2015-05-12doc build: use unique Makefile variable to control temp installBruce Momjian
2015-05-07Makefile: Add comment that doc uninstall clears man directoriesBruce Momjian
Report by Mario Valdez
2014-10-21doc: Check DocBook XML validity during the buildPeter Eisentraut
Building the documentation with XSLT does not check the DTD, like a DSSSL build would. One can often get away with having invalid XML, but the stylesheets might then create incorrect output, as they are not designed to handle that. Therefore, check the validity of the XML against the DTD, using xmllint, during the build. Add xmllint detection to configure, and add some documentation. xmllint comes with libxml2, which is already in use, but it might be in a separate package, such as libxml2-utils on Debian. Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
2014-09-13Run missing documentation tools through "missing"Peter Eisentraut
Instead of just erroring out when a tool is missing, wrap the call with the "missing" script that we are already using for bison, flex, and perl, so that the users get a useful error message.