Link to the official Java installer, as that doesn't require XCode to be installed (on macOS). And that works on Windows too.
2.3 KiB
| title | weight |
|---|---|
| Generating Code | 20 |
Some code (Go, Python, JavaScript) is generated from the OpenAPI specs in
pkg/api/flamenco-openapi.yaml. There are also Go files generated to create
mock implementations of interfaces for unit testing purposes.
Installing the Code Generators
There are three code generators used by Flamenco:
oapi-codegenfor the OpenAPI server & client in Go.mockgenfor generating mocks for tests in Go.openapi-codegenfor the OpenAPI clients in Python and JavaScript.
Go code generators
The first two generators can be installed with either of these commands:
# Simplest way to install the Go generators:
$ go run mage.go installGenerators
# Faster to re-run than the above, but does require Make:
$ make install-generators
Python and JavaScript code generators
openapi-codegen is bundled with the Flamenco sources, but does need a Java
runtime environment to be installed.
{{< tabs "installing-java" >}} {{< tab "Linux" >}}
On Ubuntu Linux this should be enough:
$ sudo apt install default-jre-headless
Other Linux distributions very likely have a similar package.
{{< /tab >}} {{< tab "Windows" >}}
Use the official Java installer.
{{< /tab >}} {{< tab "macOS" >}}
Option 1 (Native install)
Use the official Java installer.
Option 2 (Homebrew)
Install Java via homebrew:
brew install java
Note that this requires XCode to be installed.
{{< /tab >}} {{< /tabs >}}
Committing Generated Code
Generated code is committed to Git, so that after a checkout you shouldn't need to re-run the generator to build Flamenco.
The following files & directories are generated. Generated directories are completely erased before regeneration, so do not add any files there manually.
addon/flamenco/manager/: Python API for the Blender add-on.pkg/api/*.gen.go: Go API shared by Manager and Worker.internal/**/mocks/*.gen.go: Generated mocks for Go unit tests.web/app/src/manager-api/: JavaScript API for the web front-end.