1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

games/anki: Update to 2.1.44

Since the 2.1.36 release the build system has changed significantly
again and devel/bazel is now used by upstream for the entire build
process.

With this change, a lot of bazel rules and also some translation files
needs to be downloaded from various repositories during the buildtime.

In order to still make Anki compatible with the Ports framework, the
following approach is used:

  1. Prefetch all the required files before buildtime.
  2. Create and setup a few local bazel repositories along with a set
     of custom bazel rules and to provide Node, Protobuf and Yarn from
     the Ports tree.
  3. Compile the Rust library and place the output files to the
     respective local bazel repository for further processing.
  4. Build the rest via devel/bazel

From a technical point of view, Anki should also be able to be built on
other 64-bit architectures (but requires further patching of a few bazel
rules), as soon as devel/bazel can also be built for those platforms.

The option NLS is gone because the translations are now compiled
directly into the Rust library and they only generate a small overhead.

Changelog since 2.1.35 (too many changes/fixes to list them separately):

https://changes.ankiweb.net/

Reviewed by:	tcberner
MFH:		2021Q3
Differential Revision:	https://reviews.freebsd.org/D31358
This commit is contained in:
Kai Knoblich 2021-08-02 08:10:10 +02:00
parent d0d7bd815e
commit 7cb5fb3560
36 changed files with 1867 additions and 1357 deletions

View File

