diff mbox series

[PATCHv2] package/go: cgo for the target needs the toolchain

Message ID 85bdd1b26ba56471330e98465095d943b54e3e74.1695644947.git.yann.morin@orange.com
State Superseded
Headers show
Series [PATCHv2] package/go: cgo for the target needs the toolchain | expand

Commit Message

Yann E. MORIN Sept. 25, 2023, 12:29 p.m. UTC
From: "Yann E. MORIN" <yann.morin@orange.com>

Build go with cgo support needs to build some .c files to generate
target support code, and thus calls the cross C compiler, which is
failing when the toolchain is not built before host-go:

    >>> host-go 1.21.1 Building
    cd .../build/host-go-1.21.1/src && GO111MODULE=off GOCACHE=.../per-package/host-go/host/share/host-go-cache GOROOT_BOOTSTRAP=.../per-package/host-go/host/lib/go-1.19.11 GOROOT_FINAL=.../per-package/host-go/host/lib/go GOROOT=".../build/host-go-1.21.1" GOBIN=".../build/host-go-1.21.1/bin" GOOS=linux CC=/usr/bin/gcc CXX=/usr/bin/g++ CGO_ENABLED=1 CC_FOR_TARGET=".../per-package/host-go/host/bin/arm-linux-gcc" CXX_FOR_TARGET=".../per-package/host-go/host/bin/arm-linux-g++" GOOS="linux" GOARCH=arm  GOARM=6 GO_ASSUME_CROSSCOMPILING=1 ./make.bash
    Building Go cmd/dist using .../per-package/host-go/host/lib/go-1.19.11.  (go1.19.11 linux/amd64)
    go tool dist: cannot invoke C compiler [".../per-package/host-go/host/bin/arm-linux-gcc"]: fork/exec .../per-package/host-go/host/bin/arm-linux-gcc: no such file or directory

    Go needs a system C compiler for use with cgo.
    To set a C compiler, set CC=the-compiler.
    To disable cgo, set CGO_ENABLED=0.

This happens systematically with PPD, and happens without PPD when
host-go is explicitly built (by running: "make host-go").

Since only CGO support needs to compile C files, onmy add the toolchain
dependency in that case.

When the target is not supported by go, then there is obviously no need
to depend on the toolchain (even if we unconditionally enable cgo
support in only-for-the-host host-go).

Signed-off-by: Christian Stewart <christian@aperture.us>
[yann.morin@orange.com:
  - only add the toolchain dependency for target cgo
  - reword commit log
]
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Anisse Astier <anisse@astier.eu>

---
Changes v1 -> v2:
  - only add the toolchain dependency for target cgo
  - reword commit log

v1 by Christian:
    https://lore.kernel.org/buildroot/20230728052530.1122268-1-christian@aperture.us/
---
 package/go/go.mk | 1 +
 1 file changed, 1 insertion(+)

Comments

Thomas Petazzoni Sept. 25, 2023, 1:42 p.m. UTC | #1
On Mon, 25 Sep 2023 14:29:15 +0200
<yann.morin@orange.com> wrote:

> From: "Yann E. MORIN" <yann.morin@orange.com>

So if you're the author...

> When the target is not supported by go, then there is obviously no need
> to depend on the toolchain (even if we unconditionally enable cgo
> support in only-for-the-host host-go).
> 
> Signed-off-by: Christian Stewart <christian@aperture.us>

Christian should not be the first Signed-off-by, but you should be.

I believe this was originally written by Christian, and you extended
the commit log/improved the patch, so I guess Christian should be kept
as the author.

> [yann.morin@orange.com:
>   - only add the toolchain dependency for target cgo
>   - reword commit log
> ]
> Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Anisse Astier <anisse@astier.eu>

Thanks!

Thomas
Yann E. MORIN Sept. 25, 2023, 1:47 p.m. UTC | #2
Thomas, All,

On 2023-09-25 15:42 +0200, Thomas Petazzoni spake thusly:
> On Mon, 25 Sep 2023 14:29:15 +0200
> <yann.morin@orange.com> wrote:
> > From: "Yann E. MORIN" <yann.morin@orange.com>
> So if you're the author...
> > When the target is not supported by go, then there is obviously no need
> > to depend on the toolchain (even if we unconditionally enable cgo
> > support in only-for-the-host host-go).
> > 
> > Signed-off-by: Christian Stewart <christian@aperture.us>
> Christian should not be the first Signed-off-by, but you should be.

Indeed, I forgot to fixup authorship when working on the patch...

> I believe this was originally written by Christian, and you extended
> the commit log/improved the patch, so I guess Christian should be kept
> as the author.

Absolutely, yes.

Regards,
Yann E. MORIN.

> > [yann.morin@orange.com:
> >   - only add the toolchain dependency for target cgo
> >   - reword commit log
> > ]
> > Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
> > Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> > Cc: Anisse Astier <anisse@astier.eu>
> 
> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com
diff mbox series

Patch

diff --git a/package/go/go.mk b/package/go/go.mk
index e5195089ac..6f080be5c0 100644
--- a/package/go/go.mk
+++ b/package/go/go.mk
@@ -90,6 +90,7 @@  HOST_GO_TARGET_ENV = \
 # any target package needing cgo support must include
 # 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
 ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+HOST_GO_DEPENDENCIES += toolchain
 HOST_GO_CGO_ENABLED = 1
 else
 HOST_GO_CGO_ENABLED = 0