Skip to content

Commit 7ef045b

Browse files
committed
Add build for x86_64 x musl x debug x asan
1 parent 26e6460 commit 7ef045b

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

.github/workflows/build-reusable.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,12 @@ jobs:
289289
os: linux-x64-gh
290290
package_json_arch: "x64"
291291
CMAKE_BUILD_TYPE: "Debug"
292+
- lto_flag: ""
293+
label: bun-webkit-linux-amd64-musl-debug-asan
294+
os: linux-x64-gh
295+
package_json_arch: "x64"
296+
CMAKE_BUILD_TYPE: "Debug"
297+
ENABLE_SANITIZERS: "address,undefined"
292298
- lto_flag: ""
293299
label: bun-webkit-linux-arm64-musl-debug
294300
os: linux-arm64-gh
@@ -329,9 +335,11 @@ jobs:
329335
with:
330336
install: true
331337
- name: Run
338+
env:
339+
ENABLE_SANITIZERS: ${{matrix.ENABLE_SANITIZERS}}
332340
run: |
333341
rm -rf ${{runner.temp}}/bun-webkit ${{runner.temp}}/bun-webkit.tar.gz
334-
WEBKIT_RELEASE_TYPE=${{matrix.CMAKE_BUILD_TYPE}} CPU="native" cpu=native LTO_FLAG="${{matrix.lto_flag}}" temp=${{runner.temp}} bash musl-release.sh
342+
WEBKIT_RELEASE_TYPE=${{matrix.CMAKE_BUILD_TYPE}} CPU="native" cpu=native LTO_FLAG="${{matrix.lto_flag}}" temp=${{runner.temp}} ENABLE_SANITIZERS="${{matrix.ENABLE_SANITIZERS}}" bash musl-release.sh
335343
cd ${{runner.temp}}
336344
echo "#define BUN_WEBKIT_VERSION \"${{ inputs.build_ref }}\"" >> bun-webkit/include/cmakeconfig.h
337345
echo '{ "name": "${{matrix.label}}", "version": "0.0.1-${{ inputs.build_ref }}", "os": ["linux"], "cpu": ["${{matrix.package_json_arch}}"], "repository": "https://github.com/${{github.repository}}" }' > bun-webkit/package.json
@@ -452,6 +460,10 @@ jobs:
452460
with:
453461
name: bun-webkit-linux-amd64-musl-debug
454462
path: ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug
463+
- uses: actions/download-artifact@v4
464+
with:
465+
name: bun-webkit-linux-amd64-musl-debug-asan
466+
path: ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug-asan
455467
- uses: actions/download-artifact@v4
456468
with:
457469
name: bun-webkit-linux-arm64-musl-debug
@@ -480,6 +492,7 @@ jobs:
480492
mv ${{runner.temp}}/bun-webkit-linux-amd64-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-debug.tar.gz
481493
mv ${{runner.temp}}/bun-webkit-linux-arm64-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-debug.tar.gz
482494
mv ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-musl-debug.tar.gz
495+
mv ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-musl-debug-asan.tar.gz
483496
mv ${{runner.temp}}/bun-webkit-linux-arm64-musl-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-musl-debug.tar.gz
484497
mv ${{runner.temp}}/bun-webkit-linux-amd64-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-asan.tar.gz
485498
mv ${{runner.temp}}/bun-webkit-linux-arm64-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-asan.tar.gz
@@ -529,6 +542,7 @@ jobs:
529542
./out/bun-webkit-linux-amd64-musl-lto.tar.gz
530543
./out/bun-webkit-linux-arm64-musl-lto.tar.gz
531544
./out/bun-webkit-linux-amd64-musl-debug.tar.gz
545+
./out/bun-webkit-linux-amd64-musl-debug-asan.tar.gz
532546
./out/bun-webkit-linux-arm64-musl-debug.tar.gz
533547
534548
- uses: softprops/action-gh-release@v1

Dockerfile.musl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ ARG CPU=native
44
ARG LTO_FLAG="-flto=full -fwhole-program-vtables -fforce-emit-vtables "
55
ARG LLVM_VERSION="19"
66
ARG DEFAULT_CFLAGS="-mno-omit-leaf-frame-pointer -g -fno-omit-frame-pointer -ffunction-sections -fdata-sections -faddrsig -fno-unwind-tables -fno-asynchronous-unwind-tables -DU_STATIC_IMPLEMENTATION=1 "
7+
ARG ENABLE_SANITIZERS=""
78

