Skip to content

boards/odroid-xu4: enable Docker and USB WiFi, fix clean-build failures - #107

Open
sideseal wants to merge 11 commits into
lu-zero:boards-odroid-xu4from
sideseal:boards-odroid-xu4
Open

sideseal wants to merge 11 commits into
lu-zero:boards-odroid-xu4from
sideseal:boards-odroid-xu4

Conversation

@sideseal

@sideseal sideseal commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Enable Docker (native on-device install) and the RTL8188FU USB WiFi dongle
  • Fix KERNEL_CONFIG_FRAGMENTS, which was a silent no-op for every board
  • Fix build failures that only show up from a truly fresh stage3:
    • LLVM pin for libclc / spirv-llvm-translator
    • backtrack depth for ROOT=/target
    • git's rust USE, portage-utils/libb2 openmp
    • genlop (perl-5.44 conflict)
    • obsolete mesa ARM/LLVM22 patch
    • gnutls pkcs11 for U-Boot's mkeficapsule
    • portage group in a fresh crossdev prefix
  • Cap docker/docker-cli at 29.5.2 (docker-cli 29.7.2+ hardcodes CGO_ENABLED=0 in its manpages step)

Verification

  • Full clean rebuild (store, sandboxes, and toolchain wiped) completes all six steps with no errors.
  • Booted on hardware: docker run hello-world works.

sideseal and others added 11 commits September 26, 2026 23:21
Add kernel config for Docker (netfilter/cgroups/overlayfs) and the
RTL8188FU USB WiFi dongle. Docker itself is installed natively
on-device, not cross-compiled here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Was a silent no-op for every board: board.rs read the wrong map, and
image.rs's olddefconfig call used unset shell variables. odroid-xu4
is just the first board to set it, so the first to notice.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
32-bit ARM Go needs cgo for PIE, but docker-cli's go-md2man and
containerd hardcode CGO_ENABLED=0. Patch it via a bashrc hook, and
allow containerd's shim network access for `go mod download`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cherry picked from commit 00af240

Hit the same "git: command not found" bug mainline already fixed
(00af240) -- this branch just forked before it landed. Cherry-picked
instead of reinventing it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
  !!! All ebuilds that could satisfy "llvm-core/clang:21" have been masked.
  (dependency required by "clang-crossdev-wrappers-21::crossdev" [ebuild])

The version matching our LLVM_SLOT pin has no KEYWORDS yet, so portage
falls back to an older slot the pin masks. Accept it explicitly rather
than lowering LLVM_SLOT project-wide.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
target-packages.txt failed to resolve against ROOT=/target's empty vdb,
for five separate reasons:

- libclc / spirv-llvm-translator have no LLVM_SLOT pin like llvm-core/*
- backtrack=20 isn't deep enough for this package graph
- git's rust USE wants a rust-std target we don't cross-build
- git needs perl, which pulls in portage-utils and libb2 -- their
  openmp option wants a second gcc version we don't have
- genlop needs perl-5.44, but stage3 ships perl-5.42

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mesa's ARM/LLVM22 patch is now merged upstream (mesa-26.2.1+), so our
backport just fails to apply -- drop it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…icapsule

U-Boot's mkeficapsule tool needs gnutls built with pkcs11 support.
Without it, linking mkeficapsule fails.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fowners: invalid group in .../etc/group: root:portage

On a fresh prefix, something can need the "portage" group before
acct-user/portage creates it. Seed it up front, same as root.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-buildmode=pie requires external (cgo) linking, but cgo is not enabled
(building docker-cli's manpages target)

docker-cli's ebuild runs `CGO_ENABLED=0 emake manpages` since 29.7.2 --
an inline assignment, so neither make.conf nor an env file can override
it like the other CGO gotchas. docker-29.8.1+ blocks older docker-cli,
so both packages are capped together until this is fixed upstream.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Folders in FIRMWARE_DIRS are copied already, but this firmware is a
single file at the top level, so it was left out. Copy that file on its own.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.

2 participants