games/anki: Update to 2.1.35

Since the 2.1.17 release the build system has been significantly revised and
contains many changes (e.g. a Rust library with Python bindings) that had to
be adapted to the Ports framework.

Kudos to David Schlachter for the additional testing and feedback!

Changelog since 2.1.16 (too many changes to list them separately):

https://changes.ankiweb.net/

PR:		247666
Reported by:	David Schlachter
Reviewed by:	tcberner (earlier revision)
Differential Revision:	https://reviews.freebsd.org/D26961
This commit is contained in:
Kai Knoblich 2020-11-10 13:01:04 +00:00
parent 86511ab9a1
commit 1519278800
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=554834
13 changed files with 1549 additions and 612 deletions

View file

@ -2,11 +2,11 @@
# $FreeBSD$
PORTNAME= anki
DISTVERSION= 2.1.16
PORTREVISION= 2
DISTVERSION= 2.1.35
# Don't forget to update ${_MY_BUILDHASH}
CATEGORIES= games python
MASTER_SITES= https://apps.ankiweb.net/downloads/archive/
DISTNAME= anki-${PORTVERSION}-source
MASTER_SITES= LOCAL/kai/:npmcache
DISTFILES= anki-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
DIST_SUBDIR= python
MAINTAINER= kai@FreeBSD.org
@ -15,6 +15,23 @@ COMMENT= Flashcard trainer with spaced repetition
LICENSE= AGPLv3+
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= bash:shells/bash \
maturin:devel/py-maturin@${PY_FLAVOR} \
protoc:devel/protobuf \
npm:www/npm \
rsync:net/rsync \
${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}black>0:devel/py-black@${PY_FLAVOR} \
${RUN_DEPENDS}
# For x64 architectures there's also a Python package "orjson" that still needs
# to be ported once the required features (= "untagged unions",
# "specialication" and "const_generics") of the "smallvec" crate are available
# in the Rust release channel.
#
# Although the "orjson" package is required via the setup.py of Anki's Python
# library it's (still) optional in the code.
RUN_DEPENDS= lame:audio/lame \
${PYTHON_PKGNAMEPREFIX}pyaudio>0:audio/py-pyaudio@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
@ -24,14 +41,297 @@ RUN_DEPENDS= lame:audio/lame \
${PYTHON_PKGNAMEPREFIX}distro>0:sysutils/py-distro@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}markdown>0:textproc/py-markdown@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:www/py-beautifulsoup@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR}
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}Flask>0:www/py-flask@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}Flask-Cors>0:www/py-flask-cors@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}protobuf>0:devel/py-protobuf@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}waitress>0:www/py-waitress@${PY_FLAVOR}
USES= desktop-file-utils pyqt:5 python:3.6+ shebangfix tar:tgz
USE_PYQT= core_run gui_run printsupport_run sip_run webengine_run widgets_run
# 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
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
USE_PYQT= core gui network printsupport sip svg webchannel webengine widgets xml_build
NO_ARCH= yes
SHEBANG_FILES= tools/runanki.system.in
WRKSRC= ${WRKDIR}/anki-${PORTVERSION}
SHEBANG_FILES= qt/po/scripts/build-mo-files \
qt/po/scripts/copy-qt-files \
qt/runanki \
qt/tools/build_ui.sh \
scripts/rename
CARGO_CRATES= addr2line-0.13.0 \
adler-0.2.3 \
aho-corasick-0.7.14 \
anyhow-1.0.33 \
arc-swap-0.4.7 \
arrayref-0.3.6 \
arrayvec-0.4.12 \
arrayvec-0.5.1 \
askama-0.10.3 \
askama_derive-0.10.3 \
askama_escape-0.10.1 \
askama_shared-0.10.4 \
async-compression-0.3.5 \
atty-0.2.14 \
autocfg-1.0.1 \
backtrace-0.3.53 \
base64-0.12.3 \
bitflags-1.2.1 \
blake2b_simd-0.5.10 \
blake3-0.3.7 \
bumpalo-3.4.0 \
byteorder-1.3.4 \
bytes-0.4.12 \
bytes-0.5.6 \
cc-1.0.61 \
cfg-if-0.1.10 \
cfg-if-1.0.0 \
chrono-0.4.19 \
cloudabi-0.1.0 \
constant_time_eq-0.1.5 \
core-foundation-0.7.0 \
core-foundation-sys-0.7.0 \
crc32fast-1.2.1 \
crossbeam-channel-0.4.4 \
crossbeam-utils-0.7.2 \
crypto-mac-0.8.0 \
ctor-0.1.16 \
derivative-2.1.1 \
digest-0.9.0 \
dirs-2.0.2 \
dirs-sys-0.3.5 \
dtoa-0.4.6 \
either-1.6.1 \
encoding_rs-0.8.24 \
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 \
fnv-1.0.7 \
foreign-types-0.3.2 \
foreign-types-shared-0.1.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 \
generic-array-0.14.4 \
getrandom-0.1.15 \
ghost-0.1.2 \
gimli-0.22.0 \
h2-0.2.6 \
hashbrown-0.9.1 \
heck-0.3.1 \
hermit-abi-0.1.17 \
hex-0.4.2 \
htmlescape-0.3.1 \
http-0.2.1 \
http-body-0.3.1 \
httparse-1.3.4 \
httpdate-0.3.2 \
humansize-1.1.0 \
hyper-0.13.8 \
hyper-tls-0.4.3 \
idna-0.2.0 \
indexmap-1.6.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 \
iovec-0.1.4 \
itertools-0.8.2 \
itertools-0.9.0 \
itoa-0.4.6 \
js-sys-0.3.45 \
kernel32-sys-0.2.2 \
lazy_static-1.4.0 \
lexical-core-0.7.4 \
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 \
matches-0.1.8 \
maybe-uninit-2.0.0 \
memchr-2.3.3 \
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 \
nodrop-0.1.14 \
nom-5.1.2 \
num-format-0.4.0 \
num-integer-0.1.43 \
num-traits-0.2.12 \
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 \
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 \
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 \
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 \
rand-0.7.3 \
rand_chacha-0.2.2 \
rand_core-0.5.1 \
rand_hc-0.2.0 \
redox_syscall-0.1.57 \
redox_users-0.3.5 \
regex-1.4.1 \
regex-syntax-0.6.20 \
remove_dir_all-0.5.3 \
rental-0.5.5 \
rental-impl-0.5.5 \
rusqlite-0.23.1 \
rust-argon2-0.8.2 \
rustc-demangle-0.1.18 \
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 \
serde-aux-0.6.1 \
serde_derive-1.0.117 \
serde_json-1.0.59 \
serde_repr-0.1.6 \
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 \
slog-envlogger-2.2.0 \
slog-scope-4.3.0 \
slog-stdlog-4.1.0 \
slog-term-2.6.0 \
smallvec-1.4.2 \
socket2-0.3.15 \
stable_deref_trait-1.2.0 \
static_assertions-1.1.0 \
subtle-2.3.0 \
syn-1.0.46 \
synstructure-0.12.4 \
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 \
tinystr-0.3.4 \
tinyvec-0.3.4 \
tokio-0.2.22 \
tokio-socks-0.2.2 \
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 \
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 \
unicase-2.6.0 \
unicode-bidi-0.3.4 \
unicode-normalization-0.1.13 \
unicode-segmentation-1.6.0 \
unicode-xid-0.2.1 \
unindent-0.1.7 \
url-2.1.1 \
utime-0.3.1 \
vcpkg-0.2.10 \
version_check-0.9.2 \
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 \
winapi-0.2.8 \
winapi-0.3.9 \
winapi-build-0.1.1 \
winapi-i686-pc-windows-gnu-0.4.0 \
winapi-x86_64-pc-windows-gnu-0.4.0 \
winreg-0.6.2 \
ws2_32-sys-0.2.1 \
zip-0.5.6
CARGO_USE_GITHUB= yes
CARGO_CARGOLOCK= ${WRKSRC}/rspy/Cargo.lock
CARGO_CARGOTOML= ${WRKSRC}/rspy/Cargo.toml
CARGO_BUILD= 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
ALL_TARGET= build
OPTIONS_DEFINE= NLS
OPTIONS_DEFAULT= MPV
@ -44,23 +344,93 @@ MPV_DESC= mpv media player support
MPLAYER_RUN_DEPENDS= mplayer:multimedia/mplayer
MPV_RUN_DEPENDS= mpv:multimedia/mpv
NLS_USES= gettext-runtime gettext-tools
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
# 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
post-patch:
@${REINPLACE_CMD} -i '' \
's|%%PREFIX%%|${PREFIX}|' \
${WRKSRC}/anki/lang.py
@${FIND} ${WRKSRC} -name '*.orig' -delete
# 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
post-patch-NLS-off:
@${REINPLACE_CMD} -i '' '/locale/s/^/#/' \
${WRKSRC}/Makefile
post-patch-NLS-on:
@${REINPLACE_CMD} -e 's|### NLS ###||' ${WRKSRC}/qt/Makefile
do-build:
@${PYTHON_CMD} -m compileall ${WRKSRC}
@${PYTHON_CMD} -O -m compileall ${WRKSRC}
# 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
post-install:
${INSTALL_SCRIPT} ${WRKSRC}/tools/runanki.system ${STAGEDIR}${PREFIX}/bin/anki
# Overview of the 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)
pre-build:
# Set the buildhash that is used at various places during build.
${ECHO_CMD} ${_MY_BUILDHASH} > ${WRKSRC}/meta/buildhash
post-build:
# 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
do-install:
${MKDIR} ${STAGEDIR}${DATADIR}/anki \
${STAGEDIR}${DATADIR}/aqt \
${STAGEDIR}${DATADIR}/aqt_data \
${STAGEDIR}${PREFIX}/share/pixmaps \
${STAGEDIR}${PREFIX}/share/applications
cd ${WRKSRC}/pylib \
&& ${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" \
&& ${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
# 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:
# Run "make extract" before executing this target
@cd ${WRKDIR} && ${RM} -r .npm
@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
@cd ${WRKDIR} \
&& ${TAR} -czf ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} .npm \
&& ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}"
.include <bsd.port.mk>

