processone / ejabberd-api

ejabberd API library in Go and multi-platform command-line tool
http://www.process-one.net/
23 stars 11 forks source link

Cannot compile with go 1.18 or newer #2

Closed sando38 closed 1 year ago

sando38 commented 1 year ago

How to reproduce:

e.g. with Docker:

ARG GO_VSN='1.18'
FROM docker.io/golang:${GO_VSN}-alpine AS build
RUN go install github.com/processone/ejabberd-api/cmd/ejabberd@latest

Error msg:

/go # go install github.com/processone/ejabberd-api/cmd/ejabberd@latest
go: downloading github.com/processone/ejabberd-api v0.0.0-20210707155731-b02bcbec4fa9
go: finding module for package gopkg.in/alecthomas/kingpin.v2
go: downloading gopkg.in/alecthomas/kingpin.v2 v2.3.2
go: found gopkg.in/alecthomas/kingpin.v2 in gopkg.in/alecthomas/kingpin.v2 v2.3.2
go: github.com/processone/ejabberd-api/cmd/ejabberd imports
        gopkg.in/alecthomas/kingpin.v2: gopkg.in/alecthomas/kingpin.v2@v2.3.2: parsing go.mod:
        module declares its path as: github.com/alecthomas/kingpin/v2
                but was required as: gopkg.in/alecthomas/kingpin.v2

go vsn 1.17 works

ARG GO_VSN='1.17'
FROM docker.io/golang:${GO_VSN}-alpine AS build
RUN go get -v github.com/processone/ejabberd-api/cmd/ejabberd

Output:

/go # go get -v github.com/processone/ejabberd-api/cmd/ejabberd
go: downloading github.com/processone/ejabberd-api v0.0.0-20210707155731-b02bcbec4fa9
go: downloading gopkg.in/alecthomas/kingpin.v2 v2.3.2
get "gopkg.in/alecthomas/kingpin.v2": found meta tag vcs.metaImport{Prefix:"gopkg.in/alecthomas/kingpin.v2", VCS:"git", RepoRoot:"https://gopkg.in/alecthomas/kingpin.v2"} at //gopkg.in/alecthomas/kingpin.v2?go-get=1
go: downloading gopkg.in/alecthomas/kingpin.v2 v2.2.6
go: downloading github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
go: downloading github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
go get: installing executables with 'go get' in module mode is deprecated.
        Use 'go install pkg@version' instead.
        For more information, see https://golang.org/doc/go-get-install-deprecation
        or run 'go help get' or 'go help install'.
github.com/alecthomas/units
github.com/alecthomas/template/parse
github.com/processone/ejabberd-api
github.com/alecthomas/template
gopkg.in/alecthomas/kingpin.v2
github.com/processone/ejabberd-api/cmd/ejabberd
/go # ./bin/ejabberd 
usage: ejabberd [<flags>] <command> [<args> ...]

A command-line front-end for ejabberd server API.
badlop commented 1 year ago

As I know almost nothing about Go, this is just a small attempt to get it working. I committed a fix to my fork. Once we are sure it solves the problem, I'll merge upstream.

Try this:

$ go install -v github.com/badlop/ejabberd-api/cmd/ejabberd@update-go
go: downloading github.com/badlop/ejabberd-api v0.0.0-20230612203344-1349c06e046b
go: finding module for package github.com/processone/ejabberd-api
go: finding module for package github.com/alecthomas/kingpin/v2
go: downloading github.com/alecthomas/kingpin/v2 v2.3.2
go: downloading github.com/alecthomas/kingpin v2.2.6+incompatible
go: downloading github.com/processone/ejabberd-api v0.0.0-20210707155731-b02bcbec4fa9
go: found github.com/alecthomas/kingpin/v2 in github.com/alecthomas/kingpin/v2 v2.3.2
go: found github.com/processone/ejabberd-api in github.com/processone/ejabberd-api v0.0.0-20210707155731-b02bcbec4fa9
go: downloading github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
go: downloading github.com/xhit/go-str2duration/v2 v2.1.0
github.com/badlop/ejabberd-api/cmd/ejabberd
...

$ $GOPATH/bin/ejabberd
usage: ejabberd [<flags>] <command> [<args> ...]

A command-line front-end for ejabberd server API.
...
sando38 commented 1 year ago

Seems to work, tested with 1.18 and 1.20. Thanks for checking that quickly.