118 lines
3.5 KiB
Markdown
118 lines
3.5 KiB
Markdown
# Houdini Apprentice in distrobox
|
|
|
|
Two images built from the same `Dockerfile`, pushed to a private registry,
|
|
used via distrobox:
|
|
|
|
- `houdini-amd` — Houdini + Mesa, for AMD/Intel GPUs
|
|
- `houdini-nvidia` — Houdini only; the NVIDIA driver is injected at runtime
|
|
by `distrobox --nvidia`
|
|
|
|
Registry: `docker.slambin.fr`. Files: `Dockerfile`, `houdini-run` (in-image
|
|
launcher).
|
|
|
|
> Houdini binaries are baked into these images under a personal SideFX
|
|
> account. Keep the registry **private** — never push these images publicly.
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
- Your Houdini Linux tarball from your SideFX account (e.g.
|
|
`houdini-22.0.429-linux_x86_64_gcc14.2.tar.gz`), placed next to the
|
|
`Dockerfile`.
|
|
- A SideFX account (Apprentice is free) to activate the license on first
|
|
launch.
|
|
|
|
## Build & push
|
|
|
|
```bash
|
|
REGISTRY=docker.slambin.fr
|
|
VERSION=22.0.429
|
|
TARBALL=houdini-22.0.429-linux_x86_64_gcc14.2.tar.gz
|
|
# Date the EULA at https://www.sidefx.com/legal/license-agreement/ was last
|
|
# updated, format YYYY-MM-DD, no "SideFX-" prefix.
|
|
EULA_DATE=2021-10-13
|
|
|
|
for target in amd nvidia; do
|
|
podman build -f Dockerfile \
|
|
--build-arg "HOUDINI_TARBALL=${TARBALL}" \
|
|
--build-arg "HOUDINI_EULA_DATE=${EULA_DATE}" \
|
|
--target "${target}" \
|
|
-t "${REGISTRY}/houdini-${target}:${VERSION}" \
|
|
-t "${REGISTRY}/houdini-${target}:latest" .
|
|
podman push "${REGISTRY}/houdini-${target}:${VERSION}"
|
|
podman push "${REGISTRY}/houdini-${target}:latest"
|
|
done
|
|
```
|
|
|
|
## Install / run
|
|
|
|
One-time, on the host — persists the Apprentice license across container
|
|
recreation:
|
|
|
|
```bash
|
|
mkdir -p ~/.houdini-apprentice && touch ~/.houdini-apprentice/licenses
|
|
```
|
|
|
|
Create the box (pick the image matching your GPU):
|
|
|
|
```bash
|
|
# AMD / Intel
|
|
distrobox create \
|
|
--name houdini \
|
|
--image docker.slambin.fr/houdini-amd:latest \
|
|
--additional-flags "--hostname houdini-apprentice -v $HOME/.houdini-apprentice/licenses:/usr/lib/sesi/licenses"
|
|
|
|
# NVIDIA
|
|
distrobox create \
|
|
--name houdini \
|
|
--image docker.slambin.fr/houdini-nvidia:latest \
|
|
--nvidia \
|
|
--additional-flags "--hostname houdini-apprentice -v $HOME/.houdini-apprentice/licenses:/usr/lib/sesi/licenses"
|
|
```
|
|
|
|
Then:
|
|
|
|
```bash
|
|
distrobox enter houdini
|
|
houdini-run
|
|
```
|
|
|
|
First launch prompts to install the free Apprentice license — log in with
|
|
your SideFX account. Two things worth knowing:
|
|
|
|
- The `--hostname houdini-apprentice` flag must stay the same every time you
|
|
recreate the box — Apprentice licenses node-lock to hostname as well as
|
|
hardware.
|
|
- Apprentice licenses expire after 30 days; re-activate the same way (a
|
|
quick re-login in the same dialog).
|
|
|
|
## App menu entry (icon, no terminal)
|
|
|
|
Houdini doesn't ship its own `.desktop` file, and distrobox doesn't have a
|
|
built-in way to generate a proper GUI-app entry from a binary —
|
|
`distrobox-generate-entry` only makes the generic "Terminal entering X"
|
|
shortcut. So write one by hand and export it:
|
|
|
|
```bash
|
|
distrobox enter houdini
|
|
cat > /tmp/houdini.desktop << 'EOF'
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Houdini FX
|
|
Comment=Houdini Apprentice (distrobox)
|
|
Exec=houdini-run
|
|
Icon=/opt/hfs/houdini/cloudsubmit/houdini_icon.png
|
|
Terminal=false
|
|
Categories=Graphics;3DGraphics;Education;
|
|
StartupWMClass=houdinifx-bin
|
|
EOF
|
|
distrobox-export --app /tmp/houdini.desktop
|
|
```
|
|
|
|
This copies the icon to `~/.local/share/icons/` on the host and writes
|
|
`~/.local/share/applications/houdini-houdini.desktop`. Distrobox also
|
|
auto-creates a generic `houdini.desktop` ("Terminal entering Houdini") when
|
|
the box is created — set `NoDisplay=true` in that file, or delete it, if you
|
|
don't want both entries in the app menu.
|