Message ID | 20250808161533.13752-1-osama.abdelkader@gmail.com |
---|---|
State | New |
Headers | show |
Series | go-cross-canadian: fix binaries install and GOARCH | expand |
On Fri, 8 Aug 2025 at 18:16, Osama Abdelkader via lists.openembedded.org <osama.abdelkader=gmail.com@lists.openembedded.org> wrote: > > Canadian cross builds produce host-side binaries (x86_64), but > GOARCH=arm was leaking in from go-${PV}.inc/go-common.inc, causing > arch mismatch and package QA errors. Explicitly set GOARCH = "${HOST_GOARCH}" to > ensure the correct host architecture is used. > +GOARCH = "${HOST_GOARCH}" This looks like it is set to the build host architecture, you probably need to set this to the architecture of the SDK? Basically, if your machine is x86_64, set SDKMACHINE to arm64 and target MACHINE to qemuriscv64. Then everything should still work correctly. Alex
setting SDKMACHINE and MACHINE didn't work for me. If it did work for you, can you type the exact command(s) to try? Osama
You need to show what you did, and what didn't work. I am unable to commit time to come up with exact steps that I verified myself. But I can correct your steps if you show them. Alex On Fri, 8 Aug 2025 at 22:55, Osama Abdelkader via lists.openembedded.org <osama.abdelkader=gmail.com@lists.openembedded.org> wrote: > > setting SDKMACHINE and MACHINE didn't work for me. > If it did work for you, can you type the exact command(s) to try? > > Osama > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#221668): https://lists.openembedded.org/g/openembedded-core/message/221668 > Mute This Topic: https://lists.openembedded.org/mt/114603001/1686489 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
If you set MACHINE to qemuriscv64 it will be go-cross-canadian-riscv64, the bugs were reported for arm/arm64 not riscv64 https://bugzilla.yoctoproject.org/show_bug.cgi?id=15204 https://bugzilla.yoctoproject.org/show_bug.cgi?id=15775 Also, the majority of Yocto SDK users run on *x86_64* workstations, so SDKMACHINE=x86_64 is the primary supported path and go-cross-canadian-aarch64 is supposed to work for any supported SDKMACHINE, as long as the host architecture is valid. Currently, if SDKMACHINE=x86_64 (the default for x86 PCs) building go-cross-canadian-aarch64 fails, with this patch build pass for both SDKMACHINE=x86_64 or aarch64. Osama On Mon, Aug 11, 2025 at 10:47 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote: > You need to show what you did, and what didn't work. I am unable to > commit time to come up with exact steps that I verified myself. But I > can correct your steps if you show them. > > Alex > > On Fri, 8 Aug 2025 at 22:55, Osama Abdelkader via > lists.openembedded.org > <osama.abdelkader=gmail.com@lists.openembedded.org> wrote: > > > > setting SDKMACHINE and MACHINE didn't work for me. > > If it did work for you, can you type the exact command(s) to try? > > > > Osama > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#221668): > https://lists.openembedded.org/g/openembedded-core/message/221668 > > Mute This Topic: https://lists.openembedded.org/mt/114603001/1686489 > > Group Owner: openembedded-core+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > alex.kanavin@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > >
diff --git a/meta/recipes-devtools/go/go-cross-canadian.inc b/meta/recipes-devtools/go/go-cross-canadian.inc index 39330fc98b..4a6f2f4c36 100644 --- a/meta/recipes-devtools/go/go-cross-canadian.inc +++ b/meta/recipes-devtools/go/go-cross-canadian.inc @@ -5,6 +5,8 @@ DEPENDS = "go-native virtual/${HOST_PREFIX}go virtual/nativesdk-${HOST_PREFIX}go virtual/nativesdk-compilerlibs" PN = "go-cross-canadian-${TRANSLATED_TARGET_ARCH}" +GOARCH = "${HOST_GOARCH}" + # it uses gcc on build machine during go-cross-canadian bootstrap, but # the gcc version may be old and not support option '-fmacro-prefix-map' # which is one of default values of DEBUG_PREFIX_MAP @@ -51,7 +53,7 @@ do_install() { install -d ${D}${libdir}/go/pkg/tool cp --preserve=mode,timestamps -R ${B}/pkg/tool/${HOST_GOTUPLE} ${D}${libdir}/go/pkg/tool/ install -d ${D}${bindir} ${D}${libdir}/go/bin - for f in ${B}/${GO_BUILD_BINDIR}/* + for f in $(find ${B}/${GO_BUILD_BINDIR} -type f) do base=`basename $f` install -m755 $f ${D}${libdir}/go/bin
Canadian cross builds produce host-side binaries (x86_64), but GOARCH=arm was leaking in from go-${PV}.inc/go-common.inc, causing arch mismatch and package QA errors. Explicitly set GOARCH = "${HOST_GOARCH}" to ensure the correct host architecture is used. Also fix do_install to correctly install all binaries from ${GO_BUILD_BINDIR} by using 'find -type f' to avoid issues when the directory contains subdirectories (e.g. "linux_arm"). Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> --- meta/recipes-devtools/go/go-cross-canadian.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)