diff mbox series

[1/1] pkg-golang: add strip, asmflags, gcflags support

Message ID 20190124081834.17534-1-christian@paral.in
State Not Applicable
Headers show
Series [1/1] pkg-golang: add strip, asmflags, gcflags support | expand

Commit Message

Christian Stewart Jan. 24, 2019, 8:18 a.m. UTC
Adding package-level variables to set asmflags, gcflags.

Conditionally sets ldflags -s -w when buildroot is configured to strip binaries.

Signed-off-by: Christian Stewart <christian@paral.in>
---
 package/pkg-golang.mk | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Anisse Astier Jan. 24, 2019, 9:08 a.m. UTC | #1
On Thu, Jan 24, 2019 at 12:18:34AM -0800, Christian Stewart wrote:
> Adding package-level variables to set asmflags, gcflags.
> 
> Conditionally sets ldflags -s -w when buildroot is configured to strip binaries.
> 
> Signed-off-by: Christian Stewart <christian@paral.in>
> ---
>  package/pkg-golang.mk | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/package/pkg-golang.mk b/package/pkg-golang.mk
> index 4f2c7e77e1..79ebec94be 100644
> --- a/package/pkg-golang.mk
> +++ b/package/pkg-golang.mk
> @@ -55,7 +55,15 @@ ifeq ($(BR2_STATIC_LIBS),y)
>  $(2)_LDFLAGS += -extldflags '-static'
>  endif
>  
> +ifeq ($(BR2_STRIP_strip),y)
> +$(2)_LDFLAGS += -s -w
> +endif
> +
> +$(2)_ASMFLAGS += -trimpath=$(BUILD_DIR)
> +$(2)_GCFLAGS  += -trimpath=$(BUILD_DIR)

I see that you added trimpath here, which is useful for removing the
build path from the binaries, (and having reproducible builds), but it
isn't mentionned in the commit message.

As a sidenote, it seems that this option is broken when building a
package with go modules:
https://github.com/golang/go/issues/28008

Regards,

Anisse
Christian Stewart Jan. 25, 2019, 2:16 a.m. UTC | #2
Anisse,

Anisse Astier <anisse@astier.eu> writes:
> I see that you added trimpath here, which is useful for removing the
> build path from the binaries, (and having reproducible builds), but it
> isn't mentionned in the commit message.

Yes, I had originally intended for this to be a separate commit, but the
functionality works as intended and I am happy to keep it as part of
this commmit.

> As a sidenote, it seems that this option is broken when building a
> package with go modules:
> https://github.com/golang/go/issues/28008

There will never be a Buildroot core package with Go modules in use nor
enabled, as this would imply a separate network resource fetching
mechanism from the core Buildroot tarball download + hash cycle.

Even so, the option would then not break the build, but would merely
fail to trim the paths in the output binary.

Best,
Christian
diff mbox series

Patch

diff --git a/package/pkg-golang.mk b/package/pkg-golang.mk
index 4f2c7e77e1..79ebec94be 100644
--- a/package/pkg-golang.mk
+++ b/package/pkg-golang.mk
@@ -55,7 +55,15 @@  ifeq ($(BR2_STATIC_LIBS),y)
 $(2)_LDFLAGS += -extldflags '-static'
 endif
 
+ifeq ($(BR2_STRIP_strip),y)
+$(2)_LDFLAGS += -s -w
+endif
+
+$(2)_ASMFLAGS += -trimpath=$(BUILD_DIR)
+$(2)_GCFLAGS  += -trimpath=$(BUILD_DIR)
 $(2)_BUILD_OPTS += \
+	-asmflags "$$($(2)_ASMFLAGS)" \
+	-gcflags "$$($(2)_GCFLAGS)" \
 	-ldflags "$$($(2)_LDFLAGS)" \
 	-tags "$$($(2)_TAGS)" \
 	-p $(PARALLEL_JOBS)