@ -1,12 +1,11 @@
# Created by: Andrew Pantyukhin <infofarmer@FreeBSD.org>
PORTNAME= anki
DISTVERSION= 2.1.35
PORTREVISION= 11
# Don't forget to update ${_MY_BUILDHASH}
DISTVERSION= 2.1.44
# Don't forget to update ${_MY_BUILDHASH} if DISTVERSION changes
CATEGORIES= games education python
MASTER_SITES= LOCAL/kai/:npmcache
DISTFILES= anki-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
MASTER_SITES= LOCAL/kai/:yarncache
DISTFILES= anki-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}:yarncache
DIST_SUBDIR= python
MAINTAINER= kai@FreeBSD.org
@ -18,14 +17,17 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
DEPRECATED= Uses EOL Python 2.7 via www/py-qt5-webengine
EXPIRATION_DATE=2021-06-23
NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc
NOT_FOR_ARCHS_REASON= the bazel build framework supports only 64-bit systems.
BUILD_DEPENDS= bash:shells/bash \
maturin:devel/py-maturin@${PY_FLAVOR} \
bazel:devel/bazel \
protoc:devel/protobuf \
npm:www/npm \
rsync:net/rsync \
yarn:www/yarn \
${PYTHON_PKGNAMEPREFIX}mypy-protobuf>=1.21:devel/py-mypy-protobuf@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}stringcase==1.2.0:devel/py-stringcase@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}stringcase>0:devel/py-stringcase@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}black>0:devel/py-black@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}fluent>0:devel/py-fluent@${PY_FLAVOR} \
${RUN_DEPENDS}
# For x64 architectures there's also a Python package "orjson" that still needs
@ -51,295 +53,352 @@ RUN_DEPENDS= lame:audio/lame \
${PYTHON_PKGNAMEPREFIX}waitress>0:www/py-waitress@${PY_FLAVOR}
# USES=ssl is required for the compilation of the Rust code
USES= cargo desktop-file-utils gmake perl5 pyqt:5 python:3.7+ shebangfix ssl
USES= cargo desktop-file-utils pyqt:5 python:3.8+ shebangfix ssl
USE_GITHUB= yes
GH_ACCOUNT= ankitects
GH_TUPLE= ankitects:anki-core-i18n:fbda2ed:i18ncore \
ankitects:anki-desktop-ftl:f56e959:i18nfluent \
ankitects:anki-desktop-i18n:a93ccef:i18ndesktop \
ankitects:rust-coarsetime:f9e2c86216f0f4803bc75404828318fc206dab29:coarsetime \
ankitects:fluent-rs:f61c5e10a53161ef5261f3c87b62047f12e4aa74:fluent \
ankitects:hyper-timeout:664b6f9c387f6a7d75d1609a65c02554e8c55bc7:hypertimeout \
ankitects:reqwest:57665e2c2a39db85723ba860f1b570a608bb73f9:reqwest \
ankitects:tokio-io-timeout:96e1358555c49905de89170f2b1102a7d8b6c4c2:tokioiotimeout
USE_PERL5= build
# Translation files
GH_TUPLE= ankitects:anki-core-i18n:30ab198:ftlrslib \
ankitects:anki-desktop-ftl:3920d26:ftlextra
# Cargo crates
GH_TUPLE+= ankitects:hyper-timeout:anki-2020-11-03:hypertimeout \
ankitects:reqwest:anki-2020-11-03:reqwest \
ankitects:tokio-io-timeout:anki-2020-11-03:tokioiotimeout
# Bazel Skylib framework and sets of bazel rules
GH_TUPLE+= bazelbuild:bazel-skylib:e59b620:bzlskylib \
bazelbuild:rules_cc:40548a2:bzlrcc \
bazelbuild:rules_java:c13e3ea:bzlrjava \
bazelbuild:rules_nodejs:1689fa1:bzlrnodejs \
bazelbuild:rules_proto:f7a30f6:bzlrproto \
ankitects:rules_pip:73953e0:bzlrpip \
ankitects:rules_python:3927c9b:bzlrpython \
ankitects:rules_rust:dfd1200:bzlrrust \
ankitects:rules_sass:275ace7:bzlrsass \
ankitects:rules_svelte:f09155c:bzlrsvelte
USE_PYQT= core gui network printsupport sip svg webchannel webengine widgets xml_build
SHEBANG_FILES= qt/po/scripts/build-mo-files \
qt/po/scripts/copy-qt-files \
qt/runanki \
qt/tools/build_ui.sh \
scripts/rename
SHEBANG_FILES= qt/tools/runanki.system.in
CARGO_CRATES= addr2line-0.13.0 \
adler-0.2.3 \
aho-corasick-0.7.14 \
anyhow-1.0.33 \
arc-swap-0.4.7 \
CARGO_CRATES= addr2line-0.15.2 \
adler-1.0.2 \
ahash-0.4.7 \
aho-corasick-0.7.18 \
ammonia-3.1.2 \
anyhow-1.0.42 \
arc-swap-1.3.0 \
arrayref-0.3.6 \
arrayvec-0.4.12 \
arrayvec-0.5.1 \
askama-0.10.3 \
askama_derive-0.10.3 \
arrayvec-0.5.2 \
askama-0.10.5 \
askama_derive-0.10.5 \
askama_escape-0.10.1 \
askama_shared-0.10.4 \
async-compression-0.3.5 \
askama_shared-0.11.1 \
async-compression-0.3.8 \
async-trait-0.1.50 \
atty-0.2.14 \
autocfg-1.0.1 \
backtrace-0.3.53 \
backtrace-0.3.60 \
base64-0.12.3 \
base64-0.13.0 \
bitflags-1.2.1 \
blake2b_simd-0.5.10 \
blake3-0.3.7 \
bumpalo-3.4.0 \
byteorder-1.3.4 \
bitvec-0.19.5 \
blake3-0.3.8 \
bumpalo-3.7.0 \
byteorder-1.4.3 \
bytes-0.4.12 \
bytes-0.5.6 \
cc-1.0.61 \
bytes-1.0.1 \
cc-1.0.69 \
cfg-if-0.1.10 \
cfg-if-1.0.0 \
chrono-0.4.19 \
cloudabi-0.1.0 \
coarsetime-0.1.19 \
constant_time_eq-0.1.5 \
core-foundation-0.7.0 \
core-foundation-sys-0.7.0 \
core-foundation-0.9.1 \
core-foundation-sys-0.8.2 \
crc32fast-1.2.1 \
crossbeam-channel-0.4.4 \
crossbeam-utils-0.7.2 \
crossbeam-channel-0.5.1 \
crossbeam-utils-0.8.5 \
crypto-mac-0.8.0 \
ctor-0.1.16 \
derivative-2.1.1 \
ctor-0.1.20 \
derivative-2.2.0 \
digest-0.9.0 \
dirs-2.0.2 \
dirs-sys-0.3.5 \
dtoa-0.4.6 \
dirs-next-2.0.0 \
dirs-sys-next-0.1.2 \
dtoa-0.4.8 \
either-1.6.1 \
encoding_rs-0.8.24 \
encoding_rs-0.8.28 \
env_logger-0.8.4 \
failure-0.1.8 \
failure_derive-0.1.8 \
fallible-iterator-0.2.0 \
fallible-streaming-iterator-0.1.9 \
fixedbitset-0.2.0 \
flate2-1.0.18 \
fluent-langneg-0.12.1 \
fluent-syntax-0.9.3 \
flate2-1.0.20 \
fluent-0.13.1 \
fluent-bundle-0.13.2 \
fluent-langneg-0.13.0 \
fluent-syntax-0.10.3 \
fnv-1.0.7 \
foreign-types-0.3.2 \
foreign-types-shared-0.1.1 \
form_urlencoded-1.0.1 \
fuchsia-zircon-0.3.3 \
fuchsia-zircon-sys-0.3.3 \
futures-0.3.6 \
futures-channel-0.3.6 \
futures-core-0.3.6 \
futures-executor-0.3.6 \
futures-io-0.3.6 \
futures-macro-0.3.6 \
futures-sink-0.3.6 \
futures-task-0.3.6 \
futures-util-0.3.6 \
fxhash-0.2.1 \
funty-1.1.0 \
futf-0.1.4 \
futures-0.3.15 \
futures-channel-0.3.15 \
futures-core-0.3.15 \
futures-executor-0.3.15 \
futures-io-0.3.15 \
futures-macro-0.3.15 \
futures-sink-0.3.15 \
futures-task-0.3.15 \
futures-util-0.3.15 \
generic-array-0.14.4 \
getrandom-0.1.15 \
getopts-0.2.21 \
getrandom-0.1.16 \
getrandom-0.2.3 \
ghost-0.1.2 \
gimli-0.22.0 \
h2-0.2.6 \
gimli-0.24.0 \
h2-0.2.7 \
hashbrown-0.9.1 \
heck-0.3.1 \
hermit-abi-0.1.17 \
hex-0.4.2 \
hashbrown-0.11.2 \
hashlink-0.6.0 \
heck-0.3.3 \
hermit-abi-0.1.19 \
hex-0.4.3 \
html5ever-0.25.1 \
htmlescape-0.3.1 \
http-0.2.1 \
http-0.2.4 \
http-body-0.3.1 \
httparse-1.3.4 \
httparse-1.4.1 \
httpdate-0.3.2 \
humansize-1.1.0 \
hyper-0.13.8 \
humansize-1.1.1 \
humantime-2.1.0 \
hyper-0.13.10 \
hyper-rustls-0.21.0 \
hyper-tls-0.4.3 \
idna-0.2.0 \
indexmap-1.6.0 \
idna-0.2.3 \
indexmap-1.7.0 \
indoc-0.3.6 \
indoc-impl-0.3.6 \
instant-0.1.7 \
intl_pluralrules-6.0.0 \
inventory-0.1.9 \
inventory-impl-0.1.9 \
instant-0.1.10 \
intl-memoizer-0.5.1 \
intl_pluralrules-7.0.1 \
inventory-0.1.10 \
inventory-impl-0.1.10 \
iovec-0.1.4 \
itertools-0.8.2 \
ipnet-2.3.1 \
itertools-0.9.0 \
itoa-0.4.6 \
js-sys-0.3.45 \
itoa-0.4.7 \
js-sys-0.3.51 \
kernel32-sys-0.2.2 \
lazy_static-1.4.0 \
lexical-core-0.7.6 \
libc-0.2.79 \
libsqlite3-sys-0.18.0 \
linked-hash-map-0.5.3 \
lock_api-0.4.1 \
log-0.4.11 \
lru-cache-0.1.2 \
libc-0.2.98 \
libsqlite3-sys-0.20.1 \
lock_api-0.4.4 \
log-0.4.14 \
mac-0.1.1 \
maplit-1.0.2 \
markup5ever-0.10.1 \
markup5ever_rcdom-0.1.0 \
matches-0.1.8 \
maybe-uninit-2.0.0 \
memchr-2.3.3 \
memchr-2.4.0 \
mime-0.3.16 \
mime_guess-2.0.3 \
miniz_oxide-0.4.3 \
mio-0.6.22 \
miow-0.2.1 \
multimap-0.8.2 \
native-tls-0.2.4 \
net2-0.2.35 \
miniz_oxide-0.4.4 \
mio-0.6.23 \
miow-0.2.2 \
multimap-0.8.3 \
native-tls-0.2.7 \
net2-0.2.37 \
new_debug_unreachable-1.0.4 \
nodrop-0.1.14 \
nom-5.1.2 \
nom-6.1.2 \
num-format-0.4.0 \
num-integer-0.1.43 \
num-traits-0.2.12 \
num-integer-0.1.44 \
num-traits-0.2.14 \
num_cpus-1.13.0 \
num_enum-0.5.1 \
num_enum_derive-0.5.1 \
object-0.21.1 \
once_cell-1.4.1 \
openssl-0.10.30 \
openssl-probe-0.1.2 \
openssl-sys-0.9.58 \
parking_lot-0.11.0 \
parking_lot_core-0.8.0 \
num_enum-0.5.2 \
num_enum_derive-0.5.2 \
object-0.25.3 \
once_cell-1.8.0 \
openssl-0.10.35 \
openssl-probe-0.1.4 \
openssl-sys-0.9.65 \
parking_lot-0.11.1 \
parking_lot_core-0.8.3 \
paste-0.1.18 \
paste-impl-0.1.18 \
percent-encoding-2.1.0 \
petgraph-0.5.1 \
pin-project-0.4.27 \
pin-project-internal-0.4.27 \
pin-project-lite-0.1.11 \
phf-0.8.0 \
phf_codegen-0.8.0 \
phf_generator-0.8.0 \
phf_shared-0.8.0 \
pin-project-1.0.8 \
pin-project-internal-1.0.8 \
pin-project-lite-0.1.12 \
pin-project-lite-0.2.7 \
pin-utils-0.1.0 \
pkg-config-0.3.19 \
podio-0.1.7 \
ppv-lite86-0.2.9 \
proc-macro-crate-0.1.5 \
proc-macro-hack-0.5.18 \
ppv-lite86-0.2.10 \
precomputed-hash-0.1.1 \
proc-macro-crate-1.0.0 \
proc-macro-hack-0.5.19 \
proc-macro-nested-0.1.6 \
proc-macro2-1.0.24 \
prost-0.6.1 \
prost-build-0.6.1 \
prost-derive-0.6.1 \
prost-types-0.6.1 \
pyo3-0.11.1 \
pyo3-derive-backend-0.11.1 \
pyo3cls-0.11.1 \
quote-1.0.7 \
proc-macro2-1.0.27 \
prost-0.7.0 \
prost-build-0.7.0 \
prost-derive-0.7.0 \
prost-types-0.7.0 \
pulldown-cmark-0.8.0 \
pyo3-0.13.2 \
pyo3-macros-0.13.2 \
pyo3-macros-backend-0.13.2 \
quote-1.0.9 \
radium-0.5.3 \
rand-0.7.3 \
rand-0.8.4 \
rand_chacha-0.2.2 \
rand_chacha-0.3.1 \
rand_core-0.5.1 \
rand_core-0.6.3 \
rand_hc-0.2.0 \
redox_syscall-0.1.57 \
redox_users-0.3.5 \
regex-1.4.1 \
regex-syntax-0.6.20 \
rand_hc-0.3.1 \
rand_pcg-0.2.1 \
redox_syscall-0.2.9 \
redox_users-0.4.0 \
regex-1.5.4 \
regex-syntax-0.6.25 \
remove_dir_all-0.5.3 \
rental-0.5.5 \
rental-0.5.6 \
rental-impl-0.5.5 \
rusqlite-0.23.1 \
rust-argon2-0.8.2 \
rustc-demangle-0.1.18 \
ring-0.16.20 \
rusqlite-0.24.2 \
rustc-demangle-0.1.20 \
rustc-hash-1.1.0 \
rustls-0.18.1 \
rustversion-1.0.5 \
ryu-1.0.5 \
schannel-0.1.19 \
scopeguard-1.1.0 \
security-framework-0.4.4 \
security-framework-sys-0.4.3 \
serde-1.0.117 \
sct-0.6.1 \
security-framework-2.3.1 \
security-framework-sys-2.3.0 \
serde-1.0.126 \
serde-aux-0.6.1 \
serde_derive-1.0.117 \
serde_json-1.0.59 \
serde_repr-0.1.6 \
serde_derive-1.0.126 \
serde_json-1.0.64 \
serde_repr-0.1.7 \
serde_tuple-0.5.0 \
serde_tuple_macros-0.5.0 \
serde_urlencoded-0.6.1 \
sha1-0.6.0 \
slab-0.4.2 \
slog-2.5.2 \
slog-async-2.5.0 \
siphasher-0.3.5 \
slab-0.4.3 \
slog-2.7.0 \
slog-async-2.6.0 \
slog-envlogger-2.2.0 \
slog-scope-4.3.0 \
slog-scope-4.4.0 \
slog-stdlog-4.1.0 \
slog-term-2.6.0 \
smallvec-1.4.2 \
socket2-0.3.15 \
slog-term-2.8.0 \
smallvec-1.6.1 \
socket2-0.3.19 \
spin-0.5.2 \
stable_deref_trait-1.2.0 \
static_assertions-1.1.0 \
subtle-2.3.0 \
syn-1.0.46 \
synstructure-0.12.4 \
string_cache-0.8.1 \
string_cache_codegen-0.5.1 \
subtle-2.4.1 \
syn-1.0.74 \
synstructure-0.12.5 \
take_mut-0.2.2 \
tempfile-3.1.0 \
term-0.6.1 \
thiserror-1.0.21 \
thiserror-impl-1.0.21 \
thread_local-1.0.1 \
time-0.1.44 \
tap-1.0.1 \
tempfile-3.2.0 \
tendril-0.4.2 \
term-0.7.0 \
termcolor-1.1.2 \
thiserror-1.0.26 \
thiserror-impl-1.0.26 \
thread_local-1.1.3 \
time-0.1.43 \
tinystr-0.3.4 \
tinyvec-0.3.4 \
tokio-0.2.22 \
tokio-socks-0.2.2 \
tinyvec-1.3.1 \
tinyvec_macros-0.1.0 \
tokio-0.2.25 \
tokio-rustls-0.14.1 \
tokio-socks-0.3.0 \
tokio-tls-0.3.1 \
tokio-util-0.3.1 \
toml-0.5.7 \
tower-service-0.3.0 \
tracing-0.1.21 \
tracing-core-0.1.17 \
toml-0.5.8 \
tower-service-0.3.1 \
tracing-0.1.26 \
tracing-core-0.1.18 \
tracing-futures-0.2.5 \
try-lock-0.2.3 \
type-map-0.3.0 \
typenum-1.12.0 \
unic-langid-0.8.0 \
unic-langid-impl-0.8.0 \
unic-langid-macros-0.8.0 \
unic-langid-macros-impl-0.8.0 \
type-map-0.4.0 \
typenum-1.13.0 \
unic-langid-0.9.0 \
unic-langid-impl-0.9.0 \
unic-langid-macros-0.9.0 \
unic-langid-macros-impl-0.9.0 \
unicase-2.6.0 \
unicode-bidi-0.3.4 \
unicode-normalization-0.1.13 \
unicode-segmentation-1.6.0 \
unicode-xid-0.2.1 \
unicode-bidi-0.3.5 \
unicode-normalization-0.1.19 \
unicode-segmentation-1.8.0 \
unicode-width-0.1.8 \
unicode-xid-0.2.2 \
unindent-0.1.7 \
url-2.1.1 \
untrusted-0.7.1 \
url-2.2.2 \
utf-8-0.7.6 \
utime-0.3.1 \
vcpkg-0.2.10 \
version_check-0.9.2 \
vcpkg-0.2.15 \
version_check-0.9.3 \
want-0.3.0 \
wasi-0.9.0+wasi-snapshot-preview1 \
wasi-0.10.0+wasi-snapshot-preview1 \
wasm-bindgen-0.2.68 \
wasm-bindgen-backend-0.2.68 \
wasm-bindgen-futures-0.4.18 \
wasm-bindgen-macro-0.2.68 \
wasm-bindgen-macro-support-0.2.68 \
wasm-bindgen-shared-0.2.68 \
web-sys-0.3.45 \
which-3.1.1 \
wasi-0.10.2+wasi-snapshot-preview1 \
wasm-bindgen-0.2.74 \
wasm-bindgen-backend-0.2.74 \
wasm-bindgen-futures-0.4.24 \
wasm-bindgen-macro-0.2.74 \
wasm-bindgen-macro-support-0.2.74 \
wasm-bindgen-shared-0.2.74 \
web-sys-0.3.51 \
webpki-0.21.4 \
webpki-roots-0.20.0 \
which-4.1.0 \
winapi-0.2.8 \
winapi-0.3.9 \
winapi-build-0.1.1 \
winapi-i686-pc-windows-gnu-0.4.0 \
winapi-util-0.1.5 \
winapi-x86_64-pc-windows-gnu-0.4.0 \
winreg-0.6.2 \
winreg-0.7.0 \
ws2_32-sys-0.2.1 \
zip-0.5.6
wyz-0.2.0 \
xml5ever-0.16.1 \
zip-0.5.13
CARGO_USE_GITHUB= yes
CARGO_CARGOLOCK= ${WRKSRC}/rspy/Cargo.lock
CARGO_CARGOTOML= ${WRKSRC}/rspy/Cargo.toml
CARGO_CARGOTOML= ${WRKSRC}/pylib/rsbridge/Cargo.toml
CARGO_BUILD= no
CARGO_INSTALL= no
MAKE_ARGS= DEVEL="rspy pylib ts qt" PYTHON_FILE="${PYTHON_CMD}" SHELL="${LOCALBASE}/bin/bash"
# devel/py-maturin acts as a wrapper for "cargo" and "rustc". Ensure that it
# uses the arguments/flags for Rust of the Ports framework.
MAKE_ARGS+= BUILDFLAGS="--cargo-extra-args='${CARGO_BUILD_ARGS} --verbose'"
MAKE_ENV= ${CARGO_ENV} npm_config_offline=true
# BAZEL=1 is required otherwise ${WRKSRC}/rslib/build/main.rs produces a dummy
# buildinfo.txt that doesn't contain the actual build hash.
CARGO_ENV= BAZEL=1 \
BUILDINFO=${_MY_LOCALREPO}/rust_output/buildinfo.txt \
PYO3_PYTHON=${PYTHON_CMD} \
PROTOC=${LOCALBASE}/bin/protoc \
BACKEND_PROTO=${WRKSRC}/rslib/backend.proto \
RSLIB_FTL_ROOT=${_MY_LOCALREPO}/ftlrslib/l10n.toml \
EXTRA_FTL_ROOT=${_MY_LOCALREPO}/ftlextra/l10n.toml
ALL_TARGET= build
PLIST_SUB= _PY_SONAME=${_PY_SONAME}
OPTIONS_DEFINE= NLS
OPTIONS_DEFAULT= MPV
OPTIONS_GROUP= PLAYER
OPTIONS_GROUP_PLAYER= MPLAYER MPV
@ -350,101 +409,164 @@ MPV_DESC= mpv media player support
MPLAYER_RUN_DEPENDS= mplayer:multimedia/mplayer
MPV_RUN_DEPENDS= mpv:multimedia/mpv
NLS_USES= gettext
# Should contain the most recent commit that reflects ${DISTVERSION} and must
# be exactly 8 digits otherwise the check for newer versions won't work as
# expected.
_MY_BUILDHASH= 84dcaa86
_MY_BUILDHASH= b2b3275f
# Path of the local bazel repositories
_MY_LOCALREPO= ${WRKSRC}/local_repos
# Path of cache that is used by www/yarn
_MY_YARNCACHE= ${WRKDIR}/.yarn
.include <bsd.port.pre.mk>
.if ${PYTHON_REL} < 30800
_PY_SONAME= .cpython-${PYTHON_SUFFIX}m
.else
_PY_SONAME= ${PYTHON_EXT_SUFFIX}
.endif
# Place the translation files to the appropriate directories
post-extract:
@${RLN} ${WRKSRC_i18ncore} ${WRKSRC}/rslib/ftl/repo
@${RLN} ${WRKSRC_i18nfluent} ${WRKSRC}/qt/ftl/repo
@${RLN} ${WRKSRC_i18ndesktop} ${WRKSRC}/qt/po/repo
# Create a configuration file for bazel
@${ECHO_CMD} "startup --batch" > ${WRKSRC}/user.bazelrc
# Create local repositories which are used by bazel
@${MKDIR} ${_MY_LOCALREPO} \
${_MY_LOCALREPO}/local_node/node/bin \
${_MY_LOCALREPO}/local_node/node/lib \
${_MY_LOCALREPO}/local_node/yarn/bin \
${_MY_LOCALREPO}/protoc_bin_freebsd/bin \
${_MY_LOCALREPO}/pyqt5 \
${_MY_LOCALREPO}/rust_output/fluent_proto \
${_MY_LOCALREPO}/rust_output/librsbridge
# Create empty WORKSPACE files in the top directory of each local
# repository
@${TOUCH} ${_MY_LOCALREPO}/local_node/WORKSPACE \
${_MY_LOCALREPO}/protoc_bin_freebsd/WORKSPACE \
${_MY_LOCALREPO}/pyqt5/WORKSPACE \
${_MY_LOCALREPO}/rust_output/WORKSPACE
# Copy the bazel rules for NodeJS to the custom local repository as
# they need some patching
@${CP} -r ${WRKSRC_bzlrnodejs} ${_MY_LOCALREPO}/rules_nodejs
# Link the remaining bazel rules into the custom local repository as
# they don't need to be patched
.for _dir in bzlskylib bzlrcc bzlrjava bzlrpip bzlrproto bzlrpython bzlrrust bzlrsass bzlrsvelte ftlextra ftlrslib
@${RLN} ${WRKSRC_${_dir}} ${_MY_LOCALREPO}/${_dir:S/bzlr/rules_/}
.endfor
# Copy custom BUILD.bazel files to the local repositories
@${CP} ${FILESDIR}/bazel/BUILD.bazel-local_node \
${_MY_LOCALREPO}/local_node/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-protoc_bin_freebsd \
${_MY_LOCALREPO}/protoc_bin_freebsd/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-pyqt5 \
${_MY_LOCALREPO}/pyqt5/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-rust_output-fluent_proto \
${_MY_LOCALREPO}/rust_output/fluent_proto/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-rust_output-librsbridge \
${_MY_LOCALREPO}/rust_output/librsbridge/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-i18n ${WRKSRC_ftlrslib}/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-i18n ${WRKSRC_ftlextra}/BUILD.bazel
# Move some files out of the way as they will be replaced by custom copies.
@${MV} ${WRKSRC}/repos.bzl ${WRKSRC}/repos.bzl.dist
@${MV} ${WRKSRC}/pip/pyqt5/defs.bzl ${WRKSRC}/pip/pyqt5/defs.bzl.dist
@${MV} ${WRKSRC}/pylib/rsbridge/BUILD.bazel ${WRKSRC}/pylib/rsbridge/BUILD.bazel.dist
@${MV} ${WRKSRC}/rslib/BUILD.bazel ${WRKSRC}/rslib/BUILD.bazel.dist
# Required for a successful Rust compilation
@${MV} ${WRKSRC}/Cargo.lock ${WRKSRC}/Cargo.lock.dist
# Copy the replacement files
@${CP} ${FILESDIR}/bazel/repos.bzl ${WRKSRC}/
@${CP} ${FILESDIR}/bazel/pyqt5.bzl ${WRKSRC}/pip/pyqt5/defs.bzl
@${CP} ${FILESDIR}/bazel/BUILD.bazel-pylib-rsbridge \
${WRKSRC}/pylib/rsbridge/BUILD.bazel
@${CP} ${FILESDIR}/bazel/BUILD.bazel-rslib \
${WRKSRC}/rslib/BUILD.bazel
post-patch:
# Add trailing directory names to cargo repositories
@${REINPLACE_CMD} -Ee '/^fluent =/ s|(${WRKSRC_fluent})|\1/fluent|; \
/^intl-memoizer =/ s|(${WRKSRC_fluent})|\1/intl-memoizer|' ${WRKSRC}/rslib/Cargo.toml
@${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|' ${WRKSRC}/qt/runanki
@${REINPLACE_CMD} -e 's|%%MAKE_CMD%%|${MAKE_CMD}|' ${WRKSRC}/qt/Makefile
@${REINPLACE_CMD} -e 's|%%UNZIP_NATIVE_CMD%%|${UNZIP_NATIVE_CMD}|' ${WRKSRC}/rspy/Makefile
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
${_MY_LOCALREPO}/rules_nodejs/internal/node/node_patches.js
@${REINPLACE_CMD} -e 's|\@PREFIX\@|${PREFIX}|' \
${WRKSRC}/qt/tools/runanki.system.in
@${REINPLACE_CMD} -e 's|%%_MY_BUILDHASH%%|${_MY_BUILDHASH}|' \
${WRKSRC}/scripts/status.sh
@${REINPLACE_CMD} -e 's|%%_MY_LOCALREPO%%|${_MY_LOCALREPO}|g' \
${WRKSRC}/repos.bzl ${WRKSRC}/protobuf.bzl
@${REINPLACE_CMD} -e 's|%%_MY_YARNCACHE%%|${_MY_YARNCACHE}|' \
${_MY_LOCALREPO}/rules_nodejs/internal/npm_install/npm_install.bzl
post-patch-NLS-on:
@${REINPLACE_CMD} -e 's|### NLS ###||' ${WRKSRC}/qt/Makefile
# Although PYTHON_FILE is set to ${PYTHON_CMD} via MAKE_ARGS to make the
# compilation of the pyo3 crate possible there are also hardcoded "python"
# occurences in too many places.
pre-configure:
${MKDIR} ${WRKDIR}/.bin && ${LN} -s ${PYTHON_CMD} ${WRKDIR}/.bin/python
# Link the binaries of Node, Protobuf and Yarn into the local bazel
# repositories to provide them during build.
${LN} -s ${LOCALBASE}/bin/protoc-gen-mypy ${WRKSRC}/pylib/tools/protoc-gen-mypy
${LN} -s ${LOCALBASE}/bin/node ${_MY_LOCALREPO}/local_node/node/bin/node
${LN} -s ${LOCALBASE}/bin/yarn.js ${_MY_LOCALREPO}/local_node/yarn/bin/yarn.js
${LN} -s ${LOCALBASE}/bin/protoc ${_MY_LOCALREPO}/protoc_bin_freebsd/bin/protoc
# Overview of the build process
#
# Steps 1 and 2 are built separately from the bazel build process.
#
# 1. rslib (Rust library, implictly built by step 2)
# `-> produces ${WRKSRC}/proto/fluent.proto
# 2. rspy (Rust/Python bridge) which is built by devel/py-maturin
# `-> produces ${WRKSRC}/pylib/ankirspy.cpython-${PYTHON_SUFFIX}m.so
# 3. pylib (Python-only library)
# 4. ts (builds ${WRKSRC}/ts/node_modules/.bin/{tsc,sass})
# 5. qt (Python library with Qt5 bindings)
# `-> produces ${_MY_LOCALREPO}/rust_output/fluent.proto
# 2. pylib/rsbridge (Rust/Python bridge)
# `-> produces ${_MY_LOCALREPO}/rust_output/librsbridge.so
# 3. The remaining components (Python, Qt5 and JS) are built by bazel
pre-build:
# Set the buildhash that is used at various places during build.
${ECHO_CMD} ${_MY_BUILDHASH} > ${WRKSRC}/meta/buildhash
# Generate buildinfo.txt which is used via BUILDINFO in ${CARGO_ENV} during
# compilation.
${ECHO_CMD} -e "STABLE_VERSION ${DISTVERSION}\nSTABLE_BUILDHASH ${_MY_BUILDHASH}" >> ${_MY_LOCALREPO}/rust_output/buildinfo.txt
${CARGO_CARGO_RUN} build \
--manifest-path ${CARGO_CARGOTOML} \
--verbose \
${CARGO_BUILD_ARGS}
# These files are required for the remaining build process via bazel so copy
# them the local repository.
${CP} `${FIND} ${CARGO_TARGET_DIR} -name "fluent.proto"` ${_MY_LOCALREPO}/rust_output/fluent_proto/
${CP} `${FIND} ${CARGO_TARGET_DIR} -name "librsbridge.so"` ${_MY_LOCALREPO}/rust_output/librsbridge/
do-build:
cd ${WRKSRC} && \
bazel --output_user_root="${WRKDIR}/.bazel" build \
--action_env=PYTHON_SITE_PACKAGES="${PYTHON_SITELIBDIR}" \
--action_env=PYTHON_SYS_EXECUTABLE="${PYTHON_CMD}" \
--compilation_mode opt \
--subcommands \
dist
post-build:
${TAR} -xf `${FIND} ${WRKDIR}/.bazel -name "dist.tar"` -C ${WRKSRC}
cd ${WRKSRC}/bazel-dist && \
${UNZIP_NATIVE_CMD} anki-${DISTVERSION}-*.whl && \
${UNZIP_NATIVE_CMD} aqt-${DISTVERSION}-*.whl
# Compile Anki's Python libary (pylib) and Qt5 library (aqt) to prepare
# them for installation
${PYTHON_CMD} -m compileall ${WRKSRC}/pylib/anki
${PYTHON_CMD} -O -m compileall ${WRKSRC}/pylib/anki
${PYTHON_CMD} -m compileall ${WRKSRC}/qt/aqt
${PYTHON_CMD} -O -m compileall ${WRKSRC}/qt/aqt
${PYTHON_CMD} -m compileall ${WRKSRC}/bazel-dist/anki
${PYTHON_CMD} -O -m compileall ${WRKSRC}/bazel-dist/anki
${PYTHON_CMD} -m compileall ${WRKSRC}/bazel-dist/aqt
${PYTHON_CMD} -O -m compileall ${WRKSRC}/bazel-dist/aqt
do-install:
${MKDIR} ${STAGEDIR}${DATADIR}/anki \
${STAGEDIR}${DATADIR}/aqt \
${STAGEDIR}${DATADIR}/aqt_data \
${STAGEDIR}${PREFIX}/share/pixmaps \
${STAGEDIR}${PREFIX}/share/applications
cd ${WRKSRC}/pylib \
cd ${WRKSRC}/bazel-dist/ \
&& ${COPYTREE_SHARE} anki ${STAGEDIR}${DATADIR} "! -name .gitignore" \
&& ${INSTALL_LIB} *.so ${STAGEDIR}${DATADIR}
cd ${WRKSRC}/qt \
&& ${COPYTREE_SHARE} aqt ${STAGEDIR}${DATADIR} "! -name .gitignore" \
&& ${COPYTREE_SHARE} aqt_data ${STAGEDIR}${DATADIR} "! -name .gitignore" \
&& ${COPYTREE_SHARE} aqt ${STAGEDIR}${DATADIR} "! -name .gitignore"
cd ${WRKSRC}/qt/linux \
&& ${INSTALL_DATA} anki.xpm anki.png ${STAGEDIR}${PREFIX}/share/pixmaps \
&& ${INSTALL_DATA} anki.desktop ${STAGEDIR}${PREFIX}/share/applications \
&& ${INSTALL_MAN} anki.1 ${STAGEDIR}${MANPREFIX}/man/man1 \
&& ${INSTALL_SCRIPT} runanki ${STAGEDIR}${PREFIX}/bin/anki
&& ${INSTALL_MAN} anki.1 ${STAGEDIR}${MANPREFIX}/man/man1
cd ${WRKSRC}/qt/tools \
&& ${INSTALL_SCRIPT} runanki.system.in ${STAGEDIR}${PREFIX}/bin/anki
${STRIP_CMD} ${STAGEDIR}${DATADIR}/anki/_backend/rsbridge.so
# Helper target to make the generation of the npm cache easier
#
# The command "npx pbjs" tries to install additional dependencies for the CLI
# component of the "protobufjs" package and will fail during build because the
# environment variable "npm_config_offline" is set to "true" via ${MAKE_ENV}.
#
# Thus "npx pbjs" is issued after "npm install" to get the remaining
# dependencies to populate the cache with them.
make-npm-cache:
# Helper target to make the generation of the yarn cache easier
make-yarn-cache:
# Run "make extract" before executing this target
@cd ${WRKDIR} && ${RM} -r .npm
@${RM} -r ${_MY_YARNCACHE}
@cd ${WRKSRC}/ts \
&& ${SETENV} HOME=${WRKDIR} npm install \
&& ${TOUCH} in.proto \
&& ${SETENV} HOME=${WRKDIR} npx --cache ${WRKDIR}/.npm pbjs -q -t static-module in.proto -o out.proto
@cd ${WRKDIR}/.npm \
&& ${RM} -r _locks anonymous-cli-metrics.json
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKSRC_bzlrnodejs}/packages/labs/grpc_web/ \
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKSRC_bzlrnodejs}/packages/labs/protobufjs/ \
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKSRC_bzlrsass}/sass \
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKSRC_bzlrsvelte}/internal \
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
@cd ${WRKDIR} \
&& ${TAR} -czf ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} .npm \
&& ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}"
&& ${TAR} -czf ${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX} .yarn \
&& ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}"
.include <bsd.port.post.mk>
.include <bsd.port.mk>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
# Used for the fluent i18n translation bazel repositories:
# - ftlextra
# - ftlrslib
filegroup(
name = "files",
srcs = glob(["**/*.ftl"]),
visibility = ["//visibility:public"],
)
exports_files(["l10n.toml"])

