Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c38171a4e4 | |||
| a9eb75ca3e | |||
| 6431ce9832 | |||
| cc6b9f03c5 | |||
| af01775e41 | |||
| 6b66f9ba30 | |||
| 010477fa4a | |||
| 04e355a2ee |
+13
-48
@@ -1,5 +1,8 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
# 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 njmcphail/speccydev:tagname .
|
||||||
|
|
||||||
FROM ubuntu:24.04 AS build
|
FROM ubuntu:24.04 AS build
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
@@ -13,7 +16,7 @@ RUN apt-get update \
|
|||||||
unzip \
|
unzip \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ADD https://github.com/z00m128/sjasmplus.git#v1.21.1 /sjasmplus
|
ADD https://github.com/z00m128/sjasmplus.git#v1.23.0 /sjasmplus
|
||||||
RUN cd /sjasmplus && make -j8 && make install
|
RUN cd /sjasmplus && make -j8 && make install
|
||||||
ADD https://boarstone.mcphail.uk/mcphail/spectrum_remload.git /ttttt
|
ADD https://boarstone.mcphail.uk/mcphail/spectrum_remload.git /ttttt
|
||||||
RUN cd /ttttt && make ttttt
|
RUN cd /ttttt && make ttttt
|
||||||
@@ -36,60 +39,16 @@ RUN cd /hdfmonkey/ \
|
|||||||
&& ./configure \
|
&& ./configure \
|
||||||
&& make -j16 \
|
&& make -j16 \
|
||||||
&& make install
|
&& make install
|
||||||
ADD https://github.com/pleumann/pasta80.git#v0.96 /opt/pasta80
|
ADD https://github.com/pleumann/pasta80.git#v0.98 /opt/pasta80
|
||||||
RUN cd /opt/pasta80 \
|
RUN cd /opt/pasta80 \
|
||||||
&& fpc pasta
|
&& fpc pasta
|
||||||
ADD --unpack https://www.seasip.info/ZX/taptools-1.1.3.tar.gz taptools/
|
ADD --unpack https://www.seasip.info/ZX/taptools-1.1.3.tar.gz taptools/
|
||||||
RUN cd taptools/taptools* \
|
RUN cd taptools/taptools* \
|
||||||
|
&& cp /usr/share/automake-1.16/config.guess . \
|
||||||
&& ./configure \
|
&& ./configure \
|
||||||
&& make -j8 \
|
&& make -j8 \
|
||||||
&& make install
|
&& make install
|
||||||
|
|
||||||
FROM ubuntu:24.04 AS z88dk
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
bison \
|
|
||||||
build-essential \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpanminus \
|
|
||||||
curl \
|
|
||||||
dos2unix \
|
|
||||||
flex \
|
|
||||||
gdb \
|
|
||||||
git \
|
|
||||||
libboost-all-dev \
|
|
||||||
libcapture-tiny-perl \
|
|
||||||
libclone-perl \
|
|
||||||
libdata-hexdump-perl \
|
|
||||||
libfile-slurp-perl \
|
|
||||||
libgmp3-dev \
|
|
||||||
liblocal-lib-perl \
|
|
||||||
libmodern-perl-perl \
|
|
||||||
libpath-tiny-perl \
|
|
||||||
libregexp-common-perl \
|
|
||||||
libtext-table-perl \
|
|
||||||
libxml2-dev \
|
|
||||||
libyaml-perl \
|
|
||||||
m4 \
|
|
||||||
make \
|
|
||||||
perl \
|
|
||||||
pkg-config \
|
|
||||||
ragel \
|
|
||||||
re2c \
|
|
||||||
texi2html \
|
|
||||||
texinfo \
|
|
||||||
zlib1g-dev \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
ENV Z88DK_PATH="/opt/z88dk"
|
|
||||||
RUN cpanm -l $HOME/perl5 --no-wget local::lib Template::Plugin::YAML \
|
|
||||||
&& git clone --depth 1 --branch v2.4 --recursive https://github.com/z88dk/z88dk.git ${Z88DK_PATH} \
|
|
||||||
&& cd ${Z88DK_PATH} \
|
|
||||||
&& eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" \
|
|
||||||
&& chmod 777 build.sh \
|
|
||||||
&& BUILD_SDCC=1 BUILD_SDCC_HTTP=1 MAKE_CONCURRENCY=-j8 ./build.sh \
|
|
||||||
&& make install-clean bins-clean
|
|
||||||
|
|
||||||
FROM ubuntu:24.04
|
FROM ubuntu:24.04
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
@@ -119,7 +78,13 @@ COPY --from=build /inpaws/inpaws /bin/inpaws
|
|||||||
COPY --from=build /usr/local/bin/ /usr/local/bin/
|
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/
|
COPY --from=build /usr/local/lib/python3.12/dist-packages/skoolkit/ /usr/local/lib/python3.12/dist-packages/skoolkit/
|
||||||
COPY --from=build /opt/pasta80 /opt/pasta80
|
COPY --from=build /opt/pasta80 /opt/pasta80
|
||||||
COPY --from=z88dk /opt/z88dk/ /opt/z88dk/
|
|
||||||
|
# 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=njmcphail/z88dk:v2.4 /opt/z88dk/ /opt/z88dk/
|
||||||
ENV PATH="${PATH}:/opt/z88dk/bin:/opt/zxbasic:/opt/zxbasic/tools:/opt/pasta80"
|
ENV PATH="${PATH}:/opt/z88dk/bin:/opt/zxbasic:/opt/zxbasic/tools:/opt/pasta80"
|
||||||
ENV ZCCCFG="/opt/z88dk/lib/config"
|
ENV ZCCCFG="/opt/z88dk/lib/config"
|
||||||
USER ubuntu
|
USER ubuntu
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "ZX Spectrum dev tools",
|
"name": "ZX Spectrum dev tools",
|
||||||
//"build": { "dockerfile": "Dockerfile" },
|
//"build": { "dockerfile": "Dockerfile" },
|
||||||
// The Dockerfile takes an age to build due to z88dk, so pull from prebuilt:
|
// The Dockerfile takes an age to build due to z88dk, so pull from prebuilt:
|
||||||
"image": "boarstone.mcphail.uk/mcphail/speccydev:v6.0",
|
"image": "njmcphail/speccydev:v8.0",
|
||||||
"remoteUser": "ubuntu",
|
"remoteUser": "ubuntu",
|
||||||
"runArgs": [
|
"runArgs": [
|
||||||
"--network=host"
|
"--network=host"
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
# Similar to the speccydev container, I'm building this with:
|
||||||
|
# docker buildx build --platform linux/arm64/v8,linux/amd64 -t njmcphail/z88dk:tagname .
|
||||||
|
|
||||||
|
FROM ubuntu:24.04 AS build
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
bison \
|
||||||
|
build-essential \
|
||||||
|
ca-certificates \
|
||||||
|
ccache \
|
||||||
|
cpanminus \
|
||||||
|
curl \
|
||||||
|
dos2unix \
|
||||||
|
flex \
|
||||||
|
gdb \
|
||||||
|
git \
|
||||||
|
libboost-all-dev \
|
||||||
|
libcapture-tiny-perl \
|
||||||
|
libclone-perl \
|
||||||
|
libdata-hexdump-perl \
|
||||||
|
libfile-slurp-perl \
|
||||||
|
libgmp3-dev \
|
||||||
|
liblocal-lib-perl \
|
||||||
|
libmodern-perl-perl \
|
||||||
|
libpath-tiny-perl \
|
||||||
|
libregexp-common-perl \
|
||||||
|
libtext-table-perl \
|
||||||
|
libxml2-dev \
|
||||||
|
libyaml-perl \
|
||||||
|
m4 \
|
||||||
|
make \
|
||||||
|
perl \
|
||||||
|
pkg-config \
|
||||||
|
ragel \
|
||||||
|
re2c \
|
||||||
|
texi2html \
|
||||||
|
texinfo \
|
||||||
|
zlib1g-dev \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
ENV Z88DK_PATH="/opt/z88dk"
|
||||||
|
RUN cpanm -l $HOME/perl5 --no-wget local::lib Template::Plugin::YAML \
|
||||||
|
&& git clone --depth 1 --branch v2.4 --recursive https://github.com/z88dk/z88dk.git ${Z88DK_PATH} \
|
||||||
|
&& cd ${Z88DK_PATH} \
|
||||||
|
&& eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" \
|
||||||
|
&& chmod 777 build.sh \
|
||||||
|
&& BUILD_SDCC=1 BUILD_SDCC_HTTP=1 ./build.sh \
|
||||||
|
&& make install-clean bins-clean
|
||||||
|
|
||||||
|
FROM ubuntu:24.04
|
||||||
|
COPY --from=build /opt/z88dk/ /opt/z88dk/
|
||||||
|
ENV PATH="$(PATH):/opt/z88dk/bin"
|
||||||
|
ENV ZCCCFG="/opt/z88dk/lib/config"
|
||||||
|
USER ubuntu
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
# Development tools for the ZX Spectrum v6.0
|
# Development tools for the ZX Spectrum v8.1
|
||||||
|
|
||||||
The Dockerfile is the basis of the devcontainer and can be changed to add or remove tools. It will take a long time to build locally, so by default the devcontainer will pull a prebuilt version. Edit `.devcontainer/devcontainer.json` if you would rather build your own.
|
The Dockerfile is the basis of the devcontainer and can be changed to add or remove tools. It will take a long time to build locally, so by default the devcontainer will pull a prebuilt version. Edit `.devcontainer/devcontainer.json` if you would rather build your own.
|
||||||
|
|
||||||
The devcontainer contains:
|
The devcontainer contains:
|
||||||
- pasmo version 0.5.3 (assembler)
|
- pasmo version 0.5.3 (assembler)
|
||||||
- sjasmplus version 1.21.1 (assembler)
|
- sjasmplus version 1.23.0 (assembler)
|
||||||
- z80asm version 1.8 (assembler)
|
- z80asm version 1.8 (assembler)
|
||||||
- z80dasm version 1.1.6 (disassembler)
|
- z80dasm version 1.1.6 (disassembler)
|
||||||
- zmakebas version 1.2b (creates BASIC programs)
|
- zmakebas version 1.2b (creates BASIC programs)
|
||||||
@@ -36,7 +36,7 @@ The devcontainer contains:
|
|||||||
- various tools including nextcreator.py to build .nex files
|
- various tools including nextcreator.py to build .nex files
|
||||||
- ttttt (converts binaries into .tap blocks)
|
- ttttt (converts binaries into .tap blocks)
|
||||||
- inpaws version 1.0.2 (interactive fiction compiler/extractor for Gilsoft's PAW)
|
- inpaws version 1.0.2 (interactive fiction compiler/extractor for Gilsoft's PAW)
|
||||||
- skoolkit version 9.6 (tools for creating browseable disassemblies of Spectrum games)
|
- skoolkit version 10.0 (tools for creating browseable disassemblies of Spectrum games)
|
||||||
- sna2ctl.py
|
- sna2ctl.py
|
||||||
- sna2skool.py
|
- sna2skool.py
|
||||||
- skool2html.py
|
- skool2html.py
|
||||||
@@ -53,7 +53,7 @@ The devcontainer contains:
|
|||||||
- bin2sna.py
|
- bin2sna.py
|
||||||
- snapmod.py
|
- snapmod.py
|
||||||
- sna2img.py
|
- sna2img.py
|
||||||
- pasta80 version 0.96 (PASCAL compiler)
|
- pasta80 version 0.98 (PASCAL compiler)
|
||||||
- hdfmonkey version 0.4 (for manipulating sdcard files for the Spectrum Next)
|
- hdfmonkey version 0.4 (for manipulating sdcard files for the Spectrum Next)
|
||||||
- git (version control)
|
- git (version control)
|
||||||
- make (build control)
|
- make (build control)
|
||||||
@@ -75,13 +75,13 @@ Several useful VSCode extentsions will be installed, including a Z80 assembly la
|
|||||||
|
|
||||||
Thanks to the many authors of these wonderful tools and extensions; to think what we could have made with these in 1985!
|
Thanks to the many authors of these wonderful tools and extensions; to think what we could have made with these in 1985!
|
||||||
|
|
||||||
## Breaking changes from v5.x
|
## Breaking changes from v7.x
|
||||||
|
|
||||||
Some of the binaries, such as `sjasmplus`, are now found in a different $PATH, which may break some existing build scripts.
|
No breaking changes, but this version brings full support for Apple silicon which was not present in previous releases.
|
||||||
|
|
||||||
## New additions from v5.2
|
## New additions from v8.0
|
||||||
|
|
||||||
Addition of TAPTOOLS.
|
The prebuilt container is now hosted on Docker Hub, as the Gitea hosting platform was having reliability issues. The contents of the 8.1 container are unchanged from 8.0 so there is no need to update if you have downloaded this already.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@@ -106,6 +106,14 @@ Open the bottom bar in vscode to expose the terminal or select "Terminal -> New
|
|||||||
|
|
||||||
When you are ready to start your own project, run `make start_new_project` to wipe out the example code and start afresh.
|
When you are ready to start your own project, run `make start_new_project` to wipe out the example code and start afresh.
|
||||||
|
|
||||||
|
## Add the devcontainer to your existing project
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl https://raw.githubusercontent.com/mcphail/speccydev/refs/heads/main/.devcontainer/devcontainer.json -o .devcontainer.json
|
||||||
|
```
|
||||||
|
|
||||||
|
You may wish to also add the `.vscode/` directory as well, to configure the debugger.
|
||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
This `main` branch of this repository will always point to the latest numbered release of the devcontainer image. This image will contain specific, numbered releases of the various tools as documented above. If the devcontainer is updated with non-breaking changes, the minor version number will be incremented. This gives reassurance that, say, a v1.7 devcontainer will contain tools which can compile programs made with a v1.2 devcontainer without issue.
|
This `main` branch of this repository will always point to the latest numbered release of the devcontainer image. This image will contain specific, numbered releases of the various tools as documented above. If the devcontainer is updated with non-breaking changes, the minor version number will be incremented. This gives reassurance that, say, a v1.7 devcontainer will contain tools which can compile programs made with a v1.2 devcontainer without issue.
|
||||||
|
|||||||
Reference in New Issue
Block a user