mirror of
https://github.com/ankitects/anki.git
synced 2025-09-22 16:02:23 -04:00

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.
91 lines
2.5 KiB
Markdown
91 lines
2.5 KiB
Markdown
# Windows
|
|
|
|
## Requirements
|
|
|
|
**Windows**:
|
|
|
|
You must be running 64 bit Windows 10, version 1703 or newer.
|
|
|
|
The build system requires [Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) to be enabled.
|
|
|
|
**Visual Studio**:
|
|
|
|
Either the normal Visual Studio or just the [build tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) should work. Make sure the C++ compiler and Windows 10 SDK are selected - they should be on
|
|
by default.
|
|
|
|
**Python 3.8**:
|
|
|
|
Download Python 3.8 from <https://python.org>. Run the installer, and
|
|
customize the installation. Select "install for all users", and choose
|
|
the install path as c:\python. Currently the build scripts require
|
|
Python to be installed in that location.
|
|
|
|
**MSYS**:
|
|
|
|
Install [msys](https://www.msys2.org/) into the default folder location.
|
|
|
|
After installation completes, run msys, and run the following commands:
|
|
|
|
```
|
|
$ pacman -Syu
|
|
$ pacman -S git gettext
|
|
```
|
|
|
|
**Bazelisk**:
|
|
|
|
Use Start>Run to open PowerShell. Create a folder to store Bazelisk
|
|
and its working data. Anki's build scripts expect to find it in c:\bazel
|
|
|
|
```
|
|
PS> mkdir \bazel
|
|
PS> cd \bazel
|
|
```
|
|
|
|
Then grab Bazelisk:
|
|
|
|
```
|
|
PS> \msys64\usr\bin\curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.7.4/bazelisk-windows-amd64.exe -o bazel.exe
|
|
```
|
|
|
|
**Source folder**:
|
|
|
|
Anki's source files should not need to be in a specific location, but
|
|
the path should be kept as short as possible, and we test with the source
|
|
stored in c:\anki.
|
|
|
|
## Build failures
|
|
|
|
The Javascript bundling on Windows is currently a bit flaky, so the initial
|
|
build will likely fail with an error about a missing rollup module. If you
|
|
get an error when running the commands below, try repeating them a few times -
|
|
they should pick up where they left off.
|
|
|
|
## Running Anki during development
|
|
|
|
Open PowerShell and change to the top level of Anki's source folder,
|
|
then run
|
|
|
|
```
|
|
.\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, mpv.exe or mplayer.exe must be on the path. At the time
|
|
of writing, recording is not yet supported, as currently pyaudio is
|
|
not being installed.
|
|
|
|
## Running tests
|
|
|
|
From inside the top level of the source folder:
|
|
|
|
```
|
|
.\bazel test //...
|
|
```
|
|
|
|
Note that we call bazel.bat inside the Anki source folder, instead of
|
|
calling Bazel directly. This takes care of setting up the path and
|
|
output folder correctly, which avoids issues with long path names.
|