Hi,

Thanks for the explanation!

On Mon, 16 Feb 2026 at 11:33, Hayato Kuroda (Fujitsu)
<[email protected]> wrote:
>
> Dear Nazir,
>
> > > 01.
> > > I found that postgres core was built when I ran `meson test --suite doc`
> > > command, but ideally it's not needed. Per my experiment, we must clarify
> > > dependencies for the test, something like below.
> > >
> > > ```
> > > --- a/doc/src/sgml/meson.build
> > > +++ b/doc/src/sgml/meson.build
> > > @@ -337,7 +337,8 @@ test(
> > >    'doc' / 'sgml_syntax_check',
> > >    meson_bin,
> > >    args: ['compile', postgres_full_xml_target],
> > > -  suite: 'doc'
> > > +  suite: 'doc',
> > > +  depends: doc_generated,
> > >  )
> > > ```
> >
> > Sorry, I didn't understand what you meant, could you please elaborate?
>
> Sure. Let's consider the below scenario, that I wanted to just verify the 
> syntax
> of documentations. For the autoconf/make build system, below commands can 
> avoid
> building C sources and generate needed .sgml files.
>
> ```
> $ ./configure
> ...
> $ cd doc/src/sgml/
> $ make check
> { \
>   echo "<!ENTITY version \"19devel\">"; \
>   echo "<!ENTITY majorversion \"19\">"; \
> } > 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/perl' ./sgml_syntax_check.pl --srcdir .
> /usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml --noent 
> --valid postgres.sgml
> ```
>
> In case of meson build system, however, added test was run after all C files
> were built. Ideally it is not needed.
>
> ```
> $ meson setup ../postgres/
> ...
> $ meson test --suite doc
> ninja: Entering directory `/home/hayato/builddir'
> [884/2468] Compiling C object ...                                       // C 
> sources were built here
> ...
> ```
>
> Also, I have been working on a project which translates the documentation [1],
> and the syntax check is used for the github CI. I'm very sad if building
> everything is needed to just check the doc.
>
> > 'postgres_full_xml_target' target already depends on 'doc_generated'
> > and 'sgml_check_stamp' targets.
>
> I'm not faimilar with Meson, but my theory is that Meson cannot understand 
> that
> the test only depends on postgres_full_xml. That's why all sources are built.
>
> Based on the discussion, the fix should be like;
>
> ```
> --- a/doc/src/sgml/meson.build
> +++ b/doc/src/sgml/meson.build
> @@ -337,7 +337,8 @@ test(
>    'doc' / 'sgml_syntax_check',
>    meson_bin,
>    args: ['compile', postgres_full_xml_target],
> -  suite: 'doc'
> +  suite: 'doc',
> +  depends: postgres_full_xml
>  )
> ```

I see your point but the suggested change actually doesn't affect C
files' compilation. They are still built although you make this
change, AFAIK this is how meson build works.

Meson has '--no-rebuild' option for these types of situations, could
you try running "meson test --suite doc --no-rebuild" and see if that
helps?

-- 
Regards,
Nazir Bilal Yavuz
Microsoft


Reply via email to