Install prerequisites:
Then build and run Goobla from the root directory of the repository:
go run . serve
macOS Apple Silicon supports Metal which is built-in to the Goobla binary. No additional steps are required.
Install prerequisites:
brew install cmake
Then, configure and build the project:
cmake -B build
cmake --build build
Lastly, run Goobla:
go run . serve
Install prerequisites:
Then, configure and build the project:
cmake -B build
cmake --build build --config Release
[!IMPORTANT] Building for ROCm requires additional flags:
cmake -B build -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build build --config Release
Lastly, run Goobla:
go run . serve
Windows ARM does not support additional acceleration libraries at this time. Do not use cmake, simply go run
or go build
.
Install prerequisites:
sudo apt install cmake
or sudo dnf install cmake
[!IMPORTANT] Ensure prerequisites are in
PATH
before running CMake.
Then, configure and build the project:
cmake -B build
cmake --build build
Lastly, run Goobla:
go run . serve
docker build .
docker build --build-arg FLAVOR=rocm .
To run tests, use go test
:
go test ./...
NOTE: In rare cirumstances, you may need to change a package using the new “synctest” package in go1.24.
If you do not have the “synctest” package enabled, you will not see build or test failures resulting from your change(s), if any, locally, but CI will break.
If you see failures in CI, you can either keep pushing changes to see if the CI build passes, or you can enable the “synctest” package locally to see the failures before pushing.
To enable the “synctest” package for testing, run the following command:
GOEXPERIMENT=synctest go test ./...
If you wish to enable synctest for all go commands, you can set the
GOEXPERIMENT
environment variable in your shell profile or by using:go env -w GOEXPERIMENT=synctest
Which will enable the “synctest” package for all go commands without needing to set it for all shell sessions.
The synctest package is not required for production builds.
Goobla looks for acceleration libraries in the following paths relative to the goobla
executable:
./lib/goobla
(Windows)../lib/goobla
(Linux).
(macOS)build/lib/goobla
(for development)If the libraries are not found, Goobla will not run with any acceleration libraries.
By default the server does not expose Go’s pprof handlers. Set the
environment variable GOOBLA_PPROF
to on
to enable them on the main port, or
specify a host and port such as 127.0.0.1:6060
to run pprof on a separate
port. Leave the variable unset or set to off
in production.