View File

@ -0,0 +1 @@
exports_files(["node/bin/node"])

View File

@ -0,0 +1 @@
exports_files(["bin/protoc"])

View File

@ -0,0 +1,12 @@
# Handles the further processing of "librsbridge.so" within bazel
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
copy_file(
name = "rsbridge",
src = "//local_repos/rust_output/librsbridge",
out = "librsbridge.so",
visibility = [
"//pylib:__subpackages__",
],
)

View File

@ -0,0 +1,27 @@
# Stub layout for the PyQT5 repository
load("@rules_python//python:defs.bzl", "py_library")
package(default_visibility = ["//visibility:public"])
py_library(
name = "pkg",
srcs = glob(["**/*.py"]),
data = glob(["**/*"], exclude = [
"**/*.py",
"**/*.pyc",
"**/* *",
"BUILD",
"WORKSPACE",
"bin/*",
"__pycache__",
# these make building slower
"Qt/qml/**",
"**/*.sip",
"**/*.png",
]),
# This makes this directory a top-level in the python import
# search path for anything that depends on this.
imports = ["."],
)

View File

@ -0,0 +1,25 @@
# Handles the further processing of "fluent.proto" within bazel
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_proto//proto:defs.bzl", "proto_library")
copy_file(
name = "fluent_proto",
src = "//local_repos/rust_output/fluent_proto",
out = "fluent.proto",
visibility = ["//visibility:public"],
)
proto_library(
name = "fluent_proto_lib",
srcs = ["fluent.proto"],
visibility = ["//visibility:public"],
)
proto_library(
name = "backend_proto_lib",
srcs = ["backend.proto"],
visibility = ["//visibility:public"],
)
exports_files(["backend.proto"])

