mirror of
https://github.com/oven-sh/bun
synced 2026-02-14 04:49:06 +00:00
* Prepare for windows event loop * More progress * Update libuv.zig * wip * Make compiling each dependency a shell script * Bump mimalloc * Add the build scripts * Update settings.json * Fix a bunch of compiler warnings * Remove more warnings * more warnings * cmake works * Update JSSQLStatement.h * put it in the zig file * Fix usockets warnings * Fixup * Fix one of the compiler errors * chunk * draw the rest of the owl * theres more * Rename Process -> BunProcess Works around a Windows issue * Add musl polyfill for memmem on Windows * More * 12 mb * Fix getenvZ * fix variosu issues * Add fast-ish path for bun install on Windows * Update windows.zig * Update windows.zig * Fix build issue * it works * hmmm * Rename file * Fixups * Update wtf-bindings.cpp * Update src/bun.js/bindings/headers-handwritten.h Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> * further! * more * Update .gitignore * hm * quite a lot of fixes * Update CMakeLists.txt * zig fmt * Many more things are starting to work. * reb * regenaret * Update JSSink.h * fixup * fetch works * Bun.serve() and much of the event loop works now * Make require() work * bun install progress * more things work * use less std.os * Fixes * small fixes * Bump * Bummp * Undo that change * We have to bump the version of Debian because libarchive has a higher minimum requirement * ok * some clenaup * windows * Update bun.zig * fixup * avoid duplicate symbols * avoid undefined symbols * bump * Remove issue template for install It's not used, and use the bug issue instead. * Add types for cp and cpSync * Add types for watchFile and unwatchFile * Add bun-types to 'bun fmt' script * Update nodejs compat docs cp/cpSync/watchFile/unwatchFile (#4525) * feat(fetch) rejectUnauthorized and checkServerIdentity (#4514) * enable root certs on fetch * rebase * fix lookup * some fixes and improvements * fmt * more fixes * more fixes * check detached onHandshake * fix promise case * fix cert non-Native * add fetch tls tests * more one test * churn * Update feature_flags.zig * Update response.zig * Revert "avoid undefined symbols" This reverts commitca835b726f. * Revert "avoid duplicate symbols" This reverts commit4ac6ca8700. * Update feature_flags.zig * Set permissions * more * Update mimalloc * Fix sqlite test failures * Fix some test failures * Make sure we remove libusockets is removed * hm * [dave]: fix webcrypto crash * bump * Update index.ts * windows zig compiles * cmake on mac works * progress * yay * bun run build * fix * ok * oops * asdfasfdafdsafda * fghjkl * git ignore * wow * Process -> BunProcess * hmm * blah * finalize merge * now it only has linker errors on mac * sdfadsf * g * getting farther * sxdcvbnmk, * adfhjskfjdhkas * a * fgh * update build dot zig * asdfg * theoretical -DCANARY flag we can use * asdf * cool * okay * colorterm * New build workflow * Fix script * Use sudo * More sudo * Tweak dependencies * Another sudo attempt * Tweak script * 16.0 -> 16 * Tweak script * Tweak script * Tweak script * Tweak script * Tweak script * bun install * ssh into github actions * add more to ssh * Fix postinstal * Skip llvm * New dockerfile * Build * More changes to Dockerfile * chaos chaos chaos * okay * a * more cmake nonsense * add unified sources code (does not work) * stuff * prepare for CI builds * ok * yay * yeah * make this more stable simply by trying again if it fails, 5 times, then lose. it fixes the stability issue i was running into L O L * messing with ci * x * a * clean dependencies before build * oops * this is not going to work but its closer * not gonna work either * a * a * did i do it * a * a * work around weird fs+Bun.build issues * properly pass debug flag correctly * idk im sorry * lose * maybe * run the tests please * a * fix zlib script * a * hi * prevent stupid ci issue * i totally didnt leave in a syntax error on cmakelists * a * lol * relax * 😭 * a * SO SILLY * 😡 one line mistake * one character diff * fix linking symbols missing * work on dependency scripts * does this work now? * fix mac build * a * bump! * woops * add macos baseline build * . * fix sqlite and also enable $assert/$debug support in builtin functions * okay * oops * zig upgrade lol * Merge * Fix spawn test issue * Set a timeout * yeah * etc * mi --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Co-authored-by: Dylan Conway <dylan.conway567@gmail.com> Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> Co-authored-by: Ashcon Partovi <ashcon@partovi.net> Co-authored-by: Birk Skyum <74932975+birkskyum@users.noreply.github.com> Co-authored-by: dave caruso <me@paperdave.net>
434 lines
12 KiB
Docker
434 lines
12 KiB
Docker
# This Dockerfile is used by CI workflows to build Bun. It is not intended as a development
|
|
# environment, or to be used as a base image for other projects.
|
|
#
|
|
# You likely want this image instead: https://hub.docker.com/r/oven/bun
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ARG GITHUB_WORKSPACE=/build
|
|
ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
|
|
ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
|
|
ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
|
|
ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
|
|
ARG CPU_TARGET=native
|
|
ARG ARCH=x86_64
|
|
ARG BUILD_MACHINE_ARCH=x86_64
|
|
ARG BUILDARCH=amd64
|
|
ARG TRIPLET=${ARCH}-linux-gnu
|
|
ARG GIT_SHA="unknown"
|
|
|
|
ARG BUN_VERSION="1.0.7"
|
|
ARG NODE_VERSION="20"
|
|
ARG LLVM_VERSION="16"
|
|
ARG ZIG_VERSION="0.12.0-dev.1297+a9e66ed73"
|
|
|
|
ARG SCCACHE_BUCKET
|
|
ARG SCCACHE_REGION
|
|
ARG SCCACHE_S3_USE_SSL
|
|
ARG SCCACHE_ENDPOINT
|
|
ARG AWS_ACCESS_KEY_ID
|
|
ARG AWS_SECRET_ACCESS_KEY
|
|
|
|
FROM bitnami/minideb:bullseye as bun-base
|
|
|
|
ARG DEBIAN_FRONTEND
|
|
ARG BUN_VERSION
|
|
ARG NODE_VERSION
|
|
ARG LLVM_VERSION
|
|
ARG BUILD_MACHINE_ARCH
|
|
ARG BUN_DIR
|
|
ARG BUN_DEPS_OUT_DIR
|
|
|
|
ENV CI 1
|
|
ENV BUILDARCH=${BUILDARCH}
|
|
ENV BUN_DEPS_OUT_DIR=${BUN_DEPS_OUT_DIR}
|
|
|
|
ENV CXX=clang++-16
|
|
ENV CC=clang-16
|
|
ENV AR=/usr/bin/llvm-ar-16
|
|
ENV LD=lld-16
|
|
|
|
ENV SCCACHE_BUCKET=${SCCACHE_BUCKET}
|
|
ENV SCCACHE_REGION=${SCCACHE_REGION}
|
|
ENV SCCACHE_S3_USE_SSL=${SCCACHE_S3_USE_SSL}
|
|
ENV SCCACHE_ENDPOINT=${SCCACHE_ENDPOINT}
|
|
ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
|
ENV AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
|
|
|
RUN apt-get update -y \
|
|
&& install_packages \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg \
|
|
&& echo "deb https://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-${LLVM_VERSION} main" > /etc/apt/sources.list.d/llvm.list \
|
|
&& echo "deb-src https://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list \
|
|
&& curl -fsSL "https://apt.llvm.org/llvm-snapshot.gpg.key" | apt-key add - \
|
|
&& echo "deb https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
|
|
&& curl -fsSL "https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key" | apt-key add - \
|
|
&& echo "deb https://apt.kitware.com/ubuntu/ focal main" > /etc/apt/sources.list.d/kitware.list \
|
|
&& curl -fsSL "https://apt.kitware.com/keys/kitware-archive-latest.asc" | apt-key add - \
|
|
&& install_packages \
|
|
wget \
|
|
bash \
|
|
software-properties-common \
|
|
build-essential \
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
pkg-config \
|
|
clang-${LLVM_VERSION} \
|
|
lld-${LLVM_VERSION} \
|
|
lldb-${LLVM_VERSION} \
|
|
clangd-${LLVM_VERSION} \
|
|
make \
|
|
cmake \
|
|
ninja-build \
|
|
file \
|
|
libc-dev \
|
|
libxml2 \
|
|
libxml2-dev \
|
|
xz-utils \
|
|
git \
|
|
tar \
|
|
rsync \
|
|
gzip \
|
|
unzip \
|
|
perl \
|
|
python3 \
|
|
ruby \
|
|
golang \
|
|
nodejs \
|
|
&& ln -s /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang \
|
|
&& ln -s /usr/bin/clang++-${LLVM_VERSION} /usr/bin/clang++ \
|
|
&& ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/lld \
|
|
&& ln -s /usr/bin/lldb-${LLVM_VERSION} /usr/bin/lldb \
|
|
&& ln -s /usr/bin/clangd-${LLVM_VERSION} /usr/bin/clangd \
|
|
&& ln -s /usr/bin/llvm-ar-${LLVM_VERSION} /usr/bin/llvm-ar \
|
|
&& arch="$(dpkg --print-architecture)" \
|
|
&& case "${arch##*-}" in \
|
|
amd64) variant="x64";; \
|
|
arm64) variant="aarch64";; \
|
|
*) echo "error: unsupported architecture: $arch"; exit 1 ;; \
|
|
esac \
|
|
&& wget "https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/bun-linux-${variant}.zip" \
|
|
&& unzip bun-linux-${variant}.zip \
|
|
&& mv bun-linux-${variant}/bun /usr/bin/bun \
|
|
&& ln -s /usr/bin/bun /usr/bin/bunx \
|
|
&& rm -rf bun-linux-${variant} bun-linux-${variant}.zip \
|
|
&& mkdir -p ${BUN_DIR} ${BUN_DEPS_OUT_DIR}
|
|
# && if [ -n "${SCCACHE_BUCKET}" ]; then \
|
|
# echo "Setting up sccache" \
|
|
# && wget https://github.com/mozilla/sccache/releases/download/v0.5.4/sccache-v0.5.4-${BUILD_MACHINE_ARCH}-unknown-linux-musl.tar.gz \
|
|
# && tar xf sccache-v0.5.4-${BUILD_MACHINE_ARCH}-unknown-linux-musl.tar.gz \
|
|
# && mv sccache-v0.5.4-${BUILD_MACHINE_ARCH}-unknown-linux-musl/sccache /usr/bin/sccache \
|
|
# && rm -rf sccache-v0.5.4-${BUILD_MACHINE_ARCH}-unknown-linux-musl.tar.gz sccache-v0.5.4-${BUILD_MACHINE_ARCH}-unknown-linux-musl \
|
|
|
|
FROM bun-base as bun-base-with-zig
|
|
|
|
ARG ZIG_VERSION
|
|
ARG BUILD_MACHINE_ARCH
|
|
ARG ZIG_FOLDERNAME=zig-linux-${BUILD_MACHINE_ARCH}-${ZIG_VERSION}
|
|
ARG ZIG_FILENAME=${ZIG_FOLDERNAME}.tar.xz
|
|
ARG ZIG_URL="https://ziglang.org/builds/${ZIG_FILENAME}"
|
|
|
|
WORKDIR $GITHUB_WORKSPACE
|
|
|
|
ADD $ZIG_URL .
|
|
RUN tar xf ${ZIG_FILENAME} \
|
|
&& mv ${ZIG_FOLDERNAME}/lib /usr/lib/zig \
|
|
&& mv ${ZIG_FOLDERNAME}/zig /usr/bin/zig \
|
|
&& rm -rf ${ZIG_FILENAME} ${ZIG_FOLDERNAME}
|
|
|
|
FROM bun-base as c-ares
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/c-ares ${BUN_DIR}/src/deps/c-ares
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && make c-ares && rm -rf ${BUN_DIR}/src/deps/c-ares ${BUN_DIR}/Makefile
|
|
|
|
FROM bun-base as lolhtml
|
|
|
|
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/lol-html ${BUN_DIR}/src/deps/lol-html
|
|
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
RUN --mount=type=cache,target=/ccache export PATH=$PATH:$HOME/.cargo/bin && cd ${BUN_DIR} && \
|
|
make lolhtml && rm -rf src/deps/lol-html Makefile
|
|
|
|
FROM bun-base as mimalloc
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/mimalloc ${BUN_DIR}/src/deps/mimalloc
|
|
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
RUN --mount=type=cache,target=/ccache cd ${BUN_DIR} && \
|
|
make mimalloc && rm -rf src/deps/mimalloc Makefile
|
|
|
|
FROM bun-base as zlib
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/zlib ${BUN_DIR}/src/deps/zlib
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && \
|
|
make zlib && rm -rf src/deps/zlib Makefile
|
|
|
|
FROM bun-base as libarchive
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
RUN install_packages autoconf automake libtool pkg-config
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/libarchive ${BUN_DIR}/src/deps/libarchive
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && \
|
|
make libarchive && rm -rf src/deps/libarchive Makefile
|
|
|
|
FROM bun-base as tinycc
|
|
|
|
ARG BUN_DEPS_OUT_DIR
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
RUN install_packages libtcc-dev && cp /usr/lib/$(uname -m)-linux-gnu/libtcc.a ${BUN_DEPS_OUT_DIR}
|
|
|
|
FROM bun-base as boringssl
|
|
|
|
RUN install_packages golang
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/boringssl ${BUN_DIR}/src/deps/boringssl
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
RUN --mount=type=cache,target=/ccache cd ${BUN_DIR} && make boringssl && rm -rf src/deps/boringssl Makefile
|
|
|
|
FROM bun-base as base64
|
|
|
|
ARG BUN_DIR
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/base64 ${BUN_DIR}/src/deps/base64
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN cd $BUN_DIR && \
|
|
make base64 && rm -rf src/deps/base64 Makefile
|
|
|
|
FROM bun-base as zstd
|
|
|
|
ARG BUN_DIR
|
|
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
COPY Makefile ${BUN_DIR}/Makefile
|
|
COPY src/deps/zstd ${BUN_DIR}/src/deps/zstd
|
|
COPY .prettierrc.cjs ${BUN_DIR}/.prettierrc.cjs
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && make zstd
|
|
|
|
FROM bun-base-with-zig as bun-identifier-cache
|
|
|
|
ARG DEBIAN_FRONTEND
|
|
ARG GITHUB_WORKSPACE
|
|
ARG CPU_TARGET
|
|
ARG BUN_DIR
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
COPY src/js_lexer/identifier_data.zig ${BUN_DIR}/src/js_lexer/identifier_data.zig
|
|
COPY src/js_lexer/identifier_cache.zig ${BUN_DIR}/src/js_lexer/identifier_cache.zig
|
|
|
|
RUN cd $BUN_DIR \
|
|
&& zig run src/js_lexer/identifier_data.zig \
|
|
&& rm -rf zig-cache
|
|
|
|
FROM bun-base as bun-node-fallbacks
|
|
|
|
ARG BUN_DIR
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
COPY src/node-fallbacks ${BUN_DIR}/src/node-fallbacks
|
|
|
|
RUN cd $BUN_DIR/src/node-fallbacks \
|
|
&& bun install --frozen-lockfile \
|
|
&& bun run build \
|
|
&& rm -rf src/node-fallbacks/node_modules
|
|
|
|
FROM bun-base as bun-webkit
|
|
|
|
ARG BUILDARCH
|
|
|
|
COPY CMakeLists.txt ${BUN_DIR}/CMakeLists.txt
|
|
|
|
RUN mkdir ${BUN_DIR}/bun-webkit \
|
|
&& WEBKIT_TAG=$(grep 'set(WEBKIT_TAG' "${BUN_DIR}/CMakeLists.txt" | awk '{print $2}' | cut -f 1 -d ')') \
|
|
&& WEBKIT_URL="https://github.com/oven-sh/WebKit/releases/download/autobuild-${WEBKIT_TAG}/bun-webkit-linux-${BUILDARCH}-lto.tar.gz" \
|
|
&& echo "Downloading ${WEBKIT_URL}" \
|
|
&& curl -fsSL "${WEBKIT_URL}" | tar -xz -C ${BUN_DIR}/bun-webkit --strip-components=1
|
|
|
|
FROM bun-base as bun-cpp-objects
|
|
|
|
COPY --from=bun-webkit ${BUN_DIR}/bun-webkit ${BUN_DIR}/bun-webkit
|
|
|
|
COPY packages ${BUN_DIR}/packages
|
|
COPY src ${BUN_DIR}/src
|
|
COPY CMakeLists.txt ${BUN_DIR}/CMakeLists.txt
|
|
COPY src/deps/boringssl/include ${BUN_DIR}/src/deps/boringssl/include
|
|
|
|
ENV CCACHE_DIR=/ccache
|
|
|
|
RUN --mount=type=cache,target=/ccache mkdir ${BUN_DIR}/build \
|
|
&& cd ${BUN_DIR}/build \
|
|
&& mkdir -p tmp_modules tmp_functions js codegen \
|
|
&& cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUN_CPP_ONLY=1 -DWEBKIT_DIR=/build/bun/bun-webkit \
|
|
&& bash compile-cpp-only.sh
|
|
|
|
FROM bun-base-with-zig as bun-codegen-for-zig
|
|
|
|
COPY package.json bun.lockb Makefile .gitmodules .prettierrc.cjs ${BUN_DIR}/
|
|
COPY src/runtime ${BUN_DIR}/src/runtime
|
|
COPY src/runtime.js src/runtime.footer*.js src/react-refresh.js ${BUN_DIR}/src/
|
|
COPY packages/bun-error ${BUN_DIR}/packages/bun-error
|
|
COPY src/fallback.ts ${BUN_DIR}/src/fallback.ts
|
|
COPY src/api ${BUN_DIR}/src/api
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
# TODO: move away from Makefile entirely
|
|
RUN bun install --frozen-lockfile \
|
|
&& make runtime_js fallback_decoder bun_error \
|
|
&& rm -rf src/runtime src/fallback.ts node_modules bun.lockb package.json Makefile
|
|
|
|
FROM bun-base-with-zig as bun-compile-zig-obj
|
|
|
|
ARG ZIG_PATH
|
|
ARG TRIPLET
|
|
ARG GIT_SHA
|
|
ARG CPU_TARGET
|
|
|
|
COPY *.zig package.json CMakeLists.txt ${BUN_DIR}/
|
|
COPY completions ${BUN_DIR}/completions
|
|
COPY packages ${BUN_DIR}/packages
|
|
COPY src ${BUN_DIR}/src
|
|
|
|
COPY --from=bun-identifier-cache ${BUN_DIR}/src/js_lexer/*.blob ${BUN_DIR}/src/js_lexer/
|
|
COPY --from=bun-node-fallbacks ${BUN_DIR}/src/node-fallbacks/out ${BUN_DIR}/src/node-fallbacks/out
|
|
COPY --from=bun-codegen-for-zig ${BUN_DIR}/src/*.out.js ${BUN_DIR}/src/*.out.refresh.js ${BUN_DIR}/src/
|
|
COPY --from=bun-codegen-for-zig ${BUN_DIR}/packages/bun-error/dist ${BUN_DIR}/packages/bun-error/dist
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN mkdir -p build \
|
|
&& bun run $BUN_DIR/src/codegen/bundle-modules-fast.ts $BUN_DIR/build \
|
|
&& cd build \
|
|
&& cmake .. \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCPU_TARGET="${CPU_TARGET}" \
|
|
-DZIG_TARGET="${TRIPLET}" \
|
|
-DWEBKIT_DIR="omit" \
|
|
-DNO_CONFIGURE_DEPENDS=1 \
|
|
-DNO_CODEGEN=1 \
|
|
-DBUN_ZIG_OBJ="/tmp/bun-zig.o" \
|
|
&& ONLY_ZIG=1 ninja "/tmp/bun-zig.o" \
|
|
&& echo "-> /tmp/bun-zig.o"
|
|
|
|
FROM scratch as build_release_obj
|
|
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
COPY --from=bun-compile-zig-obj /tmp/bun-zig.o /
|
|
|
|
FROM bun-base as bun-link
|
|
|
|
ARG CPU_TARGET
|
|
ENV CPU_TARGET=${CPU_TARGET}
|
|
|
|
WORKDIR $BUN_DIR
|
|
|
|
RUN mkdir -p build bun-webkit
|
|
|
|
# lol
|
|
COPY src/bun.js/bindings/sqlite/sqlite3.c ${BUN_DIR}/src/bun.js/bindings/sqlite/sqlite3.c
|
|
|
|
COPY src/symbols.dyn src/linker.lds ${BUN_DIR}/src/
|
|
|
|
COPY CMakeLists.txt ${BUN_DIR}/CMakeLists.txt
|
|
COPY --from=zlib ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=base64 ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=boringssl ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=lolhtml ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=zstd ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=tinycc ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=c-ares ${BUN_DEPS_OUT_DIR}/* ${BUN_DEPS_OUT_DIR}/
|
|
COPY --from=bun-compile-zig-obj /tmp/bun-zig.o ${BUN_DIR}/build/bun-zig.o
|
|
COPY --from=bun-cpp-objects ${BUN_DIR}/build/bun-cpp-objects.a ${BUN_DIR}/build/bun-cpp-objects.a
|
|
COPY --from=bun-cpp-objects ${BUN_DIR}/bun-webkit/lib ${BUN_DIR}/bun-webkit/lib
|
|
|
|
WORKDIR $BUN_DIR/build
|
|
|
|
RUN cmake .. \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUN_LINK_ONLY=1 \
|
|
-DBUN_ZIG_OBJ="${BUN_DIR}/build/bun-zig.o" \
|
|
-DBUN_CPP_ARCHIVE="${BUN_DIR}/build/bun-cpp-objects.a" \
|
|
-DWEBKIT_DIR="${BUN_DIR}/bun-webkit" \
|
|
-DBUN_DEPS_OUT_DIR="${BUN_DEPS_OUT_DIR}" \
|
|
&& ninja \
|
|
&& mkdir -p /build/out \
|
|
&& mv bun bun-profile /build/out \
|
|
&& rm -rf ${BUN_DIR} ${BUN_DEPS_OUT_DIR}
|
|
|
|
FROM scratch as artifact
|
|
|
|
COPY --from=bun-link /build/out / |