Skip to content

aarch64: meson setup fails — singularity-gestures needs runtime/include, and its bootstrap is x86-64 only #246

Description

@perlowja

Summary

singularity-desktop cannot be configured on aarch64 as of d642160. meson setup fails before any compilation:

subprojects/singularity-gestures/meson.build:30:6: ERROR: Include dir runtime/include does not exist.

This is not architecture-specific in itself — the directory is absent on any
clean checkout — but the mechanism that populates it is x86-64 only, so arm64
has no way forward.

Why the directory is missing

singularity-gestures (51da49b) declares:

inc = include_directories('include', 'src', 'runtime/include')

but runtime/ contains exactly one tracked file:

$ git ls-files runtime/
runtime/.gitignore

$ cat runtime/.gitignore
*.so
*.task
*.onnx
include/

include/ is gitignored, so runtime/include is never in a checkout. It is
produced by scripts/bootstrap-runtime.sh, which downloads MediaPipe and ONNX
Runtime at build time.

Why arm64 cannot run that bootstrap

scripts/bootstrap-runtime.sh has no architecture detection at all — grep -c uname returns 0 — and hardcodes an x86-64 tarball:

"https://github.com/microsoft/onnxruntime/releases/download/v$onnx_version/onnxruntime-linux-x64-$onnx_version.tgz"

with onnx_dir="$download_dir/onnxruntime-linux-x64-$onnx_version". On aarch64
this fetches binaries for the wrong architecture. (I have not run it there —
the hardcoded -x64 URL and the absence of any arch branch are what I am
reporting, not a measured failure of the download itself.)

Upstream does publish onnxruntime-linux-aarch64-*.tgz for the same releases.

Why it blocks the whole tree

meson.build:13 pulls the subproject in unconditionally:

subproject('singularity-gestures')

There is no meson option to disable it (meson_options.txt has only
installer), so the failure is not confined to the gestures feature — the
entire desktop fails to configure.

Suggested fixes, roughly in order of effort

  1. Select the ONNX Runtime tarball by uname -m, mapping aarch64 to the
    onnxruntime-linux-aarch64-* release asset.
  2. Add a meson option (say gestures, defaulting to enabled) so a platform
    without the runtime can still build the desktop. This alone would unblock
    arm64 even without (1).
  3. Have meson.build fail with a clear message pointing at
    scripts/bootstrap-runtime.sh when runtime/include is absent — the
    current error names a missing directory without saying it is generated.

Environment

  • singularity-desktop d642160, singularity-gestures 51da49b
  • aarch64 (CIX Sky1), Debian trixie build container
  • meson/ninja from the distro; all other subprojects configure fine once this
    one is skipped

Workaround in use

Dropping the subproject('singularity-gestures') line from meson.build in
our build staging copy. That is a local build workaround, not a fix, and it
disables the gesture features entirely.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions