Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
matrix:
# Remember if you commit this, newly built images will replace those tags.
# Prefer incrementing the version to unused one
tag: [22-android, 22-jammy, 22-noble, 22-bookworm, 22-format, 22-mingw, 22-emscripten]
tag: [23-android, 23-jammy, 23-noble, 23-bookworm, 23-trixie, 23-format, 23-mingw, 23-emscripten]
env:
dockertag: ${{ matrix.tag }}
steps:
Expand All @@ -40,10 +40,10 @@ jobs:
run: |
if [ "$dockerid" != "" ]; then
docker login -u "$dockerid" -p "$dockerpass"
docker pull $dockerns/openrct2-build:22-noble
docker tag $dockerns/openrct2-build:22-noble $dockerns/openrct2-build:22
docker tag $dockerns/openrct2-build:22-noble $dockerns/openrct2-build:latest
docker push $dockerns/openrct2-build:22
docker pull $dockerns/openrct2-build:23-noble
docker tag $dockerns/openrct2-build:23-noble $dockerns/openrct2-build:23
docker tag $dockerns/openrct2-build:23-noble $dockerns/openrct2-build:latest
docker push $dockerns/openrct2-build:23
docker push $dockerns/openrct2-build:latest
else
echo 'Images not tagged'
Expand Down
50 changes: 50 additions & 0 deletions 23/android/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Default image that can build OpenRCT2 for Android.
FROM ubuntu:24.04
RUN apt-get update && \
apt-get -y upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
# System
ca-certificates curl unzip \
# Build tools
git cmake pkg-config ninja-build ccache g++ \
# Sprite builder libraries for the host
libpng-dev \
openjdk-21-jdk

ENV ANDROID_HOME=/android-dev
ENV ANDROID_NDK_HOME="$ANDROID_HOME/ndk"
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64

# Grab the Android SDK
WORKDIR /tmp/setup
RUN curl -Lo sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip \
&& unzip -qo sdk.zip \
&& mkdir -p $ANDROID_HOME/cmdline-tools \
&& mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest \
&& rm sdk.zip

# Need nlohmann/json, needs to live outside system libraries, so it doesn't
# confuse toolchain to include other host headers.
# 3.12.0 contains a major issue related to utf8 strings. Should be fixed when 3.12.1 releases
RUN curl -Lo json.zip https://github.com/nlohmann/json/releases/download/v3.11.3/include.zip \
&& unzip -qo json.zip -d json \
&& mkdir -p /opt/openrct2/include/ \
&& mv json/include/nlohmann /opt/openrct2/include/nlohmann \
&& rm json.zip

# Clean up
RUN rm -rf /tmp/setup
WORKDIR /

# Accept SDK licenses
RUN yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null

# Install NDK
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "ndk;27.3.13750724"
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "cmake;4.0.3"
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "build-tools;36.0.0"
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platforms;android-36"
RUN "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platform-tools"

# Bash is required for OpenRCT2 CI
SHELL ["/bin/bash", "-c"]
22 changes: 22 additions & 0 deletions 23/bookworm/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Supplementart image that can build OpenRCT2 for Linux (amd64).
# Provides building with cmake+ninja using either gcc or clang.
FROM debian:bookworm
RUN apt-get update && \
apt-get -y upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
# System
ca-certificates curl file libcairo2 patchelf unzip \
# Build tools
git cmake pkg-config ninja-build ccache g++ clang \
# Build libraries
libsdl2-dev libspeex-dev libspeexdsp-dev \
libflac-dev libogg-dev libvorbis-dev libopenal-dev \
libcrypto++-dev libcurl4-openssl-dev libssl-dev \
libfontconfig1-dev libfreetype6-dev \
libicu-dev libpng-dev libzip-dev \
nlohmann-json3-dev libzstd-dev \
# Testing libraries
libgtest-dev

# Bash is required for OpenRCT2 CI
SHELL ["/bin/bash", "-c"]
35 changes: 35 additions & 0 deletions 23/emscripten/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
FROM docker.io/library/fedora:42

RUN dnf update -y && dnf install -y git cmake make gcc g++ nlohmann-json-devel autoreconf libtool openssl-devel libcurl-devel fontconfig-devel libzip-devel SDL2-devel zip speexdsp-devel ninja-build hostname ccache libatomic

WORKDIR /

RUN git clone https://github.com/emscripten-core/emsdk.git

WORKDIR /emsdk/

# Pin version - to prevent sudden breakage of the CI
RUN ./emsdk install 4.0.11
RUN ./emsdk activate 4.0.11

# "Install" json headers to emscripten include directory
RUN cp -r /usr/include/nlohmann /emsdk/upstream/emscripten/cache/sysroot/include/nlohmann

# Add emscripten to path
ENV PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:$PATH"

WORKDIR /ext/

