mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-19 08:13:21 +00:00
d64a2a380f
PR: 261449 Security: ee26f513-826e-11ec-8be6-d4c9ef517024
595 lines
19 KiB
Makefile
595 lines
19 KiB
Makefile
# Created by: Andrew Pantyukhin <infofarmer@FreeBSD.org>
|
|
|
|
PORTNAME= anki
|
|
DISTVERSION= 2.1.48
|
|
PORTREVISION= 4
|
|
# Don't forget to update ${_MY_BUILDHASH} if DISTVERSION changes
|
|
CATEGORIES= games education python
|
|
MASTER_SITES= LOCAL/kai/:yarncache
|
|
DISTFILES= anki-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}:yarncache
|
|
|
|
MAINTAINER= kai@FreeBSD.org
|
|
COMMENT= Flashcard trainer with spaced repetition
|
|
|
|
LICENSE= AGPLv3+
|
|
LICENSE_FILE= ${WRKSRC}/LICENSE
|
|
|
|
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 \
|
|
bazel:devel/bazel \
|
|
esbuild:devel/esbuild \
|
|
protoc:devel/protobuf \
|
|
yarn:www/yarn \
|
|
${PYTHON_PKGNAMEPREFIX}mypy-protobuf>=1.21:devel/py-mypy-protobuf@${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
|
|
# 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} \
|
|
${PYTHON_PKGNAMEPREFIX}decorator>0:devel/py-decorator@${PY_FLAVOR} \
|
|
${PYTHON_PKGNAMEPREFIX}jsonschema>0:devel/py-jsonschema@${PY_FLAVOR} \
|
|
${PYTHON_PKGNAMEPREFIX}send2trash>0:deskutils/py-send2trash@${PY_FLAVOR} \
|
|
${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}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}stringcase>0:devel/py-stringcase@${PY_FLAVOR} \
|
|
${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 pyqt:5 python:3.8+ shebangfix ssl
|
|
USE_GITHUB= yes
|
|
GH_ACCOUNT= ankitects
|
|
# Translation files
|
|
GH_TUPLE= ankitects:anki-core-i18n:56d46d6:ftlrslib \
|
|
ankitects:anki-desktop-ftl:5359f84:ftlextra
|
|
# 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:2d02e82:bzlrnodejs \
|
|
bazelbuild:rules_proto:f7a30f6:bzlrproto \
|
|
ankitects:esbuild_toolchain:f942aa9:esbuildtc \
|
|
ankitects:rules_pip:fb02cb7:bzlrpip \
|
|
ankitects:rules_python:3927c9b:bzlrpython \
|
|
ankitects:rules_rust:f66001a:bzlrrust \
|
|
ankitects:rules_sass:275ace7:bzlrsass
|
|
|
|
USE_PYQT= pyqt5 sip webengine
|
|
|
|
SHEBANG_FILES= qt/tools/runanki.system.in
|
|
|
|
CARGO_CRATES= Inflector-0.11.4 \
|
|
adler-1.0.2 \
|
|
ahash-0.7.4 \
|
|
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.2 \
|
|
askama-0.10.5 \
|
|
askama_derive-0.10.5 \
|
|
askama_escape-0.10.1 \
|
|
askama_shared-0.11.1 \
|
|
async-trait-0.1.51 \
|
|
atty-0.2.14 \
|
|
autocfg-1.0.1 \
|
|
base64-0.13.0 \
|
|
bitflags-1.2.1 \
|
|
bitvec-0.19.5 \
|
|
blake3-0.3.8 \
|
|
bumpalo-3.7.0 \
|
|
byteorder-1.4.3 \
|
|
bytes-1.0.1 \
|
|
cc-1.0.69 \
|
|
cfg-if-0.1.10 \
|
|
cfg-if-1.0.0 \
|
|
chrono-0.4.19 \
|
|
coarsetime-0.1.19 \
|
|
codespan-0.11.1 \
|
|
codespan-reporting-0.11.1 \
|
|
constant_time_eq-0.1.5 \
|
|
convert_case-0.4.0 \
|
|
core-foundation-0.9.1 \
|
|
core-foundation-sys-0.8.2 \
|
|
crc32fast-1.2.1 \
|
|
crossbeam-channel-0.5.1 \
|
|
crossbeam-utils-0.8.5 \
|
|
crypto-mac-0.8.0 \
|
|
cssparser-0.27.2 \
|
|
cssparser-macros-0.6.0 \
|
|
ctor-0.1.20 \
|
|
derivative-2.2.0 \
|
|
derive_more-0.99.16 \
|
|
digest-0.9.0 \
|
|
dirs-2.0.2 \
|
|
dirs-sys-0.3.6 \
|
|
dtoa-0.4.8 \
|
|
dtoa-short-0.3.3 \
|
|
dunce-1.0.2 \
|
|
either-1.6.1 \
|
|
encoding_rs-0.8.28 \
|
|
env_logger-0.8.4 \
|
|
fallible-iterator-0.2.0 \
|
|
fallible-streaming-iterator-0.1.9 \
|
|
fixedbitset-0.2.0 \
|
|
flate2-1.0.20 \
|
|
fluent-0.15.0 \
|
|
fluent-bundle-0.15.1 \
|
|
fluent-langneg-0.13.0 \
|
|
fluent-syntax-0.11.0 \
|
|
fnv-1.0.7 \
|
|
foreign-types-0.3.2 \
|
|
foreign-types-shared-0.1.1 \
|
|
form_urlencoded-1.0.1 \
|
|
funty-1.1.0 \
|
|
futf-0.1.4 \
|
|
futures-0.3.16 \
|
|
futures-channel-0.3.16 \
|
|
futures-core-0.3.16 \
|
|
futures-executor-0.3.16 \
|
|
futures-io-0.3.16 \
|
|
futures-macro-0.3.16 \
|
|
futures-sink-0.3.16 \
|
|
futures-task-0.3.16 \
|
|
futures-util-0.3.16 \
|
|
fxhash-0.2.1 \
|
|
generic-array-0.14.4 \
|
|
getopts-0.2.21 \
|
|
getrandom-0.1.16 \
|
|
getrandom-0.2.3 \
|
|
ghost-0.1.2 \
|
|
h2-0.3.3 \
|
|
hashbrown-0.11.2 \
|
|
hashlink-0.7.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.4 \
|
|
http-body-0.4.2 \
|
|
httparse-1.4.1 \
|
|
httpdate-1.0.1 \
|
|
humansize-1.1.1 \
|
|
humantime-2.1.0 \
|
|
hyper-0.14.11 \
|
|
hyper-rustls-0.22.1 \
|
|
hyper-tls-0.5.0 \
|
|
idna-0.2.3 \
|
|
indexmap-1.7.0 \
|
|
indoc-0.3.6 \
|
|
indoc-impl-0.3.6 \
|
|
inflections-1.1.1 \
|
|
instant-0.1.10 \
|
|
intl-memoizer-0.5.1 \
|
|
intl_pluralrules-7.0.1 \
|
|
inventory-0.1.10 \
|
|
inventory-impl-0.1.10 \
|
|
ipnet-2.3.1 \
|
|
itertools-0.9.0 \
|
|
itertools-0.10.1 \
|
|
itoa-0.4.7 \
|
|
js-sys-0.3.52 \
|
|
kuchiki-0.8.1 \
|
|
lazy_static-1.4.0 \
|
|
lexical-core-0.7.6 \
|
|
libc-0.2.98 \
|
|
libsqlite3-sys-0.22.2 \
|
|
linkify-0.5.0 \
|
|
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 \
|
|
memchr-2.4.0 \
|
|
mime-0.3.16 \
|
|
mime_guess-2.0.3 \
|
|
miniz_oxide-0.4.4 \
|
|
mio-0.7.13 \
|
|
miow-0.3.7 \
|
|
multimap-0.8.3 \
|
|
native-tls-0.2.7 \
|
|
new_debug_unreachable-1.0.4 \
|
|
nodrop-0.1.14 \
|
|
nom-6.1.2 \
|
|
nom-7.0.0-alpha1 \
|
|
ntapi-0.3.6 \
|
|
num-format-0.4.0 \
|
|
num-integer-0.1.44 \
|
|
num-traits-0.2.14 \
|
|
num_cpus-1.13.0 \
|
|
num_enum-0.5.2 \
|
|
num_enum_derive-0.5.2 \
|
|
once_cell-1.8.0 \
|
|
openssl-0.10.35 \
|
|
openssl-probe-0.1.4 \
|
|
openssl-sys-0.9.65 \
|
|
ouroboros-0.9.5 \
|
|
ouroboros_macro-0.9.5 \
|
|
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 \
|
|
pest-2.1.3 \
|
|
petgraph-0.5.1 \
|
|
phf-0.8.0 \
|
|
phf-0.9.0 \
|
|
phf_codegen-0.8.0 \
|
|
phf_generator-0.8.0 \
|
|
phf_generator-0.9.0 \
|
|
phf_macros-0.8.0 \
|
|
phf_macros-0.9.0 \
|
|
phf_shared-0.8.0 \
|
|
phf_shared-0.9.0 \
|
|
pin-project-1.0.8 \
|
|
pin-project-internal-1.0.8 \
|
|
pin-project-lite-0.2.7 \
|
|
pin-utils-0.1.0 \
|
|
pkg-config-0.3.19 \
|
|
ppv-lite86-0.2.10 \
|
|
precomputed-hash-0.1.1 \
|
|
proc-macro-crate-1.0.0 \
|
|
proc-macro-error-1.0.4 \
|
|
proc-macro-error-attr-1.0.4 \
|
|
proc-macro-hack-0.5.19 \
|
|
proc-macro-nested-0.1.6 \
|
|
proc-macro2-1.0.28 \
|
|
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 \
|
|
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 \
|
|
reqwest-0.11.4 \
|
|
ring-0.16.20 \
|
|
rusqlite-0.25.3 \
|
|
rustc-hash-1.1.0 \
|
|
rustc_version-0.3.3 \
|
|
rustls-0.19.1 \
|
|
rustls-native-certs-0.5.0 \
|
|
ryu-1.0.5 \
|
|
schannel-0.1.19 \
|
|
scopeguard-1.1.0 \
|
|
sct-0.6.1 \
|
|
security-framework-2.3.1 \
|
|
security-framework-sys-2.3.0 \
|
|
selectors-0.22.0 \
|
|
semver-0.11.0 \
|
|
semver-parser-0.10.2 \
|
|
serde-1.0.127 \
|
|
serde-aux-2.2.0 \
|
|
serde_derive-1.0.127 \
|
|
serde_json-1.0.66 \
|
|
serde_repr-0.1.7 \
|
|
serde_tuple-0.5.0 \
|
|
serde_tuple_macros-0.5.0 \
|
|
serde_urlencoded-0.7.0 \
|
|
servo_arc-0.1.1 \
|
|
sha1-0.6.0 \
|
|
siphasher-0.3.6 \
|
|
slab-0.4.3 \
|
|
slog-2.7.0 \
|
|
slog-async-2.7.0 \
|
|
slog-envlogger-2.2.0 \
|
|
slog-scope-4.4.0 \
|
|
slog-stdlog-4.1.0 \
|
|
slog-term-2.6.0 \
|
|
smallvec-1.6.1 \
|
|
socket2-0.4.1 \
|
|
spin-0.5.2 \
|
|
stable_deref_trait-1.2.0 \
|
|
static_assertions-1.1.0 \
|
|
string_cache-0.8.1 \
|
|
string_cache_codegen-0.5.1 \
|
|
strum-0.21.0 \
|
|
strum_macros-0.21.1 \
|
|
subtle-2.4.1 \
|
|
syn-1.0.74 \
|
|
take_mut-0.2.2 \
|
|
tap-1.0.1 \
|
|
tempfile-3.2.0 \
|
|
tendril-0.4.2 \
|
|
term-0.6.1 \
|
|
termcolor-1.1.2 \
|
|
thin-slice-0.1.1 \
|
|
thiserror-1.0.26 \
|
|
thiserror-impl-1.0.26 \
|
|
thread_local-1.1.3 \
|
|
time-0.1.44 \
|
|
tinystr-0.3.4 \
|
|
tinyvec-1.3.1 \
|
|
tinyvec_macros-0.1.0 \
|
|
tokio-1.9.0 \
|
|
tokio-macros-1.3.0 \
|
|
tokio-native-tls-0.3.0 \
|
|
tokio-rustls-0.22.0 \
|
|
tokio-socks-0.5.1 \
|
|
tokio-util-0.6.7 \
|
|
toml-0.5.8 \
|
|
tower-service-0.3.1 \
|
|
tracing-0.1.26 \
|
|
tracing-core-0.1.18 \
|
|
try-lock-0.2.3 \
|
|
type-map-0.4.0 \
|
|
typenum-1.13.0 \
|
|
ucd-trie-0.1.3 \
|
|
unic-char-property-0.9.0 \
|
|
unic-char-range-0.9.0 \
|
|
unic-common-0.9.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 \
|
|
unic-ucd-category-0.9.0 \
|
|
unic-ucd-version-0.9.0 \
|
|
unicase-2.6.0 \
|
|
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 \
|
|
untrusted-0.7.1 \
|
|
url-2.2.2 \
|
|
utf-8-0.7.6 \
|
|
utf8-decode-1.0.1 \
|
|
utime-0.3.1 \
|
|
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.75 \
|
|
wasm-bindgen-backend-0.2.75 \
|
|
wasm-bindgen-futures-0.4.25 \
|
|
wasm-bindgen-macro-0.2.75 \
|
|
wasm-bindgen-macro-support-0.2.75 \
|
|
wasm-bindgen-shared-0.2.75 \
|
|
web-sys-0.3.52 \
|
|
webpki-0.21.4 \
|
|
webpki-roots-0.21.1 \
|
|
which-4.2.2 \
|
|
winapi-0.3.9 \
|
|
winapi-i686-pc-windows-gnu-0.4.0 \
|
|
winapi-util-0.1.5 \
|
|
winapi-x86_64-pc-windows-gnu-0.4.0 \
|
|
winreg-0.7.0 \
|
|
wyz-0.2.0 \
|
|
xml5ever-0.16.1 \
|
|
zip-0.5.13 \
|
|
reqwest@git+https://github.com/ankitects/reqwest.git?rev=7591444614de02b658ddab125efba7b2bb4e2335\#7591444614de02b658ddab125efba7b2bb4e2335 \
|
|
hyper-timeout@git+https://github.com/ankitects/hyper-timeout.git?rev=0cb6f7d14c62819e37cd221736f8b0555e823712\#0cb6f7d14c62819e37cd221736f8b0555e823712 \
|
|
linkcheck@git+https://github.com/ankitects/linkcheck.git?rev=2f20798ce521cc594d510d4e417e76d5eac04d4b\#2f20798ce521cc594d510d4e417e76d5eac04d4b \
|
|
tokio-io-timeout@git+https://github.com/ankitects/tokio-io-timeout.git?rev=1ee0892217e9a76bba4bb369ec5fab8854935a3c\#1ee0892217e9a76bba4bb369ec5fab8854935a3c \
|
|
pct-str@git+https://github.com/timothee-haudebourg/pct-str.git?rev=4adccd8d4a222ab2672350a102f06ae832a0572d\#4adccd8d4a222ab2672350a102f06ae832a0572d
|
|
CARGO_CARGOTOML= ${WRKSRC}/pylib/rsbridge/Cargo.toml
|
|
|
|
CARGO_BUILD= no
|
|
CARGO_INSTALL= no
|
|
|
|
# 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} \
|
|
PROTO_TOP=${WRKSRC}/proto/.top_level \
|
|
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
|
|
|
|
OPTIONS_DEFAULT= MPV
|
|
OPTIONS_GROUP= PLAYER
|
|
OPTIONS_GROUP_PLAYER= MPLAYER MPV
|
|
OPTIONS_SUB= yes
|
|
|
|
MPV_DESC= mpv media player support
|
|
|
|
MPLAYER_RUN_DEPENDS= mplayer:multimedia/mplayer
|
|
MPV_RUN_DEPENDS= mpv:multimedia/mpv
|
|
|
|
# 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= fb07bad3
|
|
# Path of the local bazel repositories
|
|
_MY_LOCALREPO= ${WRKSRC}/local_repos
|
|
# Path of cache that is used by www/yarn
|
|
_MY_YARNCACHE= ${WRKDIR}/.yarn
|
|
|
|
post-extract:
|
|
# 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_esbuild/bin \
|
|
${_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/librsbridge \
|
|
${_MY_LOCALREPO}/rust_output/strings_json
|
|
# Create empty WORKSPACE files in the top directory of each local
|
|
# repository
|
|
@${TOUCH} ${_MY_LOCALREPO}/local_esbuild/WORKSPACE \
|
|
${_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 and esbuild to the custom local repository
|
|
# as they need some patching
|
|
@${CP} -r ${WRKSRC_esbuildtc} ${_MY_LOCALREPO}/esbuild_toolchain
|
|
@${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 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_esbuild \
|
|
${_MY_LOCALREPO}/local_esbuild/BUILD.bazel
|
|
@${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-librsbridge \
|
|
${_MY_LOCALREPO}/rust_output/librsbridge/BUILD.bazel
|
|
@${CP} ${FILESDIR}/bazel/BUILD.bazel-rust_output-strings_json \
|
|
${_MY_LOCALREPO}/rust_output/strings_json/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/i18n/BUILD.bazel ${WRKSRC}/rslib/i18n/BUILD.bazel.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-i18n \
|
|
${WRKSRC}/rslib/i18n/BUILD.bazel
|
|
|
|
post-patch:
|
|
@${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}/proto/protobuf.bzl \
|
|
${_MY_LOCALREPO}/esbuild_toolchain/esbuild_repo.bzl
|
|
@${REINPLACE_CMD} -e 's|%%_MY_YARNCACHE%%|${_MY_YARNCACHE}|' \
|
|
${_MY_LOCALREPO}/rules_nodejs/internal/npm_install/npm_install.bzl
|
|
|
|
pre-configure:
|
|
# 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/esbuild ${_MY_LOCALREPO}/local_esbuild/bin/esbuild
|
|
${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 ${_MY_LOCALREPO}/rust_output/strings_json/strings.json
|
|
# 2. pylib/rsbridge (Rust/Python bridge)
|
|
# `-> produces ${_MY_LOCALREPO}/rust_output/librsbridge/librsbridge.so
|
|
# 3. The remaining components (Python, Qt5 and JS) are built by bazel
|
|
pre-build:
|
|
# 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 "librsbridge.so"` ${_MY_LOCALREPO}/rust_output/librsbridge/
|
|
${CP} `${FIND} ${CARGO_TARGET_DIR} -name "strings.json"` ${_MY_LOCALREPO}/rust_output/strings_json/
|
|
|
|
do-build:
|
|
# Limit bazel jobs to 1 due random build failures while compiling TS files
|
|
# via "tsc".
|
|
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 \
|
|
--jobs 1 \
|
|
--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}/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}${PREFIX}/share/pixmaps \
|
|
${STAGEDIR}${PREFIX}/share/applications
|
|
cd ${WRKSRC}/bazel-dist/ \
|
|
&& ${COPYTREE_SHARE} anki ${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
|
|
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 yarn cache easier
|
|
make-yarn-cache:
|
|
# Run "make extract" before executing this target
|
|
@${RM} -r ${_MY_YARNCACHE}
|
|
@cd ${WRKSRC}/ts \
|
|
&& ${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_bzlrsass}/sass \
|
|
&& ${LOCALBASE}/bin/yarn --cache-folder ${_MY_YARNCACHE} install
|
|
@cd ${WRKDIR} \
|
|
&& ${TAR} -czf ${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX} .yarn \
|
|
&& ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-yarn-cache-${DISTVERSION}${EXTRACT_SUFX}"
|
|
|
|
.include <bsd.port.mk>
|