1    steps:
2      - name: Clone picolibc
3        uses: actions/checkout@v4
4        with:
5          path: picolibc
6
7      - name: Restore the Docker Image
8        uses: actions/cache@v4
9        with:
10          path: ${{ env.IMAGE_FILE }}
11          key: ${{ env.IMAGE_FILE }}-${{ hashFiles( env.DOCKERFILE, env.PACKAGES_FILE, env.EXTRA_FILE ) }}
12          fail-on-cache-miss: true
13
14      - name: Load and Check the Docker Image
15        run: |
16          docker load -i $IMAGE_FILE
17          docker images -a $IMAGE
18
19      # The docker image contains ccache, but the ccache action uses the ccache
20      # outside docker for statistics, so install the same ccache version.
21      # Install in /usr/bin so the ccache action gets the expected environment.
22      - name: install ccache
23        if: matrix.test == './.github/do-zephyr'
24        run: |
25          wget -nv https://github.com/ccache/ccache/releases/download/v4.8.2/ccache-4.8.2-linux-x86_64.tar.xz
26          sudo tar xf ccache-4.8.2-linux-x86_64.tar.xz -C /usr/bin --strip-components=1 --no-same-owner ccache-4.8.2-linux-x86_64/ccache
27          rm -f ccache-*-linux-x86_64.tar.xz
28
29      # Key on job name and cache size to get separate caches for linux
30      # and zephyr.
31      - name: ccache
32        if: matrix.test == './.github/do-zephyr'
33        uses: hendrikmuhs/ccache-action@v1.2.11
34        with:
35          key: compilation-${{ runner.os }}-${{ github.job }}-${{ matrix.meson_flags }}-${{ env.CCACHE_SIZE }}
36          max-size: ${{ env.CCACHE_SIZE }}
37
38