BUG #19404: manpages are missing in 18.x source.tar.gz

Started by PG Bug reporting form2 months ago9 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 19404
Logged by: Marcel Hofstetter
Email address: hofstetter@jomasoft.ch
PostgreSQL version: 18.2
Operating system: Solaris
Description:

-bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/.
postgresql-18.2/doc/src/sgml/man1/.: No such file or directory

the files are there in 17.x

-bash-5.1$ ls -l postgresql-17.8/doc/src/sgml/man1/. | wc -l
38

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

PG Bug reporting form <noreply@postgresql.org> writes:

-bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/.
postgresql-18.2/doc/src/sgml/man1/.: No such file or directory

This is an intentional change in our distribution process in v17
and later: the tarballs are now just images of our git repo,
without any derived files.

the files are there in 17.x

Not unless you built them locally. They are certainly not in
my copy of that tarball:

$ tar tvfj postgresql-17.8.tar.bz2 | grep /man
-rw-rw-r-- root/root 23923 2026-02-09 16:51 postgresql-17.8/doc/src/sgml/manage-ag.sgml

regards, tom lane

#3Marcel Hofstetter
hofstetter@jomasoft.ch
In reply to: Tom Lane (#2)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Am 12.02.2026 um 18:25 schrieb Tom Lane:

PG Bug reporting form <noreply@postgresql.org> writes:

-bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/.
postgresql-18.2/doc/src/sgml/man1/.: No such file or directory

This is an intentional change in our distribution process in v17
and later: the tarballs are now just images of our git repo,
without any derived files.

the files are there in 17.x

Not unless you built them locally. They are certainly not in
my copy of that tarball:

$ tar tvfj postgresql-17.8.tar.bz2 | grep /man
-rw-rw-r-- root/root 23923 2026-02-09 16:51 postgresql-17.8/doc/src/sgml/manage-ag.sgml

gmake man fails with v18

-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
Can't open man1/*.1
gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: *** [Makefile:8: man] Error 2
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: *** [Makefile:16: man] Error 2
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
gmake: *** [GNUmakefile:27: man] Error 2

but works well with v17

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marcel Hofstetter (#3)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Marcel Hofstetter <hofstetter@jomasoft.ch> writes:

gmake man fails with v18

-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
Can't open man1/*.1
gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: *** [Makefile:8: man] Error 2
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: *** [Makefile:16: man] Error 2
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
gmake: *** [GNUmakefile:27: man] Error 2

Are you working with somebody's modified version of the PG
distribution? The commands generated by "make man" look nothing
like that here:

$ make man
make -C doc man
make[1]: Entering directory '/home/postgres/REL_18/pgsql/doc'
make -C src man
make[2]: Entering directory '/home/postgres/REL_18/pgsql/doc/src'
make -C sgml man
make[3]: Entering directory '/home/postgres/REL_18/pgsql/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES ../../../src/backend/catalog/sql_feature_packages.txt ../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO ../../../src/backend/catalog/sql_feature_packages.txt ../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl ../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl' ../../../src/backend/utils/activity/generate-wait_event_types.pl --docs ../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml --noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version '18.2' stylesheet-man.xsl postgres-full.xml
touch man-stamp
make[3]: Leaving directory '/home/postgres/REL_18/pgsql/doc/src/sgml'
make[2]: Leaving directory '/home/postgres/REL_18/pgsql/doc/src'
make[1]: Leaving directory '/home/postgres/REL_18/pgsql/doc'

It's that way for quite a few versions before v18, too.

regards, tom lane

#5Marcel Hofstetter
hofstetter@jomasoft.ch
In reply to: Tom Lane (#4)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Are you working with somebody's modified version of the PG
distribution?

No. source download from yesterday.

I use the follow docbook.

-bash-5.1$ export
XML_CATALOG_FILES="/export/home/marcel/docbook-xsl-ns-1.79.1/catalog.xml
/etc/xml/catalog"

A clean build fails as follows

-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Note: namesp. add : added namespace before processing
PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
Can't open man1/*.1
gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: *** [Makefile:8: man] Error 2
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: *** [Makefile:16: man] Error 2
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
gmake: *** [GNUmakefile:27: man] Error 2

It works well with the old default Solaris docbook

-bash-5.1$ ls -l /usr/share/sgml/docbook/ | grep xsl-style
lrwxrwxrwx 1 root root 22 May 27 2024 xsl-stylesheets ->
xsl-stylesheets-1.75.2
drwxr-xr-x 23 root sys 27 May 27 2024 xsl-stylesheets-1.75.2

-bash-5.1$ unset XML_CATALOG_FILES

-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
for file in man3/*.3; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man3/`basename
$file` || exit; done
for file in man7/*.7; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man5/`basename
$file | sed s/\.7$/.5sql/` || exit; done
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marcel Hofstetter (#5)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Marcel Hofstetter <hofstetter@jomasoft.ch> writes:

A clean build fails as follows

I realized that the bit that's failing for you only runs when
sqlmansect is not 7 (so I guess you're on Solaris?). However,
it's still fine here when I do

$ make man sqlmansect=5sql
...
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml --noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version '19devel' stylesheet-man.xsl postgres-full.xml
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename $file` || exit; done
for file in man3/*.3; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man3/`basename $file` || exit; done
for file in man7/*.7; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man5/`basename $file | sed s/\.7$/.5sql/` || exit; done
make[3]: Leaving directory '/home/postgres/pgsql/doc/src/sgml'

I find this part of your output suspicious though:

Note: namesp. add : added namespace before processing
PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.

I don't see any of that here, which suggests that you're using old
docbook files. Maybe they are old enough to just fail to emit the
man files entirely? What I've got is not exactly new either,
since this is RHEL8:

$ rpm -qa | grep docbook
docbook-dtds-1.0-69.el8.noarch
docbook-style-xsl-1.79.2-9.el8.noarch
docbook-style-dsssl-1.79-25.el8.noarch

It works well with the old default Solaris docbook

Interesting. Debugging docbook problems is beyond my realm I fear.

regards, tom lane

#7Marcel Hofstetter
hofstetter@jomasoft.ch
In reply to: Tom Lane (#6)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Am 13.02.2026 um 17:21 schrieb Tom Lane:

Marcel Hofstetter <hofstetter@jomasoft.ch> writes:

A clean build fails as follows

I realized that the bit that's failing for you only runs when
sqlmansect is not 7 (so I guess you're on Solaris?). However,
it's still fine here when I do

$ make man sqlmansect=5sql

Yes, I'm on Solaris

gmake man sqlmansect=5sql makes no difference here.

this one works:

gmake man sqlmansect=7

gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Note: namesp. add : added namespace before processing
PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.
touch man-stamp
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'

PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.

I don't see any of that here, which suggests that you're using old
docbook files. Maybe they are old enough to just fail to emit the
man files entirely? What I've got is not exactly new either,
since this is RHEL8:

$ rpm -qa | grep docbook
docbook-dtds-1.0-69.el8.noarch
docbook-style-xsl-1.79.2-9.el8.noarch
docbook-style-dsssl-1.79-25.el8.noarch

It fails with docbook-xsl-ns-1.79.1 from
https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/

It works well with the old default Solaris docbook

Interesting. Debugging docbook problems is beyond my realm I fear.

I think you can close this "bug".
Workaround to use the very old Solaris docbook is fine for me.
The produced manpages look ok.

Thanks,
Marcel

#8Peter Eisentraut
peter_e@gmx.net
In reply to: Marcel Hofstetter (#7)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

On 13.02.26 17:44, Marcel Hofstetter wrote:

$ rpm -qa | grep docbook
docbook-dtds-1.0-69.el8.noarch
docbook-style-xsl-1.79.2-9.el8.noarch
docbook-style-dsssl-1.79-25.el8.noarch

It fails with docbook-xsl-ns-1.79.1 from
https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/

You should use the non-"ns" variant. The "ns" one is not suitable for
the PostgreSQL documentation.

#9Marcel Hofstetter
hofstetter@jomasoft.ch
In reply to: Peter Eisentraut (#8)
Re: BUG #19404: manpages are missing in 18.x source.tar.gz

Hi Peter

Thanks a lot for this feedback.

Now using the non-ns variant there are no warnings anymore
and building the docs takes 3 minutes.
it was 40 minutes with ns-variant.

Best regards,
Marcel

Am 18.02.2026 um 14:41 schrieb Peter Eisentraut:

Show quoted text

On 13.02.26 17:44, Marcel Hofstetter wrote:

$ rpm -qa | grep docbook
docbook-dtds-1.0-69.el8.noarch
docbook-style-xsl-1.79.2-9.el8.noarch
docbook-style-dsssl-1.79-25.el8.noarch

It fails with docbook-xsl-ns-1.79.1 from
https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/

You should use the non-"ns" variant.  The "ns" one is not suitable for
the PostgreSQL documentation.