Skip to content

583 create build folder for system build#640

Merged
rennergade merged 2 commits intomainfrom
583-create-build-folder-for-system-build
Jan 27, 2026
Merged

583 create build folder for system build#640
rennergade merged 2 commits intomainfrom
583-create-build-folder-for-system-build

Conversation

@m-hemmings
Copy link
Member

ISSUE

WASMTIME_PROFILE introduces ambiguity by requiring scripts to resolve profile-specific Wasmtime paths (debug vs release). This results in multiple binaries, conditional path logic, and fragile environment-dependent behavior across builds and tooling.

Changes

Makefile

  • Introduces build/ as the canonical output directory for build artifacts.
  • Copies Wasmtime binaries into:
    • build/wasmtime (release)
    • build/wasmtime-debug (debug / lind_debug)
  • Copies the generated sysroot into build/sysroot via a dedicated sync step.
  • Ensures build targets create the build/ directory before emitting artifacts.

Scripts

scripts/lind_compile

  • Removes dependence on WASMTIME_PROFILE.
  • Resolves Wasmtime from build/wasmtime, with fallback to build/wasmtime-debug, then src/wasmtime/target/release/wasmtime.
  • Prefers build/sysroot, with fallback to src/glibc/sysroot if the build artifact is not present.

scripts/lind_run

  • Uses the same canonical Wasmtime resolution logic as lind_compile.
  • Eliminates profile-based path selection.

Docker

Dockerfile.dev

  • Replaces manual profile-based prebuild steps with make lind-debug.
  • Makes the repository URL configurable via REPO_URL.

Dockerfile.e2e

  • Copies build/wasmtime and build/sysroot into the release image.
  • Aligns container layout with the new canonical build artifact paths.

@m-hemmings m-hemmings linked an issue Jan 27, 2026 that may be closed by this pull request
Copy link
Member

@Yaxuan-w Yaxuan-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

@m-hemmings m-hemmings marked this pull request as ready for review January 27, 2026 21:46
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases100
Number of Successes100
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chartests.cSuccessNone
Success
chdir_getcwd.cSuccessNone
Success
chmod.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fstatfs.cSuccessNone
Success
fsync.cSuccessNone
Success
ftruncate.cSuccessNone
Success
getcwd.cSuccessNone
Success
getrandom.cSuccessNone
Success
ioctl.cSuccessNone
Success
link.cSuccessNone
Success
lseek.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
statfs.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlink.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
writev.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
malloc_large.cSuccessNone
Success
memcpy.cSuccessNone
Success
memory_error_test.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_aligned.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
mprotect.cSuccessNone
Success
mprotect_boundary.cSuccessNone
Success
mprotect_end_region.cSuccessNone
Success
mprotect_middle_region.cSuccessNone
Success
mprotect_multiple_times.cSuccessNone
Success
mprotect_same_value.cSuccessNone
Success
mprotect_spanning_regions.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
getsockopt.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple-select.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
fork2malloc.cSuccessNone
Success
forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getpid.cSuccessNone
Success
getppid.cSuccessNone
Success
getuid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
template.cSuccessNone
Success
thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_anychild.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
signal_SIGCHLD.cSuccessNone
Success
signal_int_ignored.cSuccessNone
Success
sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases27
Number of Successes27
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
clock_gettime_highlevel.cSuccessNone
Success
dup.cSuccessNone
Success
read.cSuccessNone
Success
Memory Tests
mmap_complicated.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
Process Tests
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forknodup.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success

Copy link
Contributor

@rennergade rennergade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great. Thanks @m-hemmings

@rennergade rennergade merged commit ef160ef into main Jan 27, 2026
5 checks passed
celinehoang177 pushed a commit that referenced this pull request Feb 2, 2026
* Update Dockerfiles and Makefile for build and sysroot folder

* update lind scripts for using new build/sysroot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: Add/Create build folder for system build

3 participants