COPY build-depends.sh /ext/
COPY cors_serve.py /usr/bin/

# Build emscripten dependencies
RUN bash build-depends.sh

# Set ENV variables for speexdsp, icu, and libzip
ENV SPEEXDSP_ROOT="/ext/speexdsp"
ENV ICU_ROOT="/ext/icu/icu4c/source"
ENV LIBZIP_ROOT="/ext/libzip/build"


SHELL ["/bin/bash", "-c"]
67 changes: 67 additions & 0 deletions 23/emscripten/build-depends.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/bash

START_DIR=/ext

cd $START_DIR

# Pin versions - to prevent sudden breakage
if [ ! -d "speexdsp" ]; then
git clone https://gitlab.xiph.org/xiph/speexdsp.git --depth 1 --branch SpeexDSP-1.2.1
fi
if [ ! -d "icu" ]; then
git clone https://github.com/unicode-org/icu.git --depth 1 --branch release-77-1
fi
if [ ! -d "libzip" ]; then
git clone https://github.com/nih-at/libzip.git --depth 1 --branch v1.11.4
fi
if [ ! -d "zlib" ]; then
git clone https://github.com/madler/zlib.git --depth 1 --branch v1.3.1
fi
if [ ! -d "zstd" ]; then
git clone https://github.com/facebook/zstd.git --depth 1 --branch v1.5.7
fi

cd speexdsp
emmake ./autogen.sh
emmake ./configure --enable-shared --disable-neon
emmake make -j$(nproc)
cd $START_DIR

cd icu/icu4c/source
ac_cv_namespace_ok=yes icu_cv_host_frag=mh-linux emmake ./configure \
--enable-release \
--enable-shared \
--disable-icu-config \
--disable-extras \
--disable-icuio \
--disable-layoutex \
--disable-tools \
--disable-tests \
--disable-samples
emmake make -j$(nproc)
cd $START_DIR

cd zlib
mkdir -p build/
cd build/
emcmake cmake ../
emmake make zlib -j$(nproc)
emmake make install
ZLIB_ROOT=$(pwd)
cd $START_DIR

cd libzip
mkdir -p build/
cd build/
emcmake cmake ../ -DZLIB_INCLUDE_DIR="$ZLIB_ROOT" -DZLIB_LIBRARY="$ZLIB_ROOT/libz.a"
emmake make zip -j$(nproc)
emmake make install
cd $START_DIR

cd zstd
mkdir -p build/build/
cd build/build/
emcmake cmake ../cmake/ -DZSTD_BUILD_STATIC=ON -DZSTD_BUILD_SHARED=OFF -DZSTD_BUILD_PROGRAMS=OFF
emmake make -j$(nproc)
emmake make install
cd $START_DIR
15 changes: 15 additions & 0 deletions 23/emscripten/cors_serve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env python3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import sys

class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
SimpleHTTPRequestHandler.end_headers(self)

def main():
test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)

if __name__ == '__main__':
main()
3 changes: 3 additions & 0 deletions 23/format/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Image specifically designed to run clang-format on OpenRCT2 source files.
FROM alpine
RUN apk add --no-cache python3 clang20-extra-tools
32 changes: 32 additions & 0 deletions 23/jammy/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Default image that can build OpenRCT2 for Linux (amd64).
# Provides building with cmake+ninja using either gcc or clang.
FROM ubuntu:22.04
RUN apt-get update && \
apt-get -y upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
# System
ca-certificates curl file libcairo2 patchelf unzip \
# Build tools
git pkg-config ninja-build ccache g++ \
# Build libraries
libsdl2-dev libspeex-dev libspeexdsp-dev xz-utils \
libflac-dev libogg-dev libvorbis-dev libopenal-dev \
libcrypto++-dev libcurl4-openssl-dev libssl-dev \
libfontconfig1-dev libfreetype6-dev \
libicu-dev libpng-dev libzip-dev libzstd-dev \
nlohmann-json3-dev \
# Testing libraries
libgtest-dev \
software-properties-common gpg-agent

# Need to install ca-certificates before importing key
COPY llvm-snapshot.gpg.key /etc/apt/trusted.gpg.d/apt.llvm.org.asc
COPY llvm.list /etc/apt/sources.list.d
RUN apt-get update && \
apt-get -y upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
clang-20
RUN add-apt-repository -y ppa:ecal/cmake-3.25 && apt install -y cmake

# Bash is required for OpenRCT2 CI
SHELL ["/bin/bash", "-c"]
52 changes: 52 additions & 0 deletions 23/jammy/llvm-snapshot.gpg.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

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
bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw==
=j+4q
-----END PGP PUBLIC KEY BLOCK-----
8 changes: 8 additions & 0 deletions 23/jammy/llvm.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy main
# 20
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main
# 21
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main
Loading