Sybren A. Stüvel 1b9b40728d Website: improve docs about installation of code generators
Link to the official Java installer, as that doesn't require XCode to be
installed (on macOS). And that works on Windows too.
2025-06-30 11:23:43 +02:00

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:

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.