aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.devcontainer/README.md27
-rw-r--r--.devcontainer/devcontainer.json11
-rw-r--r--.devcontainer/scripts/zig-env.sh2
-rw-r--r--Dockerfile.base73
-rw-r--r--Dockerfile.devcontainer28
-rw-r--r--Dockerfile.musl139
-rw-r--r--docs/upgrading-webkit.md4
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.