mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
app-misc/anki: drop 25.02.4
Signed-off-by: Lucio Sauer <watermanpaint@posteo.net> Part-of: https://github.com/gentoo/gentoo/pull/42135 Closes: https://github.com/gentoo/gentoo/pull/42135 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
parent
32f5552f1e
commit
f5d47c2872
@ -1,6 +1,4 @@
|
||||
DIST anki-25.02.4-crates.tar.xz 57606472 BLAKE2B 40f976c4e20c6ecd0877db05a733bd66b608e1e054177479ec3068a5d9d8b8dcd32495a4c81caee4e37e12090bb8b000f41f7c3162e3d7b80dbe522bca797f47 SHA512 f382f304ead6edee5c64472945ac56fb418adf046129c45771862ff5732a1a944f84e6d80ef590f11bde2ca2058c989ed70847ebb791f101af9a3ad34285d396
|
||||
DIST anki-25.02.4-node_modules.tar.xz 304237316 BLAKE2B 270db46a9d7d64f87a57052f82071108e78371805e68c7d426dad268edd4f548b2ace4e7f2712597f4894e7c4d20fa7a9e72e3cd2278f023317f40361bcf3a37 SHA512 820495a61a3bf5bdaeaf40c4ae6d1b1cf3a9b2924494c40c66065b4b4214e52cfaf6477af2b7e801500e180f8c6956881c5206b049996ab0ae58f45966a368f4
|
||||
DIST anki-25.02.4.gh.tar.gz 2430814 BLAKE2B 3351b23dd47686d8048dd55783e0a8ea1d90ed8f329aecab141ef4bf2c044278e66b4f0369d70ca57020a6f4ab4deda2358185fd89d36eab25b8faade9149d53 SHA512 d371c79e6f78af07420c7384a47eef63e6764775386c94fa52203d2bb03929b8176b51e042de70613d1985317c840fcb3ff9c9cb9f7147d19312a4e505d4b766
|
||||
DIST anki-25.02.5-crates.tar.xz 57606472 BLAKE2B 40f976c4e20c6ecd0877db05a733bd66b608e1e054177479ec3068a5d9d8b8dcd32495a4c81caee4e37e12090bb8b000f41f7c3162e3d7b80dbe522bca797f47 SHA512 f382f304ead6edee5c64472945ac56fb418adf046129c45771862ff5732a1a944f84e6d80ef590f11bde2ca2058c989ed70847ebb791f101af9a3ad34285d396
|
||||
DIST anki-25.02.5.gh.tar.gz 2433426 BLAKE2B 95518d0038c5f697ebae0ce8a04a5ff67419c7a15e99205574e6c3ab94543cd05d3d9dc636decc3e4de1ebc294bb0c9649cd2eb4a717e53c1d6051c85472f48c SHA512 39f98052d8869e3170b65eca472b02edd61d83f6b4c2628c0351c239a68ccea7da4d8488e11cb23ea1d3df7b9be6d1b1ef84b9ea0e14650ab0d4e65b06e38656
|
||||
DIST anki-core-i18n-0fe0162f4a18e8ef2fbac1d9a33af8e38cf7260e.gh.tar.gz 1521578 BLAKE2B 101505d871df70316222db08f2bc85fdd00be81320600c64c76bb51565a88c13fa6fdd9e059ed404931f2dc97611cf2a954650d10d6556cd181427dbffc4f1a6 SHA512 c72eaea9e0f350d092a44f7623a7cfdcb74ff99a97ca4b53c51b1b26af387c9c6cd64bfca3dc4577c14c3ee4040b8ce1a7a50f2e209b0fa47c5297f97c92a910
|
||||
|
||||
@ -1,320 +0,0 @@
|
||||
# Copyright 2022-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_EXT=1
|
||||
DISTUTILS_OPTIONAL=1
|
||||
DISTUTILS_SINGLE_IMPL=1
|
||||
DISTUTILS_USE_PEP517=no
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
|
||||
declare -A GIT_CRATES=(
|
||||
[linkcheck]='https://github.com/ankitects/linkcheck;184b2ca50ed39ca43da13f0b830a463861adb9ca;linkcheck-%commit%'
|
||||
[percent-encoding-iri]='https://github.com/ankitects/rust-url;bb930b8d089f4d30d7d19c12e54e66191de47b88;rust-url-%commit%/percent_encoding'
|
||||
)
|
||||
RUST_MIN_VER="1.82.0"
|
||||
|
||||
inherit cargo desktop distutils-r1 greadme multiprocessing ninja-utils \
|
||||
optfeature toolchain-funcs xdg
|
||||
|
||||
DESCRIPTION="A spaced-repetition memory training program (flash cards)"
|
||||
HOMEPAGE="https://apps.ankiweb.net/"
|
||||
|
||||
declare -A COMMITS=(
|
||||
[anki]="a5c33ad07de95640994cefd70c5a9a89ed5a0c62"
|
||||
[ftl-core]="0fe0162f4a18e8ef2fbac1d9a33af8e38cf7260e"
|
||||
[ftl-desktop]="17216b03db7249600542e388bd4ea124478400e5"
|
||||
)
|
||||
SRC_URI="${CARGO_CRATE_URIS}
|
||||
https://github.com/ankitects/anki/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz
|
||||
https://github.com/ankitects/anki-core-i18n/archive/${COMMITS[ftl-core]}.tar.gz
|
||||
-> anki-core-i18n-${COMMITS[ftl-core]}.gh.tar.gz
|
||||
https://github.com/ankitects/anki-desktop-ftl/archive/${COMMITS[ftl-desktop]}.tar.gz
|
||||
-> anki-desktop-ftl-${COMMITS[ftl-desktop]}.gh.tar.gz
|
||||
https://git.sr.ht/~antecrescent/gentoo-files/blob/main/app-misc/anki/${P}-crates.tar.xz
|
||||
gui? (
|
||||
https://git.sr.ht/~antecrescent/gentoo-files/blob/main/app-misc/anki/${P}-node_modules.tar.xz
|
||||
)
|
||||
"
|
||||
# How to get an up-to-date summary of runtime JS libs' licenses:
|
||||
# ./node_modules/.bin/license-checker-rseidelsohn --production --excludePackages anki --summary
|
||||
LICENSE="AGPL-3+ BSD public-domain gui? ( 0BSD CC-BY-4.0 GPL-3+ )"
|
||||
# Dependent crate licenses
|
||||
LICENSE+="
|
||||
Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 CC0-1.0 ISC MIT
|
||||
MPL-2.0 Unicode-3.0 Unicode-DFS-2016 Unlicense ZLIB
|
||||
"
|
||||
# Manually added crate licenses
|
||||
LICENSE+=" openssl"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
|
||||
IUSE="+gui"
|
||||
REQUIRED_USE="gui? ( ${PYTHON_REQUIRED_USE} )"
|
||||
RESTRICT="!gui? ( test ) !test? ( test )"
|
||||
|
||||
# Dependencies:
|
||||
# Python: python/requirements.{anki,aqt}.in
|
||||
# If ENABLE_QT5_COMPAT is set at runtime
|
||||
# additionally depend on PyQt6[dbus,printsupport].
|
||||
# Qt: qt/{aqt/{sound.py,qt/*.py},tools/build_ui.py}
|
||||
# app-misc/certificates: The rust backend library is built against
|
||||
# rustls-native-certs to use the native certificate store.
|
||||
# No ${PYTHON_DEPS} in DEPEND despite external module because it doesn't link
|
||||
# against libpython
|
||||
|
||||
DEPEND="
|
||||
>=app-arch/zstd-1.5.5:=
|
||||
dev-db/sqlite:3
|
||||
"
|
||||
GUI_RDEPEND="
|
||||
${PYTHON_DEPS}
|
||||
dev-qt/qtsvg:6
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
|
||||
dev-python/distro[${PYTHON_USEDEP}]
|
||||
dev-python/decorator[${PYTHON_USEDEP}]
|
||||
dev-python/flask[${PYTHON_USEDEP}]
|
||||
dev-python/flask-cors[${PYTHON_USEDEP}]
|
||||
dev-python/jsonschema[${PYTHON_USEDEP}]
|
||||
dev-python/markdown[${PYTHON_USEDEP}]
|
||||
dev-python/protobuf[${PYTHON_USEDEP}]
|
||||
>=dev-python/pyqt6-6.6.1[gui,network,opengl,quick,webchannel,widgets,${PYTHON_USEDEP}]
|
||||
>=dev-python/pyqt6-sip-13.6.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pyqt6-webengine-6.6.0[widgets,${PYTHON_USEDEP}]
|
||||
dev-python/requests[${PYTHON_USEDEP}]
|
||||
dev-python/send2trash[${PYTHON_USEDEP}]
|
||||
dev-python/waitress[${PYTHON_USEDEP}]
|
||||
')
|
||||
"
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
app-misc/ca-certificates
|
||||
gui? ( ${GUI_RDEPEND} )
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
>=app-arch/zstd-1.5.5:=
|
||||
dev-libs/protobuf[protoc(+)]
|
||||
virtual/pkgconfig
|
||||
gui? (
|
||||
${PYTHON_DEPS}
|
||||
app-alternatives/ninja
|
||||
>=net-libs/nodejs-20.12.1
|
||||
sys-apps/yarn
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/pyqt6[${PYTHON_USEDEP}]
|
||||
dev-python/wheel[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
test? (
|
||||
${RDEPEND}
|
||||
app-text/dvipng
|
||||
app-text/texlive
|
||||
dev-libs/openssl
|
||||
dev-util/cargo-nextest
|
||||
$(python_gen_cond_dep 'dev-python/mock[${PYTHON_USEDEP}]')
|
||||
)
|
||||
"
|
||||
|
||||
distutils_enable_sphinx python/sphinx \
|
||||
dev-python/sphinx-autoapi \
|
||||
dev-python/sphinx-rtd-theme
|
||||
|
||||
distutils_enable_tests pytest
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/24.06.3/remove-yarn.patch
|
||||
"${FILESDIR}"/24.04.1/remove-mypy-protobuf.patch
|
||||
"${FILESDIR}"/24.04.1/revert-cert-store-hack.patch
|
||||
"${FILESDIR}"/23.12.1/ninja-rules-for-cargo.patch
|
||||
)
|
||||
|
||||
QA_FLAGS_IGNORED="usr/bin/anki-sync-server
|
||||
usr/lib/python.*/site-packages/anki/_rsbridge.so"
|
||||
|
||||
pkg_setup() {
|
||||
export PROTOC_BINARY="${BROOT}"/usr/bin/protoc
|
||||
export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
|
||||
export ZSTD_SYS_USE_PKG_CONFIG=1
|
||||
rust_pkg_setup
|
||||
use gui && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
python_prepare_all() {
|
||||
mv "${WORKDIR}"/node_modules out || die
|
||||
|
||||
# Expected files and directories
|
||||
mkdir .git out/env || die
|
||||
mkdir -p out/pyenv/bin || die
|
||||
ln -s "${PYTHON}" out/pyenv/bin/python || die
|
||||
|
||||
if use doc; then
|
||||
sed "/^REPO_ROOT/s|=.*|= \"${S}\"|" -i python/sphinx/conf.py || die
|
||||
fi
|
||||
|
||||
# Unpin Yarn
|
||||
sed -e '/"type": "module"/s/,//' \
|
||||
-e '/packageManager/d' -i package.json || die
|
||||
|
||||
# Not running the black formatter on generated files saves a dependency
|
||||
sed '/subprocess/d' -i pylib/tools/hookslib.py || die
|
||||
|
||||
# Fix hardcoded runner location
|
||||
export CARGO_TARGET_DIR="${S}"/out/rust
|
||||
cbuild_dir="$(CHOST=${CBUILD:-${CHOST}} cargo_target_dir)"
|
||||
sed "s,rust/release,${cbuild_dir##*out/}," \
|
||||
-i build/ninja_gen/src/render.rs || die
|
||||
# Separate src_configure from runner build
|
||||
sed '/ConfigureBuild/d' -i build/ninja_gen/src/build.rs || die
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
rm -r ftl/{core,qt}-repo || die
|
||||
ln -s "${WORKDIR}"/anki-core-i18n-${COMMITS[ftl-core]} ftl/core-repo || die
|
||||
ln -s "${WORKDIR}"/anki-desktop-ftl-${COMMITS[ftl-desktop]} ftl/qt-repo || die
|
||||
|
||||
mkdir out || die
|
||||
echo -e "${COMMITS[anki]:0:8}" > out/buildhash || die
|
||||
|
||||
# None of our ninja implementations are n2
|
||||
sed 's/which::which("n2").*/false,/' -i build/ninja_gen/src/build.rs || die
|
||||
|
||||
use gui && distutils-r1_src_prepare
|
||||
}
|
||||
|
||||
_cbuild_cargo_build() {
|
||||
CHOST=${CBUILD:-${CHOST}} cargo_src_compile "${@}"
|
||||
}
|
||||
|
||||
python_configure_all() {
|
||||
tc-env_build _cbuild_cargo_build -p configure
|
||||
|
||||
local -x NODE_BINARY="${BROOT}"/usr/bin/node \
|
||||
YARN_BINARY="${BROOT}"/usr/bin/yarn \
|
||||
OFFLINE_BUILD=1
|
||||
if ! use debug; then
|
||||
if tc-is-lto; then
|
||||
local -x RELEASE=2
|
||||
else
|
||||
local -x RELEASE=1
|
||||
fi
|
||||
fi
|
||||
cargo_env "${cbuild_dir}"/configure || die
|
||||
unset cbuild_dir
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
cargo_gen_config
|
||||
cargo_src_configure
|
||||
use gui && distutils-r1_src_configure
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
tc-env_build _cbuild_cargo_build -p runner
|
||||
cargo_env eninja -f out/build.ninja wheels
|
||||
local w
|
||||
for w in out/wheels/*.whl; do
|
||||
distutils_wheel_install "${BUILD_DIR}"/install ${w}
|
||||
done
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use gui; then
|
||||
distutils-r1_src_compile
|
||||
else
|
||||
cargo_src_compile -p anki-sync-server
|
||||
fi
|
||||
}
|
||||
|
||||
python_test() {
|
||||
epytest qt
|
||||
epytest pylib
|
||||
}
|
||||
|
||||
python_test_all() {
|
||||
local nextest_opts=(
|
||||
cargo-verbose
|
||||
failure-output=immediate
|
||||
status-level=all
|
||||
test-threads=$(get_makeopts_jobs)
|
||||
)
|
||||
if [[ ! ${CARGO_TERM_COLOR} ]]; then
|
||||
[[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && nextest_opts+=( color=never )
|
||||
fi
|
||||
nextest_opts=( ${nextest_opts[@]/#/--} )
|
||||
cargo_env cargo nextest run ${nextest_opts[@]} || die
|
||||
|
||||
eninja -f out/build.ninja check_vitest
|
||||
}
|
||||
|
||||
src_test() {
|
||||
local -x ANKI_TEST_MODE=1
|
||||
distutils-r1_src_test
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
pushd qt/bundle/lin > /dev/null || die
|
||||
doman anki.1
|
||||
doicon anki.{png,xpm}
|
||||
domenu anki.desktop
|
||||
insinto /usr/share/mime/packages
|
||||
doins anki.xml
|
||||
popd || die
|
||||
python_newscript - anki <<-EOF
|
||||
#!${EPREFIX}/usr/bin/python
|
||||
import sys
|
||||
from aqt import run
|
||||
sys.exit(run())
|
||||
EOF
|
||||
distutils-r1_python_install_all
|
||||
}
|
||||
|
||||
src_install() {
|
||||
greadme_stdin <<- EOF
|
||||
Anki's user manual is located online at https://docs.ankiweb.net/
|
||||
Anki's add-on developer manual is located online at https://addon-docs.ankiweb.net/
|
||||
EOF
|
||||
|
||||
if use gui; then
|
||||
greadme_stdin --append <<-EOF
|
||||
Users with add-ons that still rely on Anki's Qt5 GUI
|
||||
can temporarily set the environment variable ENABLE_QT5_COMPAT to 1 to have
|
||||
Anki install the previous compatibility code. This option has additional
|
||||
runtime dependencies. Please take a look at this package's optional runtime
|
||||
features for a complete listing.
|
||||
|
||||
ENABLE_QT5_COMPAT may be removed in the future, so this is not a
|
||||
long-term solution.
|
||||
EOF
|
||||
|
||||
distutils-r1_src_install
|
||||
else
|
||||
cargo_src_install --path rslib/sync
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
greadme_pkg_preinst
|
||||
use gui && xdg_pkg_preinst
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
greadme_pkg_postinst
|
||||
if use gui; then
|
||||
xdg_pkg_postinst
|
||||
optfeature "LaTeX in cards" "app-text/texlive[extra] app-text/dvipng"
|
||||
optfeature "sound support" media-video/mpv media-video/mplayer
|
||||
optfeature "recording support" "media-sound/lame[frontend] dev-python/pyqt6[multimedia]"
|
||||
optfeature "faster database operations" dev-python/orjson
|
||||
optfeature "compatibility with Qt5-dependent add-ons" dev-python/pyqt6[dbus,printsupport]
|
||||
optfeature "Vulkan driver" "media-libs/vulkan-loader dev-qt/qtbase:6[vulkan]
|
||||
dev-qt/qtdeclarative:6[vulkan] dev-qt/qtwebengine:6[vulkan]"
|
||||
|
||||
einfo "You can customize the LaTeX header for your cards to fit your needs:"
|
||||
einfo "Notes > Manage Note Types > [select a note type] > Options"
|
||||
fi
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user