Re: Windows CFBot is broken because ecpg dec_test.c error
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Nazir Bilal Yavuz <byavuz81@gmail.com>
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-29T16:50:19Z
Lists: pgsql-hackers
Hi,
On 2025-01-29 18:24:45 +0300, Nazir Bilal Yavuz wrote:
> On Tue, 28 Jan 2025 at 17:02, Andres Freund <andres@anarazel.de> wrote:
> >
> > Hi,
> >
> > On January 28, 2025 7:13:16 AM EST, Jelte Fennema-Nio <postgres@jeltef.nl> wrote:
> > >Since about ~11 hours ago the ecpg test is consistently failing on
> > >Window with this error[1]:
> > >
> > >> Could not open file C:/cirrus/build/src/interfaces/ecpg/test/compat_informix/dec_test.c for reading
> > >
> > >I took a quick look at possible causes but couldn't find a clear
> > >winner. My current guess is that there's some dependency rule missing
> > >in the meson file and due to some infra changes files now get compiled
> > >in the wrong order.
> > >
> > >One recent suspicious commit seems to be:
> > >7819a25cd101b574f5422edb00fe3376fbb646da
> > >But there are a bunch of successful changes that include that commit,
> > >so it seems to be a red herring. (CC-ed Noah anyway)
> >
> > I think it's due to a new version of meson. Seems we under specified test dependencies. I'll write up a patch.
Sorry, got distracted with somewhat pressing matters.
> 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.
The nice thing is that with this meson improvement we should be able to get
rid of the "setup" test suite and instead generate the test install via
dependencies. Obviously we either have to wait a fair bit or do it depending
on the meson version...
Greetings,
Andres Freund
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