Files
firmware/docker/Dockerfile.build
T
Oleksandr Shyshatskyi ff7204f7d5 Run everything in Docker; test against the printer's real busybox
The stock kernel-*.tar.xz turned out to contain rootfs.squashfs -- the
printer's genuine root filesystem. Unpacking it answered several questions
that were previously guesswork:

- init is busybox init -> /etc/init.d/rcS -> S99factory_test_shell ->
  /usr/prog/app_startup.sh. There is no systemd, and rcS runs from the
  read-only squashfs before /usr/prog/etc is bind-mounted over /etc, so a
  new S-script cannot be injected into the stock boot sequence.
- /usr/sbin/dropbear and an ENABLED /etc/init.d/S50dropbear already ship.
  Port 22 is open on a stock printer; only the root password is missing.
  The dropbear cross-build is therefore deleted -- it was never needed.

New: test/test-ash-conformance.sh parses every on-printer script with the
printer's own busybox 1.31.1 ash under qemu-mipsel. A parse error in the
firmwareExe wrapper would mean a blank screen, and neither bash -n nor dash
-n proves busybox accepts it.

Makefile now runs every target inside the pinned build image, with the docker
socket mounted so test targets can start sibling containers. The repo is
mounted at its real host path rather than /src, because sibling mounts are
resolved by the host daemon.

78 checks pass.
2026-08-22 22:02:11 +03:00

19 lines
822 B
INI

# The only thing that runs on your machine is Docker itself.
#
# Every make target executes inside this image: the build scripts, the tests,
# and the install simulations. The docker CLI is included so the simulation
# targets can start sibling containers through the mounted socket, and
# qemu-user-static so the printer's real MIPS userland can be executed.
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN echo 'Acquire::Retries "3";' > /etc/apt/apt.conf.d/80-retries \
&& apt-get update && apt-get install -y --no-install-recommends \
bash coreutils tar xz-utils gzip openssl unzip curl ca-certificates \
python3 binutils file findutils grep sed gawk make git diffutils procps \
squashfs-tools qemu-user-static docker.io \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
CMD ["bash"]