95dbf30fb9
All platforms: - rename scripts/ to tools/: Bazelisk expects to find its wrapper script (used by the Mac changes below) in tools/. Rather than have a separate scripts/ and tools/, it's simpler to just move everything into tools/. - wheel outputs and binary bundles now go into .bazel/out/dist. While not technically Bazel build products, doing it this way ensures they get cleaned up when 'bazel clean' is run, and it keeps them out of the source folder. - update to the latest Bazel Windows changes: - bazel.bat has been removed, and tools\setup-env.bat has been added. Other scripts like .\run.bat will automatically call it to set up the environment. - because Bazel is now on the path, you can 'bazel test ...' from any folder, instead of having to do \anki\bazel. - the bat files can handle being called from any working directory, so things like running "\anki\tools\python" from c:\ will work. - build installer as part of bundling process Mac changes: - `arch -arch x86_64 bazel ...` will now automatically use a different build root, so that it is cheap to switch back and forth between archs on a new Mac. - tools/run-qt* will now automatically use Rosetta - disable jemalloc in Mac x86 build for now, as it won't build under Rosetta (perhaps due to its build scripts using $host_cpu instead of $target_cpu) - create app bundle as part of bundling process Linux changes: - remove arm64 orjson workaround in Linux bundle, as without a readily-available, relatively distro-agonstic PyQt/Qt build we can use, the arm64 Linux bundle is of very limited usefulness. - update Docker files for release build - include fcitx5 in both the qt5 and qt6 bundles - create tarballs as part of the bundling process
57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
# Editing/IDEs
|
|
|
|
Visual Studio Code is recommended, since it provides decent support for all the languages
|
|
Anki uses. If you open the root of this repo in VS Code, it will suggest some extensions
|
|
for you to install.
|
|
|
|
For editing Python, PyCharm/IntelliJ's type checking/completion is a bit nicer than
|
|
VS Code, but VS Code has improved considerably in a short span of time.
|
|
|
|
There are a few steps you'll want to take before you start using an IDE.
|
|
|
|
## Initial Setup
|
|
|
|
### Python Environment
|
|
|
|
For code completion of external Python modules, you'll need to create a Python
|
|
venv and install Anki's dependencies into it. For example:
|
|
|
|
```
|
|
$ python3.9 -m venv ~/pyenv
|
|
$ ~/pyenv/bin/pip install -r python/requirements.txt
|
|
$ ~/pyenv/bin/pip install pyqt6 pyqt6-webengine
|
|
```
|
|
|
|
After doing so, you can set your editor's Python path to ~/pyenv/bin/python, eg
|
|
in VS Code, ctrl/cmd+shift+p, then 'python: select interpreter'.
|
|
|
|
### Rust
|
|
|
|
If you're planning to edit Rust code, install [Rustup](https://rustup.rs/), then
|
|
run 'rustup install nightly'.
|
|
|
|
### Build First
|
|
|
|
Code completion partly depends on files that are generated as part of the
|
|
regular build process, so for things to work correctly, use './run' or
|
|
'tools/build' prior to using code completion.
|
|
|
|
## PyCharm/IntelliJ
|
|
|
|
If you decide to use PyCharm instead of VS Code, there are somethings to be aware of.
|
|
|
|
### Slowdowns
|
|
|
|
The build process links a large file tree into .bazel in the repo dir. JetBrains
|
|
products will try to monitor this folder for changes, and index the files inside
|
|
it, which will lead to bad performance. Excluding the folder in the project
|
|
settings is [not sufficient unfortunately](https://youtrack.jetbrains.com/issue/IDEA-73309).
|
|
|
|
A workaround is to add .bazel and node_modules to the IDE-global ignores:
|
|
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000721750-Excluding-directories-globally
|
|
|
|
### Pylib References
|
|
|
|
You'll need to use File>Project Structure to tell IntelliJ that pylib/ is a sources root, so it knows
|
|
references to 'anki' in aqt are valid.
|