Skip to content

added all algo in primary --gen --lntt 1,2,3 #89

added all algo in primary --gen --lntt 1,2,3

added all algo in primary --gen --lntt 1,2,3 #89

Workflow file for this run

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 }}