tinygo: 0.37.0 -> 0.39.0 (#420463)

Changed files
+18 -25
pkgs
+10 -12
pkgs/by-name/ti/tinygo/0001-GNUmakefile.patch
···
diff --git a/GNUmakefile b/GNUmakefile
+
index f078bde5..901c8e08 100644
--- a/GNUmakefile
+++ b/GNUmakefile
-
@@ -14,11 +14,6 @@ LLVM_VERSIONS = 19 18 17 16 15
+
@@ -21,11 +21,6 @@ LLVM_VERSIONS = 19 18 17 16 15
errifempty = $(if $(1),$(1),$(error $(2)))
detect = $(shell which $(call errifempty,$(firstword $(foreach p,$(2),$(shell command -v $(p) 2> /dev/null && echo $(p)))),failed to locate $(1) at any of: $(2)))
toolSearchPathsVersion = $(1)-$(2)
-
-ifeq ($(shell uname -s),Darwin)
+
-ifeq ($(uname),Darwin)
- # Also explicitly search Brew's copy, which is not in PATH by default.
- BREW_PREFIX := $(shell brew --prefix)
- toolSearchPathsVersion += $(BREW_PREFIX)/opt/llvm@$(2)/bin/$(1)-$(2) $(BREW_PREFIX)/opt/llvm@$(2)/bin/$(1)
···
# First search for a custom built copy, then move on to explicitly version-tagged binaries, then just see if the tool is in path with its normal name.
findLLVMTool = $(call detect,$(1),$(abspath llvm-build/bin/$(1)) $(foreach ver,$(LLVM_VERSIONS),$(call toolSearchPathsVersion,$(1),$(ver))) $(1))
CLANG ?= $(call findLLVMTool,clang)
-
@@ -939,10 +934,9 @@ endif
+
@@ -942,10 +937,9 @@ endif
wasmtest:
$(GO) test ./tests/wasm
-
-build/release: tinygo gen-device wasi-libc $(if $(filter 1,$(USE_SYSTEM_BINARYEN)),,binaryen)
+
-build/release: tinygo gen-device $(if $(filter 1,$(USE_SYSTEM_BINARYEN)),,binaryen)
+build/release:
@mkdir -p build/release/tinygo/bin
@mkdir -p build/release/tinygo/lib/bdwgc
- @mkdir -p build/release/tinygo/lib/clang/include
@mkdir -p build/release/tinygo/lib/CMSIS/CMSIS
@mkdir -p build/release/tinygo/lib/macos-minimal-sdk
-
@mkdir -p build/release/tinygo/lib/mingw-w64/mingw-w64-crt/lib-common
-
@@ -964,7 +958,6 @@ ifneq ($(USE_SYSTEM_BINARYEN),1)
+
@mkdir -p build/release/tinygo/lib/mingw-w64/mingw-w64-crt/crt
+
@@ -968,7 +962,6 @@ ifneq ($(USE_SYSTEM_BINARYEN),1)
@cp -p build/wasm-opt$(EXE) build/release/tinygo/bin
endif
@cp -rp lib/bdwgc/* build/release/tinygo/lib/bdwgc
···
@cp -rp lib/CMSIS/CMSIS/Include build/release/tinygo/lib/CMSIS/CMSIS
@cp -rp lib/CMSIS/README.md build/release/tinygo/lib/CMSIS
@cp -rp lib/macos-minimal-sdk/* build/release/tinygo/lib/macos-minimal-sdk
-
@@ -1026,8 +1019,7 @@ endif
-
@cp -rp lib/wasi-libc/libc-top-half/musl/include build/release/tinygo/lib/wasi-libc/libc-top-half/musl
-
@cp -rp lib/wasi-libc/sysroot build/release/tinygo/lib/wasi-libc/sysroot
+
@@ -1060,8 +1053,7 @@ endif
+
@cp -rp lib/wasi-libc/libc-top-half/musl/src/unistd build/release/tinygo/lib/wasi-libc/libc-top-half/musl/src
+
@cp -rp lib/wasi-libc/libc-top-half/sources build/release/tinygo/lib/wasi-libc/libc-top-half
@cp -rp lib/wasi-cli/wit build/release/tinygo/lib/wasi-cli/wit
- @cp -rp llvm-project/compiler-rt/lib/builtins build/release/tinygo/lib/compiler-rt-builtins
- @cp -rp llvm-project/compiler-rt/LICENSE.TXT build/release/tinygo/lib/compiler-rt-builtins
···
@cp -rp src build/release/tinygo/src
@cp -rp targets build/release/tinygo/targets
-
--
-
2.48.1
-
+8 -13
pkgs/by-name/ti/tinygo/package.nix
···
buildGoModule,
fetchFromGitHub,
makeWrapper,
-
llvmPackages,
+
llvmPackages_20,
go,
xar,
binaryen,
···
}:
let
+
# nixpkgs typically updates default llvm version faster than tinygo releases
+
# which ends up breaking this build. Use fixed version for each release.
llvmMajor = lib.versions.major llvm.version;
-
inherit (llvmPackages)
+
inherit (llvmPackages_20)
llvm
clang
compiler-rt
···
buildGoModule rec {
pname = "tinygo";
-
version = "0.37.0";
+
version = "0.39.0";
src = fetchFromGitHub {
owner = "tinygo-org";
repo = "tinygo";
tag = "v${version}";
-
hash = "sha256-I/9JXjt6aF/80Mh3iRgUYXv4l+m3XIpmKsIBviOuWCo=";
+
hash = "sha256-uooBZl4u9EHfs1DTI/dQ9Uz1uVOmRcIClEMB7D1q8Lk=";
fetchSubmodules = true;
# The public hydra server on `hydra.nixos.org` is configured with
# `max_output_size` of 3GB. The purpose of this `postFetch` step
···
'';
};
-
vendorHash = "sha256-juADakh+s8oEY9UXUwxknvVeL1TgB/zRi8Xtzt/4qPA=";
+
vendorHash = "sha256-Vae7IFACioxH4E61GX/X7G19/ITbajp96VNUhliV8ls=";
patches = [
./0001-GNUmakefile.patch
···
"-X github.com/tinygo-org/tinygo/goenv.TINYGOROOT=${placeholder "out"}/share/tinygo"
"-X github.com/tinygo-org/tinygo/goenv.clangResourceDir=${clang.cc.lib}/lib/clang/${llvmMajor}"
];
+
tags = [ "llvm${llvmMajor}" ];
subPackages = [ "." ];
# Output contains static libraries for different arm cpus
···
# Move binary
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