Anki/pylib/anki/BUILD.bazel
Damien Elmes aea0a6fcc6 initial Bazel conversion
Running and testing should be working on the three platforms, but
there's still a fair bit that needs to be done:

- Wheel building + testing in a venv still needs to be implemented.
- Python requirements still need to be compiled with piptool and pinned;
need to compile on all platforms then merge
- Cargo deps in cargo/ and rslib/ need to be cleaned up, and ideally
unified into one place
- Currently using rustls to work around openssl compilation issues
on Linux, but this will break corporate proxies with custom SSL
authorities; need to conditionally use openssl or use
https://github.com/seanmonstar/reqwest/pull/1058
- Makefiles and docs still need cleaning up
- It may make sense to reparent ts/* to the top level, as we don't
nest the other modules under a specific language.
- rspy and pylib must always be updated in lock-step, so merging
rspy into pylib as a private module would simplify things.
- Merging desktop-ftl and mobile-ftl into the core ftl would make
managing and updating translations easier.
- Obsolete scripts need removing.
- And probably more.
2020-11-01 14:26:58 +10:00

92 lines
2 KiB
Text

load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_python//python:defs.bzl", "py_library")
load("@py_deps//:requirements.bzl", "requirement")
load("//proto:defs.bzl", "py_proto_library_typed")
load("@rules_python//experimental/python:wheel.bzl", "py_package", "py_wheel")
copy_file(
name = "buildinfo",
src = "//:buildinfo.txt",
out = "buildinfo.txt",
)
genrule(
name = "rsbackend_gen",
outs = ["rsbackend_gen.py"],
cmd = "$(location //pylib:genbackend) > $@",
tools = ["//pylib:genbackend"],
)
genrule(
name = "hooks_gen",
outs = ["hooks_gen.py"],
cmd = "$(location //pylib:genhooks) $@",
tools = ["//pylib:genhooks"],
)
py_proto_library_typed(
name = "backend_pb2",
src = "//proto:backend.proto",
visibility = [
"//visibility:public",
],
)
py_proto_library_typed(
name = "fluent_pb2",
src = "//rslib:fluent.proto",
visibility = [
"//visibility:public",
],
)
py_library(
name = "anki",
srcs = glob([
"**/*.py",
]),
data = [
"py.typed",
":backend_pb2",
":buildinfo",
":fluent_pb2",
":hooks_gen",
":rsbackend_gen",
"//rspy:ankirspy",
],
imports = [
"..",
"../../rspy",
],
visibility = ["//visibility:public"],
deps = [
requirement("protobuf"),
requirement("decorator"),
requirement("requests"),
requirement("beautifulsoup4"),
],
)
py_package(
name = "anki_pkg",
# Only include these Python packages.
# packages = ["anki"],
deps = [":anki"],
)
py_wheel(
name = "anki_whl",
# Package data. We're building "example_minimal_package-0.0.1-py3-none-any.whl"
distribution = "anki",
python_tag = "py3",
requires = [
"ankirspy (==2.1.35)",
"distro ; sys_platform != \"darwin\" and sys_platform != \"win32\"",
],
strip_path_prefixes = [
"pylib",
# "foo3",
],
version = "0.0.1",
deps = [":anki_pkg"],
)