From e7aa6a96ae2d94c51c067791a2d8b93cec915f72 Mon Sep 17 00:00:00 2001 From: David Voswinkel Date: Tue, 16 May 2023 17:03:38 +0000 Subject: [PATCH] Make docker build work --- .dockerignore | 1 + Dockerfile | 56 +++++++++++----------------------- Makefile | 6 ++++ Makefile.docker | 9 ++++++ README.md | 19 ++---------- src/graphics/graphics.c | 3 +- src/savefile/scene_serialize.c | 4 +-- 7 files changed, 38 insertions(+), 60 deletions(-) create mode 100644 .dockerignore create mode 100644 Makefile.docker diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +* diff --git a/Dockerfile b/Dockerfile index 0dd702f..2b47f57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,26 @@ -from node:slim +from ubuntu:22.04 WORKDIR /usr/src/app -ENV N64_LIBGCCDIR /opt/crashsdk/lib/gcc/mips64-elf/11.2.0 +ENV N64_LIBGCCDIR /opt/crashsdk/lib/gcc/mips64-elf/12.2.0 ENV PATH /opt/crashsdk/bin:$PATH ENV ROOT /etc/n64 +ENV BLENDER_3_0 /usr/bin/blender -RUN apt update -y -RUN apt install -y ca-certificates - -RUN echo "deb [trusted=yes] https://lambertjamesd.github.io/apt/ ./" | tee /etc/apt/sources.list.d/lambertjamesd.list -RUN echo "deb [trusted=yes] https://crashoveride95.github.io/apt/ ./" | tee /etc/apt/sources.list.d/n64sdk.list -RUN apt update -y - -RUN dpkg --add-architecture i386 - -RUN apt install -y binutils-mips-n64 \ +RUN apt update -y && \ + DEBIAN_FRONTEND=noninteractive apt install -y \ + ca-certificates +RUN echo "deb [trusted=yes] https://lambertjamesd.github.io/apt/ ./" | tee /etc/apt/sources.list.d/lambertjamesd.list && \ + echo "deb [trusted=yes] https://crashoveride95.github.io/apt/ ./" | tee /etc/apt/sources.list.d/n64sdk.list +RUN apt update -y && \ + dpkg --add-architecture i386 && \ + DEBIAN_FRONTEND=noninteractive apt install -y \ + binutils-mips-n64 \ gcc-mips-n64 \ n64sdk \ libnustd \ makemask \ root-compatibility-environment \ - build-essential \ libmpc-dev \ sfz2n64 \ vtf2png \ @@ -42,32 +41,11 @@ RUN apt install -y binutils-mips-n64 \ wget \ unzip \ sox \ + nodejs \ + lua5.4 \ + liblua5.4-dev \ + liblua5.4-0 \ + blender \ mpg123 -COPY skelatool64/src skelatool64/src -COPY skelatool64/main.cpp skelatool64/main.cpp -COPY skelatool64/makefile skelatool64/makefile - -RUN git clone https://github.com/jbeder/yaml-cpp.git skelatool64/yaml-cpp - -RUN cmake -S skelatool64/yaml-cpp -B skelatool64/yaml-cpp -RUN make -C skelatool64/yaml-cpp - -RUN wget http://cimg.eu/files/CImg_latest.zip -RUN unzip CImg_latest.zip -RUN mv CImg-3.1.3_pre051622 skelatool64/cimg - -RUN make -C skelatool64 - RUN pip install vpk - -COPY Makefile Makefile -COPY tools/export_fbx.py tools/export_fbx.py -COPY tools/generate_level_list.js tools/generate_level_list.js -COPY tools/generate_sound_ids.js tools/generate_sound_ids.js -COPY asm asm -COPY assets assets -COPY src src -COPY portal.ld portal.ld - -CMD make \ No newline at end of file diff --git a/Makefile b/Makefile index 9a9c417..5774b91 100644 --- a/Makefile +++ b/Makefile @@ -429,4 +429,10 @@ clean: fix: wine tools/romfix64.exe build/portal.z64 +docker-build: + docker build . -t portal64 + +docker-run: + docker run -v $PWD:/usr/src/app -it portal64 bash + .SECONDARY: diff --git a/Makefile.docker b/Makefile.docker new file mode 100644 index 0000000..3a02840 --- /dev/null +++ b/Makefile.docker @@ -0,0 +1,9 @@ +clean: + sudo rm -rf build + +docker-build: + docker buildx use desktop-linux + docker buildx build --platform linux/amd64 -t portal64 . + +docker-make: + docker run -v $$PWD:/usr/src/app -it portal64 make diff --git a/README.md b/README.md index 751f175..88a3945 100644 --- a/README.md +++ b/README.md @@ -108,33 +108,18 @@ make fix Build the Docker image. ```sh -docker build . -t portal64 +make -f Makefile.docker docker-build ```
Then build. ```sh -# Set the environment variable -BLENDER_3_0=/blender/blender - -# Build using docker -docker run \ - -v /home/james/Blender/blender-2.93.1-linux-x64:/blender \ - -e BLENDER_3_0 -v /home/james/portal/portal64/vpk:/usr/src/app/vpk \ - -t -v /home/james/portal/portal64/docker-output:/usr/src/app/build portal64 +make -f Makefile.docker docker-make ```
-Where `/home/james/Blender/blender-2.93.1-linux-x64` is the folder where Blender is located. - -`/home/james/portal/portal64/vpk` is the folder where the portal `*.vpk` files are located. - -`/home/james/portal/portal64/docker-output` is where you want the output of the build to locate `portal.z64` will be put into this folder. - -
- ## Current New Feature TODO List - [ ] Add auto save checkpoints - [ ] rotate auto uv diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index 8b1d67a..a768981 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -124,11 +124,10 @@ void graphicsCreateTask(struct GraphicsTask* targetTask, GraphicsCallback callba if (gfxValidate(&scTask->list, renderStateMaxDLCount(renderState), &validationResult) != GFXValidatorErrorNone) { gfxGenerateReadableMessage(&validationResult, graphicsOutputMessageToDebugger); - gdbBreak(); } #endif // PORTAL64_WITH_DEBUGGER #endif // PORTAL64_WITH_GFX_VALIDATOR osSendMesg(schedulerCommandQueue, (OSMesg)scTask, OS_MESG_BLOCK); -} \ No newline at end of file +} diff --git a/src/savefile/scene_serialize.c b/src/savefile/scene_serialize.c index 25d0f5c..1a69695 100644 --- a/src/savefile/scene_serialize.c +++ b/src/savefile/scene_serialize.c @@ -428,7 +428,7 @@ void sceneAnimatorDeserialize(struct Serializer* serializer, struct Scene* scene #ifdef PORTAL64_WITH_DEBUGGER #define READ_ALIGN_CHECK {serializeRead(serializer, ¤tAlign, 1); if (currentAlign != expectedAlign) return; ++expectedAlign;} #else -#define READ_ALIGN_CHECK {serializeRead(serializer, ¤tAlign, 1); if (currentAlign != expectedAlign) gdbBreak(); ++expectedAlign;} +#define READ_ALIGN_CHECK {serializeRead(serializer, ¤tAlign, 1); if (currentAlign != expectedAlign) return; ++expectedAlign;} #endif void sceneSerialize(struct Serializer* serializer, SerializeAction action, struct Scene* scene) { @@ -486,4 +486,4 @@ void sceneDeserialize(struct Serializer* serializer, struct Scene* scene) { for (int i = 0; i < scene->doorCount; ++i) { doorCheckForOpenState(&scene->doors[i]); } -} \ No newline at end of file +}