Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions .github/workflows/build-windows-x86-64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,25 +45,6 @@ jobs:
ref: ${{ env.REPO_COMMIT }}
path: _repo

# CI only, until openXC7 fixes apio#1194
# (https://github.com/FPGAwars/apio/issues/1194): its Windows
# fasm2frames.cmd runs `python`, which a plain Windows, and so the
# engine's tool PATH, doesn't have. A python.cmd in the Windows folder,
# which is on that PATH, forwards to Python 3.12, the version its
# packages are for. So the rest of the Xilinx flow stays tested. Remove
# both steps with the fix (the website repo's CLAUDE.md, Strict CI).
- name: Set up Python 3.12 for fasm2frames (apio#1194, CI only)
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Put python on the tools' PATH (apio#1194, CI only)
shell: pwsh
run: |
$py = (Get-Command python).Source
Set-Content -Path "$env:SystemRoot\python.cmd" -Value "@`"$py`" %*" -Encoding ascii
& "$env:SystemRoot\python.cmd" --version

# Installs the Rust version pinned in rust-toolchain.toml.
- name: Set up Rust
working-directory: _repo
Expand Down
21 changes: 0 additions & 21 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,27 +96,6 @@ jobs:
- name: Check out the code
uses: actions/checkout@v7

# CI only, until openXC7 fixes apio#1194
# (https://github.com/FPGAwars/apio/issues/1194): its Windows
# fasm2frames.cmd runs `python`, which a plain Windows, and so the
# engine's tool PATH, doesn't have. A python.cmd in the Windows folder,
# which is on that PATH, forwards to Python 3.12, the version its
# packages are for. So the rest of the Xilinx flow stays tested. Remove
# both steps with the fix (the website repo's CLAUDE.md, Strict CI).
- name: Set up Python 3.12 for fasm2frames (apio#1194, CI only)
if: runner.os == 'Windows'
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Put python on the tools' PATH (apio#1194, CI only)
if: runner.os == 'Windows'
shell: pwsh
run: |
$py = (Get-Command python).Source
Set-Content -Path "$env:SystemRoot\python.cmd" -Value "@`"$py`" %*" -Encoding ascii
& "$env:SystemRoot\python.cmd" --version

# Installs the Rust version pinned in rust-toolchain.toml, with
# rustfmt and clippy.
- name: Set up Rust
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Milestone 1 (iCE40, seven tools, tested on an Alhambra II) is done. Milestone 2

Same conventions as logix-ide, using the shared actions from `openlogix/.github` (`openlogix/.github/actions/<name>@main`; that repo documents and tests them).

- **`test.yaml`**: a `remote-config` job (Ubuntu) runs the shared `check-remote-config` action on `remote-config/` (platforms `darwin-arm64` and `windows-x86-64`; add Linux with Milestone 4); a `channels` job (Ubuntu) lists the channels with the shared `list-config-channels` action, one per config file in the newest version folder (so `prod` alone in normal maintenance, and `dev` too while `dev.jsonc` exists); then the tests, one job per OS version and channel (`test (macos-15, prod)`): matrix `os` macos-15, macos-26 and windows-2025 (named explicitly, a new one added when GitHub ships it; not macos-latest, which is one of them) × `channel` from that list, `fail-fast: false`, 30 min, bash on every OS (Git's bash on Windows). Strict (the website repo's `CLAUDE.md`, Strict CI): every job is required. Windows isn't tested on the prod channel until its first promotion (a commented matrix `exclude`: prod names a logix-core from before the port, without `VERILATOR_ROOT` on Windows); remove the exclusion then. On Windows, two CI-only steps work around apio#1194 (openXC7's `fasm2frames.cmd` runs `python`, which a plain Windows doesn't have): Python 3.12 from `actions/setup-python`, and a `python.cmd` forwarder in the Windows folder, on the engine's tool PATH; remove both when openXC7 is fixed. The same steps are in `build-windows-x86-64.yaml`. On every push and pull request, manually, and daily at 00:00 UTC; a newer run for the same ref cancels the older one. Installs the pinned Rust, then runs `scripts/test.sh` with `LOGIX_ENGINE_CHANNEL` set to the job's channel. Tests that serve their own config (`tests/packages.rs`) use that channel's file, so they pass on any channel.
- **`test.yaml`**: a `remote-config` job (Ubuntu) runs the shared `check-remote-config` action on `remote-config/` (platforms `darwin-arm64` and `windows-x86-64`; add Linux with Milestone 4); a `channels` job (Ubuntu) lists the channels with the shared `list-config-channels` action, one per config file in the newest version folder (so `prod` alone in normal maintenance, and `dev` too while `dev.jsonc` exists); then the tests, one job per OS version and channel (`test (macos-15, prod)`): matrix `os` macos-15, macos-26 and windows-2025 (named explicitly, a new one added when GitHub ships it; not macos-latest, which is one of them) × `channel` from that list, `fail-fast: false`, 30 min, bash on every OS (Git's bash on Windows). Strict (the website repo's `CLAUDE.md`, Strict CI): every job is required. Windows isn't tested on the prod channel until its first promotion (a commented matrix `exclude`: prod names a logix-core from before the port, without `VERILATOR_ROOT` on Windows); remove the exclusion then. On every push and pull request, manually, and daily at 00:00 UTC; a newer run for the same ref cancels the older one. Installs the pinned Rust, then runs `scripts/test.sh` with `LOGIX_ENGINE_CHANNEL` set to the job's channel. Tests that serve their own config (`tests/packages.rs`) use that channel's file, so they pass on any channel.
- **`build-pre-release.yaml`** (on every push to `main`, daily at 00:00 UTC, and manually; a newer run cancels a running one), three jobs:
- `prepare` (Ubuntu): the shared `start-pre-release` action (today's tags, the stable-release check, `BUILD-INFO.json` as the `build-info` artifact, with `config-version`, read from `remote_config::CONFIG_VERSION`, as an extra field: `repos-janitor` finds the releases a Latest engine uses by it). The release tag is the engine version.
- `build-darwin-arm64` (reusable `build-darwin-arm64.yaml`, macos-latest): `read-build-info` with the platform, checks out exactly `repo-commit` into `_repo/`, runs `scripts/test.sh`, builds with `LOGIX_ENGINE_BUILD_VERSION` = the release tag, packs `logix-engine-darwin-arm64-<package tag>.tgz` (one `logix-engine/` folder with the binary, `LICENSE-MIT` and `LICENSE-APACHE`), and checks that the packed binary reports the release tag and has an ad-hoc signature.
Expand Down
4 changes: 3 additions & 1 deletion remote-config/logix-engine/001/dev.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
// run.path and run.env).
// 2026-11-14: the Windows package also has libwdi's wdi-simple, which
// install_driver runs to install WinUSB (Milestone 3, drivers).
// 2026-11-15: openXC7 2026-11-15, which counts Xilinx resources right
// (apio#1192) and finds the suite's Python on Windows (apio#1194).
"logix-core": {
"repo": "openlogix/logix-core",
"release": "2026-11-14",
"release": "2026-11-15",
"file": "logix-core-${PLATFORM}-${YYYYMMDD}.tgz"
},

Expand Down
19 changes: 15 additions & 4 deletions tests/mcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,24 @@ async fn get_engine_info_reports_the_launch_settings() {
// The catalog folder from LOGIX_ENGINE_DEV_CATALOG_FOLDER.
assert_eq!(out["catalog"], json!({"version": "local", "local": true}));
// It's a developer setting: listed, and in the report's own section.
assert_eq!(
out["developer_settings"][0]["name"],
"LOGIX_ENGINE_DEV_CATALOG_FOLDER"
// (Others may be set too, such as CI's LOGIX_ENGINE_CHANNEL.)
let settings = out["developer_settings"].as_array().expect("listed");
assert!(
settings
.iter()
.any(|s| s["name"] == "LOGIX_ENGINE_DEV_CATALOG_FOLDER"),
"{settings:?}"
);
let report = out["report"].as_str().unwrap();
let section = report
.split("\nDeveloper settings:\n")
.nth(1)
.and_then(|rest| rest.split("\n\n").next())
.unwrap_or_else(|| panic!("no Developer settings section: {report}"));
assert!(
report.contains("\nDeveloper settings:\n LOGIX_ENGINE_DEV_CATALOG_FOLDER = "),
section
.lines()
.any(|l| l.starts_with(" LOGIX_ENGINE_DEV_CATALOG_FOLDER = ")),
"{report}"
);
// The version tree: the engine alone, before its remote config is read.
Expand Down
Loading