added all algo in primary --gen --lntt 1,2,3 #89
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Bins | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - '*' | |
| workflow_dispatch: | |
| inputs: | |
| platforms: | |
| description: "Comma-separated platforms (web,linux,mac,windows)" | |
| required: false | |
| default: "web,linux,mac,windows" | |
| layers: | |
| description: "Comma-separated layer numbers (1=partial,2=base,3=main,4=system)" | |
| required: false | |
| default: "1,2,3,4" | |
| load_mode: | |
| description: "Test load mode: gen (default), genAll, genQuick" | |
| required: false | |
| default: "gen" | |
| permissions: | |
| contents: write | |
| actions: write | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # guard — fast commit-message gate; no Python needed. | |
| # Passes only if --gen is present (push) or event is workflow_dispatch. | |
| # --------------------------------------------------------------------------- | |
| guard: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| ${{ github.event_name == 'workflow_dispatch' | |
| || contains(github.event.head_commit.message, '--gen') }} | |
| steps: | |
| - name: Trigger verified | |
| run: echo "Guard passed" | |
| # --------------------------------------------------------------------------- | |
| # parse_layers — run reactor.py, expose 9 outputs for all downstream jobs. | |
| # --------------------------------------------------------------------------- | |
| parse_layers: | |
| runs-on: ubuntu-latest | |
| needs: guard | |
| outputs: | |
| layers: ${{ steps.reactor.outputs.layers }} | |
| platforms: ${{ steps.reactor.outputs.platforms }} | |
| loft: ${{ steps.reactor.outputs.loft }} | |
| lofb: ${{ steps.reactor.outputs.lofb }} | |
| lntt: ${{ steps.reactor.outputs.lntt }} | |
| lntb: ${{ steps.reactor.outputs.lntb }} | |
| loc: ${{ steps.reactor.outputs.loc }} | |
| loe: ${{ steps.reactor.outputs.loe }} | |
| load_mode: ${{ steps.reactor.outputs.load_mode }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Run reactor | |
| id: reactor | |
| env: | |
| REACTOR_EVENT_NAME: ${{ github.event_name }} | |
| REACTOR_MSG: ${{ github.event.head_commit.message }} | |
| REACTOR_WD_LAYERS: ${{ github.event.inputs.layers }} | |
| REACTOR_WD_PLATFORMS: ${{ github.event.inputs.platforms }} | |
| REACTOR_WD_LOAD_MODE: ${{ github.event.inputs.load_mode }} | |
| run: python script/reactor.py | |
| # =========================================================================== | |
| # WEB — ubuntu-latest + Emscripten + Wasmtime | |
| # =========================================================================== | |
| # Layer 1 / partial — 5 parallel groups | |
| web_partial_core: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/core.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/core.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-partial-core-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/partial/core.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| web_partial_hash: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/hash.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/hash.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-partial-hash-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/partial/hash.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| web_partial_dhcm: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/dhcm.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/dhcm.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-partial-dhcm-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/partial/dhcm.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| web_partial_pow: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/pow.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/pow.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-partial-pow-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/partial/pow.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| web_partial_pqc: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/partial/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-partial-pqc-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/partial/pqc.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Layer 2 / base | |
| web_base: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - web_partial_core | |
| - web_partial_hash | |
| - web_partial_dhcm | |
| - web_partial_pow | |
| - web_partial_pqc | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.web_partial_core.result == 'success' || needs.web_partial_core.result == 'skipped') | |
| && (needs.web_partial_hash.result == 'success' || needs.web_partial_hash.result == 'skipped') | |
| && (needs.web_partial_dhcm.result == 'success' || needs.web_partial_dhcm.result == 'skipped') | |
| && (needs.web_partial_pow.result == 'success' || needs.web_partial_pow.result == 'skipped') | |
| && (needs.web_partial_pqc.result == 'success' || needs.web_partial_pqc.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',2,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',2,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/base/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-base-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/base/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Layer 3 / main | |
| web_main: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - web_base | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.web_base.result == 'success' || needs.web_base.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',3,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',3,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/main/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-main-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/main/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Layer 4 / system | |
| web_system: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - web_main | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.web_main.result == 'success' || needs.web_main.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',web,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',4,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',4,')) }} | |
| env: | |
| PLATFORM: web | |
| BIN_DIR: web | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| emsdk | |
| ~/.emscripten_cache | |
| key: emsdk-${{ runner.os }}-3.1.60 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ~/.wasmtime | |
| key: wasmtime-${{ runner.os }}-v1 | |
| - name: Setup Emscripten | |
| run: | | |
| if [ ! -d emsdk ]; then git clone https://github.com/emscripten-core/emsdk.git; fi | |
| cd emsdk | |
| ./emsdk install 3.1.60 | |
| ./emsdk activate 3.1.60 | |
| echo "EMSDK=$PWD" >> $GITHUB_ENV | |
| echo "EM_CONFIG=$PWD/.emscripten" >> $GITHUB_ENV | |
| echo "$PWD" >> $GITHUB_PATH | |
| echo "$PWD/upstream/emscripten" >> $GITHUB_PATH | |
| - name: Setup Wasmtime | |
| run: | | |
| if [ ! -d "$HOME/.wasmtime/bin" ]; then | |
| curl https://wasmtime.dev/install.sh -sSf | bash | |
| fi | |
| echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/lite.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/web/lite.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-web-system-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/web/system.log | |
| logs/action/web/lite.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # =========================================================================== | |
| # WINDOWS — windows-latest + choco mingw | |
| # =========================================================================== | |
| windows_partial_core: | |
| runs-on: windows-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/core.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/core.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-partial-core-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/partial/core.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_partial_hash: | |
| runs-on: windows-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/hash.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/hash.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-partial-hash-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/partial/hash.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_partial_dhcm: | |
| runs-on: windows-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/dhcm.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/dhcm.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-partial-dhcm-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/partial/dhcm.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_partial_pow: | |
| runs-on: windows-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/pow.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/pow.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-partial-pow-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/partial/pow.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_partial_pqc: | |
| runs-on: windows-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/partial/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-partial-pqc-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/partial/pqc.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_base: | |
| runs-on: windows-latest | |
| needs: | |
| - parse_layers | |
| - windows_partial_core | |
| - windows_partial_hash | |
| - windows_partial_dhcm | |
| - windows_partial_pow | |
| - windows_partial_pqc | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.windows_partial_core.result == 'success' || needs.windows_partial_core.result == 'skipped') | |
| && (needs.windows_partial_hash.result == 'success' || needs.windows_partial_hash.result == 'skipped') | |
| && (needs.windows_partial_dhcm.result == 'success' || needs.windows_partial_dhcm.result == 'skipped') | |
| && (needs.windows_partial_pow.result == 'success' || needs.windows_partial_pow.result == 'skipped') | |
| && (needs.windows_partial_pqc.result == 'success' || needs.windows_partial_pqc.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',2,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',2,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/base/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-base-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/base/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_main: | |
| runs-on: windows-latest | |
| needs: | |
| - parse_layers | |
| - windows_base | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.windows_base.result == 'success' || needs.windows_base.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',3,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',3,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/main/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-main-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/main/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows_system: | |
| runs-on: windows-latest | |
| needs: | |
| - parse_layers | |
| - windows_main | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.windows_main.result == 'success' || needs.windows_main.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',windows,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',4,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',4,')) }} | |
| env: | |
| PLATFORM: windows | |
| BIN_DIR: windows | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Windows) | |
| run: choco install mingw -y | |
| shell: powershell | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/lite.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/windows/lite.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-windows-system-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/windows/system.log | |
| logs/action/windows/lite.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # =========================================================================== | |
| # LINUX — ubuntu-latest + apt gcc | |
| # =========================================================================== | |
| linux_partial_core: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/core.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/core.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-partial-core-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/partial/core.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_partial_hash: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/hash.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/hash.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-partial-hash-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/partial/hash.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_partial_dhcm: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/dhcm.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/dhcm.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-partial-dhcm-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/partial/dhcm.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_partial_pow: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/pow.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/pow.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-partial-pow-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/partial/pow.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_partial_pqc: | |
| runs-on: ubuntu-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/partial/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-partial-pqc-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/partial/pqc.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_base: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - linux_partial_core | |
| - linux_partial_hash | |
| - linux_partial_dhcm | |
| - linux_partial_pow | |
| - linux_partial_pqc | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.linux_partial_core.result == 'success' || needs.linux_partial_core.result == 'skipped') | |
| && (needs.linux_partial_hash.result == 'success' || needs.linux_partial_hash.result == 'skipped') | |
| && (needs.linux_partial_dhcm.result == 'success' || needs.linux_partial_dhcm.result == 'skipped') | |
| && (needs.linux_partial_pow.result == 'success' || needs.linux_partial_pow.result == 'skipped') | |
| && (needs.linux_partial_pqc.result == 'success' || needs.linux_partial_pqc.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',2,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',2,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/base/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-base-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/base/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_main: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - linux_base | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.linux_base.result == 'success' || needs.linux_base.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',3,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',3,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/main/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-main-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/main/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| linux_system: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - parse_layers | |
| - linux_main | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.linux_main.result == 'success' || needs.linux_main.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',linux,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',4,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',4,')) }} | |
| env: | |
| PLATFORM: linux | |
| BIN_DIR: linux | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (Linux) | |
| run: sudo apt-get update && sudo apt-get install -y build-essential | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/lite.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/linux/lite.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-linux-system-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/linux/system.log | |
| logs/action/linux/lite.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # =========================================================================== | |
| # MAC — macos-latest + brew gcc | |
| # =========================================================================== | |
| mac_partial_core: | |
| runs-on: macos-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/core.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test core:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/core.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-partial-core-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/partial/core.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_partial_hash: | |
| runs-on: macos-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/hash.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test hash:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/hash.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-partial-hash-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/partial/hash.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_partial_dhcm: | |
| runs-on: macos-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/dhcm.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test dhcm:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/dhcm.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-partial-dhcm-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/partial/dhcm.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_partial_pow: | |
| runs-on: macos-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/pow.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pow:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/pow.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-partial-pow-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/partial/pow.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_partial_pqc: | |
| runs-on: macos-latest | |
| needs: parse_layers | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',1,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',1,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --build pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',1,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',1,') }} | |
| run: python runner.py --platform ${{ env.PLATFORM }} --test pqc:partial --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/partial/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-partial-pqc-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/partial/pqc.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_base: | |
| runs-on: macos-latest | |
| needs: | |
| - parse_layers | |
| - mac_partial_core | |
| - mac_partial_hash | |
| - mac_partial_dhcm | |
| - mac_partial_pow | |
| - mac_partial_pqc | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.mac_partial_core.result == 'success' || needs.mac_partial_core.result == 'skipped') | |
| && (needs.mac_partial_hash.result == 'success' || needs.mac_partial_hash.result == 'skipped') | |
| && (needs.mac_partial_dhcm.result == 'success' || needs.mac_partial_dhcm.result == 'skipped') | |
| && (needs.mac_partial_pow.result == 'success' || needs.mac_partial_pow.result == 'skipped') | |
| && (needs.mac_partial_pqc.result == 'success' || needs.mac_partial_pqc.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',2,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',2,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',2,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',2,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:base --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/base/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-base-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/base/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_main: | |
| runs-on: macos-latest | |
| needs: | |
| - parse_layers | |
| - mac_base | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.mac_base.result == 'success' || needs.mac_base.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',3,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',3,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/pqc.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',3,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',3,') }} | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test core:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/core.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test hash:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/hash.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test dhcm:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/dhcm.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pow:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/pow.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test pqc:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/main/pqc.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-main-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/main/ | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| mac_system: | |
| runs-on: macos-latest | |
| needs: | |
| - parse_layers | |
| - mac_main | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.parse_layers.result == 'success' | |
| && (needs.mac_main.result == 'success' || needs.mac_main.result == 'skipped') | |
| && contains(format(',{0},', needs.parse_layers.outputs.platforms), ',mac,') | |
| && contains(format(',{0},', needs.parse_layers.outputs.layers), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.loc), ',4,') | |
| && (needs.parse_layers.outputs.loe == '' | |
| || contains(format(',{0},', needs.parse_layers.outputs.loe), ',4,')) }} | |
| env: | |
| PLATFORM: mac | |
| BIN_DIR: mac | |
| SOURCE_DATE_EPOCH: 0 | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install GCC (mac) | |
| run: brew list gcc >/dev/null 2>&1 || brew install gcc | |
| - name: Build | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.loft), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntb), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --build system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --build lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/lite.log | |
| - name: Test | |
| if: >- | |
| ${{ !contains(format(',{0},', needs.parse_layers.outputs.lofb), ',4,') | |
| && !contains(format(',{0},', needs.parse_layers.outputs.lntt), ',4,') }} | |
| shell: bash | |
| run: | | |
| python runner.py --platform ${{ env.PLATFORM }} --test system:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/system.log | |
| python runner.py --platform ${{ env.PLATFORM }} --test lite:main --load-mode ${{ needs.parse_layers.outputs.load_mode }} --action-log logs/action/mac/lite.log | |
| - name: Upload Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-mac-system-${{ github.run_attempt }} | |
| path: | | |
| bin/${{ env.BIN_DIR }} | |
| logs/action/mac/system.log | |
| logs/action/mac/lite.log | |
| if-no-files-found: warn | |
| - name: Cancel run on failure | |
| if: failure() | |
| shell: bash | |
| run: | | |
| gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} || true | |
| exit 1 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # =========================================================================== | |
| # COMMIT — collects all system-level artifacts and pushes bin + logs | |
| # =========================================================================== | |
| commit: | |
| runs-on: ubuntu-latest | |
| if: >- | |
| ${{ !cancelled() | |
| && (needs.web_system.result == 'success' | |
| || needs.windows_system.result == 'success' | |
| || needs.linux_system.result == 'success' | |
| || needs.mac_system.result == 'success') }} | |
| needs: | |
| - web_system | |
| - windows_system | |
| - linux_system | |
| - mac_system | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: . | |
| merge-multiple: true | |
| if-no-files-found: ignore | |
| - name: Cleanup RSP Files | |
| shell: bash | |
| run: find bin -type f -name '*.rsp' -delete 2>/dev/null || true | |
| - name: Compress Large Logs | |
| shell: bash | |
| run: | | |
| find logs -type f -name '*.log' -size +10M -exec gzip -9 {} \; | |
| echo "Compressed large log files:" | |
| find logs -type f -name '*.log.gz' -exec ls -lh {} \; | |
| - name: Generate Bin Index | |
| shell: bash | |
| run: python roll_checksum.py | |
| - name: Commit Outputs | |
| shell: bash | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| python clear.py | |
| git add -f bin logs | |
| if [ -z "$(git status --porcelain)" ]; then | |
| echo "No changes to commit" | |
| exit 0 | |
| fi | |
| git commit -m "Add platform binaries and logs [skip ci]" | |
| git pull --rebase -X ours | |
| git push | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |