Skip to content

Commit dc807a0

Browse files
committed
feat: macOS ARM64 support, path fixes, and race condition elimination
1 parent ab2de93 commit dc807a0

17 files changed

Lines changed: 56 additions & 26 deletions

File tree

.github/workflows/ci.yml

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,14 @@ jobs:
355355
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && vars.PUBLISH_GO_APP == 'true'
356356
permissions:
357357
contents: write
358+
strategy:
359+
matrix:
360+
goarch: ['amd64', 'arm64']
361+
env:
362+
GOARCH: ${{ matrix.goarch }}
363+
ARTEFACT: "qpi_${{ matrix.goarch }}"
364+
OUTPUT_ARTEFACT: "qpi_macos_${{ matrix.goarch }}.pkg"
365+
PKG_ROOT: "pkg_${{ matrix.goarch }}_root"
358366
steps:
359367
- name: Checkout Code
360368
uses: actions/checkout@v4
@@ -369,21 +377,33 @@ jobs:
369377
with:
370378
node-version: '22'
371379

372-
- name: Build Dashboard & Mac Binary
380+
- name: Build Dashboard
381+
run: make build-dashboard
382+
383+
- name: Build Mac ${{ matrix.goarch }} Binary
373384
run: |
374-
cd qpi-ui/internal/dashboard && npm ci && npm run build && cd ../..
375-
cd qpi-ui && GOOS=darwin GOARCH=amd64 go build -o ../qpi .
385+
GOOS=darwin go build -C "qpi-ui" -ldflags="-X 'main.Version=v${RAW_VERSION#v}'" -o "../${ARTEFACT}" .
376386
377387
# Uses Apple's built-in tool suite to build the native component installer
378-
- name: Build Native macOS .pkg
388+
- name: Build Native ${{ matrix.goarch }} macOS .pkg
379389
run: |
380-
mkdir -p pkg_root/usr/local/bin
381-
cp qpi pkg_root/usr/local/bin/
382-
VERSION="${RAW_VERSION#v}"
383-
pkgbuild --identifier "com.sopherapps.qpi" --version "${VERSION}" --install-location "/" --root pkg_root qpi_macos_amd64.pkg
390+
mkdir -p "${PKG_ROOT}/usr/local/bin/"
391+
cp "${ARTEFACT}" "${PKG_ROOT}/usr/local/bin/"
392+
pkgbuild --identifier "com.sopherapps.qpi" --version "${RAW_VERSION#v}" --install-location "/" --root "$PKG_ROOT" "$OUTPUT_ARTEFACT"
384393
385394
- name: Upload macOS PKG to Release
386395
uses: softprops/action-gh-release@v3
387396
with:
388-
files: qpi_macos_amd64.pkg
397+
files: ${{ env.OUTPUT_ARTEFACT }}
398+
399+
publish-release:
400+
needs: [package-macos-pkg]
401+
runs-on: ubuntu-latest
402+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && vars.PUBLISH_GO_APP == 'true'
403+
permissions:
404+
contents: write
405+
steps:
406+
- name: Publish Release
407+
uses: softprops/action-gh-release@v3
408+
with:
389409
draft: false

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ and this project follows versions of format `{year}.{month}.{patch_number}`.
77

88
## [Unreleased]
99

10+
## [0.0.21] - 2026-06-23
11+
12+
### Added
13+
- `qpi-ui`: Added macOS ARM64 (Apple Silicon) native installer packaging to the CI pipeline.
14+
15+
### Fixed
16+
17+
- `qpi-ui`: Fixed directory pathing error during the macOS binary build step in GitHub Actions.
18+
- `qpi-ui`: Fixed macOS pkg output path evaluation and eliminated a GitHub release asset race condition between parallel macOS runners.
19+
1020
## [0.0.20] - 2026-06-23
1121

1222
### Fixed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.PHONY: all build build-dashboard test lint lint-go lint-py lint-js lint-dashboard lint-go-client lint-py-client format format-go format-py format-js format-dashboard format-go-client format-py-client package package-driver package-js package-py package-go clean venv-check test-e2e-dashboard
22

3-
VERSION ?= 0.0.20
3+
VERSION ?= 0.0.21
44
UV := $(shell command -v uv 2> /dev/null || echo "$$HOME/.local/bin/uv")
55

66
all: build

qpi-client/js/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

qpi-client/js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "qpi-client",
3-
"version": "0.0.20",
3+
"version": "0.0.21",
44
"description": "JavaScript/TypeScript client SDK for the QPI quantum computing platform",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

qpi-client/py/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "qpi-client"
7-
version = "0.0.20"
7+
version = "0.0.21"
88
description = "Python client SDK for the QPI quantum computing platform"
99
readme = "README.md"
1010
license = {text = "MIT"}

qpi-client/py/qpi_client/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
try:
3131
__version__ = importlib.metadata.version("qpi-client")
3232
except importlib.metadata.PackageNotFoundError:
33-
__version__ = "0.0.20"
33+
__version__ = "0.0.21"
3434

3535
from qpi_client.client import QPIClient
3636
from qpi_client.provider import QPIBackend, QPIJob

qpi-client/py/uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

qpi-driver/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "qpi-driver"
7-
version = "0.0.20"
7+
version = "0.0.21"
88
description = "Quantum Processing Interface (QPI) Hardware Driver"
99
readme = "README.md"
1010
requires-python = ">=3.12,<3.13"

qpi-driver/qpi_driver/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
try:
44
__version__ = importlib.metadata.version("qpi-driver")
55
except importlib.metadata.PackageNotFoundError:
6-
__version__ = "0.0.20"
6+
__version__ = "0.0.21"
77

88
from qpi_driver.driver import run_driver
99
from qpi_driver.executors.base import Executor

0 commit comments

Comments
 (0)