ladybird/Meta/Azure/Caches.yml
Daniel Bertalan d21c38a72d CI: Hash only relevant files for the key of the compiler cache
In the last few commits, a second patch was added to the LLVM toolchain,
and it no longer uses our binutils patch. This commit changes the CI
cache keys accordingly, in order to prevent unnecessary rebuilds of both
toolchains when only one is changed.

The Clang toolchain's cache now only takes into account patches that
begin with `llvm`, and the GNU toolchain excludes those from the hash
calculation. We now also hash the two CMake cache files that we use for
building LLVM and its runtime libraries.
2022-01-10 09:55:45 +03:30

77 lines
3.3 KiB
YAML

parameters:
os: 'Linux'
arch: 'i686'
toolchain: 'gcc'
build_directory: ''
ccache_version: 1 # Increment this number if CI has trouble with ccache.
serenity_ccache_path: ''
toolchain_ccache_path: ''
toolchain_ccache_size: $(CCACHE_MAXSIZE)
with_remote_data_caches: true
steps:
- script: |
echo "##vso[task.setvariable variable=timestamp]$(date -u +"%Y%m%d%H%M_%S")"
displayName: 'Stamps'
- ${{ if ne(parameters.arch, 'Lagom') }}:
- ${{ if eq(parameters.toolchain, 'clang') }}:
- task: Cache@2
inputs:
key: '"toolchain" | "x86_64" | Toolchain/BuildClang.sh | Toolchain/Patches/llvm*.patch | Toolchain/CMake/*.cmake | Userland/Libraries/LibC/**/*.h | Userland/Libraries/LibPthread/**/*.h'
path: $(Build.SourcesDirectory)/Toolchain/Cache
displayName: 'Toolchain Prebuilt Cache'
- ${{ if eq(parameters.toolchain, 'gcc') }}:
- task: Cache@2
inputs:
key: '"toolchain" | "${{ parameters.arch }}" | Toolchain/BuildIt.sh | Toolchain/Patches/[!llvm]*.patch | Userland/Libraries/LibC/**/*.h | Userland/Libraries/LibPthread/**/*.h'
path: $(Build.SourcesDirectory)/Toolchain/Cache
displayName: 'Toolchain Prebuilt Cache'
- ${{ if ne(parameters.toolchain_ccache_path, '') }}:
- task: Cache@2
inputs:
key: '"toolchain ccache" | "x86_64" | "${{ parameters.toolchain }}" | "${{ parameters.ccache_version }}" | "$(timestamp)"'
restoreKeys: |
"toolchain ccache" | "x86_64" | "${{ parameters.toolchain }}" | "${{ parameters.ccache_version }}"
path: ${{ parameters.toolchain_ccache_path }}
displayName: 'Toolchain Compiler Cache'
- script: |
CCACHE_DIR=${{ parameters.toolchain_ccache_path }} ccache -M ${{ parameters.toolchain_ccache_size }}
CCACHE_DIR=${{ parameters.toolchain_ccache_path }} ccache -s
displayName: 'Configure Toolchain ccache'
- ${{ if ne(parameters.serenity_ccache_path, '') }}:
- task: Cache@2
inputs:
key: '"ccache" | "${{ parameters.os }}" | "${{ parameters.arch }}" | "${{ parameters.toolchain }}" | "${{ parameters.ccache_version }}" | "$(timestamp)"'
restoreKeys: |
"ccache" | "${{ parameters.os }}" | "${{ parameters.arch }}" | "${{ parameters.toolchain }}" | "${{ parameters.ccache_version }}"
path: ${{ parameters.serenity_ccache_path }}
displayName: 'Serenity Compiler Cache'
- script: |
CCACHE_DIR=${{ parameters.serenity_ccache_path }} ccache -M 5G
CCACHE_DIR=${{ parameters.serenity_ccache_path }} ccache -s
displayName: 'Configure Serenity ccache'
- ${{ if eq(parameters.with_remote_data_caches, true) }}:
- task: Cache@2
inputs:
key: '"time_zone_data" | Meta/CMake/time_zone_data.cmake'
path: $(Build.SourcesDirectory)/${{ parameters.build_directory }}/TZDB
displayName: 'TimeZoneData Cache'
- task: Cache@2
inputs:
key: '"unicode_data" | Meta/CMake/unicode_data.cmake'
path: $(Build.SourcesDirectory)/${{ parameters.build_directory }}/UCD
displayName: 'UnicodeData Cache'
- task: Cache@2
inputs:
key: '"unicode_locale" | Meta/CMake/unicode_data.cmake'
path: $(Build.SourcesDirectory)/${{ parameters.build_directory }}/CLDR
displayName: 'UnicodeLocale Cache'