Sign inSign up

polyphaselabs/polyphase-bare

By polyphaselabs

•Updated 6 months ago

This is a container with all the dependencies for Polyphase Engine pre installed.

Image
0

1.5K

polyphaselabs/polyphase-bare repository overview

⁠polyphaselabs/polyphase-bare

Universal build environment for the Polyphase Engine⁠ — pre-built and pre-configured with every toolchain Polyphase targets, in a single image.

This is the "bare" image: the environment is ready to go, but the engine itself is not compiled in. Mount your engine source tree (or run inside an actions/checkout'd workspace) and build whatever target you need.


⁠What's included

LayerPurpose
Ubuntu 22.04glibc 2.35, gcc 11 (libstdc++ GLIBCXX_3.4.30). Forward-compatible with Bookworm, RHEL 9, Ubuntu 24.04+, and most current desktop distros.
g++, make, pkg-configEngine + game compilation.
libx11-dev, libasound2-dev, libpulse-dev, libvorbis-devEngine link dependencies (windowing, ALSA, PulseAudio streaming, Ogg Vorbis decode).
dpkg-dev.deb packaging (dpkg-deb).
python3Asset stub generator and other build-time scripts.
Vulkan SDK 1.3.275.0Headers, loader, validation layers, glslc for SPIR-V shader compilation. VULKAN_SDK, PATH, LD_LIBRARY_PATH, and VK_LAYER_PATH are pre-set.
devkitPro pacman + devkitPPC + devkitARMCross-compilers for 3DS, GameCube, Wii. DEVKITPRO, DEVKITPPC, DEVKITARM env vars baked in.
3ds-dev, wii-dev, gamecube-tools-gitConsole SDK packages (libctru, libwiiuse, etc.).
libogc2 + libogc2-libdvmModern Extrems fork of libogc, used by Polyphase's GameCube/Wii Makefiles ($(DEVKITPRO)/libogc2/{gamecube,wii}_rules).
curl-impersonateCloudflare TLS-fingerprint bypass for pkg.devkitpro.org mirror fetches during image rebuilds.

⁠Why this image exists

Setting up a Polyphase build environment from scratch on a fresh machine takes 20–30 minutes of apt installs, Vulkan SDK downloads, dkp-pacman key setup, libogc2 repo configuration, and Cloudflare-403 retries. Hosted CI runners pay this cost on every cold run.

Baking the environment into a single image collapses that to a single docker pull. CI step time dropped by ~25 min per run, and "works on my machine but breaks in CI" is now structurally impossible — both build and verify use byte-identical libc, libstdc++, Vulkan, and devkitPro versions.


⁠Quick start

This expects you to have Polyphase Engine code cloned locally and to have your terminal/cli tool running inside the engine repo's root directory.

git clone https://github.com/Polyphase-Labs/Polyphase-Engine
cd Polyphase-Engine
⁠As a base image for a derived build environment
FROM polyphaselabs/polyphase-bare:latest

# Add your Polyphase Engine + build steps on top — every toolchain is already there.
COPY . /polyphase
WORKDIR /polyphase
RUN make -C Standalone -f Makefile_Linux_Editor -j$(nproc)
⁠As a GitHub Actions container
jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: polyphaselabs/polyphase-bare:latest
    steps:
      - uses: actions/checkout@v4
      - run: git config --global --add safe.directory '*'
      - run: git submodule update --init --recursive
      - run: make -C Standalone -f Makefile_Linux_Editor -j$(nproc)

The Polyphase Engine repo's .github/workflows/verify-build.yml and release.yml use exactly this pattern.


⁠Environment variables

These are set inside the image and inherit into every step:

VULKAN_SDK     /opt/vulkan/1.3.275.0/x86_64
DEVKITPRO      /opt/devkitpro
DEVKITPPC      /opt/devkitpro/devkitPPC
DEVKITARM      /opt/devkitpro/devkitARM
PATH           includes Vulkan SDK + devkitPro tool/bin paths
LD_LIBRARY_PATH includes Vulkan SDK lib

So glslc, powerpc-eabi-gcc, arm-none-eabi-gcc, and dkp-pacman are all on PATH out of the box.


⁠Tags

TagDescription
latestTracks the current main branch of Polyphase-Engine/Docker/Dockerfile.base⁠.

When upgrading a CI workflow, prefer pinning to a digest (@sha256:...) for reproducibility.


⁠Targets supported

This image has dependencies to build Polyphase Engine applications and games for:

  • Linux (x86_64) — native via gcc
  • Nintendo 3DS — devkitARM + libctru
  • Nintendo GameCube — devkitPPC + libogc2 + libogc2-libdvm
  • Nintendo Wii — devkitPPC + libogc2

The Polyphase headless editor (PolyphaseEditor.elf) drives all of these via:

PolyphaseEditor.elf -headless -project <path/to/.octp> -build <Platform> [embedded]

⁠Source & rebuilds

To rebuild locally:

git clone https://github.com/Polyphase-Labs/Polyphase-Engine
cd Polyphase-Engine
docker build -t polyphaselabs/polyphase-bare:latest -f Docker/Dockerfile.base .
docker push polyphaselabs/polyphase-bare:latest

⁠License

MIT (matches the Polyphase Engine repo). The bundled toolchains retain their respective upstream licenses:

Tag summary

Content type

Image

Digest

sha256:46c71be5d…

Size

1.2 GB

Last updated

6 months ago

docker pull polyphaselabs/polyphase-bare