diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 716da81e..b0e90c9d 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -102,6 +102,10 @@ jobs: os_type: linux target: x86_64-unknown-linux-gnu args: "--target x86_64-unknown-linux-gnu --bundles deb,rpm" + - platform: ubuntu-22.04-arm + os_type: linux + target: aarch64-unknown-linux-gnu + args: "--target aarch64-unknown-linux-gnu --bundles deb,rpm" - platform: windows-2022 os_type: windows target: x86_64-pc-windows-msvc @@ -243,6 +247,9 @@ jobs: x86_64-unknown-linux-gnu) opencode_asset="opencode-linux-x64-baseline.tar.gz" ;; + aarch64-unknown-linux-gnu) + opencode_asset="opencode-linux-arm64.tar.gz" + ;; x86_64-pc-windows-msvc) opencode_asset="opencode-windows-x64-baseline.zip" ;; diff --git a/.github/workflows/release-macos-aarch64.yml b/.github/workflows/release-macos-aarch64.yml index 50611005..85f7a539 100644 --- a/.github/workflows/release-macos-aarch64.yml +++ b/.github/workflows/release-macos-aarch64.yml @@ -249,6 +249,10 @@ jobs: os_type: linux target: x86_64-unknown-linux-gnu args: "--target x86_64-unknown-linux-gnu --bundles deb,rpm" + - platform: ubuntu-22.04-arm + os_type: linux + target: aarch64-unknown-linux-gnu + args: "--target aarch64-unknown-linux-gnu --bundles deb,rpm" - platform: windows-2022 os_type: windows target: x86_64-pc-windows-msvc @@ -425,6 +429,9 @@ jobs: x86_64-unknown-linux-gnu) opencode_asset="opencode-linux-x64-baseline.tar.gz" ;; + aarch64-unknown-linux-gnu) + opencode_asset="opencode-linux-arm64.tar.gz" + ;; x86_64-pc-windows-msvc) opencode_asset="opencode-windows-x64-baseline.zip" ;; diff --git a/packaging/aur/.SRCINFO b/packaging/aur/.SRCINFO index 404a6400..262cbfa4 100644 --- a/packaging/aur/.SRCINFO +++ b/packaging/aur/.SRCINFO @@ -4,6 +4,7 @@ pkgbase = openwork pkgrel = 1 url = https://github.com/different-ai/openwork arch = x86_64 + arch = aarch64 license = MIT depends = gtk3 depends = glib2 @@ -14,7 +15,9 @@ pkgbase = openwork depends = dbus depends = librsvg noextract = openwork-0.11.83.deb - source = openwork-0.11.83.deb::https://github.com/different-ai/openwork/releases/download/v0.11.83/openwork-desktop-linux-amd64.deb - sha256sums = ab228ec3baf370d7fc4db57c6c76f0ffffc31e1734cd6f92bd1a08cb9af306a7 + source_x86_64 = openwork-0.11.83.deb::https://github.com/different-ai/openwork/releases/download/v0.11.83/openwork-desktop-linux-amd64.deb + sha256sums_x86_64 = ab228ec3baf370d7fc4db57c6c76f0ffffc31e1734cd6f92bd1a08cb9af306a7 + source_aarch64 = openwork-0.11.83.deb::https://github.com/different-ai/openwork/releases/download/v0.11.83/openwork-desktop-linux-arm64.deb + sha256sums_aarch64 = SKIP pkgname = openwork diff --git a/packaging/aur/PKGBUILD b/packaging/aur/PKGBUILD index 6a9cfe12..3ede21d6 100644 --- a/packaging/aur/PKGBUILD +++ b/packaging/aur/PKGBUILD @@ -2,14 +2,18 @@ pkgname=openwork pkgver=0.11.83 pkgrel=1 # pkgrel should change when PKGBUILD does. Standard is to change back to 1 next time. Any interger is valid. pkgdesc="An Open source alternative to Claude Cowork" -arch=('x86_64') +arch=('x86_64' 'aarch64') url="https://github.com/different-ai/openwork" license=('MIT') depends=('gtk3' 'glib2' 'libayatana-appindicator' 'libsoup3' 'webkit2gtk-4.1' 'openssl' 'dbus' 'librsvg') -# Renaming to ${pkgname}-${pkgver}.deb -source=("${pkgname}-${pkgver}.deb::${url}/releases/download/v${pkgver}/openwork-desktop-linux-amd64.deb") -sha256sums=('ab228ec3baf370d7fc4db57c6c76f0ffffc31e1734cd6f92bd1a08cb9af306a7') +# Architecture-specific sources and checksums +source_x86_64=("${pkgname}-${pkgver}.deb::${url}/releases/download/v${pkgver}/openwork-desktop-linux-amd64.deb") +sha256sums_x86_64=('ab228ec3baf370d7fc4db57c6c76f0ffffc31e1734cd6f92bd1a08cb9af306a7') + +source_aarch64=("${pkgname}-${pkgver}.deb::${url}/releases/download/v${pkgver}/openwork-desktop-linux-arm64.deb") +sha256sums_aarch64=('SKIP') + # Makes sure makepkg doesn't extract the .deb since it will break noextract=("${pkgname}-${pkgver}.deb") diff --git a/scripts/aur/update-aur.sh b/scripts/aur/update-aur.sh old mode 100755 new mode 100644 index 96e4042e..51f73b3d --- a/scripts/aur/update-aur.sh +++ b/scripts/aur/update-aur.sh @@ -29,44 +29,40 @@ if [[ "$TAG" != v* ]]; then fi VERSION="${TAG#v}" -ASSET_NAME="${AUR_ASSET_NAME:-openwork-desktop-linux-amd64.deb}" -ASSET_URL="https://github.com/different-ai/openwork/releases/download/${TAG}/${ASSET_NAME}" +ASSET_NAME_AMD64="${AUR_ASSET_NAME:-openwork-desktop-linux-amd64.deb}" +ASSET_NAME_ARM64="openwork-desktop-linux-arm64.deb" +ASSET_URL_AMD64="https://github.com/different-ai/openwork/releases/download/${TAG}/${ASSET_NAME_AMD64}" +ASSET_URL_ARM64="https://github.com/different-ai/openwork/releases/download/${TAG}/${ASSET_NAME_ARM64}" TMP_DIR=$(mktemp -d) trap 'rm -rf "$TMP_DIR"' EXIT -curl -fsSL -o "${TMP_DIR}/${ASSET_NAME}" "$ASSET_URL" +curl -fsSL -o "${TMP_DIR}/${ASSET_NAME_AMD64}" "$ASSET_URL_AMD64" +curl -fsSL -o "${TMP_DIR}/${ASSET_NAME_ARM64}" "$ASSET_URL_ARM64" -SHA256=$($PYTHON_BIN - "${TMP_DIR}/${ASSET_NAME}" <<'PY' -import hashlib -import sys +# Calculate SHA256 checksums +SHA256_AMD64=$(sha256sum "${TMP_DIR}/${ASSET_NAME_AMD64}" | awk '{print $1}') +SHA256_ARM64=$(sha256sum "${TMP_DIR}/${ASSET_NAME_ARM64}" | awk '{print $1}') -path = sys.argv[1] -hasher = hashlib.sha256() -with open(path, "rb") as handle: - for chunk in iter(lambda: handle.read(1024 * 1024), b""): - hasher.update(chunk) -print(hasher.hexdigest()) -PY -) - -$PYTHON_BIN - "$PKGBUILD" "$VERSION" "$SHA256" <<'PY' +$PYTHON_BIN - "$PKGBUILD" "$VERSION" "$SHA256_AMD64" "$SHA256_ARM64" <<'PY' import pathlib import re import sys path = pathlib.Path(sys.argv[1]) version = sys.argv[2] -sha = sys.argv[3] +sha_amd64 = sys.argv[3] +sha_arm64 = sys.argv[4] text = path.read_text() text = re.sub(r"^pkgver=.*$", f"pkgver={version}", text, flags=re.M) text = re.sub(r"^(pkgrel=)\d+", r"\g<1>1", text, flags=re.M) -text = re.sub(r"^sha256sums=.*$", f"sha256sums=('{sha}')", text, flags=re.M) +text = re.sub(r"^sha256sums_x86_64=.*$", f"sha256sums_x86_64=('{sha_amd64}')", text, flags=re.M) +text = re.sub(r"^sha256sums_aarch64=.*$", f"sha256sums_aarch64=('{sha_arm64}')", text, flags=re.M) path.write_text(text) PY -$PYTHON_BIN - "$SRCINFO" "$PKGBUILD" "$VERSION" "$SHA256" "$ASSET_URL" <<'PY' +$PYTHON_BIN - "$SRCINFO" "$PKGBUILD" "$VERSION" "$SHA256_AMD64" "$SHA256_ARM64" "$ASSET_URL_AMD64" "$ASSET_URL_ARM64" <<'PY' import pathlib import re import sys @@ -74,8 +70,10 @@ import sys srcinfo_path = pathlib.Path(sys.argv[1]) pkgbuild_path = pathlib.Path(sys.argv[2]) version = sys.argv[3] -sha = sys.argv[4] -url = sys.argv[5] +sha_amd64 = sys.argv[4] +sha_arm64 = sys.argv[5] +url_amd64 = sys.argv[6] +url_arm64 = sys.argv[7] pkgbuild = pkgbuild_path.read_text() match = re.search(r"^pkgname=(.+)$", pkgbuild, flags=re.M) @@ -88,13 +86,20 @@ renamed = f"{pkgname}-{version}.deb" text = srcinfo_path.read_text() text = re.sub(r"^\s*pkgver = .*", f"\tpkgver = {version}", text, flags=re.M) text = re.sub(r"^\s*pkgrel = .*", "\tpkgrel = 1", text, flags=re.M) +text = re.sub(r"^\s*noextract = .*", f"\tnoextract = {renamed}", text, flags=re.M) text = re.sub( - r"^\s*source = .*", - f"\tsource = {renamed}::{url}", + r"^\s*source_x86_64 = .*", + f"\tsource_x86_64 = {renamed}::{url_amd64}", text, flags=re.M, ) -text = re.sub(r"^\s*noextract = .*", f"\tnoextract = {renamed}", text, flags=re.M) -text = re.sub(r"^\s*sha256sums = .*", f"\tsha256sums = {sha}", text, flags=re.M) +text = re.sub(r"^\s*sha256sums_x86_64 = .*", f"\tsha256sums_x86_64 = {sha_amd64}", text, flags=re.M) +text = re.sub( + r"^\s*source_aarch64 = .*", + f"\tsource_aarch64 = {renamed}::{url_arm64}", + text, + flags=re.M, +) +text = re.sub(r"^\s*sha256sums_aarch64 = .*", f"\tsha256sums_aarch64 = {sha_arm64}", text, flags=re.M) srcinfo_path.write_text(text) PY