fix(systems/etna): unbreak cloudflared (the horrors)

This commit is contained in:
uku 2025-04-03 15:12:05 +02:00
parent b271bbf0e8
commit 80c28d4f3b
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o
2 changed files with 45 additions and 11 deletions

View file

@ -0,0 +1,23 @@
Starting from go1.14, go verifes that vendor/modules.txt matches the requirements
and replacements listed in the main module go.mod file, and it is a hard failure if
vendor/modules.txt is missing.
Relax module consistency checks and switch back to pre go1.14 behaviour if
vendor/modules.txt is missing regardless of go version requirement in go.mod.
This has been ported from FreeBSD: https://reviews.freebsd.org/D24122
See https://github.com/golang/go/issues/37948 for discussion.
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.

View file

@ -8,16 +8,27 @@
let
tunnelId = "57f51ad7-25a0-45f3-b113-0b6ae0b2c3e5";
patchedBuildGoModule = pkgs.buildGoModule.override {
go = pkgs.buildPackages.go_1_22.overrideAttrs {
pname = "cloudflare-go";
version = "1.22.5-devel-cf";
src = pkgs.fetchFromGitHub {
owner = "cloudflare";
repo = "go";
rev = "af19da5605ca11f85776ef7af3384a02a315a52b";
hash = "sha256-6VT9CxlHkja+mdO1DeFoOTq7gjb3T5jcf2uf9TB/CkU=";
};
patchedCloudflared = pkgs.cloudflared.override {
buildGoModule = pkgs.buildGoModule.override {
go = pkgs.buildPackages.go_1_23.overrideAttrs (old: {
pname = "cloudflare-go";
version = "1.22.5-devel-cf";
src = pkgs.fetchFromGitHub {
owner = "cloudflare";
repo = "go";
rev = "af19da5605ca11f85776ef7af3384a02a315a52b";
hash = "sha256-6VT9CxlHkja+mdO1DeFoOTq7gjb3T5jcf2uf9TB/CkU=";
};
patches = map (
patch:
if (baseNameOf patch == "go_no_vendor_checks-1.23.patch") then
../../exprs/go-no-vendor-1.22.patch
else
patch
) old.patches;
});
};
};
@ -89,7 +100,7 @@ in
cloudflared = {
enable = true;
package = pkgs.cloudflared.override { buildGoModule = patchedBuildGoModule; };
package = patchedCloudflared.overrideAttrs { meta.broken = false; };
tunnels.${tunnelId} = {
credentialsFile = cfTunnelSecret.path;
default = "http_status:404";