Hi,
On Wed, 29 Jan 2025 at 19:50, Andres Freund <andres@anarazel.de> wrote:
>
> On 2025-01-29 18:24:45 +0300, Nazir Bilal Yavuz wrote:
>
> > The cause is that meson fixed a bug [1] in v.1.7.0. Before meson
> > v1.7.0; although --no-rebuild is used while running tests, meson was
> > building all targets. This is fixed with v.1.7.0.
> >
> > [1] https://mesonbuild.com/Release-notes-for-1-7-0.html#test-targets-no-longer-built-by-default
>
> That's not *quite* right - it wasn't that the targets were built when
> --no-rebuild was specified, it's that the default build target (for just
> 'ninja'), built all test dependencies.
>
>
> > The change below fixes the problem:
> >
> > diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
> > index 18e944ca89d..c7a94ff6471 100644
> > --- a/.cirrus.tasks.yml
> > +++ b/.cirrus.tasks.yml
> > @@ -17,7 +17,7 @@ env:
> > CHECK: check-world PROVE_FLAGS=$PROVE_FLAGS
> > CHECKFLAGS: -Otarget
> > PROVE_FLAGS: --timer
> > - MTEST_ARGS: --print-errorlogs --no-rebuild -C build
> > + MTEST_ARGS: --print-errorlogs -C build
> > PGCTLTIMEOUT: 120 # avoids spurious failures during parallel tests
> > TEMP_CONFIG: ${CIRRUS_WORKING_DIR}/src/tools/ci/pg_ci_base.conf
> > PG_TEST_EXTRA: kerberos ldap ssl libpq_encryption load_balance
> >
> > And I think this is the correct approach. It builds all of the
> > not-yet-built targets before running the tests. Another solution might
> > be manually building ecpg target before running tests but I think the
> > former approach is more suitable for the CI.
> >
> > CI run after this change applied: https://cirrus-ci.com/build/6264369203380224
>
> I don't think that's the entirety of the issue.
>
> Our dependencies aren't quite airtight enough. With a sufficiently modern
> meson, try doing e.g.
>
> rm -rf tmp_install/ && ninja clean && meson test --suite setup --suite ecpg
>
> It'll fail, because the dependencies of the tests are insufficient.
>
> See the set of patches at
> https://www.postgresql.org/message-id/qh4c5tvkgjef7jikjig56rclbcdrrotngnwpycukd2n3k25zi2%4044hxxvtwmgum
>
>
> I think the only reason your patch on its own suffices, is that the "all"
> target, that we ran separately beforehand, actually has sufficient
> dependencies to make things work.
Yes, you are right. I agree that what you said is the correct solution
and that should be the ultimate goal. What I shared could be a
band-aid fix to make the Windows CI task happy until the patches you
shared get committed. Another solution might be to downgrade the meson
version in the Windows images at the CI repository [1], that would be
better for the commit history.
[1] https://github.com/anarazel/pg-vm-images
--
Regards,
Nazir Bilal Yavuz
Microsoft