[MacPorts] #69466: Add Go 1.22.0 port

MacPorts noreply at macports.org
Sat Mar 9 16:11:22 UTC 2024


#69466: Add Go 1.22.0 port
-----------------------------+--------------------
 Reporter:  programmingkidx  |      Owner:  (none)
     Type:  request          |     Status:  new
 Priority:  Normal           |  Milestone:
Component:  ports            |    Version:
 Keywords:  go               |       Port:
-----------------------------+--------------------
 Hi, I ask that a Go 1.22.0 port be made. Currently there is a go port but
 the word go is very vague. I believe it would better if we used the
 version in the name just like we do for clang. With clang we have the
 version appended to the name like this: clang-8.0, clang-9.0. This would
 make things much clearer for the user.

 Go 1.22.0 is the newest version of Go as of this date and would like to
 see it be installed on Mac OS 10.12. The official system requirements
 require Mac OS 10.13 or higher but I was able to install it using a patch.

 Here are my directions on how to build Go 1.22.0 on Mac OS 10.12:


 {{{
 Open the Terminal application.
 Install Go 1.17 thru MacPorts: sudo port install go
 Download the Go source code: git clone https://github.com/golang/go.git
 cd go
 cd src

 Download Go 1.20: git checkout tags/go1.20.14. You should see a "go"
 folder appear.

 Apply patch Fix-go-1.20-to-build-on-Mac-OS-10.12.patch: patch -p2 < <patch
 path>.
 You should see this output:
 patching file crypto/x509/internal/macos/security.go
 patching file make.bash
 patching file syscall/syscall_bsd.go
 patching file syscall/syscall_darwin.go
 patching file syscall/zsyscall_darwin_amd64.go

 Note: If you see an error about not finding a file you may have skipped a
 step. Be sure to be in the src folder in the Terminal.

 Build Go 1.20: ./make.bash or ./all.bash for tests at the end (not all
 tests pass, this is ok).
 Make a copy of the go folder and place it somewhere safe. I would rename
 it to "go1.20".
 Add the path of the bin folder (inside the go1.20 folder) to the PATH
 variable: PATH="<bin folder path>":$PATH
 Type "go version" run it. You should see this: "go version go1.20.14
 darwin/amd64". If you see another version then the PATH variable might not
 be set correctly. Be sure the path you added has "bin" at the end.

 Reset the local repo: "git reset --hard". You should see this message:
 HEAD is now at 90a870f1dc [release-branch.go1.20] go1.20.14.
 Download Go 1.22.0: git checkout go1.22.0
 Apply patch: patch -p2 < Make-building-go-1.22.0-work-on-Mac-OS-10.12
 v4.patch
 You should see this message:
 patching file all.bash
 patching file cmd/api/main_test.go
 patching file cmd/go/terminal_test.go
 patching file cmd/gofmt/gofmt_unix_test.go
 patching file crypto/x509/internal/macos/security.go
 patching file crypto/x509/platform_test.go
 patching file internal/syscall/unix/asm_darwin.s
 patching file internal/syscall/unix/pty_darwin.go
 patching file internal/testpty/pty_darwin.go
 patching file net/http/client_test.go
 patching file os/signal/signal_cgo_test.go
 patching file syscall/syscall_bsd.go
 patching file syscall/syscall_darwin.go
 patching file syscall/syscall_darwin_amd64.go
 patching file syscall/zsyscall_darwin_amd64.go
 patching file syscall/zsyscall_darwin_amd64.s

 Build the compiler: ./make.bash or ./all.bash for tests.
 To use this compiler you can set the PATH variable to point to the bin
 folder like we did for Go 1.20.
 }}}

 Here is a small test program you can run to see if your compiler works.
 Save this code to a file called newfeatures.go. Then you can run it like
 this: go run newfeatures.go

 {{{

 // A program to test some of the new features of Go 1.22

 package main

 import "fmt"
 import "slices"
 import "math/rand/v2"

 func main() {
         fmt.Println("Testing some new features in Go 1.22")

         // range over a number
         fmt.Print("range: ")
         for x := range 10 {
                 fmt.Printf("%d,", x)
         }
         fmt.Println("")

         // slices.Concat()
         slice1 := []int{1,2,3}
         slice2 := []int{4,5,6}
         slice3 := slices.Concat(slice1, slice2)
         fmt.Println("slices.Concat():", slice3)

         // new rand.N() function
         var maxRand uint = 100
         fmt.Println("rand/v2:", rand.N(maxRand))
 }
 }}}

-- 
Ticket URL: <https://trac.macports.org/ticket/69466>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list