From 414218b5b20bd3fb5cbaea27ed6942b72a187cc4 Mon Sep 17 00:00:00 2001 From: Paul Meyer Date: Sat, 4 Jan 2025 13:42:55 +0100 Subject: [PATCH] buildGoModule: fix GO_NO_VENDOR_CHECKS for v1.23+ There was an additional check added for vendor/modules.txt when loading packages, see https://github.com/golang/go/commit/38ee0c7630e999f97d96899ecf4e8d0230236cd6#diff-61fb6e44eac25bd4d6a8a64b3f38ee8a41faaefd1ef481170a011ecfc0f7c76bR344 The new version of the patch tries to also disable these checks. Signed-off-by: Paul Meyer (cherry picked from commit 75dfe81caf85265943e23070f98c1ddc8c69aa18) --- pkgs/development/compilers/go/1.23.nix | 2 +- .../go/go_no_vendor_checks-1.23.patch | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/go/go_no_vendor_checks-1.23.patch diff --git a/pkgs/development/compilers/go/1.23.nix b/pkgs/development/compilers/go/1.23.nix index 4d056b1504493..08c17cca8c037 100644 --- a/pkgs/development/compilers/go/1.23.nix +++ b/pkgs/development/compilers/go/1.23.nix @@ -94,7 +94,7 @@ stdenv.mkDerivation (finalAttrs: { inherit tzdata; }) ./remove-tools-1.11.patch - ./go_no_vendor_checks-1.22.patch + ./go_no_vendor_checks-1.23.patch ]; GOOS = if stdenv.targetPlatform.isWasi then "wasip1" else stdenv.targetPlatform.parsed.kernel.name; diff --git a/pkgs/development/compilers/go/go_no_vendor_checks-1.23.patch b/pkgs/development/compilers/go/go_no_vendor_checks-1.23.patch new file mode 100644 index 0000000000000..eaffb1bef6481 --- /dev/null +++ b/pkgs/development/compilers/go/go_no_vendor_checks-1.23.patch @@ -0,0 +1,26 @@ +diff --git a/src/cmd/go/internal/modload/import.go b/src/cmd/go/internal/modload/import.go +index a3105b6b6d..0e10154a70 100644 +--- a/src/cmd/go/internal/modload/import.go ++++ b/src/cmd/go/internal/modload/import.go +@@ -345,7 +345,7 @@ func importFromModules(ctx context.Context, path string, rs *Requirements, mg *M + // vendor/modules.txt does not exist or the user manually added directories to the vendor directory. + // Go 1.23 and later require vendored packages to be present in modules.txt to be imported. + _, ok := vendorPkgModule[path] +- if ok || (gover.Compare(MainModules.GoVersion(), gover.ExplicitModulesTxtImportVersion) < 0) { ++ if ok || (gover.Compare(MainModules.GoVersion(), gover.ExplicitModulesTxtImportVersion) < 0) || os.Getenv("GO_NO_VENDOR_CHECKS") == "1" { + mods = append(mods, vendorPkgModule[path]) + dirs = append(dirs, dir) + roots = append(roots, vendorDir) +diff --git a/src/cmd/go/internal/modload/vendor.go b/src/cmd/go/internal/modload/vendor.go +index b2cb44100e..05bf3829d5 100644 +--- a/src/cmd/go/internal/modload/vendor.go ++++ b/src/cmd/go/internal/modload/vendor.go +@@ -159,7 +159,7 @@ func checkVendorConsistency(indexes []*modFileIndex, modFiles []*modfile.File, m + panic(fmt.Errorf("not in workspace mode but number of indexes is %v, not 1", len(indexes))) + } + index := indexes[0] +- if gover.Compare(index.goVersion, "1.14") < 0 { ++ if gover.Compare(index.goVersion, "1.14") < 0 || (os.Getenv("GO_NO_VENDOR_CHECKS") == "1" && len(vendorMeta) == 0) { + // Go versions before 1.14 did not include enough information in + // vendor/modules.txt to check for consistency. + // If we know that we're on an earlier version, relax the consistency check.