mirror of
https://seed.radicle.dev/rad:z4D5UCArafTzTQpDZNQRuqswh3ury.git
synced 2026-10-18 19:10:45 +08:00
Remove Arch Linux packaging from release scripts
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "arch/**"
|
||||
push:
|
||||
paths:
|
||||
- "arch/**"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
build-arch:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: archlinux:base-devel
|
||||
options: --user root
|
||||
|
||||
steps:
|
||||
- name: Install pre-requisites
|
||||
run: pacman -Sy --noconfirm git radicle
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Set up builder user
|
||||
run: |
|
||||
useradd -m builder
|
||||
echo 'builder ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/builder
|
||||
chown -R builder:builder "$GITHUB_WORKSPACE"
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: /home/builder/.cargo/registry
|
||||
key: arch-cargo-${{ hashFiles('arch/radicle-desktop/PKGBUILD') }}
|
||||
restore-keys: arch-cargo-
|
||||
|
||||
- name: Check .SRCINFO is up-to-date
|
||||
run: |
|
||||
cd arch/radicle-desktop
|
||||
sudo -u builder makepkg --printsrcinfo > .SRCINFO
|
||||
sudo -u builder git -C "$GITHUB_WORKSPACE" diff --exit-code arch/radicle-desktop/.SRCINFO
|
||||
|
||||
- name: Build package
|
||||
run: |
|
||||
sudo -u builder env \
|
||||
CI=true \
|
||||
BUILDDIR=/home/builder/build \
|
||||
PKGDEST=/home/builder \
|
||||
SRCDEST=/home/builder \
|
||||
makepkg --dir "$GITHUB_WORKSPACE/arch/radicle-desktop" \
|
||||
--syncdeps --noconfirm --force
|
||||
@@ -1,5 +1,3 @@
|
||||
arch/radicle-desktop
|
||||
arch/radicle-desktop.git
|
||||
crates
|
||||
*.md
|
||||
*.lock
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
radicle-desktop.git
|
||||
@@ -1,37 +0,0 @@
|
||||
# Packaging for Arch Linux
|
||||
|
||||
This folder contains the `PKGBUILD` script for building the `radicle-desktop`
|
||||
Arch Linux package.
|
||||
|
||||
## Arch User Repository
|
||||
|
||||
This folder is mirrored to the Arch User Repository as
|
||||
[`radicle-desktop`][aur-pkg] so user can install it from there.
|
||||
|
||||
Whenever a change is made to the `radicle-desktop` folder it can be synched to
|
||||
the AUR using the `./publish.sh <COMMIT_MSG>` script.
|
||||
|
||||
Before you push any changes, make sure that the package builds properly, see
|
||||
“Build QA” below.
|
||||
|
||||
You need to be a maintainer of the `radicle-desktop` to be allowed to push
|
||||
changes. To become a maintainer ask one of the existing maintainers to add you.
|
||||
|
||||
## Build QA
|
||||
|
||||
There is a [Woodpecker CI workflow][workflow] to ensure that the package builds
|
||||
correctly on Arch Linux.
|
||||
|
||||
You can run the workflow locally.
|
||||
|
||||
```bash
|
||||
woodpecker-cli \
|
||||
exec .woodpecker/build-arch.yaml \
|
||||
--repo-path . \
|
||||
--volumes paccache:/var/cache/pacman,builder:/home/builder
|
||||
```
|
||||
|
||||
Using `--volumes` is optional and improves caching between multiple runs.
|
||||
|
||||
[aur-pkg]: https://aur.archlinux.org/packages/radicle-desktop
|
||||
[workflow]: ../.woodpecker/build-arch.yaml
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
exec docker run \
|
||||
--user 1000 \
|
||||
--rm --volume "$(pwd)/radicle-desktop:/workdir:ro" \
|
||||
--env BUILDDIR=/tmp \
|
||||
--env PKGDEST=/tmp \
|
||||
--env SRCDEST=/tmp \
|
||||
--workdir /workdir \
|
||||
--platform linux/amd64 \
|
||||
archlinux:base-devel makepkg --printsrcinfo > radicle-desktop/.SRCINFO
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
push=true
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--no-push)
|
||||
push=false
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
commit_message="$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z "${commit_message:-}" ]]; then
|
||||
echo "Please provide a commit message as an argument: $0 [--no-push] \"Release vX.Y.Z\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d radicle-desktop.git ]]; then
|
||||
git clone ssh://aur@aur.archlinux.org/radicle-desktop.git radicle-desktop.git
|
||||
fi
|
||||
|
||||
pushd radicle-desktop.git >/dev/null
|
||||
export GIT_PAGER=""
|
||||
git checkout master --force
|
||||
git pull
|
||||
cp -a \
|
||||
../radicle-desktop/PKGBUILD \
|
||||
../radicle-desktop/.SRCINFO \
|
||||
../radicle-desktop/.gitignore \
|
||||
.
|
||||
git diff
|
||||
git commit --all --message "$commit_message"
|
||||
if [[ "$push" == true ]]; then
|
||||
git push
|
||||
fi
|
||||
popd >/dev/null
|
||||
@@ -1,32 +0,0 @@
|
||||
pkgbase = radicle-desktop
|
||||
pkgdesc = Radicle desktop app
|
||||
pkgver = 0.16.0
|
||||
pkgrel = 1
|
||||
url = https://radicle.dev/
|
||||
arch = x86_64
|
||||
license = GPL-3.0-only
|
||||
makedepends = git
|
||||
makedepends = openssl
|
||||
makedepends = appmenu-gtk-module
|
||||
makedepends = libappindicator-gtk3
|
||||
makedepends = librsvg
|
||||
makedepends = cargo
|
||||
makedepends = npm
|
||||
makedepends = nodejs
|
||||
depends = radicle-node
|
||||
depends = cairo
|
||||
depends = desktop-file-utils
|
||||
depends = gdk-pixbuf2
|
||||
depends = glib2
|
||||
depends = gtk3
|
||||
depends = hicolor-icon-theme
|
||||
depends = libsoup3
|
||||
depends = pango
|
||||
depends = webkit2gtk-4.1
|
||||
options = !strip
|
||||
options = !emptydirs
|
||||
options = !lto
|
||||
source = radicle-desktop::git+https://seed.radicle.dev/z4D5UCArafTzTQpDZNQRuqswh3ury.git#commit=06a84ebc14feed96243797ab219d9ac85d05d9c7
|
||||
sha256sums = SKIP
|
||||
|
||||
pkgname = radicle-desktop
|
||||
@@ -1,3 +0,0 @@
|
||||
/src
|
||||
/pkg
|
||||
/radicle-desktop
|
||||
@@ -1,56 +0,0 @@
|
||||
# Maintainer: Thomas Scholtes <geigerzaehler@axiom.fm>
|
||||
#
|
||||
# shellcheck shell=bash disable=SC2034 disable=SC2154 disable=SC2164
|
||||
|
||||
_commit=06a84ebc14feed96243797ab219d9ac85d05d9c7
|
||||
pkgname=radicle-desktop
|
||||
pkgver='0.16.0'
|
||||
pkgrel='1'
|
||||
pkgdesc='Radicle desktop app'
|
||||
arch=('x86_64')
|
||||
url='https://radicle.dev/'
|
||||
license=('GPL-3.0-only')
|
||||
depends=(
|
||||
'radicle-node'
|
||||
# See https://v2.tauri.app/distribute/aur/#building-from-source
|
||||
'cairo'
|
||||
'desktop-file-utils'
|
||||
'gdk-pixbuf2'
|
||||
'glib2'
|
||||
'gtk3'
|
||||
'hicolor-icon-theme'
|
||||
'libsoup3'
|
||||
'pango'
|
||||
'webkit2gtk-4.1'
|
||||
)
|
||||
makedepends=(
|
||||
# See https://v2.tauri.app/distribute/aur/#building-from-source
|
||||
'git'
|
||||
'openssl'
|
||||
'appmenu-gtk-module'
|
||||
'libappindicator-gtk3'
|
||||
'librsvg'
|
||||
'cargo'
|
||||
'npm'
|
||||
'nodejs'
|
||||
)
|
||||
options=('!strip' '!emptydirs' '!lto')
|
||||
source=("$pkgname::git+https://seed.radicle.dev/z4D5UCArafTzTQpDZNQRuqswh3ury.git#commit=$_commit")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname"
|
||||
|
||||
npm install
|
||||
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$pkgname"
|
||||
|
||||
npx tauri build --bundles deb
|
||||
}
|
||||
|
||||
package() {
|
||||
cp -a $pkgname/target/release/bundle/deb/${pkgname}_${pkgver}_*/data/* "${pkgdir}"
|
||||
}
|
||||
@@ -6,8 +6,8 @@
|
||||
no way to set the two independently (https://github.com/tauri-apps/tauri/issues/13999,
|
||||
still open). We override `productName` to "radicle-desktop" in
|
||||
tauri.linux.conf.json so the package and its artifacts are named
|
||||
"radicle-desktop" (the Arch PKGBUILD also globs on that name). The cost is
|
||||
that the launcher/menu entry would otherwise read "radicle-desktop" too.
|
||||
"radicle-desktop". The cost is that the launcher/menu entry would otherwise
|
||||
read "radicle-desktop" too.
|
||||
|
||||
This template is Tauri's built-in default with a single change: `Name` is
|
||||
hardcoded to "Radicle" instead of `{{name}}`, so the app shows as "Radicle"
|
||||
|
||||
@@ -160,7 +160,6 @@ export default [
|
||||
},
|
||||
{
|
||||
ignores: [
|
||||
"arch",
|
||||
"build/*",
|
||||
"isolation/*",
|
||||
"node_modules/**/*",
|
||||
|
||||
+8
-53
@@ -13,7 +13,6 @@
|
||||
# scripts/release --phase build
|
||||
# scripts/release --phase apt
|
||||
# scripts/release --phase publish
|
||||
# scripts/release --phase arch
|
||||
# scripts/release --phase tag
|
||||
#
|
||||
# scripts/release --list List the phases in order
|
||||
@@ -39,11 +38,10 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
|
||||
TAURI_CONF="$PROJECT_DIR/crates/radicle-tauri/tauri.conf.json"
|
||||
PKGBUILD="$PROJECT_DIR/arch/radicle-desktop/PKGBUILD"
|
||||
CHANGELOG="$PROJECT_DIR/CHANGELOG.md"
|
||||
APT_REPO_DIR="$(cd "$PROJECT_DIR/../radicle-apt-repo" 2>/dev/null && pwd || true)"
|
||||
|
||||
PHASES=(prep build apt publish arch tag)
|
||||
PHASES=(prep build apt publish tag)
|
||||
|
||||
# ---- Output helpers ----
|
||||
|
||||
@@ -86,36 +84,14 @@ run() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Like run(), but for a command that must run in directory $1.
|
||||
run_sh() {
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
printf ' [dry-run] (cd %s && %s)\n' "$1" "${*:2}"
|
||||
else
|
||||
( cd "$1" && "${@:2}" )
|
||||
fi
|
||||
}
|
||||
|
||||
# Abort on a missing prerequisite — but only warn under --dry-run, so later
|
||||
# phases can still be previewed without their inputs present.
|
||||
fail() {
|
||||
if [[ "$DRY_RUN" == true ]]; then warn "$*"; else die "$*"; fi
|
||||
}
|
||||
|
||||
# generate-srcinfo.sh needs a running Docker daemon. Check it before prep
|
||||
# mutates anything, so a docker-down situation fails cleanly. Skipped under
|
||||
# --dry-run, where the Docker step only prints.
|
||||
docker_available() { command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; }
|
||||
podman_available() { command -v podman >/dev/null 2>&1 && podman info >/dev/null 2>&1; }
|
||||
|
||||
require_docker() {
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
docker_available || warn "Docker is not available (a real run needs it to regenerate .SRCINFO)"
|
||||
return 0
|
||||
fi
|
||||
command -v docker >/dev/null 2>&1 || die "docker not found (needed to regenerate .SRCINFO)"
|
||||
docker info >/dev/null 2>&1 || die "Docker daemon is not running — start Docker and re-run"
|
||||
}
|
||||
|
||||
# build-artifacts enforces a running Podman itself on a real build. This mirror
|
||||
# only surfaces it under --dry-run (build-artifacts isn't executed then), so the
|
||||
# preview reports a down/absent Podman too.
|
||||
@@ -168,10 +144,9 @@ conf_version() {
|
||||
jq -r '.version' "$TAURI_CONF"
|
||||
}
|
||||
|
||||
# The SHA of the arch-package commit for $1, looked up by its commit subject.
|
||||
# This is the second commit of the release patch (its tip) and the one we tag.
|
||||
arch_commit_sha() {
|
||||
git -C "$PROJECT_DIR" log --grep="^Update arch package to v$1\$" -1 --format=%H
|
||||
# The SHA of the release commit for $1, looked up by its commit subject.
|
||||
release_commit_sha() {
|
||||
git -C "$PROJECT_DIR" log --grep="^Release v$1\$" -1 --format=%H
|
||||
}
|
||||
|
||||
# ---- Phases ----
|
||||
@@ -179,7 +154,6 @@ arch_commit_sha() {
|
||||
phase_prep() {
|
||||
local version="$1"
|
||||
[[ -n "$version" ]] || die "prep requires --version X.Y.Z"
|
||||
require_docker
|
||||
|
||||
step "Preparing release v$version"
|
||||
|
||||
@@ -226,13 +200,6 @@ phase_prep() {
|
||||
sha="$(git -C "$PROJECT_DIR" rev-parse HEAD)"
|
||||
info "Release commit: $sha"
|
||||
|
||||
step "Updating Arch package to v$version"
|
||||
run sed -i '' -E "s/^_commit=.*/_commit=$sha/" "$PKGBUILD"
|
||||
run sed -i '' -E "s/^pkgver=.*/pkgver='$version'/" "$PKGBUILD"
|
||||
run_sh "$PROJECT_DIR/arch" ./generate-srcinfo.sh
|
||||
run git -C "$PROJECT_DIR" add arch/radicle-desktop/.SRCINFO arch/radicle-desktop/PKGBUILD
|
||||
run git -C "$PROJECT_DIR" commit -m "Update arch package to v$version"
|
||||
|
||||
step "Pushing Release Patch"
|
||||
if confirm "Push the Release Patch now (git push rad HEAD:refs/patches)?"; then
|
||||
run git -C "$PROJECT_DIR" push rad HEAD:refs/patches
|
||||
@@ -328,17 +295,6 @@ phase_publish() {
|
||||
step "Published"
|
||||
info "https://$FILES_HOST/releases/radicle-desktop/$version/"
|
||||
info "latest now resolves to $version (update checker reads latest/latest.json)."
|
||||
next "scripts/release --phase arch"
|
||||
}
|
||||
|
||||
phase_arch() {
|
||||
local version
|
||||
version="$(conf_version)"
|
||||
step "Publishing the Arch package to the AUR"
|
||||
run_sh "$PROJECT_DIR/arch" ./publish.sh "Release v$version"
|
||||
|
||||
step "AUR package pushed"
|
||||
info "Verify the version at https://aur.archlinux.org/packages/radicle-desktop"
|
||||
next "scripts/release --phase tag"
|
||||
}
|
||||
|
||||
@@ -348,11 +304,11 @@ phase_tag() {
|
||||
step "Tagging canonical release v$version"
|
||||
|
||||
local sha
|
||||
sha="$(arch_commit_sha "$version")"
|
||||
[[ -n "$sha" ]] || fail "could not find the 'Update arch package to v$version' commit (is the patch merged into main?)"
|
||||
info "Tagging commit: ${sha:-<arch-commit-sha>}"
|
||||
sha="$(release_commit_sha "$version")"
|
||||
[[ -n "$sha" ]] || fail "could not find the 'Release v$version' commit (is the patch merged into main?)"
|
||||
info "Tagging commit: ${sha:-<release-commit-sha>}"
|
||||
|
||||
run git -C "$PROJECT_DIR" tag "releases/$version" "${sha:-<arch-commit-sha>}" -m "Release $version"
|
||||
run git -C "$PROJECT_DIR" tag "releases/$version" "${sha:-<release-commit-sha>}" -m "Release $version"
|
||||
run git -C "$PROJECT_DIR" push rad --tags
|
||||
run rad sync
|
||||
|
||||
@@ -426,7 +382,6 @@ main() {
|
||||
build) phase_build ;;
|
||||
apt) phase_apt ;;
|
||||
publish) phase_publish ;;
|
||||
arch) phase_arch ;;
|
||||
tag) phase_tag ;;
|
||||
*) die "Unknown phase: $phase (try --list)" ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user