aports/testing/anki/APKBUILD
LN Liberda cf41c23ee6 testing/anki: enforce frozen yarn lockfile
--immutable is a yarn berry flag and is ignored in yarn classic.
2025-02-09 21:05:44 +00:00

154 lines
5.1 KiB
Text

# Contributor: Alexander Bocken <alexander@bocken.org>
# Maintainer: Frank Oltmanns <alpine@oltmanns.dev>
pkgname=anki
pkgver=24.11
pkgrel=1
# Remember to update the following lines when updating the pkgver
# 1. checkout the release tag
# 2. anki -> git rev-parse --short=8 $pkgver
# 3. ftl -> git submodule
_tags_ftl_core="e1545f7f0ddeb617eeb1ca86e82862e552843578"
_tags_ftl_desktop="e0f9724f75f6248f4e74558b25c3182d4f348bce"
_anki_commit="8e5efc59"
# This APKBUILD and the patches use the PKGBUILD for Anki 23.10 as
# a basis.
_caches_yarn="yarn-cache"
_caches_cargo="cargo-cache"
# For translations
_core_i18n_repo="anki-core-i18n"
_qtftl_i18n_repo="anki-desktop-ftl"
pkgdesc="flashcard program using spaced repetition"
url="https://apps.ankiweb.net/"
# py3-pyqt6-webengine is only available for
# - x86_64
# - aarch64
# - x86
# But upstream only supports 64-bit architectures:
arch="x86_64 aarch64"
license="AGPL-3.0-or-later"
options="!check net" # no test suite provided, cargo deps
# The makedepends and depends are copied from the PKGBUILD
# for 23.10 in the Arch User Repository, with the exception
# that libxcrypt-compat has been removed from that list.
makedepends="
bash
rsync
ninja
git
cargo
py3-installer
py3-wheel
nodejs
yarn
protoc
"
depends="
python3
py3-stringcase
py3-beautifulsoup4
py3-waitress
py3-requests
py3-decorator
py3-markdown
py3-orjson
py3-protobuf
py3-pysocks
py3-distro
py3-jsonschema
py3-send2trash
py3-certifi
py3-flask-cors
py3-qt6
py3-pyqt6-webengine
qt6-qtmultimedia
qt6-qtsvg
"
subpackages="$pkgname-pyc"
source="
anki-$pkgver.tar.gz::https://github.com/ankitects/anki/archive/refs/tags/$pkgver.tar.gz
anki-core-i18n-$_tags_ftl_core.tar.gz::https://github.com/ankitects/anki-core-i18n/archive/$_tags_ftl_core.tar.gz
anki-desktop-ftl-$_tags_ftl_desktop.tar.gz::https://github.com/ankitects/anki-desktop-ftl/archive/$_tags_ftl_desktop.tar.gz
no-update.patch
strip-formatter-deps.patch
strip-type-checking-deps.patch
"
prepare() {
default_prepare
# Notes:
# - The original PKGBUILD changes the optimization level to "3". Instead
# the APKBUILD sticks to upstream's optimization settings.
# - The original PKGBUILD changes the rust toolchain channel to
# "stable". Since, the APKBUILD doesn't use rustup, we can skip that.
# Build process wants .git/HEAD to be present. Workaround to be able to use tarballs.
mkdir -p out .git
touch .git/HEAD
echo "$_anki_commit" > out/buildhash # manually write the buildhash into out/buildhash to avoid git dependency in build
# place translations in build dir
rm -r ftl/core-repo ftl/qt-repo
mv "$srcdir"/anki-core-i18n-$_tags_ftl_core ftl/core-repo
mv "$srcdir"/anki-desktop-ftl-$_tags_ftl_desktop ftl/qt-repo
# fetch rust packages
export CARGO_HOME="$srcdir/$_caches_cargo" # do not litter in ~
cargo fetch --target="$CTARGET" --locked
# fetch node packages already in prepare()
export YARN_CACHE_FOLDER="$srcdir/$_caches_yarn" # do not litter in ~
yarn install --frozen-lockfile --modules-folder out/node_modules --ignore-scripts
ln -sf out/node_modules ./
# mask pip-sync as we provide dependencies ourselves
local venv="out/pyenv"
python -m venv --system-site-packages --without-pip "$venv"
printf '#!/bin/bash\nexit 0' > "$venv/bin/pip-sync"
chmod +x "$venv/bin/pip-sync"
}
build() {
export YARN_CACHE_FOLDER="$srcdir/$_caches_yarn" # do not litter in ~
#use local binaries instead of downloading them
export PYTHON_BINARY=$(which python)
export PROTOC_BINARY=$(which protoc)
export NODE_BINARY=$(which node)
export YARN_BINARY=$(which yarn)
export CARGO_HOME="$srcdir/$_caches_cargo" # do not litter in ~
export RELEASE=2 # anki-internal variable for optimization
# set to "1" for faster but less optimized build
export LDFLAGS="$LDFLAGS -fuse-ld=lld"
export OFFLINE_BUILD=1 # do not download anything, disables git update check
./ninja wheels
}
package() {
for file in out/wheels/*.whl; do
python -m installer --destdir="$pkgdir" $file
done
install -Dm644 qt/bundle/lin/anki.desktop "$pkgdir"/usr/share/applications/anki.desktop
install -Dm644 qt/bundle/lin/anki.png "$pkgdir"/usr/share/pixmaps/anki.png
}
sha512sums="
b3ca07e1fac4367ee2ec45911d6c4ba51cfe5a004d393ce1bdcaf677ab11dcf96e926108569f929aaf70326351b224042efeccfd98dd4533e1acd6cc60945690 anki-24.11.tar.gz
aeb24c9f39ccbaeaf524b343432f4748a6297cf04e3ad6673a7b6e090e6363949e3d26dbc1695551098fa997fc0dcbf63aca878ceac7d04683a75dc384f3fba6 anki-core-i18n-e1545f7f0ddeb617eeb1ca86e82862e552843578.tar.gz
e6bc5a8a6832a8dfd5d43684a196f340623402c77d071809aa51c2ac894f92f599d53f87b435fc009c684e28b5a5ab8ba4fbe6ca01f2576f4cb5fc773cb14ffd anki-desktop-ftl-e0f9724f75f6248f4e74558b25c3182d4f348bce.tar.gz
36c3bddb5de84f0f5eebe46b506b9723ecc80dd69281b3d2ffc9842fa2db181ececd8232ae0b3366bcfd5cb68a4d760abcadd3dada2a7ce2d2da26586a132e09 no-update.patch
f71b45b08b8f05d98faab3a88d7ba2847a948a12ca26c682d58541dc423ad72ae8aac5b34155472869ebbf195e5e5c488cfc4e640df7247c7674e5dfad053d60 strip-formatter-deps.patch
2c7d1ab46d81e65f22e63cb5af37daef27a78d348f240570f9250730d6b33311670876027fd1c54d4c69922c18a7458e82211cb232e98591e182ac11c49877db strip-type-checking-deps.patch
"