diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ea2979e..9d0e6e5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,12 +5,15 @@ jobs: build: name: NickelMenu / Symbols runs-on: ubuntu-latest - container: docker.io/golang:1.14 steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: true + - name: Setup Go + uses: actions/setup-go@v6 + with: + go-version: '1.25' - name: Build run: cd test/syms && go build -o ../../test.syms . - name: Run diff --git a/test/syms/go.mod b/test/syms/go.mod index 6432136..101f1ac 100644 --- a/test/syms/go.mod +++ b/test/syms/go.mod @@ -1,8 +1,17 @@ module github.com/pgaskin/NickelMenu/test/syms -go 1.14 +go 1.25.4 require ( - github.com/pgaskin/kobopatch v0.15.1 + github.com/pgaskin/kobopatch v0.16.0 github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 ) + +require ( + github.com/ianlancetaylor/demangle v0.0.0-20250628045327-2d64ad6b7ec5 // indirect + github.com/pgaskin/go-libz v0.0.2 // indirect + github.com/riking/cssparse v0.0.0-20180325025645-c37ded0aac89 // indirect + github.com/tetratelabs/wazero v1.9.0 // indirect + golang.org/x/text v0.3.2 // indirect + rsc.io/arm v0.0.0-20150420010332-9c32f2193064 // indirect +) diff --git a/test/syms/go.sum b/test/syms/go.sum index 4c4c8f7..8fd72db 100644 --- a/test/syms/go.sum +++ b/test/syms/go.sum @@ -1,24 +1,17 @@ -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/pgaskin/czlib v0.0.4 h1:biwyjtvo6xiXwvgYWyKz0GpmAmDJi4as3zl8Go7Pr9w= -github.com/pgaskin/czlib v0.0.4/go.mod h1:ZRHNrWwa4Jv0HU5r0u64eKRZXcBUicpI6rtaEEbduaU= -github.com/pgaskin/kobopatch v0.15.1 h1:UjuC5sTs0LLFdMGHL24V7OtxIoyw1INHoJlyUtfFBAs= -github.com/pgaskin/kobopatch v0.15.1/go.mod h1:GKP38Tq6b0oA2YaBVCZqP9qZjnbq+O9+w60VapmUrl4= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/ianlancetaylor/demangle v0.0.0-20250628045327-2d64ad6b7ec5 h1:QCtizt3VTaANvnsd8TtD/eonx7JLIVdEKW1//ZNPZ9A= +github.com/ianlancetaylor/demangle v0.0.0-20250628045327-2d64ad6b7ec5/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/pgaskin/go-libz v0.0.2 h1:uTzyOb6qXvzTdofzq9RNzhpHzHl3fT88yM6wxzjrMFY= +github.com/pgaskin/go-libz v0.0.2/go.mod h1:zKOJy/NMDudfyiyGiA7r0jAKjEyu+/7MSBHAnarLvxY= +github.com/pgaskin/kobopatch v0.16.0 h1:4WczmEVXkIRjToiMqLF94wbIJTn5r5kAv41pJayPQaQ= +github.com/pgaskin/kobopatch v0.16.0/go.mod h1:3xPtkRd97WkLtF2T3jsqTAkt1JU83xSAZ4QgEZzPanw= github.com/riking/cssparse v0.0.0-20180325025645-c37ded0aac89 h1:hMsoSMebpfpaDW7+B7gsxNnMBNChjekeqmK8wkzAlc0= github.com/riking/cssparse v0.0.0-20180325025645-c37ded0aac89/go.mod h1:yc5MYwuNUGggTQ8++IDAbOYq/9PXxsg73+EHYgoG/4w= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I= +github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20190709130402-674ba3eaed22/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= rsc.io/arm v0.0.0-20150420010332-9c32f2193064 h1:bBbas3KhLwE6f59Z9lUipY23xUX9qrvyLBdQzzV2Tko= rsc.io/arm v0.0.0-20150420010332-9c32f2193064/go.mod h1:MVYPdlFruujBlzEY3x2Q3XBk7XLdYRNZ7zDbrzYFO7w= diff --git a/test/syms/main.go b/test/syms/main.go index 83354d6..79f729d 100644 --- a/test/syms/main.go +++ b/test/syms/main.go @@ -6,10 +6,11 @@ import ( "bytes" "fmt" "io" - "io/ioutil" + "maps" "net/http" "os" "path/filepath" + "slices" "sort" "strconv" "strings" @@ -37,7 +38,10 @@ func main() { "4.25.15875", "4.26.16704", "4.28.17623", "4.28.17820", "4.28.17826", "4.28.17925", "4.28.18220", "4.29.18730", "4.30.18838", "4.31.19086", "4.32.19501", "4.33.19608", "4.33.19611", "4.33.19759", "4.34.20097", - "4.35.20400", "4.36.21095", + "4.35.20400", "4.36.21095", "4.37.21533", "4.37.21582", "4.37.21586", + "4.38.21908", "4.39.22801", "4.39.22861", "4.38.23038", "4.39.23027", + "4.40.23081", "4.41.23145", "4.38.23171", "4.42.23296", "4.38.23429", + "4.43.23418", "4.38.23552", "4.44.23552", } checks := map[string]map[string][]SymCheck{} @@ -65,13 +69,8 @@ func main() { } } - var checkVersions []string - for version := range checks { - checkVersions = append(checkVersions, version) - } - sort.Slice(checkVersions, func(i, j int) bool { - return versioncmp(checkVersions[i], checkVersions[j]) == -1 - }) + checkVersions := slices.SortedFunc(maps.Keys(checks), versioncmp) + fmt.Printf("[INF] sorted versions: %s\n", checkVersions) var errs []error gherrs := map[string][]string{} @@ -179,7 +178,7 @@ func GetPatcher(version, lib string) (*patchlib.Patcher, error) { } } - buf, err := ioutil.ReadAll(tr) + buf, err := io.ReadAll(tr) if err != nil { return nil, fmt.Errorf("read kobopatch testdata: %w", err) } @@ -252,6 +251,19 @@ func versioncmp(a, b string) int { return 0 } aspl, bspl := splint(a), splint(b) + if false { // I think it might be less confusing to just explicitly list both if required, as they are branches and not all changes are in each + if len(aspl) == 3 && len(bspl) == 3 && aspl[0] == 4 && bspl[0] == 4 && aspl[1] >= 38 && bspl[1] >= 38 { + // if 4.38/4.39+ branching, sort by only the build number + switch { + case aspl[2] < bspl[2]: + return -1 + case aspl[2] > bspl[2]: + return 1 + case aspl[2] == bspl[2] && aspl[1] == bspl[1]: // fall back to normal compare if not entirely equal + return 0 + } + } + } mlen := len(aspl) if len(bspl) > mlen { mlen = len(bspl)