pg.ddx.io pgsql-hackers@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Justin Pryzby <pryzby@telsasoft.com>
To: Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>
Cc: Andrew Dunstan <andrew@dunslane.net>
Cc: pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@gmail.com>
Cc: Melanie Plageman <melanieplageman@gmail.com>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Daniel Gustafsson <daniel@yesql.se>
Subject: Re: ccache, MSVC, and meson
Date: Fri, 1 Jul 2022 14:18:41 -0500
Message-ID: <20220701191841.GH13040@telsasoft.com> (raw )
In-Reply-To: <20220524203039.xyqjggtytsyizsbl@alap3.anarazel.de >
On Tue, May 24, 2022 at 01:30:39PM -0700, Andres Freund wrote:
> On 2022-05-24 14:52:02 -0500, Justin Pryzby wrote:
> > > The spurious message should be fixed, of course. I suspect you dont need a
> > > wrapper, you can just set CC='ccache cl.exe' or similar? Afaics it's not
> > > meaningful to do 'CC=ccache.exe' alone, because then it'll interpret arguments
> > > as ccache options, rather than compiler options.
> >
> > if meson didn't crash CC=ccache.exe might have worked, because I had set
> > CCACHE_COMPILER.
>
> Did you report the issue? Should be simple enough to fix.
>
> I seriously doubt it's a good idea to use CCACHE_COMPILER - there's no way
> meson (or autoconf or ..) can rely on the results of compiler tests that way,
> since CCACHE_COMPILER can change at any time.
This updated patch doesn't use CCACHE_COMPILER.
cache misses are several times slower (12 minute build time vs 2:30 with ninja,
without ccache), so it's possible that can be *slower* if the hit ratio is
inadequate. ninja on cirrus builds 3x faster with ccache, but msbuild is only
~2x faster, so I recommend using it only with ninja.
There's still warts requires using "plain" with /Z7 /MDd.
Attachments:
0001-cirrus-windows-ccache.patch (text/x-diff, 3.9K) download
From 1c3823095eb9300fd0aae1fb569a3cc09b1346cc Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Sun, 22 May 2022 11:55:02 -0500
Subject: [PATCH] cirrus/windows: ccache
https://community.chocolatey.org/packages/ccache
https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com
20220321001747.5o2zfoeqxvbjmdid@alap3.anarazel.de
20211012083721.hvixq4pnh2pixr3j%40alap3.anarazel.de
CA%2BhUKGLs6ENKL4w1o%2B1RpcS4VLyLXSUMWRYJVaiLBOJtarW25g%40mail.gmail.com
https://cirrus-ci.com/task/5456827583299584
https://cirrus-ci.com/task/6019777536720896
ci-os-only: xindows, windows-meson-ninja, xindows-meson-msbuild
---
.cirrus.yml | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index bf20f85f8ce..ed9e86557d7 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -814,6 +814,9 @@ windows_template: &windows_template
# currently have a tool for that...
CIRRUS_ESCAPING_PROCESSES: 1
+ CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache
+ CCACHE_LOGFILE: ccache.log
+
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
windows_container:
@@ -828,12 +831,14 @@ windows_template: &windows_template
set
setup_additional_packages_script: |
- REM choco install -y --no-progress ...
-
+ choco install -y --no-progress ccache --version 4.6.1
+ cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \BuildTools\VC\Auxiliary\Build
+ cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \ProgramData\chocolatey\bin\cl.exe
task:
<<: *windows_template
name: Windows - Server 2019, VS 2019 - Homegrown
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows-mkvcbuild'
configure_script:
# copy errors out when using forward slashes
@@ -901,14 +906,22 @@ task:
- mkdir subprojects
- meson wrap install lz4
- meson wrap install zlib
- - meson setup --buildtype debug --backend ninja -Dcassert=true -Db_pch=true -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe build
+ - set CC=ccache.exe cl.exe
+ - meson setup --buildtype plain --backend ninja -Dcassert=true -Db_pch=false -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -Dc_args="/Z7 /MDd" build
+
+ ccache_cache:
+ folder: $CCACHE_DIR
build_script:
+ - ccache.exe --zero-stats
- vcvarsall x64
- ninja -C build
+ - ccache.exe --show-stats
+
+ always:
+ upload_caches: ccache
check_world_script:
- - vcvarsall x64
- meson test --no-rebuild -C build
on_failure:
@@ -934,14 +947,21 @@ task:
- mkdir subprojects
- meson wrap install lz4
- meson wrap install zlib
- - meson setup --buildtype debug --backend vs -Dcassert=true -Db_pch=true -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe build
+ - meson setup --buildtype plain --backend vs -Dcassert=true -Db_pch=false -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -Dc_args=/Z7 build
+
+ ccache_cache:
+ folder: $CCACHE_DIR
build_script:
+ - ccache.exe --zero-stats
- vcvarsall x64
- - msbuild /p:UseMultiToolTask=true %MSBFLAGS% build\postgresql.sln
+ - msbuild /p:UseMultiToolTask=true /p:CLToolPath=c:\ProgramData\chocolatey\bin %MSBFLAGS% build\postgresql.sln
+ - ccache.exe --show-stats
+
+ always:
+ upload_caches: ccache
check_world_script:
- - vcvarsall x64
- meson test --no-rebuild -C build
always:
--
2.17.1
view thread (11+ messages) latest in thread
Message-ID: <20220701191841.GH13040@telsasoft.com>
Permalink: ../20220701191841.GH13040@telsasoft.com/
Also on: postgresql.org/message-id/20220701191841.GH13040@telsasoft.com
copy link · copy postgr.es · copy git am
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: pryzby@telsasoft.com, andres@anarazel.de, tgl@sss.pgh.pa.us, robertmhaas@gmail.com, andrew@dunslane.net, thomas.munro@gmail.com, melanieplageman@gmail.com, peter.eisentraut@enterprisedb.com, daniel@yesql.se
Subject: Re: ccache, MSVC, and meson
In-Reply-To: <20220701191841.GH13040@telsasoft.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox