Files
speccydev/.devcontainer/Dockerfile
T

91 lines
3.0 KiB
Docker
Raw Normal View History

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/*
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
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