aboutsummaryrefslogtreecommitdiffstats
path: root/testing/anki/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'testing/anki/APKBUILD')
-rw-r--r--testing/anki/APKBUILD154
1 files changed, 142 insertions, 12 deletions
diff --git a/testing/anki/APKBUILD b/testing/anki/APKBUILD
index 71e93602432..fa352a278b6 100644
--- a/testing/anki/APKBUILD
+++ b/testing/anki/APKBUILD
@@ -1,25 +1,155 @@
-# Contributor: Frank Oltmanns <alpine@oltmanns.dev>
# Maintainer: Frank Oltmanns <alpine@oltmanns.dev>
+# Contributor: Alexander Bocken <alexander@bocken.org>
+
pkgname=anki
-pkgver=2.1.15
-pkgrel=0
+pkgver=23.12.1
+pkgrel=2
+# Remember to update the following lines when updating the pkgver
+# anki -> git rev-parse $pkgver --short=8
+# ftl -> git submodule
+_tags_ftl_core="fb301cc62da3b7a83b4ea266d9a2e70cfc1a8418"
+_tags_ftl_desktop="8c2191a7c797747cec767e3953bbbcc50acc5246"
+_anki_commit="c0f2fa48"
+
+# 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/"
-arch="noarch !armhf !mips !mips64 !ppc64le !s390x" # py3-qtwebengine unavailable for !archs
+
+# 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" # no test suite provided
-makedepends="bash xdg-utils perl"
-depends="py3-decorator py3-qt5 py3-qtwebengine py3-beautifulsoup4 py3-requests
- py3-send2trash py3-pyaudio py3-markdown py3-jsonschema py3-distro"
-subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://github.com/ankitects/anki/archive/2.1.15.tar.gz"
+# 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="
+ https://github.com/ankitects/anki/archive/$pkgver/anki-$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
+ disable-git-checks.patch
+ no-update.patch
+ strip-formatter-deps.patch
+ strip-type-checking-deps.patch
+ dprint-update-for-musl-aarch64.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
+ # (together with disable-git-checks.patch)
+ mkdir -p .git
+ touch .git/HEAD
+ sed -i "s/MY_REV/$_anki_commit/" build/runner/src/build.rs
+
+ # 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 --immutable --modules-folder out/node_modules
+ 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() {
- "$builddir"/tools/build_ui.sh
+ 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"
+ ./ninja wheels
}
package() {
- make DESTDIR="$pkgdir" install
+ 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="5bad99d9bfa10782f1d5b69437f45ea8b44d7a65ac1defe1169379f6ce29727c05af896934169c5222b37a4c1b6f3e05b6d10a3a152cc32cfec432fdf2e19b79 anki-2.1.15.tar.gz"
+sha512sums="
+076d3eba5db7dd4b8e00de9b69140a54f73c2e6ce52f46ddce9a6455a8ce7ae5d49bfb2fc60571d851d6b4948a08a0b3deb508aa37c7e79624b6273837a975a5 anki-23.12.1.tar.gz
+12e9187bda8f728d06a904fe21f3820aa2acad0e1924933d9db24f3879936b0a7b489934186fcab85440a40b974917ada729b5a7ec276ca2acea70b5c88caa5a anki-core-i18n-fb301cc62da3b7a83b4ea266d9a2e70cfc1a8418.tar.gz
+91c3609fa8ca67de2d520798acbb7200d310c4d587270143528a5c18ed341c7dd3b9ddc8d79fe1f44224e83dc06f12cdbcdcf2114969513cbd60e82950343373 anki-desktop-ftl-8c2191a7c797747cec767e3953bbbcc50acc5246.tar.gz
+60f2f37d4fc03d7c0681b2d6b9af17b2f7cd341ef6bd4504cd7dd6cb191c666b128a4c2184ced5295fab98c5f83affc4bfd4c5dc23f502371e2e095aa880e526 disable-git-checks.patch
+36c3bddb5de84f0f5eebe46b506b9723ecc80dd69281b3d2ffc9842fa2db181ececd8232ae0b3366bcfd5cb68a4d760abcadd3dada2a7ce2d2da26586a132e09 no-update.patch
+f71b45b08b8f05d98faab3a88d7ba2847a948a12ca26c682d58541dc423ad72ae8aac5b34155472869ebbf195e5e5c488cfc4e640df7247c7674e5dfad053d60 strip-formatter-deps.patch
+2c7d1ab46d81e65f22e63cb5af37daef27a78d348f240570f9250730d6b33311670876027fd1c54d4c69922c18a7458e82211cb232e98591e182ac11c49877db strip-type-checking-deps.patch
+627d30af756ad51fa76ea3113e18662c8bfa5ba7e89b418604e13581cc811ce89c674042181566fff962adef0dd5edb2e5af2803c33cee470661f2d2d1f4c331 dprint-update-for-musl-aarch64.patch
+"