name: ci/gh-actions/guix on: push: env: APT_SET_CONF: | echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom jobs: build-cross: runs-on: ubuntu-latest strategy: fail-fast: false matrix: toolchain: - name: "x86_64-linux-gnu" host: "x86_64-linux-gnu" - name: "x86_64-linux-gnu.no-tor-bundle" host: "x86_64-linux-gnu.no-tor-bundle" - name: "aarch64-linux-gnu" host: "aarch64-linux-gnu" - name: "arm-linux-gnueabihf" host: "arm-linux-gnueabihf" - name: "riscv64-linux-gnu" host: "riscv64-linux-gnu" - name: "x86_64-w64-mingw32" host: "x86_64-w64-mingw32" - name: "x86_64-w64-mingw32.installer" host: "x86_64-w64-mingw32.installer" - name: "x86_64-apple-darwin" host: "x86_64-apple-darwin" - name: "arm64-apple-darwin" host: "arm64-apple-darwin" name: ${{ matrix.toolchain.name }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 submodules: recursive - name: guix cache uses: actions/cache@v3 with: path: | gnu/store guix_db.sqlite key: guix-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/guix/manifest.scm') }} restore-keys: | depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/guix/manifest.scm') }} depends-${{ matrix.toolchain.host }}- - name: move guix store run: | if [[ -e "guix_db.sqlite" ]]; then sudo mkdir -p /var/guix/db sudo mv gnu /gnu sudo cp guix_db.sqlite /var/guix/db/db.sqlite sudo chmod 1775 /gnu/store sudo chown 0644 /var/guix/db/db.sqlite sudo chown -R root:root /gnu/store /var/guix/db/db.sqlite fi - name: depends cache uses: actions/cache@v3 with: path: contrib/depends/built key: depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }} restore-keys: | depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }} depends-${{ matrix.toolchain.host }}- - name: depends sources cache uses: actions/cache@v3 with: path: contrib/depends/sources key: sources-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }} restore-keys: | depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }} depends-${{ matrix.toolchain.host }}- - name: set apt conf run: ${{env.APT_SET_CONF}} - name: install dependencies run: sudo apt update; sudo apt -y install guix git ca-certificates ${{ matrix.toolchain.packages }} - name: build run: SUBSTITUTE_URLS='http://ci.guix.gnu.org' HOSTS="${{ matrix.toolchain.host }}" JOBS=2 ./contrib/guix/guix-build - uses: actions/upload-artifact@v3 with: name: ${{ matrix.toolchain.name }} path: | guix/guix-build-*/output/${{ matrix.toolchain.host }}/* - name: prepare guix store for caching run: | sudo systemctl stop guix-daemon sudo mv /gnu gnu sudo mv /var/guix/db/db.sqlite guix_db.sqlite