View file

@ -1,3 +1,521 @@
TIMESTAMP = 1581366080
SHA256 (python/anki-2.1.16-source.tgz) = f300dd33c795fbfbf3a883457aea50ee5f5f602899dc7122fd7e526a7328d9bd
SIZE (python/anki-2.1.16-source.tgz) = 4211686
TIMESTAMP = 1603538538
SHA256 (python/anki-npm-cache-2.1.35.tar.gz) = 2168a9374715882affbaaa78d2775bc365f23cab6ecf3e74154936e128d01246
SIZE (python/anki-npm-cache-2.1.35.tar.gz) = 51533006
SHA256 (python/rust/crates/addr2line-0.13.0.tar.gz) = 1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072
SIZE (python/rust/crates/addr2line-0.13.0.tar.gz) = 29996
SHA256 (python/rust/crates/adler-0.2.3.tar.gz) = ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e
SIZE (python/rust/crates/adler-0.2.3.tar.gz) = 12168
SHA256 (python/rust/crates/aho-corasick-0.7.14.tar.gz) = b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d
SIZE (python/rust/crates/aho-corasick-0.7.14.tar.gz) = 113042
SHA256 (python/rust/crates/anyhow-1.0.33.tar.gz) = a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c
SIZE (python/rust/crates/anyhow-1.0.33.tar.gz) = 28540
SHA256 (python/rust/crates/arc-swap-0.4.7.tar.gz) = 4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034
SIZE (python/rust/crates/arc-swap-0.4.7.tar.gz) = 48625
SHA256 (python/rust/crates/arrayref-0.3.6.tar.gz) = a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
SIZE (python/rust/crates/arrayref-0.3.6.tar.gz) = 10035
SHA256 (python/rust/crates/arrayvec-0.4.12.tar.gz) = cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9
SIZE (python/rust/crates/arrayvec-0.4.12.tar.gz) = 26551
SHA256 (python/rust/crates/arrayvec-0.5.1.tar.gz) = cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8
SIZE (python/rust/crates/arrayvec-0.5.1.tar.gz) = 26816
SHA256 (python/rust/crates/askama-0.10.3.tar.gz) = 70a6e7ebd44d0047fd48206c83c5cd3214acc7b9d87f001da170145c47ef7d12
SIZE (python/rust/crates/askama-0.10.3.tar.gz) = 7988
SHA256 (python/rust/crates/askama_derive-0.10.3.tar.gz) = e1d7169690c4f56343dcd821ab834972a22570a2662a19a84fd7775d5e1c3881
SIZE (python/rust/crates/askama_derive-0.10.3.tar.gz) = 6834
SHA256 (python/rust/crates/askama_escape-0.10.1.tar.gz) = 90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb
SIZE (python/rust/crates/askama_escape-0.10.1.tar.gz) = 8535
SHA256 (python/rust/crates/askama_shared-0.10.4.tar.gz) = 62fc272363345c8cdc030e4c259d9d028237f8b057dc9bb327772a257bde6bb5
SIZE (python/rust/crates/askama_shared-0.10.4.tar.gz) = 29058
SHA256 (python/rust/crates/async-compression-0.3.5.tar.gz) = 9021768bcce77296b64648cc7a7460e3df99979b97ed5c925c38d1cc83778d98
SIZE (python/rust/crates/async-compression-0.3.5.tar.gz) = 39371
SHA256 (python/rust/crates/atty-0.2.14.tar.gz) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
SIZE (python/rust/crates/atty-0.2.14.tar.gz) = 5470
SHA256 (python/rust/crates/autocfg-1.0.1.tar.gz) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
SIZE (python/rust/crates/autocfg-1.0.1.tar.gz) = 12908
SHA256 (python/rust/crates/backtrace-0.3.53.tar.gz) = 707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e
SIZE (python/rust/crates/backtrace-0.3.53.tar.gz) = 71892
SHA256 (python/rust/crates/base64-0.12.3.tar.gz) = 3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff
SIZE (python/rust/crates/base64-0.12.3.tar.gz) = 57545
SHA256 (python/rust/crates/bitflags-1.2.1.tar.gz) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
SIZE (python/rust/crates/bitflags-1.2.1.tar.gz) = 16745
SHA256 (python/rust/crates/blake2b_simd-0.5.10.tar.gz) = d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a
SIZE (python/rust/crates/blake2b_simd-0.5.10.tar.gz) = 34093
SHA256 (python/rust/crates/blake3-0.3.7.tar.gz) = e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f
SIZE (python/rust/crates/blake3-0.3.7.tar.gz) = 155136
SHA256 (python/rust/crates/bumpalo-3.4.0.tar.gz) = 2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820
SIZE (python/rust/crates/bumpalo-3.4.0.tar.gz) = 129102
SHA256 (python/rust/crates/byteorder-1.3.4.tar.gz) = 08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de
SIZE (python/rust/crates/byteorder-1.3.4.tar.gz) = 21943
SHA256 (python/rust/crates/bytes-0.4.12.tar.gz) = 206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c
SIZE (python/rust/crates/bytes-0.4.12.tar.gz) = 46361
SHA256 (python/rust/crates/bytes-0.5.6.tar.gz) = 0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38
SIZE (python/rust/crates/bytes-0.5.6.tar.gz) = 46291
SHA256 (python/rust/crates/cc-1.0.61.tar.gz) = ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d
SIZE (python/rust/crates/cc-1.0.61.tar.gz) = 53454
SHA256 (python/rust/crates/cfg-if-0.1.10.tar.gz) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
SIZE (python/rust/crates/cfg-if-0.1.10.tar.gz) = 7933
SHA256 (python/rust/crates/cfg-if-1.0.0.tar.gz) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
SIZE (python/rust/crates/cfg-if-1.0.0.tar.gz) = 7934
SHA256 (python/rust/crates/chrono-0.4.19.tar.gz) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
SIZE (python/rust/crates/chrono-0.4.19.tar.gz) = 155663
SHA256 (python/rust/crates/cloudabi-0.1.0.tar.gz) = 4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467
SIZE (python/rust/crates/cloudabi-0.1.0.tar.gz) = 22687
SHA256 (python/rust/crates/constant_time_eq-0.1.5.tar.gz) = 245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
SIZE (python/rust/crates/constant_time_eq-0.1.5.tar.gz) = 4936
SHA256 (python/rust/crates/core-foundation-0.7.0.tar.gz) = 57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171
SIZE (python/rust/crates/core-foundation-0.7.0.tar.gz) = 25384
SHA256 (python/rust/crates/core-foundation-sys-0.7.0.tar.gz) = b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac
SIZE (python/rust/crates/core-foundation-sys-0.7.0.tar.gz) = 17033
SHA256 (python/rust/crates/crc32fast-1.2.1.tar.gz) = 81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a
SIZE (python/rust/crates/crc32fast-1.2.1.tar.gz) = 38172
SHA256 (python/rust/crates/crossbeam-channel-0.4.4.tar.gz) = b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87
SIZE (python/rust/crates/crossbeam-channel-0.4.4.tar.gz) = 86868
SHA256 (python/rust/crates/crossbeam-utils-0.7.2.tar.gz) = c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8
SIZE (python/rust/crates/crossbeam-utils-0.7.2.tar.gz) = 34338
SHA256 (python/rust/crates/crypto-mac-0.8.0.tar.gz) = b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab
SIZE (python/rust/crates/crypto-mac-0.8.0.tar.gz) = 9115
SHA256 (python/rust/crates/ctor-0.1.16.tar.gz) = 7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484
SIZE (python/rust/crates/ctor-0.1.16.tar.gz) = 4770
SHA256 (python/rust/crates/derivative-2.1.1.tar.gz) = cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f
SIZE (python/rust/crates/derivative-2.1.1.tar.gz) = 45571
SHA256 (python/rust/crates/digest-0.9.0.tar.gz) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
SIZE (python/rust/crates/digest-0.9.0.tar.gz) = 13247
SHA256 (python/rust/crates/dirs-2.0.2.tar.gz) = 13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3
SIZE (python/rust/crates/dirs-2.0.2.tar.gz) = 11779
SHA256 (python/rust/crates/dirs-sys-0.3.5.tar.gz) = 8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a
SIZE (python/rust/crates/dirs-sys-0.3.5.tar.gz) = 10643
SHA256 (python/rust/crates/dtoa-0.4.6.tar.gz) = 134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b
SIZE (python/rust/crates/dtoa-0.4.6.tar.gz) = 15979
SHA256 (python/rust/crates/either-1.6.1.tar.gz) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
SIZE (python/rust/crates/either-1.6.1.tar.gz) = 13641
SHA256 (python/rust/crates/encoding_rs-0.8.24.tar.gz) = a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2
SIZE (python/rust/crates/encoding_rs-0.8.24.tar.gz) = 1366911
SHA256 (python/rust/crates/failure-0.1.8.tar.gz) = d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86
SIZE (python/rust/crates/failure-0.1.8.tar.gz) = 37582
SHA256 (python/rust/crates/failure_derive-0.1.8.tar.gz) = aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4
SIZE (python/rust/crates/failure_derive-0.1.8.tar.gz) = 4950
SHA256 (python/rust/crates/fallible-iterator-0.2.0.tar.gz) = 4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7
SIZE (python/rust/crates/fallible-iterator-0.2.0.tar.gz) = 18509
SHA256 (python/rust/crates/fallible-streaming-iterator-0.1.9.tar.gz) = 7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a
SIZE (python/rust/crates/fallible-streaming-iterator-0.1.9.tar.gz) = 9249
SHA256 (python/rust/crates/fixedbitset-0.2.0.tar.gz) = 37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d
SIZE (python/rust/crates/fixedbitset-0.2.0.tar.gz) = 13597
SHA256 (python/rust/crates/flate2-1.0.18.tar.gz) = da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee
SIZE (python/rust/crates/flate2-1.0.18.tar.gz) = 74164
SHA256 (python/rust/crates/fluent-langneg-0.12.1.tar.gz) = fe5815efd5542e40841cd34ef9003822352b04c67a70c595c6758597c72e1f56
SIZE (python/rust/crates/fluent-langneg-0.12.1.tar.gz) = 19329
SHA256 (python/rust/crates/fluent-syntax-0.9.3.tar.gz) = ac0f7e83d14cccbf26e165d8881dcac5891af0d85a88543c09dd72ebd31d91ba
SIZE (python/rust/crates/fluent-syntax-0.9.3.tar.gz) = 73722
SHA256 (python/rust/crates/fnv-1.0.7.tar.gz) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
SIZE (python/rust/crates/fnv-1.0.7.tar.gz) = 11266
SHA256 (python/rust/crates/foreign-types-0.3.2.tar.gz) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
SIZE (python/rust/crates/foreign-types-0.3.2.tar.gz) = 7504
SHA256 (python/rust/crates/foreign-types-shared-0.1.1.tar.gz) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
SIZE (python/rust/crates/foreign-types-shared-0.1.1.tar.gz) = 5672
SHA256 (python/rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82
SIZE (python/rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 22565
SHA256 (python/rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7
SIZE (python/rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 7191
SHA256 (python/rust/crates/futures-0.3.6.tar.gz) = 5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e
SIZE (python/rust/crates/futures-0.3.6.tar.gz) = 39860
SHA256 (python/rust/crates/futures-channel-0.3.6.tar.gz) = a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74
SIZE (python/rust/crates/futures-channel-0.3.6.tar.gz) = 29465
SHA256 (python/rust/crates/futures-core-0.3.6.tar.gz) = d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b
SIZE (python/rust/crates/futures-core-0.3.6.tar.gz) = 13838
SHA256 (python/rust/crates/futures-executor-0.3.6.tar.gz) = cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab
SIZE (python/rust/crates/futures-executor-0.3.6.tar.gz) = 16639
SHA256 (python/rust/crates/futures-io-0.3.6.tar.gz) = 5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c
SIZE (python/rust/crates/futures-io-0.3.6.tar.gz) = 9129
SHA256 (python/rust/crates/futures-macro-0.3.6.tar.gz) = f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b
SIZE (python/rust/crates/futures-macro-0.3.6.tar.gz) = 9778
SHA256 (python/rust/crates/futures-sink-0.3.6.tar.gz) = 0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd
SIZE (python/rust/crates/futures-sink-0.3.6.tar.gz) = 7730
SHA256 (python/rust/crates/futures-task-0.3.6.tar.gz) = 4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94
SIZE (python/rust/crates/futures-task-0.3.6.tar.gz) = 11130
SHA256 (python/rust/crates/futures-util-0.3.6.tar.gz) = 8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34
SIZE (python/rust/crates/futures-util-0.3.6.tar.gz) = 133258
SHA256 (python/rust/crates/fxhash-0.2.1.tar.gz) = c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c
SIZE (python/rust/crates/fxhash-0.2.1.tar.gz) = 4102
SHA256 (python/rust/crates/generic-array-0.14.4.tar.gz) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
SIZE (python/rust/crates/generic-array-0.14.4.tar.gz) = 28916
SHA256 (python/rust/crates/getrandom-0.1.15.tar.gz) = fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6
SIZE (python/rust/crates/getrandom-0.1.15.tar.gz) = 24786
SHA256 (python/rust/crates/ghost-0.1.2.tar.gz) = 1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479
SIZE (python/rust/crates/ghost-0.1.2.tar.gz) = 12777
SHA256 (python/rust/crates/gimli-0.22.0.tar.gz) = aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724
SIZE (python/rust/crates/gimli-0.22.0.tar.gz) = 704135
SHA256 (python/rust/crates/h2-0.2.6.tar.gz) = 993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53
SIZE (python/rust/crates/h2-0.2.6.tar.gz) = 157564
SHA256 (python/rust/crates/hashbrown-0.9.1.tar.gz) = d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04
SIZE (python/rust/crates/hashbrown-0.9.1.tar.gz) = 77734
SHA256 (python/rust/crates/heck-0.3.1.tar.gz) = 20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205
SIZE (python/rust/crates/heck-0.3.1.tar.gz) = 54666
SHA256 (python/rust/crates/hermit-abi-0.1.17.tar.gz) = 5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8
SIZE (python/rust/crates/hermit-abi-0.1.17.tar.gz) = 10065
SHA256 (python/rust/crates/hex-0.4.2.tar.gz) = 644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35
SIZE (python/rust/crates/hex-0.4.2.tar.gz) = 13385
SHA256 (python/rust/crates/htmlescape-0.3.1.tar.gz) = e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163
SIZE (python/rust/crates/htmlescape-0.3.1.tar.gz) = 53226
SHA256 (python/rust/crates/http-0.2.1.tar.gz) = 28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9
SIZE (python/rust/crates/http-0.2.1.tar.gz) = 102231
SHA256 (python/rust/crates/http-body-0.3.1.tar.gz) = 13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b
SIZE (python/rust/crates/http-body-0.3.1.tar.gz) = 5394
SHA256 (python/rust/crates/httparse-1.3.4.tar.gz) = cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9
SIZE (python/rust/crates/httparse-1.3.4.tar.gz) = 23739
SHA256 (python/rust/crates/httpdate-0.3.2.tar.gz) = 494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47
SIZE (python/rust/crates/httpdate-0.3.2.tar.gz) = 10768
SHA256 (python/rust/crates/humansize-1.1.0.tar.gz) = b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e
SIZE (python/rust/crates/humansize-1.1.0.tar.gz) = 4459
SHA256 (python/rust/crates/hyper-0.13.8.tar.gz) = 2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835
SIZE (python/rust/crates/hyper-0.13.8.tar.gz) = 139668
SHA256 (python/rust/crates/hyper-tls-0.4.3.tar.gz) = d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed
SIZE (python/rust/crates/hyper-tls-0.4.3.tar.gz) = 14195
SHA256 (python/rust/crates/idna-0.2.0.tar.gz) = 02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9
SIZE (python/rust/crates/idna-0.2.0.tar.gz) = 257203
SHA256 (python/rust/crates/indexmap-1.6.0.tar.gz) = 55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2
SIZE (python/rust/crates/indexmap-1.6.0.tar.gz) = 47565
SHA256 (python/rust/crates/indoc-0.3.6.tar.gz) = 47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8
SIZE (python/rust/crates/indoc-0.3.6.tar.gz) = 9663
SHA256 (python/rust/crates/indoc-impl-0.3.6.tar.gz) = ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0
SIZE (python/rust/crates/indoc-impl-0.3.6.tar.gz) = 7933
SHA256 (python/rust/crates/instant-0.1.7.tar.gz) = 63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66
SIZE (python/rust/crates/instant-0.1.7.tar.gz) = 5097
SHA256 (python/rust/crates/intl_pluralrules-6.0.0.tar.gz) = d82c14d8eece42c03353e0ce86a4d3f97b1f1cef401e4d962dca6c6214a85002
SIZE (python/rust/crates/intl_pluralrules-6.0.0.tar.gz) = 15999
SHA256 (python/rust/crates/inventory-0.1.9.tar.gz) = fedd49de24d8c263613701406611410687148ae8c37cd6452650b250f753a0dd
SIZE (python/rust/crates/inventory-0.1.9.tar.gz) = 11578
SHA256 (python/rust/crates/inventory-impl-0.1.9.tar.gz) = ddead8880bc50f57fcd3b5869a7f6ff92570bb4e8f6870c22e2483272f2256da
SIZE (python/rust/crates/inventory-impl-0.1.9.tar.gz) = 1859
SHA256 (python/rust/crates/iovec-0.1.4.tar.gz) = b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e
SIZE (python/rust/crates/iovec-0.1.4.tar.gz) = 8720
SHA256 (python/rust/crates/itertools-0.8.2.tar.gz) = f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484
SIZE (python/rust/crates/itertools-0.8.2.tar.gz) = 89203
SHA256 (python/rust/crates/itertools-0.9.0.tar.gz) = 284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b
SIZE (python/rust/crates/itertools-0.9.0.tar.gz) = 96429
SHA256 (python/rust/crates/itoa-0.4.6.tar.gz) = dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6
SIZE (python/rust/crates/itoa-0.4.6.tar.gz) = 12167
SHA256 (python/rust/crates/js-sys-0.3.45.tar.gz) = ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8
SIZE (python/rust/crates/js-sys-0.3.45.tar.gz) = 67143
SHA256 (python/rust/crates/kernel32-sys-0.2.2.tar.gz) = 7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d
SIZE (python/rust/crates/kernel32-sys-0.2.2.tar.gz) = 24537
SHA256 (python/rust/crates/lazy_static-1.4.0.tar.gz) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
SIZE (python/rust/crates/lazy_static-1.4.0.tar.gz) = 10443
SHA256 (python/rust/crates/lexical-core-0.7.4.tar.gz) = db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616
SIZE (python/rust/crates/lexical-core-0.7.4.tar.gz) = 497535
SHA256 (python/rust/crates/libc-0.2.79.tar.gz) = 2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743
SIZE (python/rust/crates/libc-0.2.79.tar.gz) = 511752
SHA256 (python/rust/crates/libsqlite3-sys-0.18.0.tar.gz) = 1e704a02bcaecd4a08b93a23f6be59d0bd79cd161e0963e9499165a0a35df7bd
SIZE (python/rust/crates/libsqlite3-sys-0.18.0.tar.gz) = 2281735
SHA256 (python/rust/crates/linked-hash-map-0.5.3.tar.gz) = 8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a
SIZE (python/rust/crates/linked-hash-map-0.5.3.tar.gz) = 16130
SHA256 (python/rust/crates/lock_api-0.4.1.tar.gz) = 28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c
SIZE (python/rust/crates/lock_api-0.4.1.tar.gz) = 20339
SHA256 (python/rust/crates/log-0.4.11.tar.gz) = 4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b
SIZE (python/rust/crates/log-0.4.11.tar.gz) = 36276
SHA256 (python/rust/crates/lru-cache-0.1.2.tar.gz) = 31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c
SIZE (python/rust/crates/lru-cache-0.1.2.tar.gz) = 9307
SHA256 (python/rust/crates/matches-0.1.8.tar.gz) = 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
SIZE (python/rust/crates/matches-0.1.8.tar.gz) = 2216
SHA256 (python/rust/crates/maybe-uninit-2.0.0.tar.gz) = 60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
SIZE (python/rust/crates/maybe-uninit-2.0.0.tar.gz) = 11809
SHA256 (python/rust/crates/memchr-2.3.3.tar.gz) = 3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400
SIZE (python/rust/crates/memchr-2.3.3.tar.gz) = 22566
SHA256 (python/rust/crates/mime-0.3.16.tar.gz) = 2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d
SIZE (python/rust/crates/mime-0.3.16.tar.gz) = 15206
SHA256 (python/rust/crates/mime_guess-2.0.3.tar.gz) = 2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212
SIZE (python/rust/crates/mime_guess-2.0.3.tar.gz) = 27437
SHA256 (python/rust/crates/miniz_oxide-0.4.3.tar.gz) = 0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d
SIZE (python/rust/crates/miniz_oxide-0.4.3.tar.gz) = 50058
SHA256 (python/rust/crates/mio-0.6.22.tar.gz) = fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430
SIZE (python/rust/crates/mio-0.6.22.tar.gz) = 102782
SHA256 (python/rust/crates/miow-0.2.1.tar.gz) = 8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919
SIZE (python/rust/crates/miow-0.2.1.tar.gz) = 21133
SHA256 (python/rust/crates/multimap-0.8.2.tar.gz) = 1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333
SIZE (python/rust/crates/multimap-0.8.2.tar.gz) = 13453
SHA256 (python/rust/crates/native-tls-0.2.4.tar.gz) = 2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d
SIZE (python/rust/crates/native-tls-0.2.4.tar.gz) = 32170
SHA256 (python/rust/crates/net2-0.2.35.tar.gz) = 3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853
SIZE (python/rust/crates/net2-0.2.35.tar.gz) = 20660
SHA256 (python/rust/crates/nodrop-0.1.14.tar.gz) = 72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb
SIZE (python/rust/crates/nodrop-0.1.14.tar.gz) = 7667
SHA256 (python/rust/crates/nom-5.1.2.tar.gz) = ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af
SIZE (python/rust/crates/nom-5.1.2.tar.gz) = 136174
SHA256 (python/rust/crates/num-format-0.4.0.tar.gz) = bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465
SIZE (python/rust/crates/num-format-0.4.0.tar.gz) = 59791
SHA256 (python/rust/crates/num-integer-0.1.43.tar.gz) = 8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b
SIZE (python/rust/crates/num-integer-0.1.43.tar.gz) = 21966
SHA256 (python/rust/crates/num-traits-0.2.12.tar.gz) = ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611
SIZE (python/rust/crates/num-traits-0.2.12.tar.gz) = 43807
SHA256 (python/rust/crates/num_cpus-1.13.0.tar.gz) = 05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3
SIZE (python/rust/crates/num_cpus-1.13.0.tar.gz) = 14704
SHA256 (python/rust/crates/num_enum-0.5.1.tar.gz) = 226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066
SIZE (python/rust/crates/num_enum-0.5.1.tar.gz) = 8210
SHA256 (python/rust/crates/num_enum_derive-0.5.1.tar.gz) = 1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e
SIZE (python/rust/crates/num_enum_derive-0.5.1.tar.gz) = 7579
SHA256 (python/rust/crates/object-0.21.1.tar.gz) = 37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693
SIZE (python/rust/crates/object-0.21.1.tar.gz) = 174624
SHA256 (python/rust/crates/once_cell-1.4.1.tar.gz) = 260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad
SIZE (python/rust/crates/once_cell-1.4.1.tar.gz) = 24366
SHA256 (python/rust/crates/openssl-0.10.30.tar.gz) = 8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4
SIZE (python/rust/crates/openssl-0.10.30.tar.gz) = 191808
SHA256 (python/rust/crates/openssl-probe-0.1.2.tar.gz) = 77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de
SIZE (python/rust/crates/openssl-probe-0.1.2.tar.gz) = 6427
SHA256 (python/rust/crates/openssl-sys-0.9.58.tar.gz) = a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de
SIZE (python/rust/crates/openssl-sys-0.9.58.tar.gz) = 47014
SHA256 (python/rust/crates/parking_lot-0.11.0.tar.gz) = a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733
SIZE (python/rust/crates/parking_lot-0.11.0.tar.gz) = 39558
SHA256 (python/rust/crates/parking_lot_core-0.8.0.tar.gz) = c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b
SIZE (python/rust/crates/parking_lot_core-0.8.0.tar.gz) = 33870
SHA256 (python/rust/crates/paste-0.1.18.tar.gz) = 45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880
SIZE (python/rust/crates/paste-0.1.18.tar.gz) = 12259
SHA256 (python/rust/crates/paste-impl-0.1.18.tar.gz) = d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6
SIZE (python/rust/crates/paste-impl-0.1.18.tar.gz) = 9451
SHA256 (python/rust/crates/percent-encoding-2.1.0.tar.gz) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
SIZE (python/rust/crates/percent-encoding-2.1.0.tar.gz) = 9748
SHA256 (python/rust/crates/petgraph-0.5.1.tar.gz) = 467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7
SIZE (python/rust/crates/petgraph-0.5.1.tar.gz) = 147173
SHA256 (python/rust/crates/pin-project-0.4.27.tar.gz) = 2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15
SIZE (python/rust/crates/pin-project-0.4.27.tar.gz) = 50964
SHA256 (python/rust/crates/pin-project-internal-0.4.27.tar.gz) = 65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895
SIZE (python/rust/crates/pin-project-internal-0.4.27.tar.gz) = 29739
SHA256 (python/rust/crates/pin-project-lite-0.1.11.tar.gz) = c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b
SIZE (python/rust/crates/pin-project-lite-0.1.11.tar.gz) = 25308
SHA256 (python/rust/crates/pin-utils-0.1.0.tar.gz) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
SIZE (python/rust/crates/pin-utils-0.1.0.tar.gz) = 7580
SHA256 (python/rust/crates/pkg-config-0.3.19.tar.gz) = 3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c
SIZE (python/rust/crates/pkg-config-0.3.19.tar.gz) = 15451
SHA256 (python/rust/crates/podio-0.1.7.tar.gz) = b18befed8bc2b61abc79a457295e7e838417326da1586050b919414073977f19
SIZE (python/rust/crates/podio-0.1.7.tar.gz) = 10294
SHA256 (python/rust/crates/ppv-lite86-0.2.9.tar.gz) = c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20
SIZE (python/rust/crates/ppv-lite86-0.2.9.tar.gz) = 20933
SHA256 (python/rust/crates/proc-macro-crate-0.1.5.tar.gz) = 1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785
SIZE (python/rust/crates/proc-macro-crate-0.1.5.tar.gz) = 8096
SHA256 (python/rust/crates/proc-macro-hack-0.5.18.tar.gz) = 99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598
SIZE (python/rust/crates/proc-macro-hack-0.5.18.tar.gz) = 14619
SHA256 (python/rust/crates/proc-macro-nested-0.1.6.tar.gz) = eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a
SIZE (python/rust/crates/proc-macro-nested-0.1.6.tar.gz) = 6498
SHA256 (python/rust/crates/proc-macro2-1.0.24.tar.gz) = 1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71
SIZE (python/rust/crates/proc-macro2-1.0.24.tar.gz) = 37716
SHA256 (python/rust/crates/prost-0.6.1.tar.gz) = ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212
SIZE (python/rust/crates/prost-0.6.1.tar.gz) = 23393
SHA256 (python/rust/crates/prost-build-0.6.1.tar.gz) = 02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26
SIZE (python/rust/crates/prost-build-0.6.1.tar.gz) = 7935314
SHA256 (python/rust/crates/prost-derive-0.6.1.tar.gz) = 537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72
SIZE (python/rust/crates/prost-derive-0.6.1.tar.gz) = 15007
SHA256 (python/rust/crates/prost-types-0.6.1.tar.gz) = 1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa
SIZE (python/rust/crates/prost-types-0.6.1.tar.gz) = 24092
SHA256 (python/rust/crates/pyo3-0.11.1.tar.gz) = 9ca8710ffa8211c9a62a8a3863c4267c710dc42a82a7fd29c97de465d7ea6b7d
SIZE (python/rust/crates/pyo3-0.11.1.tar.gz) = 230111
SHA256 (python/rust/crates/pyo3-derive-backend-0.11.1.tar.gz) = 58ad070bf6967b0d29ea74931ffcf9c6bbe8402a726e9afbeafadc0a287cc2b3
SIZE (python/rust/crates/pyo3-derive-backend-0.11.1.tar.gz) = 25011
SHA256 (python/rust/crates/pyo3cls-0.11.1.tar.gz) = c3fa17e1ea569d0bf3b7c00f2a9eea831ca05e55dd76f1794c541abba1c64baa
SIZE (python/rust/crates/pyo3cls-0.11.1.tar.gz) = 1693
SHA256 (python/rust/crates/quote-1.0.7.tar.gz) = aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37
SIZE (python/rust/crates/quote-1.0.7.tar.gz) = 25170
SHA256 (python/rust/crates/rand-0.7.3.tar.gz) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
SIZE (python/rust/crates/rand-0.7.3.tar.gz) = 112246
SHA256 (python/rust/crates/rand_chacha-0.2.2.tar.gz) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
SIZE (python/rust/crates/rand_chacha-0.2.2.tar.gz) = 13267
SHA256 (python/rust/crates/rand_core-0.5.1.tar.gz) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
SIZE (python/rust/crates/rand_core-0.5.1.tar.gz) = 21116
SHA256 (python/rust/crates/rand_hc-0.2.0.tar.gz) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
SIZE (python/rust/crates/rand_hc-0.2.0.tar.gz) = 11670
SHA256 (python/rust/crates/redox_syscall-0.1.57.tar.gz) = 41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce
SIZE (python/rust/crates/redox_syscall-0.1.57.tar.gz) = 17087
SHA256 (python/rust/crates/redox_users-0.3.5.tar.gz) = de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d
SIZE (python/rust/crates/redox_users-0.3.5.tar.gz) = 12644
SHA256 (python/rust/crates/regex-1.4.1.tar.gz) = 8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b
SIZE (python/rust/crates/regex-1.4.1.tar.gz) = 236871
SHA256 (python/rust/crates/regex-syntax-0.6.20.tar.gz) = 8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c
SIZE (python/rust/crates/regex-syntax-0.6.20.tar.gz) = 293727
SHA256 (python/rust/crates/remove_dir_all-0.5.3.tar.gz) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
SIZE (python/rust/crates/remove_dir_all-0.5.3.tar.gz) = 9184
SHA256 (python/rust/crates/rental-0.5.5.tar.gz) = 8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f
SIZE (python/rust/crates/rental-0.5.5.tar.gz) = 16796
SHA256 (python/rust/crates/rental-impl-0.5.5.tar.gz) = 475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de
SIZE (python/rust/crates/rental-impl-0.5.5.tar.gz) = 12093
SHA256 (python/rust/crates/rusqlite-0.23.1.tar.gz) = 45d0fd62e1df63d254714e6cb40d0a0e82e7a1623e7a27f679d851af092ae58b
SIZE (python/rust/crates/rusqlite-0.23.1.tar.gz) = 112106
SHA256 (python/rust/crates/rust-argon2-0.8.2.tar.gz) = 9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19
SIZE (python/rust/crates/rust-argon2-0.8.2.tar.gz) = 28291
SHA256 (python/rust/crates/rustc-demangle-0.1.18.tar.gz) = 6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232
SIZE (python/rust/crates/rustc-demangle-0.1.18.tar.gz) = 19913
SHA256 (python/rust/crates/ryu-1.0.5.tar.gz) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
SIZE (python/rust/crates/ryu-1.0.5.tar.gz) = 49570
SHA256 (python/rust/crates/schannel-0.1.19.tar.gz) = 8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75
SIZE (python/rust/crates/schannel-0.1.19.tar.gz) = 42755
SHA256 (python/rust/crates/scopeguard-1.1.0.tar.gz) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
SIZE (python/rust/crates/scopeguard-1.1.0.tar.gz) = 11470
SHA256 (python/rust/crates/security-framework-0.4.4.tar.gz) = 64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535
SIZE (python/rust/crates/security-framework-0.4.4.tar.gz) = 54841
SHA256 (python/rust/crates/security-framework-sys-0.4.3.tar.gz) = 17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405
SIZE (python/rust/crates/security-framework-sys-0.4.3.tar.gz) = 10508
SHA256 (python/rust/crates/serde-1.0.117.tar.gz) = b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a
SIZE (python/rust/crates/serde-1.0.117.tar.gz) = 74505
SHA256 (python/rust/crates/serde-aux-0.6.1.tar.gz) = ae50f53d4b01e854319c1f5b854cd59471f054ea7e554988850d3f36ca1dc852
SIZE (python/rust/crates/serde-aux-0.6.1.tar.gz) = 5701
SHA256 (python/rust/crates/serde_derive-1.0.117.tar.gz) = cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e
SIZE (python/rust/crates/serde_derive-1.0.117.tar.gz) = 50712
SHA256 (python/rust/crates/serde_json-1.0.59.tar.gz) = dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95
SIZE (python/rust/crates/serde_json-1.0.59.tar.gz) = 114956
SHA256 (python/rust/crates/serde_repr-0.1.6.tar.gz) = 2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76
SIZE (python/rust/crates/serde_repr-0.1.6.tar.gz) = 10181
SHA256 (python/rust/crates/serde_tuple-0.5.0.tar.gz) = f4f025b91216f15a2a32aa39669329a475733590a015835d1783549a56d09427
SIZE (python/rust/crates/serde_tuple-0.5.0.tar.gz) = 3817
SHA256 (python/rust/crates/serde_tuple_macros-0.5.0.tar.gz) = 4076151d1a2b688e25aaf236997933c66e18b870d0369f8b248b8ab2be630d7e
SIZE (python/rust/crates/serde_tuple_macros-0.5.0.tar.gz) = 2205
SHA256 (python/rust/crates/serde_urlencoded-0.6.1.tar.gz) = 9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97
SIZE (python/rust/crates/serde_urlencoded-0.6.1.tar.gz) = 12540
SHA256 (python/rust/crates/sha1-0.6.0.tar.gz) = 2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d
SIZE (python/rust/crates/sha1-0.6.0.tar.gz) = 9244
SHA256 (python/rust/crates/slab-0.4.2.tar.gz) = c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8
SIZE (python/rust/crates/slab-0.4.2.tar.gz) = 10136
SHA256 (python/rust/crates/slog-2.5.2.tar.gz) = 1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99
SIZE (python/rust/crates/slog-2.5.2.tar.gz) = 43204
SHA256 (python/rust/crates/slog-async-2.5.0.tar.gz) = 51b3336ce47ce2f96673499fc07eb85e3472727b9a7a2959964b002c2ce8fbbb
SIZE (python/rust/crates/slog-async-2.5.0.tar.gz) = 18033
SHA256 (python/rust/crates/slog-envlogger-2.2.0.tar.gz) = 906a1a0bc43fed692df4b82a5e2fbfc3733db8dad8bb514ab27a4f23ad04f5c0
SIZE (python/rust/crates/slog-envlogger-2.2.0.tar.gz) = 13240
SHA256 (python/rust/crates/slog-scope-4.3.0.tar.gz) = 7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6
SIZE (python/rust/crates/slog-scope-4.3.0.tar.gz) = 16986
SHA256 (python/rust/crates/slog-stdlog-4.1.0.tar.gz) = 8228ab7302adbf4fcb37e66f3cda78003feb521e7fd9e3847ec117a7784d0f5a
SIZE (python/rust/crates/slog-stdlog-4.1.0.tar.gz) = 14523
SHA256 (python/rust/crates/slog-term-2.6.0.tar.gz) = bab1d807cf71129b05ce36914e1dbb6fbfbdecaf686301cb457f4fa967f9f5b6
SIZE (python/rust/crates/slog-term-2.6.0.tar.gz) = 26304
SHA256 (python/rust/crates/smallvec-1.4.2.tar.gz) = fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252
SIZE (python/rust/crates/smallvec-1.4.2.tar.gz) = 26109
SHA256 (python/rust/crates/socket2-0.3.15.tar.gz) = b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44
SIZE (python/rust/crates/socket2-0.3.15.tar.gz) = 29282
SHA256 (python/rust/crates/stable_deref_trait-1.2.0.tar.gz) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
SIZE (python/rust/crates/stable_deref_trait-1.2.0.tar.gz) = 8054
SHA256 (python/rust/crates/static_assertions-1.1.0.tar.gz) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
SIZE (python/rust/crates/static_assertions-1.1.0.tar.gz) = 18480
SHA256 (python/rust/crates/subtle-2.3.0.tar.gz) = 343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd
SIZE (python/rust/crates/subtle-2.3.0.tar.gz) = 11096
SHA256 (python/rust/crates/syn-1.0.46.tar.gz) = 5ad5de3220ea04da322618ded2c42233d02baca219d6f160a3e9c87cda16c942
SIZE (python/rust/crates/syn-1.0.46.tar.gz) = 225691
SHA256 (python/rust/crates/synstructure-0.12.4.tar.gz) = b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701
SIZE (python/rust/crates/synstructure-0.12.4.tar.gz) = 18105
SHA256 (python/rust/crates/take_mut-0.2.2.tar.gz) = f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60
SIZE (python/rust/crates/take_mut-0.2.2.tar.gz) = 4263
SHA256 (python/rust/crates/tempfile-3.1.0.tar.gz) = 7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9
SIZE (python/rust/crates/tempfile-3.1.0.tar.gz) = 25823
SHA256 (python/rust/crates/term-0.6.1.tar.gz) = c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5
SIZE (python/rust/crates/term-0.6.1.tar.gz) = 37578
SHA256 (python/rust/crates/thiserror-1.0.21.tar.gz) = 318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42
SIZE (python/rust/crates/thiserror-1.0.21.tar.gz) = 16187
SHA256 (python/rust/crates/thiserror-impl-1.0.21.tar.gz) = cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab
SIZE (python/rust/crates/thiserror-impl-1.0.21.tar.gz) = 13199
SHA256 (python/rust/crates/thread_local-1.0.1.tar.gz) = d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14
SIZE (python/rust/crates/thread_local-1.0.1.tar.gz) = 12609
SHA256 (python/rust/crates/time-0.1.44.tar.gz) = 6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255
SIZE (python/rust/crates/time-0.1.44.tar.gz) = 28885
SHA256 (python/rust/crates/tinystr-0.3.4.tar.gz) = 29738eedb4388d9ea620eeab9384884fc3f06f586a2eddb56bedc5885126c7c1
SIZE (python/rust/crates/tinystr-0.3.4.tar.gz) = 19341
SHA256 (python/rust/crates/tinyvec-0.3.4.tar.gz) = 238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117
SIZE (python/rust/crates/tinyvec-0.3.4.tar.gz) = 17586
SHA256 (python/rust/crates/tokio-0.2.22.tar.gz) = 5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd
SIZE (python/rust/crates/tokio-0.2.22.tar.gz) = 400639
SHA256 (python/rust/crates/tokio-socks-0.2.2.tar.gz) = 1997788a0e25e09300e44680ba1ef9d44d6f634a883641f80109e8b59c928daf
SIZE (python/rust/crates/tokio-socks-0.2.2.tar.gz) = 16371
SHA256 (python/rust/crates/tokio-tls-0.3.1.tar.gz) = 9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343
SIZE (python/rust/crates/tokio-tls-0.3.1.tar.gz) = 22517
SHA256 (python/rust/crates/tokio-util-0.3.1.tar.gz) = be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499
SIZE (python/rust/crates/tokio-util-0.3.1.tar.gz) = 27233
SHA256 (python/rust/crates/toml-0.5.7.tar.gz) = 75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645
SIZE (python/rust/crates/toml-0.5.7.tar.gz) = 54372
SHA256 (python/rust/crates/tower-service-0.3.0.tar.gz) = e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860
SIZE (python/rust/crates/tower-service-0.3.0.tar.gz) = 5321
SHA256 (python/rust/crates/tracing-0.1.21.tar.gz) = b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27
SIZE (python/rust/crates/tracing-0.1.21.tar.gz) = 65404
SHA256 (python/rust/crates/tracing-core-0.1.17.tar.gz) = f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f
SIZE (python/rust/crates/tracing-core-0.1.17.tar.gz) = 47774
SHA256 (python/rust/crates/try-lock-0.2.3.tar.gz) = 59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642
SIZE (python/rust/crates/try-lock-0.2.3.tar.gz) = 4158
SHA256 (python/rust/crates/type-map-0.3.0.tar.gz) = 9d2741b1474c327d95c1f1e3b0a2c3977c8e128409c572a33af2914e7d636717
SIZE (python/rust/crates/type-map-0.3.0.tar.gz) = 3188
SHA256 (python/rust/crates/typenum-1.12.0.tar.gz) = 373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33
SIZE (python/rust/crates/typenum-1.12.0.tar.gz) = 36037
SHA256 (python/rust/crates/unic-langid-0.8.0.tar.gz) = 24d81136159f779c35b10655f45210c71cd5ca5a45aadfe9840a61c7071735ed
SIZE (python/rust/crates/unic-langid-0.8.0.tar.gz) = 4640
SHA256 (python/rust/crates/unic-langid-impl-0.8.0.tar.gz) = c43c61e94492eb67f20facc7b025778a904de83d953d8fcb60dd9adfd6e2d0ea
SIZE (python/rust/crates/unic-langid-impl-0.8.0.tar.gz) = 36947
SHA256 (python/rust/crates/unic-langid-macros-0.8.0.tar.gz) = 49bd90791278634d57e3ed4a4073108e3f79bfb87ab6a7b8664ba097425703df
SIZE (python/rust/crates/unic-langid-macros-0.8.0.tar.gz) = 2053
SHA256 (python/rust/crates/unic-langid-macros-impl-0.8.0.tar.gz) = e0098f77bd754f8fb7850cdf4ab143aa821898c4ac6dc16bcb2aa3e62ce858d1
SIZE (python/rust/crates/unic-langid-macros-impl-0.8.0.tar.gz) = 1447
SHA256 (python/rust/crates/unicase-2.6.0.tar.gz) = 50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6
SIZE (python/rust/crates/unicase-2.6.0.tar.gz) = 23478
SHA256 (python/rust/crates/unicode-bidi-0.3.4.tar.gz) = 49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5
SIZE (python/rust/crates/unicode-bidi-0.3.4.tar.gz) = 32228
SHA256 (python/rust/crates/unicode-normalization-0.1.13.tar.gz) = 6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977
SIZE (python/rust/crates/unicode-normalization-0.1.13.tar.gz) = 91691
SHA256 (python/rust/crates/unicode-segmentation-1.6.0.tar.gz) = e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0
SIZE (python/rust/crates/unicode-segmentation-1.6.0.tar.gz) = 90703
SHA256 (python/rust/crates/unicode-xid-0.2.1.tar.gz) = f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564
SIZE (python/rust/crates/unicode-xid-0.2.1.tar.gz) = 14392
SHA256 (python/rust/crates/unindent-0.1.7.tar.gz) = f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7
SIZE (python/rust/crates/unindent-0.1.7.tar.gz) = 8346
SHA256 (python/rust/crates/url-2.1.1.tar.gz) = 829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb
SIZE (python/rust/crates/url-2.1.1.tar.gz) = 70383
SHA256 (python/rust/crates/utime-0.3.1.tar.gz) = 91baa0c65eabd12fcbdac8cc35ff16159cab95cae96d0222d6d0271db6193cef
SIZE (python/rust/crates/utime-0.3.1.tar.gz) = 8311
SHA256 (python/rust/crates/vcpkg-0.2.10.tar.gz) = 6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c
SIZE (python/rust/crates/vcpkg-0.2.10.tar.gz) = 11504
SHA256 (python/rust/crates/version_check-0.9.2.tar.gz) = b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed
SIZE (python/rust/crates/version_check-0.9.2.tar.gz) = 11979
SHA256 (python/rust/crates/want-0.3.0.tar.gz) = 1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0
SIZE (python/rust/crates/want-0.3.0.tar.gz) = 6550
SHA256 (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
SIZE (python/rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = 31521
SHA256 (python/rust/crates/wasi-0.10.0+wasi-snapshot-preview1.tar.gz) = 1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f
SIZE (python/rust/crates/wasi-0.10.0+wasi-snapshot-preview1.tar.gz) = 26964
SHA256 (python/rust/crates/wasm-bindgen-0.2.68.tar.gz) = 1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42
SIZE (python/rust/crates/wasm-bindgen-0.2.68.tar.gz) = 159094
SHA256 (python/rust/crates/wasm-bindgen-backend-0.2.68.tar.gz) = f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68
SIZE (python/rust/crates/wasm-bindgen-backend-0.2.68.tar.gz) = 23522
SHA256 (python/rust/crates/wasm-bindgen-futures-0.4.18.tar.gz) = b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da
SIZE (python/rust/crates/wasm-bindgen-futures-0.4.18.tar.gz) = 13690
SHA256 (python/rust/crates/wasm-bindgen-macro-0.2.68.tar.gz) = 6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038
SIZE (python/rust/crates/wasm-bindgen-macro-0.2.68.tar.gz) = 11630
SHA256 (python/rust/crates/wasm-bindgen-macro-support-0.2.68.tar.gz) = f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe
SIZE (python/rust/crates/wasm-bindgen-macro-support-0.2.68.tar.gz) = 17793
SHA256 (python/rust/crates/wasm-bindgen-shared-0.2.68.tar.gz) = 1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307
SIZE (python/rust/crates/wasm-bindgen-shared-0.2.68.tar.gz) = 6725
SHA256 (python/rust/crates/web-sys-0.3.45.tar.gz) = 4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d
SIZE (python/rust/crates/web-sys-0.3.45.tar.gz) = 630993
SHA256 (python/rust/crates/which-3.1.1.tar.gz) = d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724
SIZE (python/rust/crates/which-3.1.1.tar.gz) = 8071
SHA256 (python/rust/crates/winapi-0.2.8.tar.gz) = 167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a
SIZE (python/rust/crates/winapi-0.2.8.tar.gz) = 455145
SHA256 (python/rust/crates/winapi-0.3.9.tar.gz) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
SIZE (python/rust/crates/winapi-0.3.9.tar.gz) = 1200382
SHA256 (python/rust/crates/winapi-build-0.1.1.tar.gz) = 2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc
SIZE (python/rust/crates/winapi-build-0.1.1.tar.gz) = 669
SHA256 (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
SIZE (python/rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815
SHA256 (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
SIZE (python/rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998
SHA256 (python/rust/crates/winreg-0.6.2.tar.gz) = b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9
SIZE (python/rust/crates/winreg-0.6.2.tar.gz) = 19338
SHA256 (python/rust/crates/ws2_32-sys-0.2.1.tar.gz) = d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e
SIZE (python/rust/crates/ws2_32-sys-0.2.1.tar.gz) = 4697
SHA256 (python/rust/crates/zip-0.5.6.tar.gz) = 58287c28d78507f5f91f2a4cf1e8310e2c76fd4c6932f93ac60fd1ceb402db7d
SIZE (python/rust/crates/zip-0.5.6.tar.gz) = 33064
SHA256 (python/ankitects-anki-2.1.35_GH0.tar.gz) = 188c0756bd2acda0b5d675c2f8462b4bca32aed451e7ffa495e9de5c387aebd0
SIZE (python/ankitects-anki-2.1.35_GH0.tar.gz) = 1496408
SHA256 (python/ankitects-anki-core-i18n-fbda2ed_GH0.tar.gz) = d4cc9f878b8946b8c0a4a86935f947fc13044d837e014234b57e04fafdced602
SIZE (python/ankitects-anki-core-i18n-fbda2ed_GH0.tar.gz) = 227281
SHA256 (python/ankitects-anki-desktop-ftl-f56e959_GH0.tar.gz) = 3a2b5223737e7063b9d52ec90ee8598358322493745a8d254fd3c2aa464c647a
SIZE (python/ankitects-anki-desktop-ftl-f56e959_GH0.tar.gz) = 36793
SHA256 (python/ankitects-anki-desktop-i18n-a93ccef_GH0.tar.gz) = 1cebef1595b08a480e4c64b15a5a765056be10c1fdfd658d1dfcfdc9d04af74d
SIZE (python/ankitects-anki-desktop-i18n-a93ccef_GH0.tar.gz) = 1391777
SHA256 (python/ankitects-rust-coarsetime-f9e2c86216f0f4803bc75404828318fc206dab29_GH0.tar.gz) = e79be82d7c2f2d10856392697187f5c4a7b0858ce7046b0a2f969c32b735d81e
SIZE (python/ankitects-rust-coarsetime-f9e2c86216f0f4803bc75404828318fc206dab29_GH0.tar.gz) = 7110
SHA256 (python/ankitects-fluent-rs-f61c5e10a53161ef5261f3c87b62047f12e4aa74_GH0.tar.gz) = 79e6574fb1611c5e5f7b159014f04bdb32374ffb20be03f36462a98e79deae04
SIZE (python/ankitects-fluent-rs-f61c5e10a53161ef5261f3c87b62047f12e4aa74_GH0.tar.gz) = 112354
SHA256 (python/ankitects-hyper-timeout-664b6f9c387f6a7d75d1609a65c02554e8c55bc7_GH0.tar.gz) = a31fb414802ecc5b52fc953d8d44e39084ad245bd4da3e8b9bc4e98f426fcb4d
SIZE (python/ankitects-hyper-timeout-664b6f9c387f6a7d75d1609a65c02554e8c55bc7_GH0.tar.gz) = 8461
SHA256 (python/ankitects-reqwest-57665e2c2a39db85723ba860f1b570a608bb73f9_GH0.tar.gz) = 1402e2f4c65819f644d6c5a15fccd6eb6ca3a9b12b4157d3d04999a10dbbaf7a
SIZE (python/ankitects-reqwest-57665e2c2a39db85723ba860f1b570a608bb73f9_GH0.tar.gz) = 219588
SHA256 (python/ankitects-tokio-io-timeout-96e1358555c49905de89170f2b1102a7d8b6c4c2_GH0.tar.gz) = a7490d924a3850a1518757a0eba225cc27784b7a79f7f525d935c92e206100e9
SIZE (python/ankitects-tokio-io-timeout-96e1358555c49905de89170f2b1102a7d8b6c4c2_GH0.tar.gz) = 8152

View file

@ -1,44 +1,27 @@
--- Makefile.orig 2018-07-27 02:18:05 UTC
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
@@ -1,4 +1,4 @@
-PREFIX=/usr
+PREFIX?=/usr/local
@@ -115,7 +115,11 @@ qt/po/repo:
$(MAKE) pull-i18n
all:
@echo "You can run Anki with ./runanki"
@@ -6,19 +6,18 @@ all:
@echo "Uninstall with 'sudo make uninstall'"
install:
- rm -rf ${DESTDIR}${PREFIX}/share/anki
mkdir -p ${DESTDIR}${PREFIX}/share/anki
cp -av anki aqt web ${DESTDIR}${PREFIX}/share/anki/
- -cp -av locale ${DESTDIR}${PREFIX}/share/anki/
+ mkdir -p ${DESTDIR}${PREFIX}/share/anki/locale
+ mkdir -p qt-locale && mv locale/qt* ./qt-locale/
+ cp -av qt-locale/* ${DESTDIR}${PREFIX}/share/anki/locale/
+ mkdir -p ${DESTDIR}${PREFIX}/share/locale
+ cp -av locale/* ${DESTDIR}${PREFIX}/share/locale/
sed -e 's:@PREFIX@:${PREFIX}:' tools/runanki.system.in > tools/runanki.system
- install -m 0755 -D tools/runanki.system ${DESTDIR}${PREFIX}/bin/anki
- install -m 0644 -D -t ${DESTDIR}${PREFIX}/share/pixmaps anki.xpm anki.png
- install -m 0644 -D -t ${DESTDIR}${PREFIX}/share/applications anki.desktop
- install -m 0644 -D -t ${DESTDIR}${PREFIX}/share/man/man1 anki.1
- install -m 0644 -D -t ${DESTDIR}${PREFIX}/share/doc/anki README.contributing README.development README.md LICENSE LICENSE.logo
- -xdg-mime install anki.xml --novendor
- -xdg-mime default anki.desktop application/x-anki
- -xdg-mime default anki.desktop application/x-apkg
+ cp -av anki.xpm anki.png ${DESTDIR}${PREFIX}/share/pixmaps
+ cp -av anki.desktop ${DESTDIR}${PREFIX}/share/applications
+ mkdir -p ${DESTDIR}${PREFIX}/man/man1
+ cp -av anki.1 ${DESTDIR}${PREFIX}/man/man1/
.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 "Install complete."
@echo "Build complete."
@@ -29,6 +28,5 @@ uninstall:
rm -rf ${DESTDIR}${PREFIX}/share/pixmaps/anki.png
rm -rf ${DESTDIR}${PREFIX}/share/applications/anki.desktop
rm -rf ${DESTDIR}${PREFIX}/share/man/man1/anki.1
- -xdg-mime uninstall ${DESTDIR}${PREFIX}/share/mime/packages/anki.xml
@echo
@echo "Uninstall complete."

View file

@ -1,11 +0,0 @@
--- anki/lang.py.orig 2018-09-27 01:52:01 UTC
+++ anki/lang.py
@@ -84,7 +84,7 @@ def langDir():
if isMac:
dir = os.path.abspath(filedir + "/../../Resources/locale")
else:
- dir = os.path.join(filedir, "locale")
+ dir = os.path.join(filedir, "%%PREFIX%%/share/locale")
if not os.path.isdir(dir):
dir = os.path.join(os.path.dirname(sys.argv[0]), "locale")
if not os.path.isdir(dir):

View file

@ -1,21 +0,0 @@
Fix arguments that are passed to mpv. Otherwise mpv terminates with an error
as it expects option values passed after a '=' since 0.31.0.
Backported and adapted for the 2.1.16 release.
Obtained from: https://github.com/ankitects/anki/commit/ccd715013609133c55e83924734efa78abc03326
--- anki/mpv.py.orig 2020-02-18 09:38:27 UTC
+++ anki/mpv.py
@@ -104,9 +104,9 @@ class MPVBase:
"""
self.argv = [self.executable]
self.argv += self.default_argv
- self.argv += ["--input-ipc-server", self._sock_filename]
+ self.argv += ["--input-ipc-server="+self._sock_filename]
if self.window_id is not None:
- self.argv += ["--wid", str(self.window_id)]
+ self.argv += ["--wid="+str(self.window_id)]
def _start_process(self):
"""Start the mpv process.

View file

@ -1,16 +0,0 @@
Fix arguments that are passed to mpv.
Backported and adapted for the 2.1.16 release.
Obtained from: https://github.com/ankitects/anki/commit/ccd715013609133c55e83924734efa78abc03326
--- anki/sound.py.orig 2020-02-18 09:38:48 UTC
+++ anki/sound.py
@@ -124,7 +124,6 @@ class MpvManager(MPV):
def setMpvConfigBase(base):
mpvConfPath = os.path.join(base, "mpv.conf")
MpvManager.default_argv += [
- "--no-config",
"--include="+mpvConfPath,
]

View file

@ -1,19 +0,0 @@
--- aqt/qt.py.orig 2019-03-09 22:22:42 UTC
+++ aqt/qt.py
@@ -14,6 +14,7 @@ from anki.utils import isWin, isMac
from PyQt5.Qt import *
# trigger explicit message in case of missing libraries
# instead of silently failing to import
+from PyQt5.QtWebChannel import *
from PyQt5.QtWebEngineWidgets import *
try:
from PyQt5 import sip
@@ -42,7 +43,7 @@ qtmajor = (QT_VERSION & 0xff0000) >> 16
qtminor = (QT_VERSION & 0x00ff00) >> 8
qtpoint = QT_VERSION & 0xff
-if qtmajor != 5 or qtminor < 9 or qtminor == 10:
+if qtmajor != 5 or qtminor < 9 or qtminor <= 10:
raise Exception("Anki does not support your Qt version.")
# GUI code assumes python 3.6+

View file

@ -0,0 +1,39 @@
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,45 @@
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,10 @@
--- 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

@ -0,0 +1,19 @@
Avoid vendored OpenSSL dependencies.
--- rslib/Cargo.toml.orig 2020-09-04 08:35:57 UTC
+++ rslib/Cargo.toml
@@ -61,10 +61,10 @@ features = ["trace", "functions", "collation"]
version = "0.23.1"
features = ["trace", "functions", "collation", "bundled"]
-[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"

View file

@ -0,0 +1,27 @@
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

File diff suppressed because it is too large Load diff