summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2025-08-12 20:02:58 -0400
committerGitHub <noreply@github.com>2025-08-12 17:02:58 -0700
commita0c992ea35cc9d18a0026a6c2c0b499a4bb61690 (patch)
tree524ba5dad409391c5e832844d2e25bac7b8789f2
parent1ca6ca804df58d56352bb5007ab048cb0dad6757 (diff)
Fix docker builds (#1814)
* Fix dockerfile. It was broken because the practicerom package changed stuff and apt didn't like whatever changed. This is the commit that seems to have broken how the old practicerom package worked: https://github.com/glankk/n64/commit/e7bec93b0b11b37a63abcf5ac28728f2fcd4045b#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5 * Update docker docs. Some references were broken in the markdown files, and there's no longer a need to run the git `safe.directory` command since the docker file was doing it already * Include `gcc-mips-linux-gnu` in the dockerfile * break up dockerfile commands a bit more * Update practicerom instructions * Update practice rom again
-rw-r--r--Dockerfile25
-rw-r--r--README.md9
-rw-r--r--docs/BUILDING_DOCKER.md10
3 files changed, 21 insertions, 23 deletions
diff --git a/Dockerfile b/Dockerfile
index a75375f88..df561dd35 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,12 +3,18 @@ FROM ubuntu:24.04 AS build
ENV TZ=UTC
ENV LANG=C.UTF-8
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+# Add source for practicerom-dev install
+RUN apt-get update && apt-get install -y curl && \
+ curl -o /usr/share/keyrings/practicerom-archive-keyring.gpg https://practicerom.com/public/packages/debian/practicerom-archive-keyring.gpg && \
+ echo 'deb [arch=all,amd64 signed-by=/usr/share/keyrings/practicerom-archive-keyring.gpg] http://practicerom.com/public/packages/debian unstable main' > /etc/apt/sources.list.d/practicerom.list
+
# Install Required Dependencies
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
- apt-get update && apt-get install -y \
- curl \
+RUN apt-get update && apt-get install -y \
build-essential \
binutils-mips-linux-gnu \
+ gcc-mips-linux-gnu \
pkg-config \
python3 \
python3-pip \
@@ -20,14 +26,11 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone &
vim \
clang-tidy-14 \
clang-format-14 \
- libpng-dev && \
- # Add source for practicerom-dev install
- curl https://practicerom.com/public/packages/debian/pgp.pub | apt-key add - && \
- echo deb http://practicerom.com/public/packages/debian staging main >/etc/apt/sources.list.d/practicerom.list && \
- apt-get update && \
- apt-get install -y \
- practicerom-dev && \
- apt-get clean && \
+ libpng-dev \
+ practicerom-dev
+
+# Post dependencies cleanup
+RUN apt-get clean && \
rm -rf /var/lib/apt/lists/*
WORKDIR /mm
diff --git a/README.md b/README.md
index b4831aca2..9d4fc94e4 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,6 @@ Preparation is covered in [Building Docker](docs/BUILDING_DOCKER.md).
The build process has the following package requirements:
-* make
* git
* build-essential
* binutils-mips-linux-gnu
@@ -77,7 +76,7 @@ Under Debian / Ubuntu (which we recommend using), you can install them with the
```bash
sudo apt update
-sudo apt install make git build-essential binutils-mips-linux-gnu curl python3 python3-pip python3-venv libpng-dev libxml2-dev
+sudo apt install git build-essential binutils-mips-linux-gnu curl python3 python3-pip python3-venv libpng-dev libxml2-dev
```
#### 2. Clone the repository
@@ -102,12 +101,14 @@ Rename the file to `baserom.z64`, `baserom.n64` or `baserom.v64`, depending on t
#### 4. Make and Build the ROM
-To start the extraction/build process, run the following command:
+For a first time build, run the following command, where `N` is the number of cores your processor has (see the note at the bottom for more information):
```bash
-make init
+make init -j N
```
+After the very first build you'll want to run `make -j N` instead, since you likely won't need all the setup the `init` command provides.
+
The extraction/build process:
1. Prepares build environment:
- Creates a Python virtual environment
diff --git a/docs/BUILDING_DOCKER.md b/docs/BUILDING_DOCKER.md
index 98eb9f156..d279ad8da 100644
--- a/docs/BUILDING_DOCKER.md
+++ b/docs/BUILDING_DOCKER.md
@@ -6,7 +6,7 @@ You will need [Docker](https://docs.docker.com/get-docker/) Follow the instructi
## 1. Clone the Repository
-You will need to prepare a local version of the project with a copied base ROM (see steps [2](../README.md#2-clone-the-repository) and [4](../README.md#4-prepare-a-base-rom) of the Linux instructions).
+You will need to prepare a local version of the project with a copied base ROM (see steps [2. Clone the repository](../README.md#2-clone-the-repository) and [3. Prepare a base ROM](../README.md#3-prepare-a-base-rom) of the Linux instructions).
## 2. Create the Docker image
@@ -38,10 +38,4 @@ docker run -it --rm --mount type=bind,source="$(pwd)",destination=/mm mm "/usr/b
## 4. Setup and Build the ROM
-Once inside the container, you will need to set the repository as a trusted repository with the following command:
-
-```bash
-git config --global --add safe.directory /mm
-```
-
-After that continue with step [5. Make and Build the ROM](../README.md#5-make-and-build-the-rom) of the Linux instructions to setup and build the ROM, or run any other command you need.
+After that continue with step [4. Make and Build the ROM](../README.md#4-make-and-build-the-rom) of the Linux instructions to setup and build the ROM, or run any other command you need.