gpython icon indicating copy to clipboard operation
gpython copied to clipboard

gpython: Display build information and support some builtin attribute

Open corona10 opened this issue 7 years ago • 8 comments

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

corona10 avatar Dec 26 '18 14:12 corona10

@ncw @sbinet What do you think about displaying build information? ~And it will be able to implement it without 3rd party library?~

corona10 avatar Dec 26 '18 14:12 corona10

Looks like we can inject the commit log by using ldflag during build time.

corona10 avatar Dec 26 '18 14:12 corona10

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 avatar Dec 26 '18 16:12 ncw

@ncw Yeah looks like rclone way is the best way from now on. @sbinet Do you have any ideas?

corona10 avatar Dec 27 '18 04:12 corona10

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.

sbinet avatar Dec 28 '18 18:12 sbinet

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 avatar Dec 29 '18 12:12 ncw

@ncw LGTM

corona10 avatar Jan 01 '19 05:01 corona10

Looks like a good first issue for a newbie of this project.

  • [ ] Display build information

corona10 avatar Jan 02 '19 05:01 corona10