Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff38c61e10 | ||
|
|
ef3af9f483 | ||
|
|
89206f1cd5 | ||
|
|
e509576181 |
No files matched your search
@@ -26,6 +26,8 @@ users don't need any build dependencies.
|
||||
| `fluxer-bin` | [fluxer.app](https://fluxer.app) — Fluxer desktop client (Electron) | [fluxer-bin](https://aur.archlinux.org/packages/fluxer-bin) |
|
||||
| `chromium-widevine-helper-bin` | [GloriousEggroll/chromium-widevine-helper](https://github.com/GloriousEggroll/chromium-widevine-helper) — extension + native helper installing Google's Widevine CDM into Chromium-based browser profiles | [chromium-widevine-helper-bin](https://aur.archlinux.org/packages/chromium-widevine-helper-bin) |
|
||||
| `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) |
|
||||
| `thonny-bin` | [thonny/thonny](https://github.com/thonny/thonny) — Python IDE for beginners (bundles a standalone CPython + tcl/tk) | [thonny-bin](https://aur.archlinux.org/packages/thonny-bin) |
|
||||
| `gearlever-bin` | [mijorus/gearlever](https://github.com/mijorus/gearlever) — "Gear Lever", a GTK4 + LibAdwaita AppImage manager | [gearlever-bin](https://aur.archlinux.org/packages/gearlever-bin) |
|
||||
|
||||
## Setup (one-time)
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
pkgbase = gearlever-bin
|
||||
pkgdesc = Manage AppImages with ease (prebuilt)
|
||||
pkgver = 4.6.2
|
||||
pkgrel = 1
|
||||
url = https://gearlever.mijorus.it
|
||||
arch = any
|
||||
license = GPL-3.0-or-later
|
||||
depends = gtk4
|
||||
depends = libadwaita
|
||||
depends = glib2
|
||||
depends = dconf
|
||||
depends = hicolor-icon-theme
|
||||
depends = python
|
||||
depends = python-gobject
|
||||
depends = python-dbus
|
||||
depends = python-requests
|
||||
depends = python-pyxdg
|
||||
depends = python-ftputil
|
||||
depends = python-desktop-entry-lib
|
||||
depends = 7zip
|
||||
depends = binutils
|
||||
depends = squashfs-tools
|
||||
depends = fuse2
|
||||
optdepends = dwarfs: extract AppImages that use a DwarFS filesystem
|
||||
optdepends = libxml2-legacy: required by the LibreOffice AppImage
|
||||
provides = gearlever
|
||||
conflicts = gearlever
|
||||
source = https://github.com/Felitendo/PKGBUILDS/releases/download/gearlever-bin-4.6.2/gearlever-bin-4.6.2.tar.zst
|
||||
sha256sums = 319841a5dffd942b6f3b86822ac4d9d52a5b4ee559ea03ee5c2a6318a5161546
|
||||
|
||||
pkgname = gearlever-bin
|
||||
@@ -0,0 +1,25 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=gearlever-bin
|
||||
pkgver=4.6.2
|
||||
pkgrel=1
|
||||
pkgdesc="Manage AppImages with ease (prebuilt)"
|
||||
arch=('any')
|
||||
url="https://gearlever.mijorus.it"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('gtk4' 'libadwaita' 'glib2' 'dconf' 'hicolor-icon-theme' 'python'
|
||||
'python-gobject' 'python-dbus' 'python-requests' 'python-pyxdg'
|
||||
'python-ftputil' 'python-desktop-entry-lib'
|
||||
'7zip' 'binutils' 'squashfs-tools' 'fuse2')
|
||||
optdepends=('dwarfs: extract AppImages that use a DwarFS filesystem'
|
||||
'libxml2-legacy: required by the LibreOffice AppImage')
|
||||
provides=('gearlever')
|
||||
conflicts=('gearlever')
|
||||
source=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('319841a5dffd942b6f3b86822ac4d9d52a5b4ee559ea03ee5c2a6318a5161546')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
# gearlever-bin - prebuilt package of https://github.com/mijorus/gearlever
|
||||
# ("Gear Lever", a GTK4 + LibAdwaita AppImage manager written in Python).
|
||||
#
|
||||
# Upstream only publishes a Flatpak bundle, so build_artifact() builds the
|
||||
# app from the release tarball and the resulting install tree is published as
|
||||
# a GitHub release asset of this repository, which the PKGBUILD then uses.
|
||||
|
||||
UPSTREAM_REPO="mijorus/gearlever"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(meson ninja glib2 glib2-devel python gettext)
|
||||
|
||||
latest_version() {
|
||||
# gh instead of curl: unauthenticated GitHub API calls are rate-limited on
|
||||
# shared CI runner IPs.
|
||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# build_artifact <version> <output-file>
|
||||
build_artifact() {
|
||||
local ver="$1" outfile="$2"
|
||||
local workdir destdir srctree
|
||||
workdir="$(mktemp -d)"
|
||||
destdir="$(mktemp -d)"
|
||||
|
||||
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
|
||||
srctree="$workdir/gearlever-$ver"
|
||||
|
||||
# Arch's 7zip package ships /usr/bin/7z, not the 7zz binary the Flatpak
|
||||
# bundles, and the ELF-offset helper lives in /usr/lib/gearlever instead of
|
||||
# somewhere on $PATH.
|
||||
sed -i -e 's/7zz/7z/g' \
|
||||
-e 's|get_appimage_offset|/usr/lib/gearlever/get_appimage_offset|g' \
|
||||
"$srctree/src/providers/AppImageProvider.py"
|
||||
|
||||
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
|
||||
meson install -C "$workdir/build" --destdir "$destdir"
|
||||
|
||||
install -Dm755 "$srctree/build-aux/get_appimage_offset.sh" \
|
||||
"$destdir/usr/lib/gearlever/get_appimage_offset"
|
||||
|
||||
# src/meson.build uses install_subdir('.'), which drags the meson.build
|
||||
# files themselves into the install tree.
|
||||
find "$destdir" -name meson.build -delete
|
||||
|
||||
# These caches are generated by pacman hooks; shipping them would cause
|
||||
# file conflicts on install.
|
||||
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
|
||||
"$destdir/usr/share/applications/mimeinfo.cache" \
|
||||
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
pkgbase = thonny-bin
|
||||
pkgdesc = Python IDE for beginners (prebuilt, with bundled Python runtime)
|
||||
pkgver = 5.0.0
|
||||
pkgrel = 1
|
||||
url = https://github.com/thonny/thonny
|
||||
arch = x86_64
|
||||
license = MIT
|
||||
depends = glibc
|
||||
depends = gcc-libs
|
||||
optdepends = libnotify: desktop notifications (dlopened by Tk)
|
||||
provides = thonny
|
||||
conflicts = thonny
|
||||
options = !strip
|
||||
source = https://github.com/Felitendo/PKGBUILDS/releases/download/thonny-bin-5.0.0/thonny-bin-5.0.0.tar.zst
|
||||
sha256sums = 7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5
|
||||
|
||||
pkgname = thonny-bin
|
||||
@@ -0,0 +1,24 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=thonny-bin
|
||||
pkgver=5.0.0
|
||||
pkgrel=1
|
||||
pkgdesc="Python IDE for beginners (prebuilt, with bundled Python runtime)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/thonny/thonny"
|
||||
license=('MIT')
|
||||
# The bundled standalone CPython (python-build-standalone) links everything
|
||||
# else - including tcl/tk 9 and its X11 client libraries - statically.
|
||||
depends=('glibc' 'gcc-libs')
|
||||
optdepends=('libnotify: desktop notifications (dlopened by Tk)')
|
||||
provides=('thonny')
|
||||
conflicts=('thonny')
|
||||
options=('!strip')
|
||||
source=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/opt" "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
# thonny-bin - Thonny (https://github.com/thonny/thonny), a Python IDE for
|
||||
# beginners.
|
||||
#
|
||||
# Since 5.0 upstream ships no prebuilt Linux bundle anymore - the official
|
||||
# installer script just creates a venv from the system Python and
|
||||
# pip-installs thonny plus a pinned set of extras. A venv tied to the system
|
||||
# Python would silently break on every Arch Python minor bump, so
|
||||
# build_artifact() instead bundles a relocatable standalone CPython
|
||||
# (astral-sh/python-build-standalone, tkinter included) into /opt/thonny-bin
|
||||
# and pip-installs into that, mirroring the dependency pins of upstream's
|
||||
# installer script. The install tree is published as a GitHub release asset
|
||||
# of this repository, which the PKGBUILD then uses.
|
||||
|
||||
UPSTREAM_REPO="thonny/thonny"
|
||||
|
||||
# Series of the bundled CPython; bump deliberately (thonny 5.x supports
|
||||
# Python 3.9-3.15).
|
||||
PYTHON_SERIES="3.13"
|
||||
|
||||
BUILD_DEPS=()
|
||||
|
||||
latest_version() {
|
||||
# gh instead of plain curl: authenticated API calls, so shared-IP rate
|
||||
# limits on the CI runners can't bite.
|
||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# build_artifact <version> <output-file>
|
||||
build_artifact() {
|
||||
local ver="$1" outfile="$2"
|
||||
local workdir root prefix py
|
||||
workdir="$(mktemp -d)"
|
||||
root="$workdir/root"
|
||||
prefix="$root/opt/thonny-bin"
|
||||
mkdir -p "$prefix"
|
||||
|
||||
gh release download -R astral-sh/python-build-standalone \
|
||||
--pattern "cpython-${PYTHON_SERIES}.*-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz" \
|
||||
--dir "$workdir"
|
||||
tar -xzf "$workdir"/cpython-*.tar.gz -C "$workdir"
|
||||
cp -a "$workdir/python/." "$prefix/"
|
||||
py="$prefix/bin/python3"
|
||||
|
||||
# Upstream's installer script is the authority on which extra packages
|
||||
# (and pins) belong to a release - parse its pip install line instead of
|
||||
# hardcoding a list that would go stale.
|
||||
curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/thonny-$ver.bash" \
|
||||
-o "$workdir/installer.bash"
|
||||
local extras=()
|
||||
mapfile -t extras < <(grep -m1 -- "-m pip install '" "$workdir/installer.bash" \
|
||||
| grep -oP "'[^']*'" | sed "s/^'//; s/'\$//")
|
||||
if [[ ${#extras[@]} -eq 0 ]]; then
|
||||
echo "thonny-bin: could not parse the extras list from the installer script" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
"$py" -m pip install --no-cache-dir --no-compile "${extras[@]}" "thonny==$ver"
|
||||
|
||||
# pip wrote the staging path into the script shebangs; point them at the
|
||||
# final install location.
|
||||
local f
|
||||
for f in "$prefix/bin/"*; do
|
||||
[[ -f "$f" && ! -L "$f" && "$(head -c 2 "$f")" == '#!' ]] || continue
|
||||
sed -i "1s|$prefix|/opt/thonny-bin|" "$f"
|
||||
done
|
||||
|
||||
# Precompile with the final paths recorded in the .pyc files - users can't
|
||||
# write __pycache__ under /opt at runtime. Some packages ship
|
||||
# intentionally uncompilable files, hence the || true.
|
||||
"$py" -m compileall -q -s "$root" "$prefix/lib" || true
|
||||
|
||||
local sitepkg
|
||||
sitepkg="$("$py" -c 'import os, thonny; print(os.path.dirname(thonny.__file__))')"
|
||||
|
||||
install -d "$root/usr/bin" "$root/usr/share/applications" \
|
||||
"$root/usr/share/pixmaps" "$root/usr/share/licenses/thonny-bin"
|
||||
ln -s /opt/thonny-bin/bin/thonny "$root/usr/bin/thonny"
|
||||
cp "$sitepkg/res/thonny.png" "$root/usr/share/pixmaps/thonny.png"
|
||||
curl -sfL "https://raw.githubusercontent.com/$UPSTREAM_REPO/v$ver/LICENSE.txt" \
|
||||
-o "$root/usr/share/licenses/thonny-bin/LICENSE.txt"
|
||||
|
||||
# Mirrors the launcher that upstream's installer script generates.
|
||||
cat > "$root/usr/share/applications/thonny.desktop" <<'EOF'
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Thonny
|
||||
GenericName=Python IDE
|
||||
Comment=Python IDE for beginners
|
||||
Exec=/opt/thonny-bin/bin/thonny %F
|
||||
Icon=thonny
|
||||
StartupWMClass=Thonny
|
||||
Terminal=false
|
||||
Categories=Development;IDE;
|
||||
Keywords=programming;education;
|
||||
MimeType=text/x-python;
|
||||
EOF
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$root" opt usr
|
||||
|
||||
rm -rf "$workdir"
|
||||
}
|
||||
Reference in new issue
Block a user