Re: Windows CFBot is broken because ecpg dec_test.c error
Nazir Bilal Yavuz <byavuz81@gmail.com>
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Jelte Fennema-Nio <postgres@jeltef.nl>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Thomas Munro <thomas.munro@gmail.com>, Noah Misch <noah@leadboat.com>
Date: 2025-01-30T13:18:54Z
Lists: pgsql-hackers
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
Commits
-
Show more-intuitive titles for psql commands \dt, \di, etc.
- a14707da564e 18.0 cited
-
meson: Add missing dependencies for libpq tests
- ad80e5823a50 16.7 landed
- 73ed502ea677 17.3 landed
- 26aca4de43d5 18.0 landed
-
meson: Add missing dependencies to libpq_pipeline test
- 5acf0636f874 16.7 landed
- 09df23cf321e 17.3 landed
- c89525d57bce 18.0 landed
-
meson: Add pg_regress_ecpg to ecpg test dependencies
- 057762066792 16.7 landed
- f52bc2388277 17.3 landed
- 69b05d581eca 18.0 landed
-
meson: Add test dependencies for test_json_parser
- 493398de2c4e 17.3 landed
- 1be5c3737243 18.0 landed
-
meson: Improve dependencies for tmp_install test target
- dab83a62fc62 16.7 landed
- 74ef4855b081 18.0 landed
- 25cb77694128 17.3 landed
-
meson: Narrow dependencies for 'install-quiet' target
- 80620931053d 16.7 landed
- c2ede6640ca2 18.0 landed
- 6a4815c49226 17.3 landed
-
meson: ci: ensure tests are built before running them
- d9b5e2fc09b6 16.7 landed
- d38fd59d2a16 17.3 landed
- b2bdb972c0df 18.0 landed
-
Add get_opfamily_name() function
- 43493cceda2f 18.0 cited
-
Test ECPG decadd(), decdiv(), decmul(), and decsub() for risnull() input.
- 7819a25cd101 18.0 cited