mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 13:38:30 +00:00
Add multi-arch support to release workflows and installation scripts
This commit is contained in:
108
.github/workflows/release.yml
vendored
108
.github/workflows/release.yml
vendored
@@ -485,7 +485,9 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- target: x86_64-pc-windows-msvc
|
- target: x86_64-pc-windows-msvc
|
||||||
- target: aarch64-pc-windows-msvc
|
- target: aarch64-pc-windows-msvc
|
||||||
|
- target: i686-pc-windows-msvc
|
||||||
- target: x86_64-pc-windows-gnu
|
- target: x86_64-pc-windows-gnu
|
||||||
|
- target: i686-pc-windows-gnu
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -656,10 +658,22 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
BIN_URL="https://github.com/dexoron/dcr/releases/download/${{ needs.setup.outputs.tag }}/dcr-x86_64-unknown-linux-musl-${{ needs.setup.outputs.version }}"
|
TAG="${{ needs.setup.outputs.tag }}"
|
||||||
SHA256="$(curl -fsSL "$BIN_URL" | sha256sum | awk '{print $1}')"
|
VER="${{ needs.setup.outputs.version }}"
|
||||||
echo "bin_url=$BIN_URL" >> "$GITHUB_OUTPUT"
|
BASE_URL="https://github.com/dexoron/dcr/releases/download/${TAG}"
|
||||||
echo "sha256=$SHA256" >> "$GITHUB_OUTPUT"
|
for arch in x86_64 aarch64 i686 armv7h riscv64; do
|
||||||
|
case "$arch" in
|
||||||
|
x86_64) triple="x86_64-unknown-linux-musl" ;;
|
||||||
|
aarch64) triple="aarch64-unknown-linux-musl" ;;
|
||||||
|
i686) triple="i686-unknown-linux-musl" ;;
|
||||||
|
armv7h) triple="armv7-unknown-linux-musleabihf" ;;
|
||||||
|
riscv64) triple="riscv64gc-unknown-linux-musl" ;;
|
||||||
|
esac
|
||||||
|
url="${BASE_URL}/dcr-${triple}-${VER}"
|
||||||
|
sha256="$(curl -fsSL "$url" | sha256sum | awk '{print $1}')"
|
||||||
|
echo "${arch}_url=${url}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "${arch}_sha256=${sha256}" >> "$GITHUB_OUTPUT"
|
||||||
|
done
|
||||||
|
|
||||||
- name: Render AUR Metadata
|
- name: Render AUR Metadata
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -667,16 +681,13 @@ jobs:
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
PKGVER_ORIG='${{ needs.setup.outputs.version }}'
|
PKGVER_ORIG='${{ needs.setup.outputs.version }}'
|
||||||
PKGVER_CLEAN="${PKGVER_ORIG//-/.}"
|
PKGVER_CLEAN="${PKGVER_ORIG//-/.}"
|
||||||
BIN_URL='${{ steps.meta.outputs.bin_url }}'
|
|
||||||
SHA256='${{ steps.meta.outputs.sha256 }}'
|
|
||||||
|
|
||||||
mkdir -p packages/aur/dcr-bin
|
mkdir -p packages/aur/dcr-bin
|
||||||
cat > packages/aur/dcr-bin/PKGBUILD <<PKG
|
cat > packages/aur/dcr-bin/PKGBUILD <<PKG
|
||||||
pkgname=dcr-bin
|
pkgname=dcr-bin
|
||||||
pkgver=${PKGVER_CLEAN}
|
pkgver=${PKGVER_CLEAN}
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Cargo-like utility to manage C/C++ projects (pre-compiled musl binary)"
|
pkgdesc="Cargo-like utility to manage C/C++ projects (pre-compiled musl binary)"
|
||||||
arch=('x86_64')
|
arch=('x86_64' 'aarch64' 'i686' 'armv7h' 'riscv64')
|
||||||
url="https://github.com/dexoron/dcr"
|
url="https://github.com/dexoron/dcr"
|
||||||
license=('GPL-3.0-or-later')
|
license=('GPL-3.0-or-later')
|
||||||
provides=('dcr')
|
provides=('dcr')
|
||||||
@@ -685,8 +696,16 @@ jobs:
|
|||||||
'gcc: build C/C++ projects with GCC'
|
'gcc: build C/C++ projects with GCC'
|
||||||
'clang: build C/C++ projects with Clang'
|
'clang: build C/C++ projects with Clang'
|
||||||
)
|
)
|
||||||
source_x86_64=("dcr-\$pkgver::${BIN_URL}")
|
source_x86_64=("dcr-\$pkgver::${{ steps.meta.outputs.x86_64_url }}")
|
||||||
sha256sums_x86_64=('${SHA256}')
|
sha256sums_x86_64=('${{ steps.meta.outputs.x86_64_sha256 }}')
|
||||||
|
source_aarch64=("dcr-\$pkgver::${{ steps.meta.outputs.aarch64_url }}")
|
||||||
|
sha256sums_aarch64=('${{ steps.meta.outputs.aarch64_sha256 }}')
|
||||||
|
source_i686=("dcr-\$pkgver::${{ steps.meta.outputs.i686_url }}")
|
||||||
|
sha256sums_i686=('${{ steps.meta.outputs.i686_sha256 }}')
|
||||||
|
source_armv7h=("dcr-\$pkgver::${{ steps.meta.outputs.armv7h_url }}")
|
||||||
|
sha256sums_armv7h=('${{ steps.meta.outputs.armv7h_sha256 }}')
|
||||||
|
source_riscv64=("dcr-\$pkgver::${{ steps.meta.outputs.riscv64_url }}")
|
||||||
|
sha256sums_riscv64=('${{ steps.meta.outputs.riscv64_sha256 }}')
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
install -Dm755 "\$srcdir/dcr-\$pkgver" "\$pkgdir/usr/bin/dcr"
|
install -Dm755 "\$srcdir/dcr-\$pkgver" "\$pkgdir/usr/bin/dcr"
|
||||||
@@ -700,13 +719,25 @@ jobs:
|
|||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://github.com/dexoron/dcr
|
url = https://github.com/dexoron/dcr
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
|
arch = aarch64
|
||||||
|
arch = i686
|
||||||
|
arch = armv7h
|
||||||
|
arch = riscv64
|
||||||
license = GPL-3.0-or-later
|
license = GPL-3.0-or-later
|
||||||
provides = dcr
|
provides = dcr
|
||||||
conflicts = dcr
|
conflicts = dcr
|
||||||
optdepends = gcc: build C/C++ projects with GCC
|
optdepends = gcc: build C/C++ projects with GCC
|
||||||
optdepends = clang: build C/C++ projects with Clang
|
optdepends = clang: build C/C++ projects with Clang
|
||||||
source_x86_64 = dcr-${PKGVER_CLEAN}::${BIN_URL}
|
source_x86_64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.x86_64_url }}
|
||||||
sha256sums_x86_64 = ${SHA256}
|
sha256sums_x86_64 = ${{ steps.meta.outputs.x86_64_sha256 }}
|
||||||
|
source_aarch64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.aarch64_url }}
|
||||||
|
sha256sums_aarch64 = ${{ steps.meta.outputs.aarch64_sha256 }}
|
||||||
|
source_i686 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.i686_url }}
|
||||||
|
sha256sums_i686 = ${{ steps.meta.outputs.i686_sha256 }}
|
||||||
|
source_armv7h = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.armv7h_url }}
|
||||||
|
sha256sums_armv7h = ${{ steps.meta.outputs.armv7h_sha256 }}
|
||||||
|
source_riscv64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.riscv64_url }}
|
||||||
|
sha256sums_riscv64 = ${{ steps.meta.outputs.riscv64_sha256 }}
|
||||||
|
|
||||||
pkgname = dcr-bin
|
pkgname = dcr-bin
|
||||||
SRC
|
SRC
|
||||||
@@ -891,10 +922,22 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
BIN_URL="https://github.com/dexoron/dcr/releases/download/${{ needs.setup.outputs.tag }}/dcr-x86_64-unknown-linux-musl-${{ needs.setup.outputs.version }}"
|
TAG="${{ needs.setup.outputs.tag }}"
|
||||||
SHA256="$(curl -fsSL "$BIN_URL" | sha256sum | awk '{print $1}')"
|
VER="${{ needs.setup.outputs.version }}"
|
||||||
echo "bin_url=$BIN_URL" >> "$GITHUB_OUTPUT"
|
BASE_URL="https://github.com/dexoron/dcr/releases/download/${TAG}"
|
||||||
echo "sha256=$SHA256" >> "$GITHUB_OUTPUT"
|
for arch in x86_64 aarch64 i686 armv7h riscv64; do
|
||||||
|
case "$arch" in
|
||||||
|
x86_64) triple="x86_64-unknown-linux-musl" ;;
|
||||||
|
aarch64) triple="aarch64-unknown-linux-musl" ;;
|
||||||
|
i686) triple="i686-unknown-linux-musl" ;;
|
||||||
|
armv7h) triple="armv7-unknown-linux-musleabihf" ;;
|
||||||
|
riscv64) triple="riscv64gc-unknown-linux-musl" ;;
|
||||||
|
esac
|
||||||
|
url="${BASE_URL}/dcr-${triple}-${VER}"
|
||||||
|
sha256="$(curl -fsSL "$url" | sha256sum | awk '{print $1}')"
|
||||||
|
echo "${arch}_url=${url}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "${arch}_sha256=${sha256}" >> "$GITHUB_OUTPUT"
|
||||||
|
done
|
||||||
|
|
||||||
- name: Render AUR Metadata
|
- name: Render AUR Metadata
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -902,16 +945,13 @@ jobs:
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
PKGVER_ORIG='${{ needs.setup.outputs.version }}'
|
PKGVER_ORIG='${{ needs.setup.outputs.version }}'
|
||||||
PKGVER_CLEAN='${{ needs.setup.outputs.clean_version }}'
|
PKGVER_CLEAN='${{ needs.setup.outputs.clean_version }}'
|
||||||
BIN_URL='${{ steps.meta.outputs.bin_url }}'
|
|
||||||
SHA256='${{ steps.meta.outputs.sha256 }}'
|
|
||||||
|
|
||||||
mkdir -p packages/aur/dcr-dev-bin
|
mkdir -p packages/aur/dcr-dev-bin
|
||||||
cat > packages/aur/dcr-dev-bin/PKGBUILD <<PKG
|
cat > packages/aur/dcr-dev-bin/PKGBUILD <<PKG
|
||||||
pkgname=dcr-dev-bin
|
pkgname=dcr-dev-bin
|
||||||
pkgver=${PKGVER_CLEAN}
|
pkgver=${PKGVER_CLEAN}
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Cargo-like utility to manage C/C++ projects (pre-compiled musl binary dev release)"
|
pkgdesc="Cargo-like utility to manage C/C++ projects (pre-compiled musl binary dev release)"
|
||||||
arch=('x86_64')
|
arch=('x86_64' 'aarch64' 'i686' 'armv7h' 'riscv64')
|
||||||
url="https://github.com/dexoron/dcr"
|
url="https://github.com/dexoron/dcr"
|
||||||
license=('GPL-3.0-or-later')
|
license=('GPL-3.0-or-later')
|
||||||
provides=('dcr')
|
provides=('dcr')
|
||||||
@@ -920,8 +960,16 @@ jobs:
|
|||||||
'gcc: build C/C++ projects with GCC'
|
'gcc: build C/C++ projects with GCC'
|
||||||
'clang: build C/C++ projects with Clang'
|
'clang: build C/C++ projects with Clang'
|
||||||
)
|
)
|
||||||
source_x86_64=("dcr-\$pkgver::${BIN_URL}")
|
source_x86_64=("dcr-\$pkgver::${{ steps.meta.outputs.x86_64_url }}")
|
||||||
sha256sums_x86_64=('${SHA256}')
|
sha256sums_x86_64=('${{ steps.meta.outputs.x86_64_sha256 }}')
|
||||||
|
source_aarch64=("dcr-\$pkgver::${{ steps.meta.outputs.aarch64_url }}")
|
||||||
|
sha256sums_aarch64=('${{ steps.meta.outputs.aarch64_sha256 }}')
|
||||||
|
source_i686=("dcr-\$pkgver::${{ steps.meta.outputs.i686_url }}")
|
||||||
|
sha256sums_i686=('${{ steps.meta.outputs.i686_sha256 }}')
|
||||||
|
source_armv7h=("dcr-\$pkgver::${{ steps.meta.outputs.armv7h_url }}")
|
||||||
|
sha256sums_armv7h=('${{ steps.meta.outputs.armv7h_sha256 }}')
|
||||||
|
source_riscv64=("dcr-\$pkgver::${{ steps.meta.outputs.riscv64_url }}")
|
||||||
|
sha256sums_riscv64=('${{ steps.meta.outputs.riscv64_sha256 }}')
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
install -Dm755 "\$srcdir/dcr-\$pkgver" "\$pkgdir/usr/bin/dcr"
|
install -Dm755 "\$srcdir/dcr-\$pkgver" "\$pkgdir/usr/bin/dcr"
|
||||||
@@ -935,13 +983,25 @@ jobs:
|
|||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://github.com/dexoron/dcr
|
url = https://github.com/dexoron/dcr
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
|
arch = aarch64
|
||||||
|
arch = i686
|
||||||
|
arch = armv7h
|
||||||
|
arch = riscv64
|
||||||
license = GPL-3.0-or-later
|
license = GPL-3.0-or-later
|
||||||
provides = dcr
|
provides = dcr
|
||||||
conflicts = dcr
|
conflicts = dcr
|
||||||
optdepends = gcc: build C/C++ projects with GCC
|
optdepends = gcc: build C/C++ projects with GCC
|
||||||
optdepends = clang: build C/C++ projects with Clang
|
optdepends = clang: build C/C++ projects with Clang
|
||||||
source_x86_64 = dcr-${PKGVER_CLEAN}::${BIN_URL}
|
source_x86_64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.x86_64_url }}
|
||||||
sha256sums_x86_64 = ${SHA256}
|
sha256sums_x86_64 = ${{ steps.meta.outputs.x86_64_sha256 }}
|
||||||
|
source_aarch64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.aarch64_url }}
|
||||||
|
sha256sums_aarch64 = ${{ steps.meta.outputs.aarch64_sha256 }}
|
||||||
|
source_i686 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.i686_url }}
|
||||||
|
sha256sums_i686 = ${{ steps.meta.outputs.i686_sha256 }}
|
||||||
|
source_armv7h = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.armv7h_url }}
|
||||||
|
sha256sums_armv7h = ${{ steps.meta.outputs.armv7h_sha256 }}
|
||||||
|
source_riscv64 = dcr-${PKGVER_CLEAN}::${{ steps.meta.outputs.riscv64_url }}
|
||||||
|
sha256sums_riscv64 = ${{ steps.meta.outputs.riscv64_sha256 }}
|
||||||
|
|
||||||
pkgname = dcr-dev-bin
|
pkgname = dcr-dev-bin
|
||||||
SRC
|
SRC
|
||||||
|
|||||||
12
install.ps1
12
install.ps1
@@ -47,10 +47,16 @@ function Select-Mode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Get-Target {
|
function Get-Target {
|
||||||
if ($env:PROCESSOR_ARCHITECTURE -ne 'AMD64') {
|
$arch = $env:PROCESSOR_ARCHITECTURE
|
||||||
Fail "Only x86_64 Windows is supported, current architecture: $env:PROCESSOR_ARCHITECTURE"
|
if ($env:PROCESSOR_ARCHITEW6432) {
|
||||||
|
$arch = $env:PROCESSOR_ARCHITEW6432
|
||||||
|
}
|
||||||
|
switch ($arch) {
|
||||||
|
'AMD64' { return 'x86_64-pc-windows-msvc' }
|
||||||
|
'ARM64' { return 'aarch64-pc-windows-msvc' }
|
||||||
|
'x86' { return 'i686-pc-windows-msvc' }
|
||||||
|
default { Fail "Unsupported Windows architecture: $arch" }
|
||||||
}
|
}
|
||||||
return 'x86_64-pc-windows-msvc'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Fetch-ReleaseJson($channel) {
|
function Fetch-ReleaseJson($channel) {
|
||||||
|
|||||||
@@ -49,8 +49,14 @@ detect_target() {
|
|||||||
Darwin:x86_64) TARGET_TRIPLE="x86_64-apple-darwin" ;;
|
Darwin:x86_64) TARGET_TRIPLE="x86_64-apple-darwin" ;;
|
||||||
Darwin:arm64|Darwin:aarch64) TARGET_TRIPLE="aarch64-apple-darwin" ;;
|
Darwin:arm64|Darwin:aarch64) TARGET_TRIPLE="aarch64-apple-darwin" ;;
|
||||||
FreeBSD:x86_64|FreeBSD:amd64) TARGET_TRIPLE="x86_64-unknown-freebsd" ;;
|
FreeBSD:x86_64|FreeBSD:amd64) TARGET_TRIPLE="x86_64-unknown-freebsd" ;;
|
||||||
|
FreeBSD:aarch64|FreeBSD:arm64) TARGET_TRIPLE="aarch64-unknown-freebsd" ;;
|
||||||
|
FreeBSD:i686|FreeBSD:i386) TARGET_TRIPLE="i686-unknown-freebsd" ;;
|
||||||
OpenBSD:x86_64|OpenBSD:amd64) TARGET_TRIPLE="x86_64-unknown-openbsd" ;;
|
OpenBSD:x86_64|OpenBSD:amd64) TARGET_TRIPLE="x86_64-unknown-openbsd" ;;
|
||||||
|
OpenBSD:aarch64|OpenBSD:arm64) TARGET_TRIPLE="aarch64-unknown-openbsd" ;;
|
||||||
|
OpenBSD:i686|OpenBSD:i386) TARGET_TRIPLE="i686-unknown-openbsd" ;;
|
||||||
NetBSD:x86_64|NetBSD:amd64) TARGET_TRIPLE="x86_64-unknown-netbsd" ;;
|
NetBSD:x86_64|NetBSD:amd64) TARGET_TRIPLE="x86_64-unknown-netbsd" ;;
|
||||||
|
NetBSD:aarch64|NetBSD:arm64) TARGET_TRIPLE="aarch64-unknown-netbsd" ;;
|
||||||
|
NetBSD:i686|NetBSD:i386) TARGET_TRIPLE="i686-unknown-netbsd" ;;
|
||||||
|
|
||||||
*) error "Unsupported platform: $os/$arch"; exit 1 ;;
|
*) error "Unsupported platform: $os/$arch"; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -39,8 +39,14 @@ detect_target() {
|
|||||||
|
|
||||||
case "$os:$arch" in
|
case "$os:$arch" in
|
||||||
FreeBSD:x86_64|FreeBSD:amd64) TARGET_TRIPLE="x86_64-unknown-freebsd" ;;
|
FreeBSD:x86_64|FreeBSD:amd64) TARGET_TRIPLE="x86_64-unknown-freebsd" ;;
|
||||||
|
FreeBSD:aarch64|FreeBSD:arm64) TARGET_TRIPLE="aarch64-unknown-freebsd" ;;
|
||||||
|
FreeBSD:i686|FreeBSD:i386) TARGET_TRIPLE="i686-unknown-freebsd" ;;
|
||||||
OpenBSD:x86_64|OpenBSD:amd64) TARGET_TRIPLE="x86_64-unknown-openbsd" ;;
|
OpenBSD:x86_64|OpenBSD:amd64) TARGET_TRIPLE="x86_64-unknown-openbsd" ;;
|
||||||
|
OpenBSD:aarch64|OpenBSD:arm64) TARGET_TRIPLE="aarch64-unknown-openbsd" ;;
|
||||||
|
OpenBSD:i686|OpenBSD:i386) TARGET_TRIPLE="i686-unknown-openbsd" ;;
|
||||||
NetBSD:x86_64|NetBSD:amd64) TARGET_TRIPLE="x86_64-unknown-netbsd" ;;
|
NetBSD:x86_64|NetBSD:amd64) TARGET_TRIPLE="x86_64-unknown-netbsd" ;;
|
||||||
|
NetBSD:aarch64|NetBSD:arm64) TARGET_TRIPLE="aarch64-unknown-netbsd" ;;
|
||||||
|
NetBSD:i686|NetBSD:i386) TARGET_TRIPLE="i686-unknown-netbsd" ;;
|
||||||
DragonFly:x86_64|DragonFly:amd64) TARGET_TRIPLE="x86_64-unknown-dragonfly" ;;
|
DragonFly:x86_64|DragonFly:amd64) TARGET_TRIPLE="x86_64-unknown-dragonfly" ;;
|
||||||
*) error "Unsupported BSD platform: $os/$arch"; exit 1 ;;
|
*) error "Unsupported BSD platform: $os/$arch"; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user