mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 14:18:36 +00:00
feat: add dcr-dev and dcr-dev-bin publishing to AUR
This commit is contained in:
243
.github/workflows/release.yml
vendored
243
.github/workflows/release.yml
vendored
@@ -21,6 +21,10 @@ on:
|
|||||||
description: "Update AUR packages (dcr & dcr-bin)"
|
description: "Update AUR packages (dcr & dcr-bin)"
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
run_aur_dev:
|
||||||
|
description: "Update Dev AUR packages (dcr-dev, dcr-dev-bin)"
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
run_bsd:
|
run_bsd:
|
||||||
description: "Build BSD"
|
description: "Build BSD"
|
||||||
type: boolean
|
type: boolean
|
||||||
@@ -56,6 +60,7 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
tag: ${{ steps.tag.outputs.value }}
|
tag: ${{ steps.tag.outputs.value }}
|
||||||
version: ${{ steps.tag.outputs.version }}
|
version: ${{ steps.tag.outputs.version }}
|
||||||
|
clean_version: ${{ steps.tag.outputs.clean_version }}
|
||||||
prerelease: ${{ steps.tag.outputs.prerelease }}
|
prerelease: ${{ steps.tag.outputs.prerelease }}
|
||||||
steps:
|
steps:
|
||||||
- name: Resolve tag
|
- name: Resolve tag
|
||||||
@@ -67,9 +72,11 @@ jobs:
|
|||||||
TAG="${GITHUB_REF_NAME}"
|
TAG="${GITHUB_REF_NAME}"
|
||||||
fi
|
fi
|
||||||
VERSION="${TAG#v}"
|
VERSION="${TAG#v}"
|
||||||
|
CLEAN_VERSION="${VERSION%-dev}"
|
||||||
[[ "$TAG" == *"-"* ]] && PRERELEASE="true" || PRERELEASE="false"
|
[[ "$TAG" == *"-"* ]] && PRERELEASE="true" || PRERELEASE="false"
|
||||||
echo "value=${TAG}" >> "$GITHUB_OUTPUT"
|
echo "value=${TAG}" >> "$GITHUB_OUTPUT"
|
||||||
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "clean_version=${CLEAN_VERSION}" >> "$GITHUB_OUTPUT"
|
||||||
echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT"
|
echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
# ── Release Notes ──────────────────────────────────────────────────────────
|
# ── Release Notes ──────────────────────────────────────────────────────────
|
||||||
@@ -452,8 +459,6 @@ jobs:
|
|||||||
cp target/release/dcr "$ASSET"
|
cp target/release/dcr "$ASSET"
|
||||||
echo "BSD_ASSET=${ASSET}" >> "$GITHUB_ENV"
|
echo "BSD_ASSET=${ASSET}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# --- UPLOAD TARGET ---
|
# --- UPLOAD TARGET ---
|
||||||
- name: Upload BSD Asset to Release
|
- name: Upload BSD Asset to Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
@@ -739,6 +744,240 @@ jobs:
|
|||||||
git commit -m "dcr-bin ${{ needs.setup.outputs.version }}"
|
git commit -m "dcr-bin ${{ needs.setup.outputs.version }}"
|
||||||
git push -u origin master
|
git push -u origin master
|
||||||
|
|
||||||
|
# ── Arch User Repository (dcr-dev) ────────────────────────────────
|
||||||
|
publish-aur-dev:
|
||||||
|
if: ${{ (github.event_name == 'push' && needs.setup.outputs.prerelease == 'true') || github.event.inputs.run_aur_dev == 'true' }}
|
||||||
|
needs: [setup]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: aur
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Derive checksum
|
||||||
|
id: meta
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
SRC_URL="https://github.com/dexoron/dcr/archive/refs/tags/${{ needs.setup.outputs.tag }}.tar.gz"
|
||||||
|
SHA256="$(curl -fsSL "$SRC_URL" | sha256sum | awk '{print $1}')"
|
||||||
|
echo "source_url=$SRC_URL" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "sha256=$SHA256" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Render AUR metadata
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
PKGVER_ORIG='${{ needs.setup.outputs.version }}'
|
||||||
|
PKGVER_CLEAN='${{ needs.setup.outputs.clean_version }}'
|
||||||
|
SRC_URL='${{ steps.meta.outputs.source_url }}'
|
||||||
|
SHA256='${{ steps.meta.outputs.sha256 }}'
|
||||||
|
|
||||||
|
mkdir -p packages/aur/dcr-dev
|
||||||
|
cat > packages/aur/dcr-dev/PKGBUILD <<PKG
|
||||||
|
pkgname=dcr-dev
|
||||||
|
pkgver=${PKGVER_CLEAN}
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Cargo-like utility to manage C/C++ projects (development release)"
|
||||||
|
arch=('x86_64' 'aarch64')
|
||||||
|
url="https://github.com/dexoron/dcr"
|
||||||
|
license=('GPL-3.0-or-later')
|
||||||
|
depends=('gcc-libs')
|
||||||
|
makedepends=('cargo')
|
||||||
|
options=('!lto')
|
||||||
|
provides=('dcr')
|
||||||
|
conflicts=('dcr')
|
||||||
|
optdepends=(
|
||||||
|
'gcc: build C/C++ projects with GCC'
|
||||||
|
'clang: build C/C++ projects with Clang'
|
||||||
|
)
|
||||||
|
source=("\$pkgname-\$pkgver.tar.gz::${SRC_URL}")
|
||||||
|
sha256sums=('${SHA256}')
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cd "\$srcdir/dcr-${PKGVER_ORIG}"
|
||||||
|
unset CFLAGS CXXFLAGS LDFLAGS
|
||||||
|
export RUSTFLAGS="-C linker=cc"
|
||||||
|
cargo build --release --locked
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd "\$srcdir/dcr-${PKGVER_ORIG}"
|
||||||
|
install -Dm755 "target/release/dcr" "\$pkgdir/usr/bin/dcr"
|
||||||
|
install -Dm644 LICENSE "\$pkgdir/usr/share/licenses/\$pkgname/LICENSE"
|
||||||
|
}
|
||||||
|
PKG
|
||||||
|
|
||||||
|
cat > packages/aur/dcr-dev/.SRCINFO <<SRC
|
||||||
|
pkgbase = dcr-dev
|
||||||
|
pkgdesc = Cargo-like utility to manage C/C++ projects (development release)
|
||||||
|
pkgver = ${PKGVER_CLEAN}
|
||||||
|
pkgrel = 1
|
||||||
|
url = https://github.com/dexoron/dcr
|
||||||
|
arch = x86_64
|
||||||
|
arch = aarch64
|
||||||
|
license = GPL-3.0-or-later
|
||||||
|
makedepends = cargo
|
||||||
|
depends = gcc-libs
|
||||||
|
provides = dcr
|
||||||
|
conflicts = dcr
|
||||||
|
optdepends = gcc: build C/C++ projects with GCC
|
||||||
|
optdepends = clang: build C/C++ projects with Clang
|
||||||
|
options = !lto
|
||||||
|
source = dcr-${PKGVER_CLEAN}.tar.gz::${SRC_URL}
|
||||||
|
sha256sums = ${SHA256}
|
||||||
|
|
||||||
|
pkgname = dcr-dev
|
||||||
|
SRC
|
||||||
|
|
||||||
|
- name: Push to AUR
|
||||||
|
env:
|
||||||
|
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
||||||
|
AUR_PACKAGE: dcr-dev
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
install -d -m 700 ~/.ssh
|
||||||
|
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > ~/.ssh/aur
|
||||||
|
chmod 600 ~/.ssh/aur
|
||||||
|
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
export GIT_SSH_COMMAND='ssh -i ~/.ssh/aur -o IdentitiesOnly=yes'
|
||||||
|
|
||||||
|
mkdir -p aur-repo
|
||||||
|
cd aur-repo
|
||||||
|
git init
|
||||||
|
git remote add origin "ssh://aur@aur.archlinux.org/${AUR_PACKAGE}.git"
|
||||||
|
|
||||||
|
git fetch origin master || true
|
||||||
|
git checkout master || git checkout -b master
|
||||||
|
|
||||||
|
cp ../packages/aur/dcr-dev/PKGBUILD .
|
||||||
|
cp ../packages/aur/dcr-dev/.SRCINFO .
|
||||||
|
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||||
|
if git diff --quiet; then
|
||||||
|
echo "No AUR changes"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
git add PKGBUILD .SRCINFO
|
||||||
|
git commit -m "dcr-dev ${{ needs.setup.outputs.version }}"
|
||||||
|
git push -u origin master
|
||||||
|
|
||||||
|
# ── Arch User Repository (dcr-dev-bin) ────────────────────────────
|
||||||
|
publish-aur-dev-bin:
|
||||||
|
if: ${{ (github.event_name == 'push' && needs.setup.outputs.prerelease == 'true') || github.event.inputs.run_aur_dev == 'true' }}
|
||||||
|
needs: [setup, build-linux]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: aur
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Derive checksum
|
||||||
|
id: meta
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
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 }}"
|
||||||
|
SHA256="$(curl -fsSL "$BIN_URL" | sha256sum | awk '{print $1}')"
|
||||||
|
echo "bin_url=$BIN_URL" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "sha256=$SHA256" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Render AUR Metadata
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
PKGVER_ORIG='${{ needs.setup.outputs.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
|
||||||
|
cat > packages/aur/dcr-dev-bin/PKGBUILD <<PKG
|
||||||
|
pkgname=dcr-dev-bin
|
||||||
|
pkgver=${PKGVER_CLEAN}
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Cargo-like utility to manage C/C++ projects (pre-compiled musl binary dev release)"
|
||||||
|
arch=('x86_64')
|
||||||
|
url="https://github.com/dexoron/dcr"
|
||||||
|
license=('GPL-3.0-or-later')
|
||||||
|
provides=('dcr')
|
||||||
|
conflicts=('dcr')
|
||||||
|
optdepends=(
|
||||||
|
'gcc: build C/C++ projects with GCC'
|
||||||
|
'clang: build C/C++ projects with Clang'
|
||||||
|
)
|
||||||
|
source_x86_64=("dcr-\$pkgver::${BIN_URL}")
|
||||||
|
sha256sums_x86_64=('${SHA256}')
|
||||||
|
|
||||||
|
package() {
|
||||||
|
install -Dm755 "\$srcdir/dcr-\$pkgver" "\$pkgdir/usr/bin/dcr"
|
||||||
|
}
|
||||||
|
PKG
|
||||||
|
|
||||||
|
cat > packages/aur/dcr-dev-bin/.SRCINFO <<SRC
|
||||||
|
pkgbase = dcr-dev-bin
|
||||||
|
pkgdesc = Cargo-like utility to manage C/C++ projects (pre-compiled musl binary dev release)
|
||||||
|
pkgver = ${PKGVER_CLEAN}
|
||||||
|
pkgrel = 1
|
||||||
|
url = https://github.com/dexoron/dcr
|
||||||
|
arch = x86_64
|
||||||
|
license = GPL-3.0-or-later
|
||||||
|
provides = dcr
|
||||||
|
conflicts = dcr
|
||||||
|
optdepends = gcc: build C/C++ projects with GCC
|
||||||
|
optdepends = clang: build C/C++ projects with Clang
|
||||||
|
source_x86_64 = dcr-${PKGVER_CLEAN}::${BIN_URL}
|
||||||
|
sha256sums_x86_64 = ${SHA256}
|
||||||
|
|
||||||
|
pkgname = dcr-dev-bin
|
||||||
|
SRC
|
||||||
|
|
||||||
|
- name: Push to AUR
|
||||||
|
env:
|
||||||
|
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
||||||
|
AUR_PACKAGE: dcr-dev-bin
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
install -d -m 700 ~/.ssh
|
||||||
|
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > ~/.ssh/aur
|
||||||
|
chmod 600 ~/.ssh/aur
|
||||||
|
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
export GIT_SSH_COMMAND='ssh -i ~/.ssh/aur -o IdentitiesOnly=yes'
|
||||||
|
|
||||||
|
mkdir -p aur-repo
|
||||||
|
cd aur-repo
|
||||||
|
git init
|
||||||
|
git remote add origin "ssh://aur@aur.archlinux.org/${AUR_PACKAGE}.git"
|
||||||
|
|
||||||
|
git fetch origin master || true
|
||||||
|
git checkout master || git checkout -b master
|
||||||
|
|
||||||
|
cp ../packages/aur/dcr-dev-bin/PKGBUILD .
|
||||||
|
cp ../packages/aur/dcr-dev-bin/.SRCINFO .
|
||||||
|
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||||
|
if git diff --quiet; then
|
||||||
|
echo "No AUR changes"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
git add PKGBUILD .SRCINFO
|
||||||
|
git commit -m "dcr-dev-bin ${{ needs.setup.outputs.version }}"
|
||||||
|
git push -u origin master
|
||||||
|
|
||||||
# ── crates.io ──────────────────────────────────────────────────────────────
|
# ── crates.io ──────────────────────────────────────────────────────────────
|
||||||
publish-crates:
|
publish-crates:
|
||||||
if: |
|
if: |
|
||||||
|
|||||||
1
packaging/aur/dcr-dev-git
Submodule
1
packaging/aur/dcr-dev-git
Submodule
Submodule packaging/aur/dcr-dev-git added at 93bdce858b
Reference in New Issue
Block a user