schollz / peerdiscovery

Pure-Go library for cross-platform local peer discovery using UDP multicast :woman: :repeat: :woman:
MIT License
638 stars 55 forks source link

Can't compile using gcc-go #22

Closed micwoj92 closed 1 year ago

micwoj92 commented 3 years ago

I've tested 2 gcc-go versions on Arch Linux 10.2.0 and 10.3.0 go version go1.14.4 gccgo (GCC) 10.2.0 linux/amd64 go version go1.14.6 gccgo (GCC) 10.3.0 linux/amd64

I've also tested on Debian testing, just to see if it was maybe Arch issue, but got same error gccgo-go on Debian testing reports go version go1.14.6 gccgo (Debian 10.2.1-6) 10.2.1 20210110 linux/amd64 the error is

go get -u github.com/schollz/peerdiscovery
# github.com/schollz/peerdiscovery
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
  381 | type PacketConn4 struct {
      |      ^
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type ipv4.genericOpt)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:381:6: error: incompatible type for receiver (cannot use type PacketConn4 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
  396 | type PacketConn6 struct {
      |      ^
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type ipv6.genericOpt)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)
../../go/src/github.com/schollz/peerdiscovery/peerdiscovery.go:396:6: error: incompatible type for receiver (cannot use type PacketConn6 as type socket.Conn)

tagging https://github.com/schollz/croc/issues/360

micwoj92 commented 3 years ago

I've downgraded packages and it works on gcc-go 9.3.0 go version go1.12.2 gccgo (Arch Linux 9.3.0-1) 9.3.0 linux/amd64 and the first version it fails is gcc-go 10.1.0 go version go1.14.2 gccgo (GCC) 10.1.0 linux/amd64

So some sort of regression maybe?

fzwoch commented 1 year ago

Hopefully fixed with GCC 13.

I believe the correspondig fix is this one: https://github.com/golang/gofrontend/commit/8db6b78110f84e22c409f334aeaefb80a8b39917

Tested with Debian gcc-snapshot 1:20221102-1.

micwoj92 commented 1 year ago

Thanks for checking, I'm closing now, will reopen if this will happen once gcc13.1 is released as stable.