Anki/docs/linux.md
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

1.4 KiB

Linux

Requirements

These instructions are written for Debian/Ubuntu; adjust for your distribution.

Ensure some basic tools are installed:

$ sudo apt install bash grep findutils curl gcc g++ git gettext

The 'find' utility is 'findutils' on Debian.

Install Python 3.8:

If you're on a modern distribution, you may be able to install Python from the repo:

$  sudo apt install python3.8

If python3.8 is not available in your distro, you can download it from python.org.

Notes:

  • The build scripts expect to find 'python3.8' on your path, so Python 3.7 or 3.9 will not work.
  • An active Python venv is not required, and may cause problems.

Install Bazelisk:

Download it under the name 'bazel':

$ curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.7.4/bazelisk-linux-amd64 -o ./bazel

And put it on your path:

$ chmod +x bazel && sudo mv bazel /usr/local/bin/

Running Anki during development

From the top level of Anki's source folder:

./run

This will build Anki and run it in place.

The first build will take while, as it downloads and builds a bunch of dependencies. When the build is complete, Anki will automatically start.

To play audio, install mpv. At the time of writing, recording is not yet supported, as currently pyaudio is not being installed.

Running tests

From inside the source folder:

bazel test //...