diff options
-rw-r--r-- | .devcontainer/README.md | 27 | ||||
-rw-r--r-- | .devcontainer/devcontainer.json | 11 | ||||
-rw-r--r-- | .devcontainer/scripts/zig-env.sh | 2 | ||||
-rw-r--r-- | Dockerfile.base | 73 | ||||
-rw-r--r-- | Dockerfile.devcontainer | 28 | ||||
-rw-r--r-- | Dockerfile.musl | 139 | ||||
-rw-r--r-- | docs/upgrading-webkit.md | 4 |
7 files changed, 60 insertions, 224 deletions
diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 000000000..93e6edd21 --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,27 @@ +# Bun's Dev Container + +To get started, login to GitHub and clone bun's GitHub repo into `/workspaces/bun` + +# First time setup + +```bash +gh repo clone oven-sh/bun . -- --depth=1 --progress -j8 +``` + +# Compile bun dependencies (zig is already compiled) + +```bash +make devcontainer +``` + +# Build bun for development + +```bash +make dev +``` + +# Run bun + +```bash +bun-debug help +``` diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 51e4ccff0..23a0b3995 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,6 +5,7 @@ // Sets the run context to one level up instead of the .devcontainer folder. "context": "..", + "hostRequirements": { "memory": "16gb" }, // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename. "dockerFile": "../Dockerfile.devcontainer", @@ -26,12 +27,16 @@ "esbenp.prettier-vscode", "xaver.clang-format" ], - "postCreateCommand": "cd /build/bun; bash /build/getting-started.sh; zsh", + "postCreateCommand": "cd /build/bun; bash /build/getting-started.sh; code /build/README.md", "build": { "target": "bun.devcontainer", - "cacheFrom": ["bun.devcontainer:latest"], - "args": {} + "cacheFrom": ["ghcr.io/oven-sh/bun.devcontainer:latest"], + "args": { + "BUILDARCH": "${localEnv:DOCKER_BUILDARCH:amd64}", + "--platform": "linux/${localEnv:DOCKER_BUILDARCH:amd64}", + "--tag": "ghcr.io/oven-sh/bun.devcontainer:latest" + } }, "runArgs": [ "--ulimit", diff --git a/.devcontainer/scripts/zig-env.sh b/.devcontainer/scripts/zig-env.sh index 7e965b16c..a9a0d95b5 100644 --- a/.devcontainer/scripts/zig-env.sh +++ b/.devcontainer/scripts/zig-env.sh @@ -1,7 +1,7 @@ #!/bin/bash curl -L https://github.com/Jarred-Sumner/vscode-zig/releases/download/march18/zig-0.2.5.vsix >/home/ubuntu/vscode-zig.vsix -git clone https://github.com/zigtools/zls /home/ubuntu/zls +git clone https://github.com/oven-sh/zls /home/ubuntu/zls cd /home/ubuntu/zls git submodule update --init --recursive --progress --depth=1 zig build -Drelease-fast diff --git a/Dockerfile.base b/Dockerfile.base deleted file mode 100644 index 0bbc6b7d6..000000000 --- a/Dockerfile.base +++ /dev/null @@ -1,73 +0,0 @@ -FROM bitnami/minideb:bullseye as bun-base - -RUN install_packages ca-certificates curl wget lsb-release software-properties-common gnupg gnupg1 gnupg2 - -RUN wget https://apt.llvm.org/llvm.sh && \ - chmod +x llvm.sh && \ - ./llvm.sh 13 - -RUN install_packages \ - cmake \ - curl \ - file \ - git \ - gnupg \ - libc-dev \ - libxml2 \ - libxml2-dev \ - make \ - ninja-build \ - perl \ - python3 \ - rsync \ - ruby \ - unzip \ - bash tar gzip - -ENV CXX=clang++-13 -ENV CC=clang-13 - -RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ - install_packages nodejs && \ - npm install -g esbuild - - -ARG DEBIAN_FRONTEND=noninteractive -ARG GITHUB_WORKSPACE=/build - -# Directory extracts to "bun-webkit" -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 BUILDARCH=amd64 -ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig - -ENV WEBKIT_OUT_DIR=${WEBKIT_DIR} -ENV BUILDARCH=${BUILDARCH} -ENV AR=/usr/bin/llvm-ar-13 -ENV ZIG "${ZIG_PATH}/zig" -ENV PATH="$ZIG/bin:$PATH" -ENV LD=lld-13 - -RUN mkdir -p $BUN_DIR $BUN_DEPS_OUT_DIR - -FROM bun-base as bun-base-with-zig-and-webkit - -WORKDIR $GITHUB_WORKSPACE - -RUN curl -o zig-linux-$BUILDARCH.zip -L https://github.com/Jarred-Sumner/zig/releases/download/jul1/zig-linux-$BUILDARCH.zip && \ - unzip zig-linux-$BUILDARCH.zip && \ - rm zig-linux-$BUILDARCH.zip; - -RUN mkdir -p $WEBKIT_OUT_DIR && cd $WEBKIT_OUT_DIR && cd ../ && \ - curl -o bun-webkit-linux-$BUILDARCH.tar.gz -L https://github.com/oven-sh/WebKit/releases/download/jul4-2/bun-webkit-linux-$BUILDARCH.tar.gz && \ - tar -xvzf bun-webkit-linux-$BUILDARCH.tar.gz && \ - ls && \ - echo $(pwd) && \ - rm bun-webkit-linux-$BUILDARCH.tar.gz && \ - cat $WEBKIT_OUT_DIR/include/cmakeconfig.h > /dev/null - -LABEL org.opencontainers.image.title="bun base image with zig & webkit ${BUILDARCH} (glibc)" -LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun - diff --git a/Dockerfile.devcontainer b/Dockerfile.devcontainer index 50f39f112..64f6048ae 100644 --- a/Dockerfile.devcontainer +++ b/Dockerfile.devcontainer @@ -1,18 +1,27 @@ -FROM ubuntu:20.04 as bun.devcontainer - ARG DEBIAN_FRONTEND=noninteractive ARG GITHUB_WORKSPACE=/build ARG BUILDARCH=amd64 - ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig 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 + +FROM --platform=linux/${BUILDARCH} ubuntu:20.04 as bun.devcontainer + +ARG DEBIAN_FRONTEND +ARG GITHUB_WORKSPACE +ARG BUILDARCH +ARG ZIG_PATH +ARG WEBKIT_DIR +ARG BUN_RELEASE_DIR +ARG BUN_DEPS_OUT_DIR +ARG BUN_DIR + ENV WEBKIT_OUT_DIR ${WEBKIT_DIR} ENV PATH "$ZIG_PATH:$PATH" ENV JSC_BASE_DIR $WEBKIT_OUT_DIR -ENV LIB_ICU_PATH ${GITHUB_WORKSPACE}/icu/source/lib +ENV LIB_ICU_PATH ${WEBKIT_OUT_DIR}/lib ENV BUN_RELEASE_DIR ${BUN_RELEASE_DIR} ENV PATH "${GITHUB_WORKSPACE}/packages/bun-linux-x64:${GITHUB_WORKSPACE}/packages/bun-linux-aarch64:${GITHUB_WORKSPACE}/packages/debug-bun-linux-x64:${GITHUB_WORKSPACE}/packages/debug-bun-linux-aarch64:$PATH" ENV PATH "/home/ubuntu/zls/zig-out/bin:$PATH" @@ -64,7 +73,7 @@ RUN apt-get update && \ ENV CC=clang-13 ENV CXX=clang++-13 ENV ZIG "${ZIG_PATH}/zig" -ARG BUILDARCH=amd64 + WORKDIR $GITHUB_WORKSPACE @@ -79,7 +88,7 @@ RUN cd $GITHUB_WORKSPACE && \ rm zig-linux-$BUILDARCH.zip; RUN cd $GITHUB_WORKSPACE && \ - curl -o bun-webkit-linux-$BUILDARCH.tar.gz -L https://github.com/Jarred-Sumner/WebKit/releases/download/jul4/bun-webkit-linux-$BUILDARCH.tar.gz && \ + curl -o bun-webkit-linux-$BUILDARCH.tar.gz -L https://github.com/Jarred-Sumner/WebKit/releases/download/jul26/bun-webkit-linux-$BUILDARCH.tar.gz && \ tar -xzf bun-webkit-linux-$BUILDARCH.tar.gz && \ rm bun-webkit-linux-$BUILDARCH.tar.gz && \ cat $WEBKIT_OUT_DIR/include/cmakeconfig.h > /dev/null @@ -91,6 +100,13 @@ COPY .devcontainer/zls.json $GITHUB_WORKSPACE/workspace.code-workspace COPY .devcontainer/limits.conf /etc/security/limits.conf COPY ".devcontainer/scripts/" /scripts/ COPY ".devcontainer/scripts/getting-started.sh" $GITHUB_WORKSPACE/getting-started.sh +COPY ".devcontainer/README.md" $GITHUB_WORKSPACE/README.md + +ENV JSC_BASE_DIR=$WEBKIT_DIR +ENV WEBKIT_RELEASE_DIR=$WEBKIT_DIR +ENV WEBKIT_DEBUG_DIR=$WEBKIT_DIR +ENV WEBKIT_RELEASE_DIR_LTO=$WEBKIT_DIR + RUN mkdir -p /home/ubuntu/.bun /home/ubuntu/.config $GITHUB_WORKSPACE/bun && \ bash /scripts/common-debian.sh && \ bash /scripts/github.sh && \ diff --git a/Dockerfile.musl b/Dockerfile.musl deleted file mode 100644 index ffdca5538..000000000 --- a/Dockerfile.musl +++ /dev/null @@ -1,139 +0,0 @@ - -# This doesn't work -# Specifically: there are a number of crashes and segfaults when using musl -# The cause is likely related to differences in pthreads implementations -# It is not just the stack size thing. It's something more complicated and importantly -# There was no meaningful file size difference between musl and glibc - - -# ARG BUILDARCH=aarch64 -# ARG zig_base_image=ghcr.io/jarred-sumner/zig-linux-musl-${BUILDARCH} -# ARG webkit_base_image=ghcr.io/jarred-sumner/bun-webkit-musl-${BUILDARCH} -# FROM ${zig_base_image}:latest AS zig -# FROM ${webkit_base_image}:latest AS webkit - -# FROM zig as bun_base - -# COPY --from=webkit /webkit /webkit - -# ENV PATH "/zig/bin:$PATH" -# ENV JSC_BASE_DIR=/webkit -# ENV LIB_ICU_PATH=/webkit/lib -# ENV BUN_DEPS_OUT_DIR /bun-deps -# ENV STATIC_MUSL_FLAG=-static -# ENV MIMALLOC_OVERRIDE_FLAG="-DMI_OVERRIDE=OFF" - -# RUN apk add --no-cache nodejs npm go libtool autoconf pkgconfig automake ninja -# RUN mkdir -p $BUN_DEPS_OUT_DIR; - -# WORKDIR /bun -# COPY Makefile /bun/Makefile - -# FROM bun_base as mimalloc - -# COPY src/deps/mimalloc /bun/src/deps/mimalloc - -# RUN make mimalloc; - -# FROM bun_base as zlib - -# COPY src/deps/zlib /bun/src/deps/zlib - -# RUN make zlib; - -# FROM bun_base as libarchive - -# COPY src/deps/libarchive /bun/src/deps/libarchive - -# RUN make libarchive; - -# FROM bun_base as boringssl - -# COPY src/deps/boringssl /bun/src/deps/boringssl - -# RUN make boringssl; - -# FROM bun_base as picohttp - -# COPY src/deps/picohttpparser /bun/src/deps/picohttpparser -# COPY src/deps/*.c /bun/src/deps/ -# COPY src/deps/*.h /bun/src/deps/ - -# RUN make picohttp - -# FROM bun_base as identifier_cache - -# COPY src/js_lexer/identifier_data.zig /bun/src/js_lexer/identifier_data.zig -# COPY src/js_lexer/identifier_cache.zig /bun/src/js_lexer/identifier_cache.zig - -# RUN make identifier-cache - -# FROM bun_base as node_fallbacks - -# COPY src/node-fallbacks /bun/src/node-fallbacks -# RUN make node-fallbacks - -# FROM bun_base as prebuild - -# WORKDIR /bun - -# COPY ./src /bun/src -# COPY ./build.zig /bun/build.zig -# COPY ./completions /bun/completions -# COPY ./packages /bun/packages -# COPY ./build-id /bun/build-id -# COPY ./package.json /bun/package.json -# COPY ./misctools /bun/misctools - -# COPY --from=mimalloc /bun-deps/*.o /bun-deps -# COPY --from=libarchive /bun-deps/*.a /bun-deps -# COPY --from=picohttp /bun-deps/*.o /bun-deps -# COPY --from=boringssl /bun-deps/*.a /bun-deps -# COPY --from=zlib /bun-deps/*.a /bun-deps -# COPY --from=node_fallbacks /bun/src/node-fallbacks /bun/src/node-fallbacks -# COPY --from=identifier_cache /bun/src/js_lexer/*.blob /bun/src/js_lexer/ - -# ENV ICU_FLAGS="-I/webkit/include/wtf $ICU_FLAGS" - -# RUN apk add --no-cache chromium && npm install -g esbuild && make \ -# jsc-bindings-headers \ -# api \ -# analytics \ -# bun_error \ -# fallback_decoder - - - -# FROM prebuild as release - -# ENV BUN_RELEASE_DIR /opt/bun - -# ENV LIB_ICU_PATH /usr/lib - -# RUN apk add icu-static icu-dev && mkdir -p $BUN_RELEASE_DIR; make release \ -# copy-to-bun-release-dir - -# FROM alpine:3.15 as bun - -# COPY --from=release /opt/bun/bun /opt/bun/bin/bun -# ENV BUN_INSTALL /opt/bun -# ENV PATH /opt/bun/bin:$PATH - -# LABEL org.opencontainers.image.title="bun - Linux ${BUILDARCH} (musl)" -# LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun - -# FROM release as test - -# ENV PATH /opt/bun/bin:$PATH -# ENV PATH /bun/packages/bun-linux-aarch64:/bun/packages/bun-linux-x64:$PATH -# ENV BUN_INSTALL /opt/bun - -# WORKDIR /bun - -# COPY ./test /bun/test -# COPY ./test/snippets/package-json-exports/_node_modules_copy /bun/test/snippets/package-json-exports/_node_modules_copy -# CMD [ "bash", "-c", "npm install && cd /bun/test/snippets && npm install && cd /bun && make copy-test-node-modules test-all"] - - -# # FROM bun - diff --git a/docs/upgrading-webkit.md b/docs/upgrading-webkit.md index dc67e9e09..ac14885f7 100644 --- a/docs/upgrading-webkit.md +++ b/docs/upgrading-webkit.md @@ -44,14 +44,14 @@ src/bun.js/WebKit/WebKitBuild/Release/bin/jsc --help Then, clear out our bindings and regenerate the C++<>Zig headers: ```bash -make clean-bindings jsc-bindings-headers generate-builtins +make clean-bindings headers builtins ``` Now update Bun's bindings wherever there are compiler errors: ```bash # It will take awhile if you don't pass -j here -make jsc-bindings-mac -j10 +make bindings -j10 ``` This is the hard part. It might involve digging through WebKit's commit history to figure out what changed and why. Fortunately, WebKit contributors write great commit messages. |