Skip to content

Commit

Permalink
Use the major version of golang at package time (Cherry-pick of #21523)…
Browse files Browse the repository at this point in the history
… (#21618)

Should hopefully fix #20723

---------

Co-authored-by: Sven Widén <sven.widen@gmail.com>
Co-authored-by: Huon Wilson <wilson.huon@gmail.com>
Co-authored-by: Tom Dyas <tom.dyas@gmail.com>
  • Loading branch information
4 people authored Nov 6, 2024
1 parent 66ea60d commit a89be49
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 2 deletions.
2 changes: 2 additions & 0 deletions docs/notes/2.23.x.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ Fix a bug where Pants raised an internal exception which occurred when compiling

Add support for the `all:` prefix to patterns used with the `go:embed` directive. The `all:` prefix includes files which start with `_` or `.` which are ordinarilly excluded.

Fix a bug where Pants sent a minor Go version instead of the major one to the Go toolchain during packaging.

#### Helm

Fixed pulling `helm_artifact`s from OCI repositories.
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/util_rules/build_pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ async def build_go_package(

# See https://github.com/golang/go/blob/f229e7031a6efb2f23241b5da000c3b3203081d6/src/cmd/go/internal/work/gc.go#L79-L100
# for where this logic comes from.
go_version = request.minimum_go_version or "1.16"
go_version = go_root.major_version(request.minimum_go_version or "1.16")
if go_root.is_compatible_version(go_version):
compile_args.extend(["-lang", f"go{go_version}"])

Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/util_rules/build_pkg_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def test_build_pkg(rule_runner: RuleRunner) -> None:
).digest,
s_files=(),
direct_dependencies=(),
minimum_go_version=None,
minimum_go_version="1.21.2",
)
direct_dep = BuildGoPackageRequest(
import_path="example.com/foo/dep",
Expand Down
5 changes: 5 additions & 0 deletions src/python/pants/backend/go/util_rules/goroot.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ def is_compatible_version(self, version: str) -> bool:
"""Can this Go compiler handle the target version?"""
return compatible_go_version(compiler_version=self.version, target_version=version)

def major_version(self, version: str) -> str:
_version_components = version.split(".") # e.g. [1, 17] or [1, 17, 1]
major_version = ".".join(_version_components[:2])
return major_version

@property
def full_version(self) -> str:
return self._raw_metadata["GOVERSION"]
Expand Down

0 comments on commit a89be49

Please sign in to comment.