You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now building the Windows .exe installer runs in a CI job that takes ~90 minutes to run.
Of these, it seems about 30 minutes (!) are spent on building semigroups (this is based on timestamps in CI build logs, so it may not be quite accurate). Note that semigroups and its dependencies use a lot of heavy C++ code, which seems to tax the poor CI VM to its limit. (I suspect Normaliz(Interface) adds another substantial chunk but did not verify that).
It would be good to reduce these timings. An immediate idea would be to try and use ccache, and persist its cache across CI runs, like we do with our primary CI. Of course this is a bit different here because we need ccache inside cygwin... So most likely we can't just use https://github.com/Chocobo1/setup-ccache-action . But if someone figures out how to install ccache and ensure it gets used, and figures out where it stores its cache, then it won't be hard to persist that across CI runs using https://github.com/actions/cache
One problem is the directory that cygwin is installed in contains the version of GAP. One way of solving this would be to instead point ccache at a known global directory.
Also note that cygwin's copy of cache is from 2013, and marked as unmaintained, so we can't use anything too modern / fancy.
I tested ccache on my machine building semigroups on cygwin, it about doubles the speed.
One problem is the directory that cygwin is installed in contains the version of GAP. One way of solving this would be to instead point ccache at a known global directory.
I don't understand, in how far is this a problem?
Also note that cygwin's copy of cache is from 2013, and marked as unmaintained, so we can't use anything too modern / fancy.
What "fancy" things would one want to use there?
I assume to install it, we just need to add ccache to the relevant PKGS_TO_INSTALL, right?
And then figure out how to ensure it is used
And finally preserve its cache directory across CI runs
I tested ccache on my machine building semigroups on cygwin, it about doubles the speed.
Fixed by gap-system/gap-windows#11 and #6777: release_gap.sh now compiles through ccache, and the Windows installer job keeps the cache across runs; pull requests restore master's cache but don't save their own.
Windows installer job before (40 runs, Oct 15–16): 53–90 min, of which 42–68 min building packages, almost all of it libsemigroups/semigroups, Normaliz and CARAT.
After (first 6 runs with a filled cache, Oct 23): 14–22 min, of which 3.5–5.8 min building packages; ccache served 1103–1163 of 1164 compilations. Inno Setup (4–6 min) and the Cygwin setup steps are now the largest parts.
One timeout (run 38520025115) came from a 75 min Cygwin package download from mirrors.kernel.org, not from compiling. That is unchanged, but now fits within the 120 min limit.
Generative AI assisted with the analysis and this comment.
Activity
ChrisJefferson commentedon Jan 13, 2023
One problem is the directory that cygwin is installed in contains the version of GAP. One way of solving this would be to instead point ccache at a known global directory.
Also note that cygwin's copy of cache is from 2013, and marked as unmaintained, so we can't use anything too modern / fancy.
I tested ccache on my machine building semigroups on cygwin, it about doubles the speed.
fingolfin commentedon Jan 26, 2023
I don't understand, in how far is this a problem?
What "fancy" things would one want to use there?
I assume to install it, we just need to add
ccacheto the relevantPKGS_TO_INSTALL, right?And then figure out how to ensure it is used
And finally preserve its cache directory across CI runs
That sounds nice!
fingolfin commentedon Oct 23, 2026
Fixed by gap-system/gap-windows#11 and #6777:
release_gap.shnow compiles through ccache, and the Windows installer job keeps the cache across runs; pull requests restore master's cache but don't save their own.Windows installer job before (40 runs, Oct 15–16): 53–90 min, of which 42–68 min building packages, almost all of it libsemigroups/semigroups, Normaliz and CARAT.
After (first 6 runs with a filled cache, Oct 23): 14–22 min, of which 3.5–5.8 min building packages; ccache served 1103–1163 of 1164 compilations. Inno Setup (4–6 min) and the Cygwin setup steps are now the largest parts.
One timeout (run 38520025115) came from a 75 min Cygwin package download from mirrors.kernel.org, not from compiling. That is unchanged, but now fits within the 120 min limit.
Generative AI assisted with the analysis and this comment.