Open tjamet opened 6 months ago
Digging slightly in this issue, the problem seems to be related to loading the packages and its loading mode.
Indeed, extracting packages.Load
in a dedicated module, we can reproduce the problem, when running towards this repository.
However removing both flags packages.NeedSyntax | packages.NeedDeps
, the extracted command succeeds
package main
import (
"fmt"
"golang.org/x/tools/go/packages"
)
func testLoadModule(message string, mode packages.LoadMode) {
defer func() {
if r := recover(); r != nil {
fmt.Println(message, "panicked")
}
}()
_, err := packages.Load(&packages.Config{Mode: mode}, "./...")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(message, "OK")
}
}
func main() {
testLoadModule("packages.NeedName | packages.NeedFiles | packages.NeedImports | packages.NeedTypes", packages.NeedName|packages.NeedFiles|packages.NeedImports|packages.NeedTypes)
testLoadModule("packages.NeedName | packages.NeedFiles | packages.NeedImports | packages.NeedTypes | packages.NeedSyntax | packages.NeedDeps", packages.NeedName|packages.NeedFiles|packages.NeedImports|packages.NeedTypes|packages.NeedSyntax|packages.NeedDeps)
}
What happened?
Following the official guidelines to create a custom provider, all the steps can be run until
go generate
.then,
go generate
panics with a backtraceHow can we reproduce it?
The problem can be easily reproduced on github action workers.
Here is a workflow reproducing the problem:
As we can see in this run, the build works well for go 1.20 and 1.21.
It though fails on go 1.22 regardless the way the
angryjet
command is called (make generate
,go run
or locally build command)What environment did it happen in?
Crossplane version: Not required
I could reproduce the error locally as well as in github actions using
ubuntu-latest