View File

@ -0,0 +1,7 @@
# Expose "fluent.proto" to bazel
filegroup(
name = "fluent_proto",
srcs = ["fluent.proto"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,7 @@
# Expose "librsbridge.so" to bazel
filegroup(
name = "librsbridge",
srcs = ["librsbridge.so"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,13 @@
# Stub version of "pyqt5" to avoid loading external dependencies.
def _impl(repository_ctx):
return None
install_pyqt5 = repository_rule(
attrs = {
"python_interpreter": attr.string(default = "python"),
"python_runtime": attr.string(mandatory=True),
},
local=True,
implementation = _impl,
)

View File

@ -0,0 +1,109 @@
# Definitions of local bazel repositories
def register_repos():
"Register required dependency repos."
# bazel
#########
native.local_repository(
name = "bazel_skylib",
path = "%%_MY_LOCALREPO%%/bzlskylib",
)
# rust
########
native.local_repository(
name = "io_bazel_rules_rust",
path = "%%_MY_LOCALREPO%%/rules_rust",
)
# protobuf
############
native.local_repository(
name = "rules_proto",
path = "%%_MY_LOCALREPO%%/rules_proto",
)
# python
##########
native.local_repository(
name = "rules_python",
path = "%%_MY_LOCALREPO%%/rules_python",
)
# python pip
##############
native.local_repository(
name = "com_github_ali5h_rules_pip",
path = "%%_MY_LOCALREPO%%/rules_pip",
)
# javascript
##############
native.local_repository(
name = "build_bazel_rules_nodejs",
path = "%%_MY_LOCALREPO%%/rules_nodejs",
)
# sass
########
native.local_repository(
name = "io_bazel_rules_sass",
path = "%%_MY_LOCALREPO%%/rules_sass",
)
# svelte
##########
native.local_repository(
name = "build_bazel_rules_svelte",
path = "%%_MY_LOCALREPO%%/rules_svelte",
)
# i18n translation files
##########################
native.local_repository(
name = "rslib_ftl",
path = "%%_MY_LOCALREPO%%/ftlrslib",
)
# i18n extra files
####################
native.local_repository(
name = "extra_ftl",
path = "%%_MY_LOCALREPO%%/ftlextra",
)
# transitive dependency
#########################
native.local_repository(
name = "rules_cc",
path = "%%_MY_LOCALREPO%%/rules_cc",
)
# transitive dependency
#########################
native.local_repository(
name = "rules_java",
path = "%%_MY_LOCALREPO%%/rules_java",
)
# transitive dependency
#########################
native.local_repository(
name = "build_bazel_rules_typescript",
path = "%%_MY_LOCALREPO%%/rules_nodejs/third_party/github.com/bazelbuild/rules_typescript",
)
# stub pyqt5 repository
#########################
native.local_repository(
name = "pyqt5",
path = "%%_MY_LOCALREPO%%/pyqt5",
)
# provides node from ports
############################
native.local_repository(
name = "local_node",
path = "%%_MY_LOCALREPO%%/local_node",
)

View File

@ -1,27 +0,0 @@
Coerce sequential processing of the build targets as it's already done for the
"develop" target in the same file.
Not doing this will often cause failures with the "build-qt" target that needs
files in ${WRKSRC}/ts/dist/ which is created by the "build-ts" target.
A workaround would be to set MAKE_JOBS_UNSAFE but that would also slow down the
compilation of the Rust library.
Also the "build-ts" target must be run after the "build-pylib" target otherwise
it produces a ${WRKSRC}/ts/dist/graphs.js with wrong content.
--- Makefile.orig 2020-08-30 01:23:44 UTC
+++ Makefile
@@ -115,7 +115,11 @@ qt/po/repo:
$(MAKE) pull-i18n
.PHONY: build
-build: clean-dist build-ts build-rspy build-pylib build-qt add-buildhash
+build:
+ @set -eu -o pipefail ${SHELLFLAGS}; \
+ for dir in $(DEVEL); do \
+ $(SUBMAKE) -C $$dir build BUILDFLAGS="$(BUILDFLAGS)"; \
+ done
@echo
@echo "Build complete."

View File

@ -0,0 +1,61 @@
Avoid loading of Rust and Python PIP rules as both tries to load their
dependencies (cargo crates, Python packages) during the build process.
Also define local repositories to use "www/node" and "www/yarn" from the
Ports tree.
--- defs.bzl.orig 2021-05-04 05:04:50 UTC
+++ defs.bzl
@@ -1,6 +1,5 @@
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
load("@bazel_skylib//lib:versions.bzl", "versions")
-load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
load("@net_ankiweb_anki//cargo:crates.bzl", "raze_fetch_remote_crates")
load(":python.bzl", "setup_local_python")
load(":protobuf.bzl", "setup_protobuf_binary")
@@ -8,7 +7,6 @@ load("//rslib:clang_format.bzl", "setup_clang_format")
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")
load("@io_bazel_rules_sass//:defs.bzl", "sass_repositories")
load("@build_bazel_rules_svelte//:defs.bzl", "rules_svelte_dependencies")
-load("@com_github_ali5h_rules_pip//:defs.bzl", "pip_import")
load("//pip/pyqt5:defs.bzl", "install_pyqt5")
anki_version = "2.1.44"
@@ -18,13 +16,6 @@ def setup_deps():
versions.check(minimum_bazel_version = "3.7.0")
- rust_repositories(
- edition = "2018",
- version = "1.48.0",
- )
-
- raze_fetch_remote_crates()
-
setup_local_python(name = "python")
setup_protobuf_binary(name = "com_google_protobuf")
@@ -33,18 +24,16 @@ def setup_deps():
native.register_toolchains("@python//:python3_toolchain")
- pip_import(
- name = "py_deps",
- requirements = "@net_ankiweb_anki//pip:requirements.txt",
- python_runtime = "@python//:python",
- )
-
install_pyqt5(
name = "pyqt5",
python_runtime = "@python//:python",
)
- node_repositories(package_json = ["@net_ankiweb_anki//ts:package.json"])
+ node_repositories(
+ package_json = ["@net_ankiweb_anki//ts:package.json"],
+ vendored_node = "@local_node//:node",
+ vendored_yarn = "@local_node//:yarn",
+ )
yarn_install(
name = "npm",

View File

@ -0,0 +1,16 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- ftl/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ ftl/BUILD.bazel
@@ -1,10 +1,6 @@
-load("@py_deps//:requirements.bzl", "requirement")
fluent_syntax = [
- requirement("fluent.syntax"),
- requirement("compare-locales"),
# undeclared runtime dependency
- requirement("six"),
]
filegroup(

View File

@ -0,0 +1,14 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- late_deps.bzl.orig 2021-05-04 05:04:50 UTC
+++ late_deps.bzl
@@ -1,8 +1,6 @@
"""Repo setup that can't happen until after defs.bzl:setup_deps() is run."""
-load("@py_deps//:requirements.bzl", "pip_install")
load("@npm//@bazel/labs:package.bzl", "npm_bazel_labs_dependencies")
def setup_late_deps():
- pip_install()
npm_bazel_labs_dependencies()

View File

@ -0,0 +1,29 @@
Add FreeBSD to the list of supported operating systems.
At the moment only the "amd64" architecture is defined here but it should be
possible to add more architectures here.
--- local_repos/rules_nodejs/internal/common/os_name.bzl.orig 2021-07-27 08:47:19 UTC
+++ local_repos/rules_nodejs/internal/common/os_name.bzl
@@ -21,6 +21,7 @@ OS_ARCH_NAMES = [
("linux", "amd64"),
("linux", "arm64"),
("linux", "s390x"),
+ ("freebsd", "amd64"),
]
OS_NAMES = ["_".join(os_arch_name) for os_arch_name in OS_ARCH_NAMES]
@@ -48,6 +49,13 @@ def os_name(rctx):
return OS_NAMES[4]
else:
return OS_NAMES[2]
+ elif os_name.startswith("freebsd"):
+ # This is not ideal, but bazel doesn't directly expose arch.
+ arch = rctx.execute(["uname", "-m"]).stdout.strip()
+ if arch == "amd64":
+ return OS_NAMES[5]
+ else:
+ fail("Unsupported FreeBSD architecture: " + arch)
else:
fail("Unsupported operating system: " + os_name)

View File

@ -0,0 +1,13 @@
Avoid hardcoded paths and Use "shells/bash" from the Ports tree.
--- local_repos/rules_nodejs/internal/node/node_patches.js.orig 2021-02-20 14:13:32 UTC
+++ local_repos/rules_nodejs/internal/node/node_patches.js
@@ -579,7 +579,7 @@ set Path=${nodeDir};%Path%
else {
const nodeEntry = path.join(nodeDir, 'node');
if (!fs$1.existsSync(nodeEntry)) {
- fs$1.writeFileSync(nodeEntry, `#!/bin/bash
+ fs$1.writeFileSync(nodeEntry, `#!%%LOCALBASE%%/bin/bash
export NP_SUBPROCESS_NODE_DIR="${nodeDir}"
export PATH="${nodeDir}":\$PATH
if [[ ! "\${@}" =~ "${file}" ]]; then

View File

@ -0,0 +1,14 @@
Add additional arguments to "www/yarn" to point to the cache folder and prevent
it to establish network connections during the build process.
--- local_repos/rules_nodejs/internal/npm_install/npm_install.bzl.orig 2021-02-21 10:43:57 UTC
+++ local_repos/rules_nodejs/internal/npm_install/npm_install.bzl
@@ -360,6 +360,8 @@ def _yarn_install_impl(repository_ctx):
yarn = get_yarn_label(repository_ctx)
yarn_args = []
+ yarn_args.append("--cache-folder %%_MY_YARNCACHE%%")
+ yarn_args.append("--offline")
# Set frozen lockfile as default install to install the exact version from the yarn.lock
# file. To perform an yarn install use the vendord yarn binary with:

View File

@ -0,0 +1,55 @@
Add FreeBSD to the list of supported operating systems.
At the moment only the "amd64" architecture is defined here but it should be
possible to add more architectures here.
--- local_repos/rules_nodejs/toolchains/node/BUILD.bazel.orig 2021-02-20 14:13:32 UTC
+++ local_repos/rules_nodejs/toolchains/node/BUILD.bazel
@@ -26,6 +26,14 @@ platform(
)
platform(
+ name = "freebsd_amd64",
+ constraint_values = [
+ "@bazel_tools//platforms:freebsd",
+ "@bazel_tools//platforms:x86_64",
+ ],
+)
+
+platform(
name = "linux_amd64",
constraint_values = [
"@bazel_tools//platforms:linux",
@@ -78,6 +86,7 @@ alias(
name = "toolchain",
actual = select({
"@bazel_tools//src/conditions:darwin": "@nodejs_darwin_amd64_config//:toolchain",
+ "@bazel_tools//src/conditions:freebsd_x86_64": "@nodejs_freebsd_amd64_config//:toolchain",
"@bazel_tools//src/conditions:linux_aarch64": "@nodejs_linux_arm64_config//:toolchain",
"@bazel_tools//src/conditions:linux_s390x": "@nodejs_linux_s390x_config//:toolchain",
"@bazel_tools//src/conditions:linux_x86_64": "@nodejs_linux_amd64_config//:toolchain",
@@ -92,6 +101,7 @@ alias(
name = "node_bin",
actual = select({
"@bazel_tools//src/conditions:darwin": "@nodejs_darwin_amd64//:node_bin",
+ "@bazel_tools//src/conditions:freebsd_x86_64": "@nodejs_freebsd_amd64//:node_bin",
"@bazel_tools//src/conditions:linux_aarch64": "@nodejs_linux_arm64//:node_bin",
"@bazel_tools//src/conditions:linux_s390x": "@nodejs_linux_s390x//:node_bin",
"@bazel_tools//src/conditions:linux_x86_64": "@nodejs_linux_amd64//:node_bin",
@@ -99,6 +109,16 @@ alias(
"//conditions:default": "@nodejs_linux_amd64//:node_bin",
}),
visibility = ["//visibility:public"],
+)
+
+toolchain(
+ name = "node_freebsd_amd64_toolchain",
+ target_compatible_with = [
+ "@bazel_tools//platforms:freebsd",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = "@nodejs_freebsd_amd64_config//:toolchain",
+ toolchain_type = ":toolchain_type",
)
toolchain(

View File

@ -0,0 +1,17 @@
At the moment only the "amd64" architecture is defined here but it should be
possible to add more architectures here.
--- platforms/BUILD.bazel.orig 2021-01-08 07:47:26 UTC
+++ platforms/BUILD.bazel
@@ -23,3 +23,11 @@ config_setting(
"@platforms//cpu:x86_64",
],
)
+
+config_setting(
+ name = "freebsd_x86_64",
+ constraint_values = [
+ "@platforms//os:freebsd",
+ "@platforms//cpu:x86_64",
+ ],
+)

View File

@ -0,0 +1,27 @@
Define a local repository to use "devel/protobuf" from the Ports tree.
At the moment it is only exposed for the "amd64" architecture but it should be
possible to add more architectures here.
--- protobuf.bzl.orig 2021-03-27 05:13:11 UTC
+++ protobuf.bzl
@@ -15,6 +15,7 @@ alias(
"@net_ankiweb_anki//platforms:windows_x86_64": "@protoc_bin_windows//:bin/protoc.exe",
"@net_ankiweb_anki//platforms:macos_x86_64": "@protoc_bin_macos//:bin/protoc",
"@net_ankiweb_anki//platforms:linux_x86_64": "@protoc_bin_linux_x86_64//:bin/protoc",
+ "@net_ankiweb_anki//platforms:freebsd_x86_64": "@protoc_bin_freebsd//:bin/protoc",
"@net_ankiweb_anki//platforms:linux_arm64": "@protoc_bin_linux_arm64//:bin/protoc"
}),
visibility = ["//visibility:public"]
@@ -66,6 +67,11 @@ def setup_protobuf_binary(name):
],
sha256 = "642554ed4dd2dba94e1afddcccdd7d832999cea309299cc5952f13db389894f8",
build_file_content = """exports_files(["bin/protoc.exe"])""",
+ )
+
+ native.local_repository(
+ name = "protoc_bin_freebsd",
+ path = "%%_MY_LOCALREPO%%/protoc_bin_freebsd",
)
if not native.existing_rule(name):

View File

@ -1,39 +0,0 @@
Use the current directory to locate and load the ankirspy (= Rust/Python
bridge) module that was built with "build-rspy" target.
Also avoid Python wheel generation as the produced wheels won't be used. The
Python code will be compiled and installed via Port's Makefile.
--- pylib/Makefile.orig 2020-08-30 01:23:44 UTC
+++ pylib/Makefile
@@ -32,11 +32,9 @@ PHONY: all
all: check
.build/run-deps: setup.py
- SKIP_ANKI_RSPY=true python -m pip install -e .
@touch $@
.build/dev-deps: requirements.dev
- python -m pip install -r requirements.dev
@touch $@
PROTODEPS := ../proto/backend.proto ../proto/fluent.proto
@@ -45,7 +43,7 @@ PROTODEPS := ../proto/backend.proto ../proto/fluent.pr
protoc --proto_path=../proto --python_out=anki --mypy_out=anki $(PROTODEPS)
perl -i'' -pe 's/from fluent_pb2/from anki.fluent_pb2/' anki/backend_pb2.pyi
perl -i'' -pe 's/import fluent_pb2/import anki.fluent_pb2/' anki/backend_pb2.py
- python tools/genbackend.py
+ PYTHONPATH=. python tools/genbackend.py
python -m black -t py36 anki/rsbackend_gen.py
@touch $@
@@ -104,9 +102,6 @@ CHECKDEPS := $(shell "${FIND}" anki tests -name '*.py'
build: .build/build
.build/build: $(BUILD_STEPS) $(CHECKDEPS)
- rm -rf dist build
- python setup.py -q bdist_wheel
- rsync -a dist/*.whl ../dist/
touch $@
# prepare code for running in place

View File

@ -0,0 +1,34 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- pylib/anki/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ pylib/anki/BUILD.bazel
@@ -1,6 +1,5 @@
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_python//python:defs.bzl", "py_library")
-load("@py_deps//:requirements.bzl", "requirement")
load("@rules_python//experimental/python:wheel.bzl", "py_package", "py_wheel")
load("//:defs.bzl", "anki_version")
load("//pylib:orjson.bzl", "orjson_if_available")
@@ -39,13 +38,6 @@ py_library(
],
visibility = ["//visibility:public"],
deps = [
- requirement("beautifulsoup4"),
- requirement("decorator"),
- requirement("distro"),
- requirement("protobuf"),
- requirement("requests"),
- requirement("flask"),
- requirement("waitress"),
] + orjson_if_available(),
)
@@ -70,6 +62,7 @@ py_wheel(
"//platforms:windows_x86_64": "win_amd64",
"//platforms:macos_x86_64": "macosx_10_7_x86_64",
"//platforms:linux_x86_64": "manylinux2014_x86_64",
+ "//platforms:freebsd_x86_64": "freebsd_x86_64",
"//platforms:linux_arm64": "manylinux2014_aarch64",
}),
python_tag = "cp38",

View File

@ -0,0 +1,21 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- pylib/anki/_backend/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ pylib/anki/_backend/BUILD.bazel
@@ -1,5 +1,4 @@
load("@rules_python//python:defs.bzl", "py_binary")
-load("@py_deps//:requirements.bzl", "requirement")
load("//pylib:protobuf.bzl", "py_proto_library_typed")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@bazel_skylib//lib:selects.bzl", "selects")
@@ -27,9 +26,6 @@ py_binary(
"genbackend.py",
],
deps = [
- requirement("black"),
- requirement("stringcase"),
- requirement("protobuf"),
],
)

View File

@ -0,0 +1,15 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- pylib/orjson.bzl.orig 2021-05-04 05:04:50 UTC
+++ pylib/orjson.bzl
@@ -1,8 +1,7 @@
-load("@py_deps//:requirements.bzl", "requirement")
def orjson_if_available():
"Include orjson if it's listed in requirements.txt."
- target = requirement("orjson")
+ target = "not_found"
if "not_found" in target:
return []
else:

View File

@ -0,0 +1,28 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- pylib/tools/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ pylib/tools/BUILD.bazel
@@ -1,5 +1,4 @@
load("@rules_python//python:defs.bzl", "py_binary", "py_library")
-load("@py_deps//:requirements.bzl", "requirement")
py_binary(
name = "protoc-gen-mypy",
@@ -7,7 +6,6 @@ py_binary(
visibility = [
"//visibility:public",
],
- deps = [requirement("mypy-protobuf")],
)
py_binary(
@@ -41,8 +39,6 @@ py_binary(
imports = ["."],
visibility = ["//pylib:__subpackages__"],
deps = [
- requirement("black"),
- requirement("stringcase"),
],
)

View File

@ -0,0 +1,70 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- qt/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ qt/BUILD.bazel
@@ -1,5 +1,4 @@
load("@rules_python//python:defs.bzl", "py_binary", "py_test")
-load("@py_deps//:requirements.bzl", "requirement")
py_binary(
name = "genhooks_gui",
@@ -10,8 +9,6 @@ py_binary(
visibility = [":__subpackages__"],
deps = [
"//pylib/tools:hookslib",
- requirement("black"),
- requirement("stringcase"),
],
)
@@ -32,8 +29,6 @@ py_test(
deps = [
"//pylib/anki",
"//qt/aqt:aqt_without_data",
- requirement("pytest"),
- requirement("mock"),
],
)
@@ -56,7 +51,6 @@ py_test(
"//pylib/anki",
"//qt/aqt:aqt_without_data",
"@pyqt5//:pkg",
- requirement("mypy"),
],
)
@@ -76,7 +70,6 @@ py_test(
deps = [
"//pylib/anki",
"//qt/aqt:aqt_without_data",
- requirement("pylint"),
"@pyqt5//:pkg",
],
)
@@ -93,8 +86,6 @@ py_test(
main = "tests/run_format.py",
deps = [
"//qt/aqt:aqt_without_data",
- requirement("black"),
- requirement("isort"),
],
)
@@ -111,8 +102,6 @@ py_binary(
main = "tests/run_format.py",
tags = ["manual"],
deps = [
- requirement("black"),
- requirement("isort"),
],
)
@@ -134,6 +123,5 @@ py_binary(
srcs = ["tools/profile.py"],
tags = ["manual"],
deps = [
- requirement("snakeviz"),
],
)

View File

@ -1,45 +0,0 @@
Avoid Python wheel generation in the ".build/build" target as the produced
wheels won't be used. The Python code will be compiled and installed via
Port's Makefile.
--- qt/Makefile.orig 2020-08-30 01:23:44 UTC
+++ qt/Makefile
@@ -35,11 +35,9 @@ PHONY: all
all: check
.build/run-deps: setup.py
- python -m pip install -e .
@touch $@
.build/dev-deps: requirements.dev
- python -m pip install -r requirements.dev
@touch $@
.build/ui: $(shell "${FIND}" designer -type f)
@@ -55,7 +53,7 @@ all: check
TSDEPS := $(wildcard ts/src/*.ts) $(wildcard ts/scss/*.scss)
.build/js: $(TSDEPS)
- (cd ts && make build)
+ (cd ts && %%MAKE_CMD%% build)
python ./tools/extract_scss_colors.py
@touch $@
@@ -64,7 +62,7 @@ TSDEPS := $(wildcard ts/src/*.ts) $(wildcard ts/scss/*
python -m black aqt/gui_hooks.py
@touch $@
-BUILD_STEPS := .build/vernum .build/run-deps .build/dev-deps .build/js .build/ui aqt/buildinfo.py .build/hooks .build/i18n
+BUILD_STEPS := .build/vernum .build/run-deps .build/dev-deps .build/js .build/ui aqt/buildinfo.py .build/hooks ### NLS ###.build/i18n
# Checking
######################
@@ -137,8 +135,6 @@ build: .build/build
.build/build: $(BUILD_STEPS) $(CHECKDEPS) $(wildcard ../ts/dist/*)
rm -rf dist build
rsync -a ../ts/dist/ aqt_data/web/
- python setup.py -q bdist_wheel
- rsync -a dist/*.whl ../dist/
touch $@
.PHONY: develop

View File

@ -0,0 +1,35 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- qt/aqt/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ qt/aqt/BUILD.bazel
@@ -1,6 +1,5 @@
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_python//python:defs.bzl", "py_library")
-load("@py_deps//:requirements.bzl", "requirement")
load("@rules_python//experimental/python:wheel.bzl", "py_package", "py_wheel")
load("//:defs.bzl", "anki_version")
@@ -42,22 +41,9 @@ aqt_core_data = [
]
aqt_deps = [
- requirement("protobuf"),
- requirement("decorator"),
- requirement("requests"),
- requirement("beautifulsoup4"),
- requirement("flask"),
- requirement("flask-cors"),
- requirement("waitress"),
- requirement("send2trash"),
- requirement("markdown"),
- requirement("jsonschema"),
"@pyqt5//:pkg",
] + select({
"@bazel_tools//src/conditions:host_windows": [
- requirement("psutil"),
- requirement("pywin32"),
- requirement("winrt"),
],
"//conditions:default": [],
})

View File

@ -1,10 +0,0 @@
--- qt/runanki.orig 2020-08-30 01:23:44 UTC
+++ qt/runanki
@@ -1,4 +1,7 @@
#!/usr/bin/env python3
+import sys
+sys.path.append("%%DATADIR%%")
+
import aqt
aqt.run()

View File

@ -1,19 +1,16 @@
Avoid vendored OpenSSL dependencies.
Enable "translations" feature to add the translations from the fluent repos.
--- rslib/Cargo.toml.orig 2020-09-04 08:35:57 UTC
--- rslib/Cargo.toml.orig 2021-05-04 05:04:50 UTC
+++ rslib/Cargo.toml
@@ -61,10 +61,10 @@ features = ["trace", "functions", "collation"]
version = "0.23.1"
features = ["trace", "functions", "collation", "bundled"]
@@ -7,6 +7,11 @@ license = "AGPL-3.0-or-later"
description = "Anki's Rust library code"
build = "build/main.rs"
-[target.'cfg(linux)'.dependencies.reqwest]
-git = "https://github.com/ankitects/reqwest.git"
-rev = "57665e2c2a39db85723ba860f1b570a608bb73f9"
-features = ["json", "socks", "stream", "native-tls-vendored"]
+#[target.'cfg(linux)'.dependencies.reqwest]
+#git = "https://github.com/ankitects/reqwest.git"
+#rev = "57665e2c2a39db85723ba860f1b570a608bb73f9"
+#features = ["json", "socks", "stream", "native-tls-vendored"]
[target.'cfg(not(linux))'.dependencies.reqwest]
git = "https://github.com/ankitects/reqwest.git"
+[features]
+default = ["translations"]
+
+translations = []
+
[lib]
name = "anki"
path = "src/lib.rs"

View File

@ -1,27 +0,0 @@
Extract the contents of Python wheel file to Anki's Python library to load it
directly from that place. The .so file will be used for installation later.
Rust from Ports is used as well so there is no need to bootstrap it via
"rustup".
--- rspy/Makefile.orig 2020-08-30 01:23:44 UTC
+++ rspy/Makefile
@@ -71,6 +71,7 @@ build: .build/build
touch ../proto/backend.proto
${BUILD_VARIABLES} \
maturin build -i "${PYTHON_FILE}" -o "$(OUTDIR)" $(BUILDFLAGS)
+ %%UNZIP_NATIVE_CMD%% -o -d ../pylib/ `find ../dist/ -name "*.whl"`
touch $@
check: .build/check
@@ -87,10 +88,6 @@ clean:
RUST_TOOLCHAIN := $(shell cat rust-toolchain)
.build/tools: requirements.txt rust-toolchain
- python -m pip install -r requirements.txt
- rustup toolchain install $(RUST_TOOLCHAIN)
- rustup component add rustfmt-preview --toolchain $(RUST_TOOLCHAIN)
- rustup component add clippy-preview --toolchain $(RUST_TOOLCHAIN)
@touch $@
# we should not call clippy because it break things when running make check Mac OS

View File

@ -0,0 +1,10 @@
Avoid loading of "requirements.bzl" because it requires "pip_import" which
is already disabled in "defs.bzl".
--- scripts/BUILD.bazel.orig 2021-05-04 05:04:50 UTC
+++ scripts/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@py_deps//:requirements.bzl", "requirement")
py_binary(
name = "buildinfo",

View File

@ -0,0 +1,9 @@
Use _MY_BUILDHASH which is defined in the Port's Makefile
--- scripts/status.sh.orig 2021-02-15 17:35:54 UTC
+++ scripts/status.sh
@@ -1,3 +1,3 @@
#!/bin/bash
-echo "STABLE_BUILDHASH $(git rev-parse --short=8 HEAD || echo nogit)"
+echo "STABLE_BUILDHASH $(git rev-parse --short=8 HEAD || echo %%_MY_BUILDHASH%%)"

View File

@ -3,8 +3,6 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__init__.py
%%DATADIR%%/anki/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/cards.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -27,10 +25,10 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/exporting.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/find.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/find.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/hooks.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/hooks.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/httpclient.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/httpclient.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/lang.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -45,10 +43,10 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/notes.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/rsbackend.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/rsbackend.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/rsbackend_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/rsbackend_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/sched.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/sched.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/scheduler.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/scheduler.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/schedv2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/schedv2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -67,15 +65,28 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/__pycache__/tags.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/template.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/template.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/template_legacy.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/template_legacy.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/types.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/types.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/backend_pb2.py
%%DATADIR%%/anki/backend_pb2.pyi
%%DATADIR%%/anki/_backend/__init__.py
%%DATADIR%%/anki/_backend/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/_backend/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/_backend/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/_backend/__pycache__/backend_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/_backend/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/_backend/__pycache__/fluent_pb2.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/_backend/__pycache__/generated.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/_backend/__pycache__/generated.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/_backend/backend_pb2.py
%%DATADIR%%/anki/_backend/backend_pb2.pyi
%%DATADIR%%/anki/_backend/fluent_pb2.py
%%DATADIR%%/anki/_backend/fluent_pb2.pyi
%%DATADIR%%/anki/_backend/generated.py
%%DATADIR%%/anki/_backend/rsbridge.pyi
%%DATADIR%%/anki/_backend/rsbridge.so
%%DATADIR%%/anki/buildinfo.py
%%DATADIR%%/anki/buildinfo.txt
%%DATADIR%%/anki/cards.py
%%DATADIR%%/anki/collection.py
%%DATADIR%%/anki/config.py
@ -86,9 +97,8 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/errors.py
%%DATADIR%%/anki/exporting.py
%%DATADIR%%/anki/find.py
%%DATADIR%%/anki/fluent_pb2.py
%%DATADIR%%/anki/fluent_pb2.pyi
%%DATADIR%%/anki/hooks.py
%%DATADIR%%/anki/hooks_gen.py
%%DATADIR%%/anki/httpclient.py
%%DATADIR%%/anki/importing/__init__.py
%%DATADIR%%/anki/importing/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -124,8 +134,8 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/notes.py
%%DATADIR%%/anki/py.typed
%%DATADIR%%/anki/rsbackend.py
%%DATADIR%%/anki/rsbackend_gen.py
%%DATADIR%%/anki/sched.py
%%DATADIR%%/anki/scheduler.py
%%DATADIR%%/anki/schedv2.py
%%DATADIR%%/anki/sound.py
%%DATADIR%%/anki/stats.py
@ -133,12 +143,16 @@ man/man1/anki.1.gz
%%DATADIR%%/anki/stdmodels.py
%%DATADIR%%/anki/storage.py
%%DATADIR%%/anki/sync.py
%%DATADIR%%/anki/syncserver/__init__.py
%%DATADIR%%/anki/syncserver/__main__.py
%%DATADIR%%/anki/syncserver/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/syncserver/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/syncserver/__pycache__/__main__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/anki/syncserver/__pycache__/__main__.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/anki/tags.py
%%DATADIR%%/anki/template.py
%%DATADIR%%/anki/template_legacy.py
%%DATADIR%%/anki/types.py
%%DATADIR%%/anki/utils.py
%%DATADIR%%/ankirspy%%_PY_SONAME%%.so
%%DATADIR%%/aqt/__init__.py
%%DATADIR%%/aqt/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
@ -150,8 +164,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/addons.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/browser.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/browser.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/buildinfo.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/clayout.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/clayout.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/colors.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -182,6 +194,8 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/fields.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/gui_hooks.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/gui_hooks.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/hooks_gen.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/importing.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/importing.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/legacy.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -204,6 +218,8 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/overview.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/pinnedmodules.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/pinnedmodules.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/platform.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/platform.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/preferences.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/preferences.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/previewer.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -216,8 +232,12 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/__pycache__/qt.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/reviewer.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/reviewer.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/scheduling.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/scheduling.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/schema_change_tracker.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/schema_change_tracker.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/sidebar.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/sidebar.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/__pycache__/sound.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/__pycache__/stats.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -250,10 +270,112 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/addcards.py
%%DATADIR%%/aqt/addons.py
%%DATADIR%%/aqt/browser.py
%%DATADIR%%/aqt/buildinfo.py
%%DATADIR%%/aqt/clayout.py
%%DATADIR%%/aqt/colors.py
%%DATADIR%%/aqt/customstudy.py
%%DATADIR%%/aqt/data/web/css/core.css
%%DATADIR%%/aqt/data/web/css/deckbrowser.css
%%DATADIR%%/aqt/data/web/css/editable.css
%%DATADIR%%/aqt/data/web/css/editor.css
%%DATADIR%%/aqt/data/web/css/overview.css
%%DATADIR%%/aqt/data/web/css/reviewer-bottom.css
%%DATADIR%%/aqt/data/web/css/reviewer.css
%%DATADIR%%/aqt/data/web/css/toolbar-bottom.css
%%DATADIR%%/aqt/data/web/css/toolbar.css
%%DATADIR%%/aqt/data/web/css/webview.css
%%DATADIR%%/aqt/data/web/imgs/anki-logo-thin.png
%%DATADIR%%/aqt/data/web/imgs/gears.svg
%%DATADIR%%/aqt/data/web/imgs/media-record.png
%%DATADIR%%/aqt/data/web/imgs/more.png
%%DATADIR%%/aqt/data/web/imgs/paperclip.png
%%DATADIR%%/aqt/data/web/imgs/refresh.svg
%%DATADIR%%/aqt/data/web/imgs/text_bold.png
%%DATADIR%%/aqt/data/web/imgs/text_clear.png
%%DATADIR%%/aqt/data/web/imgs/text_cloze.png
%%DATADIR%%/aqt/data/web/imgs/text_italic.png
%%DATADIR%%/aqt/data/web/imgs/text_sub.png
%%DATADIR%%/aqt/data/web/imgs/text_super.png
%%DATADIR%%/aqt/data/web/imgs/text_under.png
%%DATADIR%%/aqt/data/web/js/deckbrowser.js
%%DATADIR%%/aqt/data/web/js/editor.js
%%DATADIR%%/aqt/data/web/js/mathjax.js
%%DATADIR%%/aqt/data/web/js/overview.js
%%DATADIR%%/aqt/data/web/js/reviewer-bottom.js
%%DATADIR%%/aqt/data/web/js/reviewer.js
%%DATADIR%%/aqt/data/web/js/toolbar.js
%%DATADIR%%/aqt/data/web/js/vendor/css_browser_selector.min.js
%%DATADIR%%/aqt/data/web/js/vendor/jquery-ui.min.js
%%DATADIR%%/aqt/data/web/js/vendor/jquery.min.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/assistive-mml.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/complexity.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/explorer.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/a11y/semantic-enrich.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/action.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/all-packages.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/ams.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/amscd.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/autoload.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/bbox.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/boldsymbol.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/braket.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/bussproofs.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/cancel.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/color.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/colorv2.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/configmacros.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/enclose.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/extpfeil.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/html.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/mhchem.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/newcommand.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/noerrors.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/noundefined.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/physics.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/require.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/tagformat.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/textmacros.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/unicode.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/input/tex/extensions/verb.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/de.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/en.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/es.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/fr.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/mathmaps/nemeth.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/sre-node.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/sre/sre_browser.js
%%DATADIR%%/aqt/data/web/js/vendor/mathjax/tex-chtml.js
%%DATADIR%%/aqt/data/web/js/vendor/plot.js
%%DATADIR%%/aqt/data/web/js/vendor/protobuf.min.js
%%DATADIR%%/aqt/data/web/js/vendor/protobuf.min.js.map
%%DATADIR%%/aqt/data/web/js/webview.js
%%DATADIR%%/aqt/data/web/pages/congrats.html
%%DATADIR%%/aqt/data/web/pages/congrats.js
%%DATADIR%%/aqt/data/web/pages/graphs.css
%%DATADIR%%/aqt/data/web/pages/graphs.html
%%DATADIR%%/aqt/data/web/pages/graphs.js
%%DATADIR%%/aqt/dbcheck.py
%%DATADIR%%/aqt/deckbrowser.py
%%DATADIR%%/aqt/deckchooser.py
@ -338,8 +460,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/__pycache__/progress.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/reposition.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/forms/__pycache__/reposition.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/reschedule.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/forms/__pycache__/reschedule.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/setgroup.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
%%DATADIR%%/aqt/forms/__pycache__/setgroup.cpython-%%PYTHON_SUFFIX%%.pyc
%%DATADIR%%/aqt/forms/__pycache__/setlang.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc
@ -389,7 +509,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/profiles.py
%%DATADIR%%/aqt/forms/progress.py
%%DATADIR%%/aqt/forms/reposition.py
%%DATADIR%%/aqt/forms/reschedule.py
%%DATADIR%%/aqt/forms/setgroup.py
%%DATADIR%%/aqt/forms/setlang.py
%%DATADIR%%/aqt/forms/stats.py
@ -398,6 +517,7 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/forms/taglimit.py
%%DATADIR%%/aqt/forms/template.py
%%DATADIR%%/aqt/gui_hooks.py
%%DATADIR%%/aqt/hooks_gen.py
%%DATADIR%%/aqt/importing.py
%%DATADIR%%/aqt/legacy.py
%%DATADIR%%/aqt/main.py
@ -409,6 +529,7 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/mpv.py
%%DATADIR%%/aqt/overview.py
%%DATADIR%%/aqt/pinnedmodules.py
%%DATADIR%%/aqt/platform.py
%%DATADIR%%/aqt/preferences.py
%%DATADIR%%/aqt/previewer.py
%%DATADIR%%/aqt/profiles.py
@ -416,7 +537,9 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/py.typed
%%DATADIR%%/aqt/qt.py
%%DATADIR%%/aqt/reviewer.py
%%DATADIR%%/aqt/scheduling.py
%%DATADIR%%/aqt/schema_change_tracker.py
%%DATADIR%%/aqt/sidebar.py
%%DATADIR%%/aqt/sound.py
%%DATADIR%%/aqt/stats.py
%%DATADIR%%/aqt/studydeck.py
@ -431,392 +554,6 @@ man/man1/anki.1.gz
%%DATADIR%%/aqt/utils.py
%%DATADIR%%/aqt/webview.py
%%DATADIR%%/aqt/winpaths.py
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/af/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ar/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/bg/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ca/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/cs/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/da/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/de/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/el/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/en-GB/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/eo/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/es/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/et/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/eu/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fa/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fi/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/fr/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ga-IE/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/gl/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/he/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hi-IN/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hr/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hu/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/hy-AM/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/it/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ja/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/jbo/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/kab/LC_MESSAGES/anki.mo
@dir %%NLS%%%%DATADIR%%/aqt_data/locale/gettext/km/LC_MESSAGES
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ko/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/la/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/mn/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/mr/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ms/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nb-NO/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nl/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/nn-NO/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/oc/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/or/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pl/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pt-BR/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/pt-PT/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ro/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/ru/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sk/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sl/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sr/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/sv-SE/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/th/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/tr/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/uk/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/vi/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/zh-CN/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/gettext/zh-TW/LC_MESSAGES/anki.mo
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_cs.qm
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_de.qm
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_es.qm
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_fr.qm
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qscintilla_pt_br.qm
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/am.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ar.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/bg.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/bn.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ca.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/cs.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/da.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/de.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/el.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/en-GB.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/en-US.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/es-419.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/es.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/et.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fa.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fi.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fil.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/fr.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/gu.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/he.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hi.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hr.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/hu.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/id.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/it.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ja.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/kn.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ko.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/lt.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/lv.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ml.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/mr.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ms.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/nb.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/nl.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pl.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pt-BR.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/pt-PT.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ro.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ru.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sk.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sl.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sr.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sv.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/sw.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/ta.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/te.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/th.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/tr.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/uk.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/vi.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/zh-CN.pak
%%NLS%%%%DATADIR%%/aqt_data/locale/qt/qtwebengine_locales/zh-TW.pak
%%DATADIR%%/aqt_data/web/browsersel.js
%%DATADIR%%/aqt_data/web/deckbrowser.css
%%DATADIR%%/aqt_data/web/deckbrowser.js
%%DATADIR%%/aqt_data/web/editor.css
%%DATADIR%%/aqt_data/web/editor.js
%%DATADIR%%/aqt_data/web/graphs.html
%%DATADIR%%/aqt_data/web/graphs.js
%%DATADIR%%/aqt_data/web/imgs/anki-logo-thin.png
%%DATADIR%%/aqt_data/web/imgs/gears.svg
%%DATADIR%%/aqt_data/web/imgs/media-record.png
%%DATADIR%%/aqt_data/web/imgs/more.png
%%DATADIR%%/aqt_data/web/imgs/paperclip.png
%%DATADIR%%/aqt_data/web/imgs/refresh.svg
%%DATADIR%%/aqt_data/web/imgs/text_bold.png
%%DATADIR%%/aqt_data/web/imgs/text_clear.png
%%DATADIR%%/aqt_data/web/imgs/text_cloze.png
%%DATADIR%%/aqt_data/web/imgs/text_italic.png
%%DATADIR%%/aqt_data/web/imgs/text_sub.png
%%DATADIR%%/aqt_data/web/imgs/text_super.png
%%DATADIR%%/aqt_data/web/imgs/text_under.png
%%DATADIR%%/aqt_data/web/jquery-ui.js
%%DATADIR%%/aqt_data/web/jquery.js
%%DATADIR%%/aqt_data/web/mathjax/MathJax.js
%%DATADIR%%/aqt_data/web/mathjax/conf.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/FontWarnings.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/HTML-CSS/handle-floats.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/HelpDialog.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/MatchWebFonts.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/MathEvents.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/MathMenu.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/MathZoom.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/Safe.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMScd.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMSmath.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/AMSsymbols.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/HTML.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/action.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/autobold.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/autoload-all.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/bbox.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/begingroup.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/boldsymbol.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/cancel.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/color.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/enclose.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/extpfeil.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mathchoice.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mediawiki-texvc.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mhchem.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/mhchem3/mhchem.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/newcommand.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/noErrors.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/noUndefined.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/unicode.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/TeX/verb.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/asciimath2jax.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/fast-preview.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/jsMath2jax.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/mhchem.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/mml2jax.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/tex2jax.js
%%DATADIR%%/aqt_data/web/mathjax/extensions/toMathML.js
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/jax.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Arrows.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/CombDiactForSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Dingbats.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GeneralPunctuation.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GeometricShapes.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/GreekAndCoptic.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/Latin1Supplement.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/LetterlikeSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/MiscTechnical.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SpacingModLetters.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SuppMathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SupplementalArrowsA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/element/mml/optable/SupplementalArrowsB.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/AsciiMath/config.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/AsciiMath/jax.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/config.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/a.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/b.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/c.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/d.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/e.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/f.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/fr.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/g.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/h.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/i.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/j.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/k.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/l.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/m.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/n.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/o.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/opf.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/p.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/q.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/r.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/s.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/scr.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/t.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/u.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/v.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/w.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/x.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/y.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/entities/z.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/MathML/jax.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/TeX/config.js
%%DATADIR%%/aqt_data/web/mathjax/jax/input/TeX/jax.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/annotation-xml.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/maction.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/menclose.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mglyph.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mmultiscripts.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/ms.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/mtable.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/autoload/multiline.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/config.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Caligraphic-Bold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Bold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Regular.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Main-Bold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Math-BoldItalic.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Bold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Italic.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Regular.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Script-Regular.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/Typewriter-Regular.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata-extra.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/CommonHTML/jax.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/annotation-xml.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/maction.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/menclose.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mglyph.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mmultiscripts.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/ms.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/mtable.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/autoload/multiline.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/config.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/AMS.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Bold.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Main.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/imageFonts.js
%%DATADIR%%/aqt_data/web/mathjax/jax/output/HTML-CSS/jax.js
%%DATADIR%%/aqt_data/web/overview.css
%%DATADIR%%/aqt_data/web/overview.js
%%DATADIR%%/aqt_data/web/plot.js
%%DATADIR%%/aqt_data/web/reviewer-bottom.css
%%DATADIR%%/aqt_data/web/reviewer-bottom.js
%%DATADIR%%/aqt_data/web/reviewer.css
%%DATADIR%%/aqt_data/web/reviewer.js
%%DATADIR%%/aqt_data/web/toolbar-bottom.css
%%DATADIR%%/aqt_data/web/toolbar.css
%%DATADIR%%/aqt_data/web/toolbar.js
%%DATADIR%%/aqt_data/web/webview.css
%%DATADIR%%/aqt_data/web/webview.js
share/applications/anki.desktop
share/pixmaps/anki.png
share/pixmaps/anki.xpm