gpython: Display build information and support some builtin attribute
Likewise, PyPy3, if we can display build information such as commit information, go version. it will be awesome.
Python 3.5.3 (fdd60ed87e941677e8ea11acf9f1819466521bf2, Apr 26 2018, 01:23:42)
[PyPy 6.0.0 with GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Also, we need to implement copyright, creditsand license as a built-in attribute.
- [ ] copyright
- [ ] credits
- [ ] license
- [x] build info
@ncw @sbinet What do you think about displaying build information? ~And it will be able to implement it without 3rd party library?~
Looks like we can inject the commit log by using ldflag during build time.
This is slightly awkward to do as it can't be done using the standard go build (at least I haven't figured out how!)
I do this in rclone and I have a Makefile which does the build
https://github.com/ncw/rclone/blob/39eac7a7658494a5404dfd75c80f0be3e6d222b2/Makefile#L35
If you build rclone not via the Makefile you get a v1.45-DEV build
I'm pretty sure you can do this with go-releaser which we use to build the release binaries.
I had a chat with the debian maintainer about rclone and this issue, and his thoughts were that the program should build using the normal go tools to make the correct version number at the releases. Which kind of implies when we make a release, we should check in the build description. That is what I do in rclone anyway, but the Makefile adds a git ID for non release builds.
@ncw
Yeah looks like rclone way is the best way from now on.
@sbinet Do you have any ideas?
not sure there's anything else than what rclone does.
go generate isn't run by default, so that's out.
if we wanted to also support Windows, we could perhaps use mage, but that's another tool to install...
so, yeah, the rclone way is fine by me.
Probably the simplest thing is to go with what goreleaser provides us with:
So make a version.go file with this in
package main
var (
version = "dev"
commit = "none"
date = "unknown"
)
Then the release builds will have the correct version, commit and date in. The dev builds will have "dev" "none" and "unknown".
Python 3.5.3 (fdd60ed87e941677e8ea11acf9f1819466521bf2, Apr 26 2018, 01:23:42) [PyPy 6.0.0 with GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information.
This provides most of what we need here.
Note that we should show the go runtime version os and arch too as that is really important debugging info.
fmt.Printf("- os/arch: %s/%s\n", runtime.GOOS, runtime.GOARCH)
fmt.Printf("- go version: %s\n", runtime.Version())
@ncw LGTM
Looks like a good first issue for a newbie of this project.
- [ ] Display build information