Skip to content

feat(selkies-base): consume streamspace-dev/selkies fork; enable arm64#37

Open
JoshuaAFerguson wants to merge 1 commit into
mainfrom
feat/selkies-base-fork-arm64
Open

feat(selkies-base): consume streamspace-dev/selkies fork; enable arm64#37
JoshuaAFerguson wants to merge 1 commit into
mainfrom
feat/selkies-base-fork-arm64

Conversation

@JoshuaAFerguson

Copy link
Copy Markdown
Member

Summary

  • Switches images/selkies-base to consume the GStreamer / gst-web / js-interposer artifacts from the streamspace-dev/selkies fork at tag v1.6.2-streamspace.1, which builds those artifacts for both linux/amd64 and linux/arm64. Upstream selkies-project/selkies only ships amd64 (see their meta issue #50).
  • Adds linux/arm64 to images/selkies-base/PLATFORMS so the build workflow produces multi-arch manifests.
  • Parameterizes the fork tag as SELKIES_FORK_TAG (default v1.6.2-streamspace.1) so future fork releases can be consumed without further code changes.
  • Bumps the image label version to 1.6.4.

The Python wheel (selkies_gstreamer-1.6.2-py3-none-any.whl) still pulls from upstream — the fork only changed the build pipeline, not the Python source.

Why a fork?

Upstream selkies-project/selkies uses QEMU-emulated arm64 builds on ubuntu-latest runners. A full GStreamer compile under QEMU emulation routinely exceeds the 6-hour GitHub Actions job limit (per upstream issue #50), so they don't ship arm64. The fork uses GitHub's native ubuntu-24.04-arm runner image (free for public repos since Jan 2025), which builds arm64 in ~30 minutes natively.

Test plan

  • CI build for images/selkies-base succeeds for both linux/amd64 and linux/arm64
  • Image runs locally on an arm64 host (Orange Pi 5, M-series Mac via Docker Desktop) — docker run --rm --shm-size=2g -p 8080:8080 ghcr.io/streamspace-dev/selkies-base:1.6.4 opens a desktop at http://localhost:8080
  • Image runs locally on amd64 — same smoke test, no regression
  • At least one downstream per-app image (e.g. chrome-selkies) builds against the new base on arm64

Selkies fork release assets

The new release at https://github.com/streamspace-dev/selkies/releases/tag/v1.6.2-streamspace.1 publishes:

  • gstreamer-selkies_gpl_v1.6.2-streamspace.1_ubuntu{22,24}.04_{amd64,arm64}.tar.gz (4 artifacts)
  • selkies-gstreamer-web_v1.6.2-streamspace.1.tar.gz
  • selkies-js-interposer_v1.6.2-streamspace.1_ubuntu{20,22,24}.04_{amd64,arm64}.{deb,tar.gz} (12 artifacts)

This image consumes the ubuntu24.04 GStreamer + js-interposer entries for both arches and the gst-web tarball.

Switch the GStreamer / gst-web / js-interposer artifacts to the
streamspace-dev/selkies fork release at v1.6.2-streamspace.1, which
adds linux/arm64 to the build matrix using GitHub's native arm64
runners. Upstream selkies-project/selkies only ships amd64 (per their
META issue #50, blocked on the QEMU-vs-6h-Actions-limit problem the
fork side-steps).

The Python wheel still pulls from upstream — the fork didn't change
any Python source, only the build pipeline.

Adds linux/arm64 to images/selkies-base/PLATFORMS so the multi-arch
build workflow picks it up. Bumps the image LABEL to 1.6.4.

The fork tag is parameterized as SELKIES_FORK_TAG so the image can
be rebuilt against future fork releases without further code change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant