MinGW ccache snafu on CI
Hi,
As previously reported[1]/messages/by-id/E1vOJwR-001XFf-0r@gemulon.postgresql.org (also discussed on Discord a few times), the
MinGW CI job is capable of getting confused like this:
Cache restored from key: ccache:windows-mingw:thread-work:28559723796:1
# check for "D:/a/postgres/postgres/build/tmp_install/usr/local/pgsql/bin/vacuumdb"
failed: incorrect version: found "vacuumdb (PostgreSQL) 19beta1",
expected "vacuumdb (PostgreSQL) 20devel"
Apparently ccache failed to recompile stuff that it should have, and
produced a stale .o from an earlier build in the same repo/branch.
While "19beta1" and "20devel" have the same length, I doubt that a
mere few hundred monkeys with typewriters have found multiple hash
collisions...
One observation is that the MinGW job is using precompiled headers
(-Db_pch=true). I wonder if we might be using the wrong switches[2]https://ccache.dev/manual/4.1.html#_precompiled_headers,
but I don't claim to understand that stuff...
So is the MSVC job, but I don't recall hearing of any problems there.
[1]: /messages/by-id/E1vOJwR-001XFf-0r@gemulon.postgresql.org
[2]: https://ccache.dev/manual/4.1.html#_precompiled_headers
Hi,
On 2026-07-04 16:44:47 +1200, Thomas Munro wrote:
As previously reported[1] (also discussed on Discord a few times), the
MinGW CI job is capable of getting confused like this:Cache restored from key: ccache:windows-mingw:thread-work:28559723796:1
# check for "D:/a/postgres/postgres/build/tmp_install/usr/local/pgsql/bin/vacuumdb"
failed: incorrect version: found "vacuumdb (PostgreSQL) 19beta1",
expected "vacuumdb (PostgreSQL) 20devel"Apparently ccache failed to recompile stuff that it should have, and
produced a stale .o from an earlier build in the same repo/branch.
While "19beta1" and "20devel" have the same length, I doubt that a
mere few hundred monkeys with typewriters have found multiple hash
collisions...One observation is that the MinGW job is using precompiled headers
(-Db_pch=true). I wonder if we might be using the wrong switches[2],
but I don't claim to understand that stuff...So is the MSVC job, but I don't recall hearing of any problems there.
[1] /messages/by-id/E1vOJwR-001XFf-0r@gemulon.postgresql.org
[2] https://ccache.dev/manual/4.1.html#_precompiled_headers
There's another thread about this:
/messages/by-id/CAN55FZ0tqR6Xz=iVFLc1BBoLOEHU775ARhcGYwggHA3XLA=oQg@mail.gmail.com
As suggested there, I think we need to add -fpch-deps for gcc, until either
ccache is fixed or meson adds it automatically.
Greetings,
Andres Freund