Skip to content

Cannot use ldflags to set build-time go variables #356

Open
@andytynan

Description

@andytynan

Desired behaviour

When building a go module, it is useful to have a version string "burned" into the binary.
In go, this is accomplished by using the go tool link option -X, via the go build option -ldflags.
E.g.: go build -ldflags="-X BUILD_VERSION=${VERSION}"
That command tells the linker to use the value in the bash variable VERSION as the initial value for the go variable BUILD_VERSION.

Current behaviour

Although the -ldflags line is used internally in the gopy code, and passed to the go build command, it is hard-coded to set just the -s and -w options, based on the gopy option --symbols.

args = append(args, "-ldflags=-s -w")

Possible solution

Add a new gopy build option --ldflags that would pass its value on to go build.
The -w and -s flags could be de-duplicated if the gopy --symbols is set, and those flags were also included in the --ldflags value.

Development

I plan to fork the project and fix this for my own requirements shortly, and would be grateful if a contributor could revierw the change once tested, and see whether they consider it a useful enhancement, to be merged into the main project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions