Skip to content
Open
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
38 changes: 38 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Build capnpc from Rust source
FROM rust:1.81-alpine AS capnpc-builder
WORKDIR /app
COPY Cargo.toml Cargo.lock ./
COPY capnp/ capnp/
COPY capnpc/ capnpc/
# Limit workspace to only needed crates
RUN sed -i '/^members/,/^\]/c\members = ["capnp", "capnpc"]' Cargo.toml
RUN cargo build --release -p capnpc

# Build capnp from C++ source
FROM alpine:3.21 AS capnp-builder

RUN apk add --no-cache \
build-base \
cmake \
curl \
linux-headers

RUN curl -fSL -O "https://capnproto.org/capnproto-c++-1.0.1.tar.gz" \
&& tar zxf "capnproto-c++-1.0.1.tar.gz"

RUN cd "capnproto-c++-1.0.1" \
&& cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/capnp \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-static" \
&& cmake --build build -j"$(nproc)" \
&& cmake --install build

ENV PATH="/opt/capnp/bin:${PATH}"

FROM alpine:3.21

COPY --from=capnpc-builder /app/target/release/capnpc-rust /usr/local/bin/
COPY --from=capnpc-builder /app/target/release/capnpc-rust-bootstrap /usr/local/bin/
COPY --from=capnp-builder /opt/capnp/bin/capnp /usr/local/bin/
5 changes: 3 additions & 2 deletions regenerate-capnp-schema-code.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
set -e
set -x

cargo build -p capnpc
capnp compile -otarget/debug/capnpc-rust-bootstrap:capnp/src capnp/schema.capnp --src-prefix capnp/ -I. --no-standard-import
docker build --tag capnpc-rust .
docker run --rm -v "$(pwd)":/work -w /work capnpc-rust \
capnp compile -o/usr/local/bin/capnpc-rust-bootstrap:capnp/src capnp/schema.capnp --src-prefix capnp/ -I. --no-standard-import
rustfmt capnp/src/schema_capnp.rs
5 changes: 3 additions & 2 deletions regenerate-rpc-schema-code.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
set -e
set -x

cargo build -p capnpc
capnp compile -otarget/debug/capnpc-rust:capnp-rpc/src capnp-rpc/schema/rpc.capnp capnp-rpc/schema/rpc-twoparty.capnp --src-prefix capnp-rpc/schema/ -I. --no-standard-import
docker build --tag capnpc-rust .
docker run --rm -v "$(pwd)":/work -w /work capnpc-rust \
capnp compile -o/usr/local/bin/capnpc-rust:capnp-rpc/src capnp-rpc/schema/rpc.capnp capnp-rpc/schema/rpc-twoparty.capnp --src-prefix capnp-rpc/schema/ -I. --no-standard-import
rustfmt capnp-rpc/src/rpc_capnp.rs capnp-rpc/src/rpc_twoparty_capnp.rs
Loading