2025-04-19 16:52:11 +01:00
|
|
|
# syntax=docker/dockerfile:1
|
|
|
|
|
|
2026-04-28 22:29:06 +01:00
|
|
|
# My current workflow is to build this on an M1 MacBook for both amd64 and arm64 using:
|
|
|
|
|
# docker buildx build --platform linux/arm64/v8,linux/amd64 -t boarstone.mcphail.uk/mcphail/speccydev:tagname .
|
|
|
|
|
|
2025-04-19 16:52:11 +01:00
|
|
|
FROM ubuntu:24.04 AS build
|
|
|
|
|
RUN apt-get update \
|
|
|
|
|
&& apt-get install -y --no-install-recommends \
|
2025-10-18 08:33:15 +00:00
|
|
|
autoconf \
|
|
|
|
|
automake \
|
2025-04-19 16:52:11 +01:00
|
|
|
build-essential \
|
2025-10-18 08:56:55 +00:00
|
|
|
fpc \
|
2026-02-23 12:31:47 +00:00
|
|
|
libdsk4-dev \
|
2025-04-19 16:52:11 +01:00
|
|
|
make \
|
2025-07-09 21:56:44 +01:00
|
|
|
python3-pip \
|
2025-07-06 14:57:31 +01:00
|
|
|
unzip \
|
2025-04-19 16:52:11 +01:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-04-24 18:20:58 +00:00
|
|
|
ADD https://github.com/z00m128/sjasmplus.git#v1.23.0 /sjasmplus
|
2025-07-06 14:57:31 +01:00
|
|
|
RUN cd /sjasmplus && make -j8 && make install
|
2025-04-19 16:52:11 +01:00
|
|
|
ADD https://boarstone.mcphail.uk/mcphail/spectrum_remload.git /ttttt
|
|
|
|
|
RUN cd /ttttt && make ttttt
|
|
|
|
|
ADD https://github.com/einar-saukas/ZX0.git /zx0
|
|
|
|
|
RUN cd /zx0/src/ \
|
|
|
|
|
&& gcc -O2 -o zx0 zx0.c optimize.c compress.c memory.c \
|
|
|
|
|
&& gcc -O2 -o dzx0 dzx0.c
|
2026-02-09 21:36:51 +00:00
|
|
|
ADD https://www.boriel.com/files/zxb/zxbasic-1.18.7-linux64.tar.gz .
|
2025-04-28 08:59:46 +00:00
|
|
|
RUN tar xf zxbasic*
|
2025-07-06 14:57:31 +01:00
|
|
|
ADD https://github.com/Mastodon-/inpaws.git /inpaws
|
|
|
|
|
RUN cd /inpaws/ \
|
|
|
|
|
&& make -j8
|
2025-07-09 21:56:44 +01:00
|
|
|
RUN python3 -m pip install --break-system-packages skoolkit
|
2025-10-18 08:33:15 +00:00
|
|
|
ADD https://github.com/gasman/hdfmonkey.git /hdfmonkey
|
|
|
|
|
RUN cd /hdfmonkey/ \
|
|
|
|
|
&& autoheader \
|
|
|
|
|
&& aclocal \
|
|
|
|
|
&& autoconf \
|
|
|
|
|
&& automake -a \
|
|
|
|
|
&& ./configure \
|
|
|
|
|
&& make -j16 \
|
|
|
|
|
&& make install
|
2026-04-24 18:20:58 +00:00
|
|
|
ADD https://github.com/pleumann/pasta80.git#v0.98 /opt/pasta80
|
2025-10-18 08:56:55 +00:00
|
|
|
RUN cd /opt/pasta80 \
|
|
|
|
|
&& fpc pasta
|
2026-02-23 12:31:47 +00:00
|
|
|
ADD --unpack https://www.seasip.info/ZX/taptools-1.1.3.tar.gz taptools/
|
|
|
|
|
RUN cd taptools/taptools* \
|
2026-04-26 22:50:57 +01:00
|
|
|
&& cp /usr/share/automake-1.16/config.guess . \
|
2026-02-23 12:31:47 +00:00
|
|
|
&& ./configure \
|
|
|
|
|
&& make -j8 \
|
|
|
|
|
&& make install
|
2025-04-19 16:52:11 +01:00
|
|
|
|
|
|
|
|
FROM ubuntu:24.04
|
|
|
|
|
RUN apt-get update \
|
|
|
|
|
&& apt-get install -y --no-install-recommends \
|
2025-04-29 09:11:57 +00:00
|
|
|
ca-certificates \
|
|
|
|
|
fuse-emulator-utils \
|
2025-04-19 17:58:31 +01:00
|
|
|
git \
|
2026-02-23 12:31:47 +00:00
|
|
|
libdsk4 \
|
|
|
|
|
libdsk-utils \
|
2025-09-29 14:58:28 +01:00
|
|
|
m4 \
|
2025-04-19 16:52:11 +01:00
|
|
|
make \
|
2025-04-29 09:11:57 +00:00
|
|
|
openssh-client \
|
2025-04-19 16:52:11 +01:00
|
|
|
pasmo \
|
2025-04-28 08:59:46 +00:00
|
|
|
python3 \
|
2025-04-19 21:44:01 +01:00
|
|
|
z80asm \
|
|
|
|
|
z80dasm \
|
2025-04-19 17:07:49 +01:00
|
|
|
zmakebas \
|
2025-04-19 16:52:11 +01:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
COPY --from=build /ttttt/ttttt /bin/ttttt
|
|
|
|
|
COPY --from=build /zx0/src/zx0 /bin/zx0
|
|
|
|
|
COPY --from=build /zx0/src/dzx0 /bin/dzx0
|
2025-04-28 08:59:46 +00:00
|
|
|
COPY --from=build /zxbasic/zxbasm.py /opt/zxbasic/zxbasm
|
|
|
|
|
COPY --from=build /zxbasic/zxbc.py /opt/zxbasic/zxbc
|
|
|
|
|
COPY --from=build /zxbasic/zxbpp.py /opt/zxbasic/zxbpp
|
|
|
|
|
COPY --from=build /zxbasic/src /opt/zxbasic/src
|
2025-08-01 21:11:21 +00:00
|
|
|
COPY --from=build /zxbasic/tools /opt/zxbasic/tools
|
2025-07-06 14:57:31 +01:00
|
|
|
COPY --from=build /inpaws/inpaws /bin/inpaws
|
2025-07-09 21:56:44 +01:00
|
|
|
COPY --from=build /usr/local/bin/ /usr/local/bin/
|
|
|
|
|
COPY --from=build /usr/local/lib/python3.12/dist-packages/skoolkit/ /usr/local/lib/python3.12/dist-packages/skoolkit/
|
2025-10-18 08:56:55 +00:00
|
|
|
COPY --from=build /opt/pasta80 /opt/pasta80
|
2026-04-28 22:29:06 +01:00
|
|
|
|
|
|
|
|
# z88dk takes a long time to cross compile so I'm keeping this in a separate container
|
|
|
|
|
# so it doesn't require building every time the cache expires. The Dockerfile for z88dk
|
|
|
|
|
# is in a subdirectory of this one. If you're building the container yourself you may
|
|
|
|
|
# want to alter the next line to your own tagged build of z88dk but you're welcome to
|
|
|
|
|
# use mine.
|
|
|
|
|
COPY --from=boarstone.mcphail.uk/mcphail/z88dk:v2.4 /opt/z88dk/ /opt/z88dk/
|
2025-10-18 08:56:55 +00:00
|
|
|
ENV PATH="${PATH}:/opt/z88dk/bin:/opt/zxbasic:/opt/zxbasic/tools:/opt/pasta80"
|
2025-04-29 09:11:57 +00:00
|
|
|
ENV ZCCCFG="/opt/z88dk/lib/config"
|
2025-09-22 16:50:52 +01:00
|
|
|
USER ubuntu
|