1password-beta
This commit is contained in:
13 files changed
+174
-261
No files matched your search
@@ -0,0 +1,40 @@
|
||||
# 1Password Beta - aarch64 Support
|
||||
|
||||
## Overview
|
||||
|
||||
`post-sync.sh` adds aarch64 (ARM64) support to the AUR `1password-beta` PKGBUILD after each sync.
|
||||
|
||||
This is implemented as a dynamic sync hook instead of a static patch because the aarch64 checksums include the current upstream version and need to be refreshed whenever AUR updates `_tarver`.
|
||||
|
||||
## Background
|
||||
|
||||
1Password officially provides ARM64 builds for Linux:
|
||||
|
||||
- https://downloads.1password.com/linux/tar/beta/aarch64/
|
||||
- https://downloads.1password.com/linux/tar/stable/aarch64/
|
||||
|
||||
The AUR PKGBUILD only supports x86_64.
|
||||
|
||||
## Changes Made
|
||||
|
||||
1. Adds aarch64 to the arch array: `arch=('x86_64' 'aarch64')`
|
||||
2. Uses architecture-specific source arrays:
|
||||
- x86_64: `.x64.tar.gz`
|
||||
- aarch64: `.arm64.tar.gz`
|
||||
3. Keeps the AUR x86_64 checksums
|
||||
4. Downloads and calculates current aarch64 checksums during sync
|
||||
5. Uses `${_archdir}` for source directory names instead of hardcoded `.x64`
|
||||
6. Updates `.SRCINFO` to match the rewritten PKGBUILD
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
bin/sync-aur 1password-beta
|
||||
bin/repo build --arch aarch64 --package 1password-beta
|
||||
```
|
||||
|
||||
The aarch64 build should download from:
|
||||
|
||||
```text
|
||||
https://downloads.1password.com/linux/tar/beta/aarch64/1password-<version>.arm64.tar.gz
|
||||
```
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"source": "aur",
|
||||
"release_ring": "fast"
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# Keep the AUR x86_64 checksums and add aarch64 sources. The aarch64
|
||||
# artifacts are signed by 1Password's validpgpkeys, so we skip checksums there
|
||||
# instead of baking version-specific hashes into Omarchy metadata.
|
||||
set +u
|
||||
CARCH=x86_64 source PKGBUILD
|
||||
set -u
|
||||
|
||||
if declare -p sha256sums >/dev/null 2>&1 && [[ ${#sha256sums[@]} -ge 2 ]]; then
|
||||
x86_sums=("${sha256sums[@]}")
|
||||
elif declare -p sha256sums_x86_64 >/dev/null 2>&1 && [[ ${#sha256sums_x86_64[@]} -ge 2 ]]; then
|
||||
x86_sums=("${sha256sums_x86_64[@]}")
|
||||
else
|
||||
echo "Unable to read x86_64 checksums from PKGBUILD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sha256_from_url() {
|
||||
curl -fsSL "$1" | sha256sum | awk '{ print $1 }'
|
||||
}
|
||||
|
||||
arm_url="https://downloads.1password.com/linux/tar/beta/aarch64/1password-${_tarver}.arm64.tar.gz"
|
||||
arm_tar_sum=$(sha256_from_url "$arm_url")
|
||||
arm_sig_sum=$(sha256_from_url "$arm_url.sig")
|
||||
|
||||
emit_archdir() {
|
||||
cat <<'EOF'
|
||||
case "${CARCH}" in
|
||||
x86_64)
|
||||
_archdir="x64"
|
||||
;;
|
||||
aarch64)
|
||||
_archdir="arm64"
|
||||
;;
|
||||
esac
|
||||
EOF
|
||||
}
|
||||
|
||||
emit_sources() {
|
||||
cat <<EOF
|
||||
source=()
|
||||
sha256sums=()
|
||||
source_x86_64=(https://downloads.1password.com/linux/tar/beta/x86_64/1password-\${_tarver}.x64.tar.gz{,.sig})
|
||||
source_aarch64=(https://downloads.1password.com/linux/tar/beta/aarch64/1password-\${_tarver}.arm64.tar.gz{,.sig})
|
||||
sha256sums_x86_64=('${x86_sums[0]}'
|
||||
'${x86_sums[1]}')
|
||||
sha256sums_aarch64=('$arm_tar_sum'
|
||||
'$arm_sig_sum')
|
||||
EOF
|
||||
}
|
||||
|
||||
tmpfile=$(mktemp)
|
||||
skip_checksums=false
|
||||
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
if [[ "$skip_checksums" == true ]]; then
|
||||
[[ "$line" == ")" ]] && skip_checksums=false
|
||||
continue
|
||||
fi
|
||||
|
||||
case "$line" in
|
||||
'_tar="1password-${_tarver}.x64.tar.gz"')
|
||||
emit_archdir >> "$tmpfile"
|
||||
;;
|
||||
"arch=('x86_64')")
|
||||
echo "arch=('x86_64' 'aarch64')" >> "$tmpfile"
|
||||
;;
|
||||
source=\(*)
|
||||
emit_sources >> "$tmpfile"
|
||||
;;
|
||||
sha256sums=\(*)
|
||||
[[ "$line" == *")" ]] || skip_checksums=true
|
||||
;;
|
||||
*)
|
||||
line=${line//1password-\$\{_tarver\}.x64/1password-\$\{_tarver\}.\$\{_archdir\}}
|
||||
printf '%s\n' "$line" >> "$tmpfile"
|
||||
;;
|
||||
esac
|
||||
done < PKGBUILD
|
||||
|
||||
mv "$tmpfile" PKGBUILD
|
||||
Reference in new issue
Block a user