- Fetching the external tarballs is dreadfully slow
- Caching them based on the hash of
download.lst and the hashes of the files in the external directory seems sufficient
- Hosted runners effectively only have 13 GiB of working space
- The volume mounted at C: has more space, this is used as a workaround in other large projects like Blender
- Ideally, having something like sccache working reliably would make builds faster and use less space, but according to the LibreOffice wiki it isn't reliable
- Alternatively, automatically calculating the dependency graph from the make file would mean:
- We can split the build into multiple jobs, taking advantage of workflow concurrency to build faster
- We can copy only the necessary target files and not the intermediate build objects, reducing the required space
- Someone actually understands the custom build system created for OpenOffice/LibreOffice
- The
translations and dictionaries directories have many files and add up to ~1.75 GiB
- Some languages take up much more space than others, and we currently only build for
en, so
- Dictionaries do not respect the configured language list, so we changed
dictionaries/Module_dictionaries.mk to prevent building additional languages
- We tried using a sparse checkout to avoid fetching the unused language files, but they caused some things to break
- LibreOffice's makefiles assumes that
core.git is the top-level git directory, not nested as a subtree
make fetch assumes the repo is an expanded tarball. Tarball release checks were removed
- For a non-obvious reason, this broke the build for
winaccessibility when compiling the IDL files
midl : error MIDL9008 : internal compiler problem, doesn't actually have a workaround in the MS documentation like the message suggests
- The error
midl: Assertion failed: hr == S_OK, file com\rpc\midl\front\filehndl.cxx, line 1023 seems specific to LibreOffice
- Some others from LibreOfficeChina also encountered this, but it seems no one found a solution
- Building it out of band with
cd winaccessibility && make CustomTarget_winaccessibility/ia2/idl works 🤷
Cygwin Weirdness
There are not specific to GitHub Actions, but more along the lines of things we had to do in order to get a build going at all.
autogen.sh by default will not find the appropriate pieces of Visual Studio 2019 to necessary to build certain externals such as expat
vcvars64.bat needs to be run before the Cygwin environment is setup, then everything builds
- Some externals mess up the environment variables after being built, and break further steps in the builds process
- Manually building the externals' dependencies and then the externals themselves resolves this:
make solenv zlib libpng freetype expat fontconfig cairo icu openssl libffi python3 nss boost
download.lstand the hashes of the files in theexternaldirectory seems sufficienttranslationsanddictionariesdirectories have many files and add up to ~1.75 GiBen, sodictionaries/Module_dictionaries.mkto prevent building additional languagescore.gitis the top-level git directory, not nested as a subtreemake fetchassumes the repo is an expanded tarball. Tarball release checks were removedwinaccessibilitywhen compiling the IDL filesmidl : error MIDL9008 : internal compiler problem, doesn't actually have a workaround in the MS documentation like the message suggestsmidl: Assertion failed: hr == S_OK, file com\rpc\midl\front\filehndl.cxx, line 1023seems specific to LibreOfficecd winaccessibility && make CustomTarget_winaccessibility/ia2/idlworks 🤷Cygwin Weirdness
There are not specific to GitHub Actions, but more along the lines of things we had to do in order to get a build going at all.
autogen.shby default will not find the appropriate pieces of Visual Studio 2019 to necessary to build certain externals such asexpatvcvars64.batneeds to be run before the Cygwin environment is setup, then everything buildsmake solenv zlib libpng freetype expat fontconfig cairo icu openssl libffi python3 nss boost