From edcd078d3806741902e0ea62d7cc9686f82dd3cb Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Fri, 20 Oct 2023 18:25:49 +0200 Subject: [PATCH] tinygo: use our own wasi-libc build (not the Nix version) We need our own build because we modify the build flags in a particular way. Also, we've only tested wasi-libc at the version pinned in the submodule, later versions may or may not work correctly. --- pkgs/development/compilers/tinygo/default.nix | 17 ++++++++--------- pkgs/top-level/all-packages.nix | 1 - 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/pkgs/development/compilers/tinygo/default.nix b/pkgs/development/compilers/tinygo/default.nix index 9a2739f1b74b..034d444e83c8 100644 --- a/pkgs/development/compilers/tinygo/default.nix +++ b/pkgs/development/compilers/tinygo/default.nix @@ -7,7 +7,6 @@ , llvmPackages , go , xar -, wasi-libc , binaryen , avrdude , gdb @@ -66,12 +65,6 @@ buildGoModule rec { stripDebugList = [ "bin" ]; postPatch = '' - # Copy wasi-libc, symlink seems not working - rm -rf lib/wasi-libc/* - mkdir -p lib/wasi-libc/sysroot/lib/wasm32-wasi lib/wasi-libc/sysroot/include - cp -a ${wasi-libc}/lib/* lib/wasi-libc/sysroot/lib/wasm32-wasi/ - cp -a ${wasi-libc.dev}/include/* lib/wasi-libc/sysroot/include/ - # Borrow compiler-rt builtins from our source # See https://github.com/tinygo-org/tinygo/pull/2471 mkdir -p lib/compiler-rt-builtins @@ -92,6 +85,14 @@ buildGoModule rec { mkdir -p build mv $GOPATH/bin/tinygo build/tinygo + # Build our own custom wasi-libc. + # This is necessary because we modify the build a bit for our needs (disable + # heap, enable debug symbols, etc). + make wasi-libc \ + CLANG="${lib.getBin clang.cc}/bin/clang -resource-dir ${clang.cc.lib}/lib/clang/${llvmMajor}" \ + LLVM_AR=${lib.getBin llvm}/bin/llvm-ar \ + LLVM_NM=${lib.getBin llvm}/bin/llvm-nm + make gen-device -j $NIX_BUILD_CORES export TINYGOROOT=$(pwd) @@ -116,8 +117,6 @@ buildGoModule rec { runHook postInstall ''; - disallowedReferences = [ wasi-libc ]; - meta = with lib; { homepage = "https://tinygo.org/"; description = "Go compiler for small places"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fe8a05758aeb..e648dd99dbf9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17209,7 +17209,6 @@ with pkgs; tinygo = callPackage ../development/compilers/tinygo { llvmPackages = llvmPackages_17; - wasi-libc = pkgsCross.wasi32.wasilibc; }; tinyscheme = callPackage ../development/interpreters/tinyscheme { };