89
FROM alpine:3.21 as base
910

@@ -13,6 +14,7 @@ ARG CPU
1314
ARG LTO_FLAG
1415
ARG LLVM_VERSION
1516
ARG DEFAULT_CFLAGS
17+
ARG ENABLE_SANITIZERS
1618

1719
RUN apk update
1820
RUN apk add --no-cache cmake make clang19 clang19-static clang19-dev llvm19-dev llvm19-static musl-dev git lld libgcc gcc g++ libstdc++ build-base lld-dev llvm19-libs libc-dev xz zlib zlib-dev libxml2 libxml2-dev
@@ -41,6 +43,7 @@ ARG CPU
4143
ARG LTO_FLAG
4244
ARG LLVM_VERSION
4345
ARG DEFAULT_CFLAGS
46+
ARG ENABLE_SANITIZERS
4447

4548
RUN apk add --no-cache cpio curl tar
4649

@@ -65,6 +68,7 @@ ARG CPU
6568
ARG LTO_FLAG
6669
ARG LLVM_VERSION
6770
ARG DEFAULT_CFLAGS
71+
ARG ENABLE_SANITIZERS
6872

6973
RUN apk add --no-cache cpio curl file gnupg ninja ruby unzip rsync perl python3 openssl-dev openssl linux-headers
7074

@@ -80,7 +84,11 @@ COPY --from=build_icu /output /icu
8084
RUN --mount=type=tmpfs,target=/webkitbuild \
8185
export CFLAGS="${DEFAULT_CFLAGS} $CFLAGS $LTO_FLAG -ffile-prefix-map=/webkit/Source=vendor/WebKit/Source -ffile-prefix-map=/webkitbuild/=. " && \
8286
export CXXFLAGS="${DEFAULT_CFLAGS} $CXXFLAGS $LTO_FLAG -fno-c++-static-destructors -ffile-prefix-map=/webkit/Source=vendor/WebKit/Source -ffile-prefix-map=/webkitbuild/=. " && \
87+
export ENABLE_ASSERTS="AUTO" && \
8388
export LDFLAGS="-fuse-ld=lld $LDFLAGS " && \
89+
if [ -n "$ENABLE_SANITIZERS" ]; then \
90+
export ENABLE_ASSERTS="ON"; \
91+
fi && \
8492
cd /webkitbuild && \
8593
cmake \
8694
-DPORT="JSCOnly" \
@@ -100,6 +108,8 @@ RUN --mount=type=tmpfs,target=/webkitbuild \
100108
-DCMAKE_C_FLAGS="$CFLAGS" \
101109
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
102110
-DICU_ROOT=/icu \
111+
-DENABLE_SANITIZERS="$ENABLE_SANITIZERS" \
112+
-DENABLE_ASSERTS="$ENABLE_ASSERTS" \
103113
-G Ninja \
104114
/webkit && \
105115
cd /webkitbuild && \

musl-release.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ if [ "$WEBKIT_RELEASE_TYPE" == "relwithdebuginfo" ]; then
4040
CONTAINER_NAME=bun-webkit-linux-$BUILDKIT_ARCH-dbg
4141
fi
4242

43+
export ENABLE_SANITIZERS=${ENABLE_SANITIZERS:-}
44+
4345
mkdir -p $temp
4446
rm -rf $temp/bun-webkit
4547

46-
docker buildx build -f Dockerfile.musl -t $CONTAINER_NAME --build-arg LTO_FLAG="$LTO_FLAG" --build-arg WEBKIT_RELEASE_TYPE=$WEBKIT_RELEASE_TYPE --progress=plain --platform=linux/$BUILDKIT_ARCH --target=artifact --output type=local,dest=$temp/bun-webkit .
48+
docker buildx build -f Dockerfile.musl -t $CONTAINER_NAME --build-arg ENABLE_SANITIZERS=$ENABLE_SANITIZERS --build-arg LTO_FLAG="$LTO_FLAG" --build-arg WEBKIT_RELEASE_TYPE=$WEBKIT_RELEASE_TYPE --progress=plain --platform=linux/$BUILDKIT_ARCH --target=artifact --output type=local,dest=$temp/bun-webkit .

0 commit comments

Comments
 (0)