Skip to content

Commit ae9c8d6

Browse files
committed
seperate docker for local, to help with incorrect caching
1 parent 3ddccc4 commit ae9c8d6

9 files changed

Lines changed: 43 additions & 17 deletions

File tree

host/src/host_header.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,9 @@ bool host_init(pntr_app *app) {
354354
add_font(pntr_load_font_default());
355355

356356
bool ret = cart_init(app, wasmBytes, wasmSize);
357-
if (cartBytes) free(cartBytes);
357+
// NOTE: Do NOT free cartBytes here! PHYSFS_mountMemory keeps a pointer to it.
358+
// It will be freed when PHYSFS_deinit() is called at shutdown.
359+
// if (cartBytes) free(cartBytes);
358360
free(wasmBytes);
359361
return ret;
360362
}

package.json

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@
2020
"cart:input_js": "mkdir -p build/carts && docker run --user $(id -u):$(id -g) -it -v ./carts/js/input:/src -v ./build/carts:/out konsumer/null0-cart-quickjs input_js",
2121
"carts": "npm-run-all --parallel 'cart:*' && cd build/carts && ls *.null0 > list.txt",
2222
"docker_setup": "docker buildx create --name multiarch --driver docker-container --bootstrap && docker buildx use multiarch && docker run --privileged --rm tonistiigi/binfmt --install all",
23-
"docker:cart_c": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-c . -f tools/docker/null0-cart-c.Dockerfile",
24-
"docker:cart_assemblyscript": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-assemblyscript . -f tools/docker/null0-cart-assemblyscript.Dockerfile",
25-
"docker:cart_nelua": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-nelua . -f tools/docker/null0-cart-nelua.Dockerfile",
26-
"docker:cart_nim": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-nim . -f tools/docker/null0-cart-nim.Dockerfile",
27-
"docker:cart_quickjs": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-quickjs . -f tools/docker/null0-cart-quickjs.Dockerfile",
23+
"docker:cart_c": "docker build --no-cache -f tools/docker/null0-cart-c.Dockerfile -t konsumer/null0-cart-c .",
24+
"docker:cart_assemblyscript": "docker build --no-cache -f tools/docker/null0-cart-assemblyscript.Dockerfile -t konsumer/null0-cart-assemblyscript .",
25+
"docker:cart_nelua": "docker build --no-cache -f tools/docker/null0-cart-nelua.Dockerfile -t konsumer/null0-cart-nelua .",
26+
"docker:cart_nim": "docker build --no-cache -f tools/docker/null0-cart-nim.Dockerfile -t konsumer/null0-cart-nim .",
27+
"docker:cart_quickjs": "docker build --no-cache -f tools/docker/null0-cart-quickjs.Dockerfile -t konsumer/null0-cart-quickjs .",
2828
"docker": "npm-run-all --serial 'docker:*'",
29+
"docker_publish:cart_c": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-c . -f tools/docker/null0-cart-c.Dockerfile",
30+
"docker_publish:cart_assemblyscript": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-assemblyscript . -f tools/docker/null0-cart-assemblyscript.Dockerfile",
31+
"docker_publish:cart_nelua": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-nelua . -f tools/docker/null0-cart-nelua.Dockerfile",
32+
"docker_publish:cart_nim": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-nim . -f tools/docker/null0-cart-nim.Dockerfile",
33+
"docker_publish:cart_quickjs": "docker buildx build --push --platform linux/amd64,linux/arm64 -t konsumer/null0-cart-quickjs . -f tools/docker/null0-cart-quickjs.Dockerfile",
34+
"docker_publish": "npm-run-all --serial 'docker_publish:*'",
2935
"start": "live-server --mount=/carts:./build/carts --mount=/null0.mjs:./wbuild/host/null0.mjs --mount=/carts:./build/carts webroot",
3036
"prestart": "npm-run-all --parallel host:web carts",
3137
"gen:host": "node tools/gen_host.js",

tools/docker/build_assemblyscript.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ echo "Compiling Assemblyscript cart from /src/ to /out/"
1717

1818
mkdir -p "/tmp/${CART_NAME}"
1919

