Add gtkcord4 Add anki from testing
Some checks failed
Release Alpine apk for ARM64v8 / compilation-arm64v8 (push) Failing after 1m58s
Some checks failed
Release Alpine apk for ARM64v8 / compilation-arm64v8 (push) Failing after 1m58s
This commit is contained in:
parent
c5fb7dd116
commit
c594710965
155
srcpkgs/anki/APKBUILD
Normal file
155
srcpkgs/anki/APKBUILD
Normal file
@ -0,0 +1,155 @@
|
||||
# Maintainer: Frank Oltmanns <alpine@oltmanns.dev>
|
||||
# Contributor: Alexander Bocken <alexander@bocken.org>
|
||||
|
||||
pkgname=anki
|
||||
pkgver=23.12.1
|
||||
pkgrel=0
|
||||
# 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/"
|
||||
|
||||
# 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
|
||||
|
||||
# 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() {
|
||||
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() {
|
||||
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="
|
||||
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
|
||||
"
|
30
srcpkgs/anki/disable-git-checks.patch
Normal file
30
srcpkgs/anki/disable-git-checks.patch
Normal file
@ -0,0 +1,30 @@
|
||||
We provide source tarballs without git functionality.
|
||||
'MY_REV' gets replaced with the corresponding revision in prepare().
|
||||
--- a/build/ninja_gen/src/git.rs
|
||||
+++ b/build/ninja_gen/src/git.rs
|
||||
@@ -13,7 +13,7 @@ pub struct SyncSubmodule {
|
||||
|
||||
impl BuildAction for SyncSubmodule {
|
||||
fn command(&self) -> &str {
|
||||
- "git -c protocol.file.allow=always submodule update --init $path"
|
||||
+ "true"
|
||||
}
|
||||
|
||||
fn files(&mut self, build: &mut impl build::FilesHandle) {
|
||||
--- a/build/runner/src/build.rs
|
||||
+++ b/build/runner/src/build.rs
|
||||
@@ -161,13 +161,7 @@ fn maybe_update_buildhash(build_root: &Utf8Path) {
|
||||
}
|
||||
|
||||
fn get_buildhash() -> String {
|
||||
- let output = Command::new("git")
|
||||
- .args(["rev-parse", "--short=8", "HEAD"])
|
||||
- .output()
|
||||
- .expect("git");
|
||||
- assert!(output.status.success(),
|
||||
- "Invoking 'git' failed. Make sure you're building from a clone of the git repo, and that 'git' is installed.");
|
||||
- String::from_utf8(output.stdout).unwrap().trim().into()
|
||||
+ String::from("MY_REV").trim().into()
|
||||
}
|
||||
|
||||
fn write_if_changed(path: &Utf8Path, contents: &str) {
|
11
srcpkgs/anki/dprint-update-for-musl-aarch64.patch
Normal file
11
srcpkgs/anki/dprint-update-for-musl-aarch64.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -23,7 +23,7 @@
|
||||
"caniuse-lite": "^1.0.30001431",
|
||||
"cross-env": "^7.0.2",
|
||||
"diff": "^5.0.0",
|
||||
- "dprint": "=0.35.3",
|
||||
+ "dprint": "^0.42.5",
|
||||
"esbuild": "^0.18.10",
|
||||
"esbuild-sass-plugin": "^2",
|
||||
"esbuild-svelte": "^0.7.4",
|
13
srcpkgs/anki/no-update.patch
Normal file
13
srcpkgs/anki/no-update.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/qt/aqt/update.py b/qt/aqt/update.py
|
||||
index 212ddf93d..6f716cc04 100644
|
||||
--- a/qt/aqt/update.py
|
||||
+++ b/qt/aqt/update.py
|
||||
@@ -11,6 +11,8 @@ from aqt.utils import openLink, show_warning, showText, tr
|
||||
|
||||
|
||||
def check_for_update() -> None:
|
||||
+ return
|
||||
+
|
||||
from aqt import mw
|
||||
|
||||
def do_check(_col: Collection) -> CheckForUpdateResponse:
|
9
srcpkgs/anki/strip-formatter-deps.patch
Normal file
9
srcpkgs/anki/strip-formatter-deps.patch
Normal file
@ -0,0 +1,9 @@
|
||||
Remove dependency on dev-python/black used to format the generated hooks.py
|
||||
file as it's not relevant in a packaging use case.
|
||||
--- a/pylib/tools/hookslib.py
|
||||
+++ b/pylib/tools/hookslib.py
|
||||
@@ -208,4 +208,3 @@ def write_file(path: str, hooks: list[Hook], prefix: str, suffix: str):
|
||||
os.environ["USERPROFILE"] = os.environ["HOME"]
|
||||
with open(path, "wb") as file:
|
||||
file.write(code.encode("utf8"))
|
||||
- subprocess.run([sys.executable, "-m", "black", "-q", path], check=True)
|
23
srcpkgs/anki/strip-type-checking-deps.patch
Normal file
23
srcpkgs/anki/strip-type-checking-deps.patch
Normal file
@ -0,0 +1,23 @@
|
||||
We don't do type checking (via mypy and related) downstream.
|
||||
Mypy-protobuf generates mypy stub files from protobuf specs and should
|
||||
therefore be stripped.
|
||||
--- a/build/configure/src/python.rs
|
||||
+++ b/build/configure/src/python.rs
|
||||
@@ -87,9 +87,7 @@ pub struct GenPythonProto {
|
||||
impl BuildAction for GenPythonProto {
|
||||
fn command(&self) -> &str {
|
||||
"$protoc $
|
||||
- --plugin=protoc-gen-mypy=$protoc-gen-mypy $
|
||||
--python_out=$builddir/pylib $
|
||||
- --mypy_out=$builddir/pylib $
|
||||
-Iproto $in"
|
||||
}
|
||||
|
||||
@@ -107,7 +105,6 @@ impl BuildAction for GenPythonProto {
|
||||
.collect();
|
||||
build.add_inputs("in", &self.proto_files);
|
||||
build.add_inputs("protoc", inputs![":protoc_binary"]);
|
||||
- build.add_inputs("protoc-gen-mypy", inputs![":pyenv:protoc-gen-mypy"]);
|
||||
build.add_outputs("", python_outputs);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user