trailbase/Dockerfile.ci
Sebastian Jeltsch b56ce4b544 Fix cross-platform builds after addiong GEOS dependency.
* GEOS couldn't build on MacOS due to CMake being to new :/.
* GEOS couldn't build on Linux MUSL, due to missing an appropriate g++ setup :/.

We're now downgrading cmake and are building in Docker on Linux :/.
2026-02-20 17:42:06 +01:00

37 lines
1.2 KiB
Docker

# Valid values are: x86_64-musl, aarch64-musl.
ARG BASE_IMAGE_TAG
# NOTE: We cannot use alpine here because rusqlite's `libsqlite3-sys` with
# `preupdate-hook` has a **build-time** dependency on the `bindgen` crate with
# the `runtime` feature enabled. This in turn requires a dynamically linked
# libclang.so, alpine's `clang-dev` package won't work :/.
FROM messense/rust-musl-cross:${BASE_IMAGE_TAG} AS builder-x86_64-unknown-linux-musl
# ARGs need to be after FROM.
ARG RUST_TARGET
ARG RUST_TOOLCHAIN_VERSION
ARG WORKSPACE=/workspace
RUN apt-get update && apt-get install -y --no-install-recommends \
curl git libssl-dev pkg-config libclang-dev protobuf-compiler libprotobuf-dev libsqlite3-dev
# Install node
ENV PATH=/usr/local/node/bin:$PATH
ENV NODE_VERSION=22.13.1
RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
/tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
rm -rf /tmp/node-build-master
RUN npm install -g pnpm
RUN pnpm --version
# Needed by `pnpm install`
ENV CI=TRUE
RUN rustup default ${RUST_TOOLCHAIN_VERSION}
RUN rustup target add ${RUST_TARGET}
WORKDIR ${WORKSPACE}
# vim: ft=dockerfile