aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile.base
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile.base')
-rw-r--r--Dockerfile.base145
1 files changed, 145 insertions, 0 deletions
diff --git a/Dockerfile.base b/Dockerfile.base
new file mode 100644
index 000000000..85b3a37b2
--- /dev/null
+++ b/Dockerfile.base
@@ -0,0 +1,145 @@
+FROM ubuntu:20.04 as bun-base-with-args
+
+FROM bun-base-with-args as bun-base
+
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# 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
+
+WORKDIR ${GITHUB_WORKSPACE}
+
+RUN apt-get update && \
+ apt-get install --no-install-recommends -y wget gnupg2 curl lsb-release wget software-properties-common && \
+ add-apt-repository ppa:longsleep/golang-backports && \
+ wget https://apt.llvm.org/llvm.sh --no-check-certificate && \
+ chmod +x llvm.sh && \
+ ./llvm.sh 12 && \
+ apt-get update && \
+ apt-get install --no-install-recommends -y \
+ ca-certificates \
+ curl \
+ gnupg2 \
+ software-properties-common \
+ cmake \
+ build-essential \
+ git \
+ libssl-dev \
+ ruby \
+ liblld-12-dev \
+ libclang-12-dev \
+ nodejs \
+ gcc \
+ g++ \
+ npm \
+ clang-12 \
+ clang-format-12 \
+ libc++-12-dev \
+ libc++abi-12-dev \
+ lld-12 \
+ libicu-dev \
+ wget \
+ unzip \
+ tar \
+ golang-go ninja-build pkg-config automake autoconf libtool curl && \
+ update-alternatives --install /usr/bin/cc cc /usr/bin/clang-12 90 && \
+ update-alternatives --install /usr/bin/cpp cpp /usr/bin/clang++-12 90 && \
+ update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-12 90 && \
+ npm install -g esbuild
+
+ENV CC=clang-12
+ENV CXX=clang++-12
+
+
+ARG BUILDARCH=amd64
+
+
+WORKDIR $GITHUB_WORKSPACE
+
+ENV WEBKIT_OUT_DIR ${WEBKIT_DIR}
+
+ENV JSC_BASE_DIR $WEBKIT_OUT_DIR
+ENV LIB_ICU_PATH ${GITHUB_WORKSPACE}/icu/source/lib
+ENV BUN_RELEASE_DIR ${BUN_RELEASE_DIR}
+ENV BUN_DEPS_OUT_DIR ${BUN_DEPS_OUT_DIR}
+
+RUN cd / && mkdir -p $BUN_RELEASE_DIR $BUN_DEPS_OUT_DIR ${BUN_DIR} ${BUN_DEPS_OUT_DIR}
+
+LABEL org.opencontainers.image.title="Bun base image ${BUILDARCH} (glibc)"
+LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun
+
+
+FROM bun-base as bun-base-with-zig-and-webkit
+
+ARG DEBIAN_FRONTEND=noninteractive
+ARG GITHUB_WORKSPACE=/build
+ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
+# 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
+
+WORKDIR $GITHUB_WORKSPACE
+
+RUN cd $GITHUB_WORKSPACE && \
+ curl -o zig-linux-$BUILDARCH.zip -L https://github.com/Jarred-Sumner/zig/releases/download/dec20/zig-linux-$BUILDARCH.zip && \
+ unzip -q zig-linux-$BUILDARCH.zip && \
+ 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/Bun-v0/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
+
+RUN cd $GITHUB_WORKSPACE && \
+ curl -o icu4c-66_1-src.tgz -L https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-src.tgz && \
+ tar -xzf icu4c-66_1-src.tgz && \
+ rm icu4c-66_1-src.tgz && \
+ cd icu/source && \
+ ./configure --enable-static --disable-shared && \
+ make -j$(nproc)
+
+ENV ZIG "${ZIG_PATH}/zig"
+
+LABEL org.opencontainers.image.title="Bun base image with zig & webkit ${BUILDARCH} (glibc)"
+LABEL org.opencontainers.image.source=https://github.com/jarred-sumner/bun
+
+
+FROM debian:bullseye-slim as bun-test-base
+# Original creator:
+# LABEL maintainer "Jessie Frazelle <jess@linux.com>"
+
+# Install Chromium
+# Yes, including the Google API Keys sucks but even debian does the same: https://packages.debian.org/stretch/amd64/chromium/filelist
+RUN apt-get update && apt-get install -y \
+ chromium \
+ chromium-l10n \
+ fonts-liberation \
+ fonts-roboto \
+ hicolor-icon-theme \
+ libcanberra-gtk-module \
+ libexif-dev \
+ libgl1-mesa-dri \
+ libgl1-mesa-glx \
+ libpangox-1.0-0 \
+ libv4l-0 \
+ fonts-symbola \
+ bash \
+ make \
+ psmisc \
+ curl \
+ --no-install-recommends \
+ && rm -rf /var/lib/apt/lists/* \
+ && mkdir -p /etc/chromium.d/ \
+ && /bin/echo -e 'export GOOGLE_API_KEY="AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k"\nexport GOOGLE_DEFAULT_CLIENT_ID="811574891467.apps.googleusercontent.com"\nexport GOOGLE_DEFAULT_CLIENT_SECRET="kdloedMFGdGla2P1zacGjAQh"' > /etc/chromium.d/googleapikeys && \
+ curl -L https://deb.nodesource.com/setup_16.x | bash - && \
+ apt-get update && \
+ apt-get install -y nodejs npm
+