20-
cp -R /src/* /src/.* "/tmp/${CART_NAME}/" 2>/dev/null
20+
# Copy all files including hidden files (like .cartignore)
21+
cp -R /src/. "/tmp/${CART_NAME}/"
2122
cd "/tmp/${CART_NAME}/"
2223
asc --lib /usr/local/include --optimize -o main.wasm main.ts
2324

tools/docker/build_c.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ clang --version
2020

2121
mkdir -p "/tmp/${CART_NAME}"
2222

23-
cp -R /src/* /src/.* "/tmp/${CART_NAME}/" 2>/dev/null
23+
# Copy all files including hidden files (like .cartignore)
24+
cp -R /src/. "/tmp/${CART_NAME}/"
2425
cd "/tmp/${CART_NAME}/"
2526
clang -I /usr/local/include/ -Wl,--initial-memory=67108864,--max-memory=67108864,-z,stack-size=8388608 -o main.wasm main.c
2627

tools/docker/build_nelua.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ echo "Compiling nelua cart from /src/ to /out/"
1717

1818
mkdir -p "/tmp/${CART_NAME}"
1919

20-
cp -R /src/* /src/.* "/tmp/${CART_NAME}/" 2>/dev/null
20+
# Copy all files including hidden files (like .cartignore)
21+
cp -R /src/. "/tmp/${CART_NAME}/"
2122
cd "/tmp/${CART_NAME}/"
2223
nelua --cflags="-I /usr/local/include/" -L /usr/local/include/ main.nelua -r --cc /opt/wasi-sdk/bin/clang -o main.wasm
2324

tools/docker/build_nim.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ echo "Compiling Nim cart from /src/ to /out/"
1717

1818
mkdir -p "/tmp/${CART_NAME}"
1919

20-
cp -R /src/* /src/.* "/tmp/${CART_NAME}/" 2>/dev/null
20+
# Copy all files including hidden files (like .cartignore)
21+
cp -R /src/. "/tmp/${CART_NAME}/"
2122
cd "/tmp/${CART_NAME}/"
2223
nim c --threads:off --noMain --cc:env -d:release -d:wasi -d:useMalloc --cpu:wasm32 --os:any --passC:"-D_WASI_EMULATED_SIGNAL" --passL:"-lwasi-emulated-signal" --passL:"-Wl,--allow-undefined" -o:main.wasm main.nim
2324

tools/docker/build_quickjs.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ echo "Compiling QuickJS cart from /src/ to /out/"
1717

1818
mkdir -p "/tmp/${CART_NAME}"
1919

20-
cp -R /src/* /src/.* /usr/local/lib/main.wasm "/tmp/${CART_NAME}/" 2>/dev/null
20+
# Copy all files including hidden files (like .cartignore)
21+
cp -R /src/. "/tmp/${CART_NAME}/"
22+
cp /usr/local/lib/main.wasm "/tmp/${CART_NAME}/"
2123

2224
/usr/local/bin/zipcart.sh "${CART_NAME}" "/tmp/${CART_NAME}/" /out

tools/docker/zipcart.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,23 @@ matches_pattern() {
3535
[[ "$pattern" == */ ]] && pattern="${pattern}*"
3636

3737
# Check if file matches pattern (anywhere in path or at root)
38+
# Note: pattern must be unquoted for glob matching to work
39+
# shellcheck disable=SC2053
3840
[[ "$file" == $pattern || "$file" == */$pattern ]]
3941
}
4042

4143
should_ignore() {
4244
local file="$1"
4345
local ignore_file="$2"
44-
45-
while IFS= read -r pattern; do
46+
47+
# Read patterns line by line, handling files without trailing newline
48+
while IFS= read -r pattern || [[ -n "$pattern" ]]; do
4649
# Skip empty lines and comments
4750
[[ -z "$pattern" || "$pattern" =~ ^[[:space:]]*# ]] && continue
48-
51+
4952
# Trim whitespace
5053
pattern=$(echo "$pattern" | xargs)
51-
54+
5255
# Handle negation patterns (!)
5356
if [[ "$pattern" == !* ]]; then
5457
pattern="${pattern#!}"
@@ -57,7 +60,7 @@ should_ignore() {
5760
matches_pattern "$file" "$pattern" && return 0 # Ignore
5861
fi
5962
done < "$ignore_file"
60-
63+
6164
return 1 # Don't ignore by default
6265
}
6366

webroot/null0.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,16 @@ export default async function loadCart(cartUrl, canvas) {
2121
const wasmBytes = h.HEAPU8.subarray(wasmBytesPtr, wasmBytesPtr + wasmSize)
2222

2323
const wasi_snapshot_preview1 = new WasiPreview1({ fs })
24-
const imports = { wasi_snapshot_preview1, null0: {} }
24+
const imports = {
25+
wasi_snapshot_preview1,
26+
null0: {},
27+
env: {
28+
// these are for assemblyscript
29+
abort(...args) {
30+
console.log('unhandled abort', args)
31+
}
32+
}
33+
}
2534

2635
// expose host-functions that are named _host_whatever as null0.whatever
2736
for (const f of Object.keys(h)) {

0 commit comments

Comments
 (0)