From d1ac52da2c71e6ba67fc4796d4dcc3d3c1657c10 Mon Sep 17 00:00:00 2001 From: 190n Date: Tue, 20 May 2025 12:41:06 -0700 Subject: [PATCH 1/2] ci: use ARM EC2 instances for build-zig (#19781) --- .buildkite/ci.mjs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.buildkite/ci.mjs b/.buildkite/ci.mjs index c0ac6b0673..8aa1460057 100755 --- a/.buildkite/ci.mjs +++ b/.buildkite/ci.mjs @@ -331,16 +331,14 @@ function getZigAgent(platform, options) { return getEc2Agent( { os: "linux", - arch: "x64", + arch: "aarch64", abi: "musl", distro: "alpine", release: "3.21", }, options, { - instanceType: "c7i.2xlarge", - cpuCount: 4, - threadsPerCore: 1, + instanceType: "r8g.large", }, ); } From 259bf47abd1e9d1b4fe3e99b1b234bc90431b05f Mon Sep 17 00:00:00 2001 From: 190n Date: Tue, 20 May 2025 16:50:47 -0700 Subject: [PATCH 2/2] Add sourceMap to launch.json so lldb can find WebKit code (#19263) --- .vscode/launch.json | 271 ++++++++++++++++++++++++++++++---- package.json | 3 +- scripts/sync-webkit-source.ts | 26 ++++ 3 files changed, 268 insertions(+), 32 deletions(-) create mode 100644 scripts/sync-webkit-source.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 09bdfdbf2c..897472e9b7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,6 +5,9 @@ // - FORCE_COLOR=1 forces colors in the terminal // - "${workspaceFolder}/test" is the cwd for `bun test` so it matches CI, we should fix this later // - "cppvsdbg" is used instead of "lldb" on Windows, because "lldb" is too slow + // - Seeing WebKit files requires `vendor/WebKit` to exist and have code from the right commit. + // Run `bun sync-webkit-source` to ensure that folder is at the right commit. If you haven't + // cloned it at all, that script will suggest how. "version": "0.2.0", "configurations": [ // bun test [file] @@ -21,7 +24,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -36,13 +46,28 @@ "BUN_DEBUG_jest": "1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", "name": "Attach", "request": "attach", "pid": "${command:pickMyProcess}", + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -57,7 +82,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "0", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -72,7 +104,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -87,7 +126,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -102,7 +148,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -118,7 +171,14 @@ "BUN_INSPECT": "ws://localhost:0/?wait=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -139,7 +199,14 @@ "BUN_INSPECT": "ws://localhost:0/?break=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -160,7 +227,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -178,7 +252,14 @@ "GOMAXPROCS": "1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -192,7 +273,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -202,14 +290,18 @@ "args": ["run", "--watch", "${file}"], "cwd": "${fileDirname}", "env": { - // "BUN_DEBUG_DEBUGGER": "1", - // "BUN_DEBUG_INTERNAL_DEBUGGER": "1", "BUN_DEBUG_QUIET_LOGS": "1", "BUN_GARBAGE_COLLECTOR_LEVEL": "2", - // "BUN_INSPECT": "ws+unix:///var/folders/jk/8fzl9l5119598vsqrmphsw7m0000gn/T/tl15npi7qtf.sock?report=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -223,7 +315,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -239,7 +338,14 @@ "BUN_INSPECT": "ws://localhost:0/?wait=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -260,7 +366,14 @@ "BUN_INSPECT": "ws://localhost:0/?break=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -281,7 +394,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -296,7 +416,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "0", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -311,7 +438,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -326,7 +460,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -341,7 +482,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -357,7 +505,14 @@ "BUN_INSPECT": "ws://localhost:0/?wait=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -378,7 +533,14 @@ "BUN_INSPECT": "ws://localhost:0/?break=1", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -398,7 +560,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, // bun test [*] { @@ -413,7 +582,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -427,7 +603,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "0", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -442,7 +625,14 @@ "BUN_INSPECT": "ws://localhost:0/", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, "serverReadyAction": { "pattern": "https://debug.bun.sh/#localhost:([0-9]+)/", "uriFormat": "https://debug.bun.sh/#ws://localhost:%s/", @@ -461,7 +651,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, { "type": "lldb", @@ -475,7 +672,14 @@ "BUN_GARBAGE_COLLECTOR_LEVEL": "2", }, "console": "internalConsole", - // Don't pause when the GC runs while the debugger is open. + "sourceMap": { + // macOS + "/Users/runner/work/_temp/webkit-release/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/Users/runner/work/_temp/webkit-release/WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + // linux + "/webkitbuild/vendor/WebKit": "${workspaceFolder}/vendor/WebKit", + "/webkitbuild/.WTF/Headers": "${workspaceFolder}/vendor/WebKit/Source/WTF", + }, }, // Windows: bun test [file] { @@ -1133,6 +1337,11 @@ "handle SIGPWR nostop noprint pass", "source ${workspaceFolder}/misctools/gdb/std_gdb_pretty_printers.py", "source ${workspaceFolder}/misctools/gdb/zig_gdb_pretty_printers.py", + "set substitute-path /webkitbuild/vendor/WebKit ${workspaceFolder}/vendor/WebKit", + "set substitute-path /webkitbuild/.WTF/Headers ${workspaceFolder}/vendor/WebKit/Source/WTF", + // uncomment if you like + // "set disassembly-flavor intel", + "set print asm-demangle", ], }, ], diff --git a/package.json b/package.json index 48f4f36b02..e87e1e0efc 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "zig-format:check": "bun run analysis:no-llvm --target zig-format-check", "prettier": "bunx prettier@latest --plugin=prettier-plugin-organize-imports --config .prettierrc --write scripts packages src docs 'test/**/*.{test,spec}.{ts,tsx,js,jsx,mts,mjs,cjs,cts}' '!test/**/*fixture*.*'", "node:test": "node ./scripts/runner.node.mjs --quiet --exec-path=$npm_execpath --node-tests ", - "clean:zig": "rm -rf build/debug/cache/zig build/debug/CMakeCache.txt 'build/debug/*.o' .zig-cache zig-out || true" + "clean:zig": "rm -rf build/debug/cache/zig build/debug/CMakeCache.txt 'build/debug/*.o' .zig-cache zig-out || true", + "sync-webkit-source": "bun ./scripts/sync-webkit-source.ts" } } diff --git a/scripts/sync-webkit-source.ts b/scripts/sync-webkit-source.ts new file mode 100644 index 0000000000..9e7eb2601f --- /dev/null +++ b/scripts/sync-webkit-source.ts @@ -0,0 +1,26 @@ +import { join, dirname } from "node:path"; +import { existsSync } from "node:fs"; + +const bunRepo = dirname(import.meta.dir); +const webkitRepo = join(bunRepo, "vendor/WebKit"); +if (!existsSync(webkitRepo)) { + console.log("could not find WebKit clone"); + console.log("clone https://github.com/oven-sh/WebKit.git to vendor/WebKit"); + console.log("or create a symlink/worktree to an existing clone"); + process.exit(1); +} + +process.chdir(webkitRepo); +const checkedOutCommit = (await Bun.$`git rev-parse HEAD`.text()).trim(); +const cmakeContents = await Bun.file(join(bunRepo, "cmake/tools/SetupWebKit.cmake")).text(); +const expectedCommit = cmakeContents.match(/set\(WEBKIT_VERSION ([0-9a-f]{40})\)/)![1]; + +if (checkedOutCommit == expectedCommit) { + console.log(`already at commit ${expectedCommit}`); +} else { + console.log(`changing from ${checkedOutCommit} to ${expectedCommit}`); + await Bun.$`git checkout main`; + await Bun.$`git pull`; + // it is OK that this leaves you with a detached HEAD + await Bun.$`git checkout ${expectedCommit}`; +}