mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-24 07:06:42 +00:00
CircleCI : specialized caches (#798)
CircleCI: two cache save/restore mechanisms. One bound to musl-cross+patches, one for modules + patches. * Replacing the generic cache bound to CircleCI user to have two caches levels. One for musl-cross and its patchsets, one for all modules and their patchset being the same. So if modules changed, we use the cache for musl-cross as a fallback to economize one hour of precious build time out of two, while most of Heads changes are on the scripts and can be built on top of packages+patches cache
This commit is contained in:
parent
ae9fb74759
commit
63b400c73f
@ -11,14 +11,29 @@ jobs:
|
|||||||
apt install -y build-essential zlib1g-dev uuid-dev libdigest-sha-perl libelf-dev bc bzip2 bison flex git gnupg iasl m4 nasm patch python wget gnat cpio ccache pkg-config cmake libusb-1.0-0-dev autoconf texinfo ncurses-dev
|
apt install -y build-essential zlib1g-dev uuid-dev libdigest-sha-perl libelf-dev bc bzip2 bison flex git gnupg iasl m4 nasm patch python wget gnat cpio ccache pkg-config cmake libusb-1.0-0-dev autoconf texinfo ncurses-dev
|
||||||
- checkout
|
- checkout
|
||||||
|
|
||||||
- restore_cache:
|
|
||||||
key: heads-{{ .Environment.CIRCLE_USERNAME }}-{{ .Environment.CACHE_VERSION }}
|
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: git reset
|
name: git reset
|
||||||
command: |
|
command: |
|
||||||
git reset --hard "$CIRCLE_SHA1" \
|
git reset --hard "$CIRCLE_SHA1" \
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Creating all modules and patches digest
|
||||||
|
command: |
|
||||||
|
find ./patches/ ./modules/ -type f | sort -h |xargs sha256sum > /tmp/all_modules_and_patches.sha256sums \
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Creating musl-cross-make and musl-cross-make patches digest
|
||||||
|
command: |
|
||||||
|
find ./patches/musl-cross-* modules/musl-cross* -type f | sort -h | xargs sha256sum > /tmp/musl-cross_module_and_patches.sha256sums \
|
||||||
|
|
||||||
|
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
#Restore existing cache for modules checksums validated to be exactly the same as in github current commit
|
||||||
|
- heads-modules-and-patches-{{ checksum "/tmp/all_modules_and_patches.sha256sums" }}
|
||||||
|
#If precedent fails. Restore cache for musl-cross module checksum validated to be exactly the same as in github current commit
|
||||||
|
- heads-cross-musl-{{ checksum "/tmp/musl-cross_module_and_patches.sha256sums" }}
|
||||||
|
|
||||||
# linuxboot steps need something to pass in the kernel header path
|
# linuxboot steps need something to pass in the kernel header path
|
||||||
# skipping for now
|
# skipping for now
|
||||||
# - run:
|
# - run:
|
||||||
@ -153,12 +168,19 @@ jobs:
|
|||||||
path: build/qemu-coreboot
|
path: build/qemu-coreboot
|
||||||
|
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: heads-{{ .Environment.CIRCLE_USERNAME }}-{{ .Environment.CACHE_VERSION }}
|
#Generate cache for the same musl-cross module definition if hash is not previously existing
|
||||||
|
key: heads-cross-musl-{{ checksum "/tmp/musl-cross_module_and_patches.sha256sums" }}
|
||||||
|
paths:
|
||||||
|
- crossgcc
|
||||||
|
- build/musl-cross-*
|
||||||
|
|
||||||
|
- save_cache:
|
||||||
|
#Generate cache for the exact same modules definitions if hash is not previously existing
|
||||||
|
key: heads-modules-and-patches-{{ checksum "/tmp/all_modules_and_patches.sha256sums" }}
|
||||||
paths:
|
paths:
|
||||||
- packages
|
- packages
|
||||||
- crossgcc
|
- crossgcc
|
||||||
- build
|
- build
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
build_and_test:
|
build_and_test:
|
||||||
|
Loading…
Reference in New Issue
Block a user