Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Geoff Levand <geoff@infradead.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2.1 1/6] package/go: Build host tools with host CC
Date: Thu, 26 May 2016 10:24:56 -0700	[thread overview]
Message-ID: <1464283496.2374.20.camel@infradead.org> (raw)
In-Reply-To: <20160525225947.15913a38@free-electrons.com>

Hi,

On Wed, 2016-05-25 at 22:59 +0200, Thomas Petazzoni wrote:
> On Wed, 25 May 2016 09:41:54 -0700, Geoff Levand wrote:
> bin and tool with HOST_GO_HOST_CC, because those are host binaries.
> > The rest with HOST_GO_TARGET_CC because those are target binaries.
> > 
> > If you can think of a better way to do this two step build I can try it.
> 
> I was thinking of having the host parts build by host-go and the
> target parts by the "go" package, but I'm not sure it's easy to achieve
> nor that it will make the stuff clearer.

Seems to be more complicated.

> Now that I think of it, why do we have to have those two cases:
> 
> +ifneq ($(ARCH),$(HOSTARCH))
>  define HOST_GO_BUILD_CMDS
> -> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) ./make.bash
> +> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) ./make.bash
> +> 	> mkdir -p $(HOST_GO_TMP)
> +> 	> mv $(@D)/pkg/tool $(HOST_GO_TMP)/
> +> 	> mv $(@D)/bin/ $(HOST_GO_TMP)/
>  endef
> +else
> +define HOST_GO_BUILD_CMDS
> +> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) ./make.bash
> +> 	> mkdir -p $(HOST_GO_TMP)
> +> 	> mv $(@D)/pkg/tool $(HOST_GO_TMP)/
> +> 	> mv $(@D)/bin/ $(HOST_GO_TMP)/
> +> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) ./make.bash
> +endef
> +endif
> 
> Aren't the host binaries always built for the host, and the target
> binaries always built for the target? So can't we replace this by just:
> 
> +define HOST_GO_BUILD_CMDS
> +> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) ./make.bash
> +> 	> mkdir -p $(HOST_GO_TMP)
> +> 	> mv $(@D)/pkg/tool $(HOST_GO_TMP)/
> +> 	> mv $(@D)/bin/ $(HOST_GO_TMP)/
> +> 	> cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) ./make.bash
> +endef
> 
> and get in fact the exact same behavior?

There is a subtle difference, when we build with HOST_GO_HOST_CC the
resulting host compiler binaries have the go environment variables CC
and CXX set to the host compilers.  They should be set to the target
cross compilers so that by default go programs are built with the target
cross compiler.  That was one motivation for my follow up patch
'package/go: Add HOST_GO_TARGET_ENV', which sets those to the proper
values for target package builds.

I had planned to look into how to fix this environment problem.  One
idea was to use a custom version of ./make.bash that would do the
right thing.

On thinking about it, it seems it would be best for now to do the
two step build for all configs and expect package maintainers to
either use HOST_GO_TARGET_ENV or set CC and CXX.  That would avoid
the situation where the maintainer does not test with host arch
equal to target arch.

-Geoff

  reply	other threads:[~2016-05-26 17:24 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-19 22:25 [Buildroot] [PATCH v2 0/6] Fixes for go language support Geoff Levand
2016-05-19 22:25 ` [Buildroot] [PATCH v2 1/6] package/go: Build host tools with host CC Geoff Levand
2016-05-24 19:11   ` Thomas Petazzoni
2016-05-24 21:31     ` Geoff Levand
2016-05-24 21:34   ` [Buildroot] [PATCH v2.1 " Geoff Levand
2016-05-25 14:05     ` Thomas Petazzoni
2016-05-25 16:41       ` Geoff Levand
2016-05-25 20:59         ` Thomas Petazzoni
2016-05-26 17:24           ` Geoff Levand [this message]
2016-05-26 17:30             ` Thomas Petazzoni
2016-05-19 22:25 ` [Buildroot] [PATCH v2 4/6] package/go: Add HOST_GO_CGO_ENABLED Geoff Levand
2016-05-19 22:25 ` [Buildroot] [PATCH v2 2/6] package/go: Add HOST_GO_TARGET_ENV Geoff Levand
2016-05-19 22:25 ` [Buildroot] [PATCH v2 3/6] package/flannel: Use HOST_GO_TARGET_ENV Geoff Levand
2016-05-19 22:25 ` [Buildroot] [PATCH v2 5/6] package/flannel: Add BR2_TOOLCHAIN_HAS_THREADS Geoff Levand
2016-05-19 22:25 ` [Buildroot] [PATCH v2 6/6] package/go: Set file timestamp Geoff Levand
2016-05-24 19:13   ` Thomas Petazzoni
2016-05-24 20:12     ` Christian Stewart
2016-05-24 21:35     ` Geoff Levand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1464283496.2374.20.camel@infradead.org \
    --to=geoff@infradead.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox