diff mbox series

go: fix multilib file conflicts

Message ID 20251222032455.2683666-1-changqing.li@windriver.com
State Changes Requested
Headers show
Series go: fix multilib file conflicts | expand

Commit Message

Changqing Li Dec. 22, 2025, 3:24 a.m. UTC
From: Changqing Li <changqing.li@windriver.com>

This is for fixing the following error of 'bitbake meta-go-toolchain'
when multilib is enabled:
Error: Transaction test error:
   file /usr/bin/go conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
   file /usr/bin/gofmt conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32

Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 meta/recipes-devtools/go/go_1.25.4.bb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ross Burton Jan. 5, 2026, 6:08 p.m. UTC | #1
On 22 Dec 2025, at 03:24, Changqing Li via lists.openembedded.org <changqing.li=windriver.com@lists.openembedded.org> wrote:
> 
> From: Changqing Li <changqing.li@windriver.com>
> 
> This is for fixing the following error of 'bitbake meta-go-toolchain'
> when multilib is enabled:
> Error: Transaction test error:
>   file /usr/bin/go conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>   file /usr/bin/gofmt conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32

Why would you do this though?  We don’t support installing bash and lib32-bash either.

If the goal is “I want to build 32-bit go apps in my 64-bit userspace” then luckily go is always a cross-compiler and you can just set GOARCH when building with the standard go.

Ross
Changqing Li Jan. 6, 2026, 1:15 a.m. UTC | #2
On 1/6/26 02:08, Ross Burton wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On 22 Dec 2025, at 03:24, Changqing Li via lists.openembedded.org<changqing.li=windriver.com@lists.openembedded.org> wrote:
>> From: Changqing Li<changqing.li@windriver.com>
>>
>> This is for fixing the following error of 'bitbake meta-go-toolchain'
>> when multilib is enabled:
>> Error: Transaction test error:
>>    file /usr/bin/go conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>    file /usr/bin/gofmt conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
> Why would you do this though?  We don’t support installing bash and lib32-bash either.

Hi, Ross

The issue reproduced when multilib is enabled globally in local.conf by 
following config:

```

require conf/multilib.conf
MULTILIBS ?= "multilib:lib32"
DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32"

```

bitbake meta-go-toolchain will failed with above failure.

[snip of meta-go-toolchain.bb]

TOOLCHAIN_TARGET_TASK:append = " \ ${@multilib_pkg_extend(d, 
'packagegroup-go-sdk-target')} \ "

[snip of meta-go-toolchain.bb]


go is in packagegroup-go-sdk-target,  it is extended by 
multilib_pkg_extend.  so both go and lib32-go will be installed.

go is added in to packagegroup-go-sdk-target for providing entire 
toolchain include compiler.


Regards

Changqing

>
> If the goal is “I want to build 32-bit go apps in my 64-bit userspace” then luckily go is always a cross-compiler and you can just set GOARCH when building with the standard go.
>
> Ross
Ross Burton Jan. 8, 2026, 10:10 a.m. UTC | #3
On 6 Jan 2026, at 01:15, Changqing Li via lists.openembedded.org <changqing.li=windriver.com@lists.openembedded.org> wrote:
> 
> 
> On 1/6/26 02:08, Ross Burton wrote:
>> CAUTION: This email comes from a non Wind River email account!
>> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>> 
>> On 22 Dec 2025, at 03:24, Changqing Li via lists.openembedded.org <changqing.li=windriver.com@lists.openembedded.org> wrote:
>> 
>>> From: Changqing Li <changqing.li@windriver.com>
>>> 
>>> This is for fixing the following error of 'bitbake meta-go-toolchain'
>>> when multilib is enabled:
>>> Error: Transaction test error:
>>> file /usr/bin/go conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>> file /usr/bin/gofmt conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>> 
>> Why would you do this though? We don’t support installing bash and lib32-bash either.
> Hi, Ross
> The issue reproduced when multilib is enabled globally in local.conf by following config:
> ```
> require conf/multilib.conf
> MULTILIBS ?= "multilib:lib32"
> DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32"
> ```
> bitbake meta-go-toolchain will failed with above failure.
> 
> [snip of meta-go-toolchain.bb]
> TOOLCHAIN_TARGET_TASK:append = " \ ${@multilib_pkg_extend(d, 'packagegroup-go-sdk-target')} \ " 
> [snip of meta-go-toolchain.bb]
> 
> go is in packagegroup-go-sdk-target,  it is extended by multilib_pkg_extend.  so both go and lib32-go will be installed.
> go is added in to packagegroup-go-sdk-target for providing entire toolchain include compiler.

Maybe the packagegroup shouldn’t be doing that expansion then?

Ross
Changqing Li Jan. 12, 2026, 4:52 a.m. UTC | #4
On 1/8/26 18:10, Ross Burton wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On 6 Jan 2026, at 01:15, Changqing Li via lists.openembedded.org <changqing.li=windriver.com@lists.openembedded.org> wrote:
>>
>> On 1/6/26 02:08, Ross Burton wrote:
>>> CAUTION: This email comes from a non Wind River email account!
>>> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>>
>>> On 22 Dec 2025, at 03:24, Changqing Li via lists.openembedded.org <changqing.li=windriver.com@lists.openembedded.org> wrote:
>>>
>>>> From: Changqing Li <changqing.li@windriver.com>
>>>>
>>>> This is for fixing the following error of 'bitbake meta-go-toolchain'
>>>> when multilib is enabled:
>>>> Error: Transaction test error:
>>>> file /usr/bin/go conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>>> file /usr/bin/gofmt conflicts between attempted installs of go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>>>
>>> Why would you do this though? We don’t support installing bash and lib32-bash either.
>> Hi, Ross
>> The issue reproduced when multilib is enabled globally in local.conf by following config:
>> ```
>> require conf/multilib.conf
>> MULTILIBS ?= "multilib:lib32"
>> DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32"
>> ```
>> bitbake meta-go-toolchain will failed with above failure.
>>
>> [snip of meta-go-toolchain.bb]
>> TOOLCHAIN_TARGET_TASK:append = " \ ${@multilib_pkg_extend(d, 'packagegroup-go-sdk-target')} \ "
>> [snip of meta-go-toolchain.bb]
>>
>> go is in packagegroup-go-sdk-target,  it is extended by multilib_pkg_extend.  so both go and lib32-go will be installed.
>> go is added in to packagegroup-go-sdk-target for providing entire toolchain include compiler.
> Maybe the packagegroup shouldn’t be doing that expansion then?

We don't want go to be extended, but packagegroup-go-sdk-target not only include go, it also includes go-runtime/go-runtime-dev, we need to extend go-runtime/go-runtime-dev.

so fix go packaging for multilib as this patch to avoid the conflicts issue.

//Changqing

>
> Ross
Changqing Li Jan. 21, 2026, 2 a.m. UTC | #5
On 1/12/26 12:52, Changqing Li via lists.openembedded.org wrote:
>
> On 1/8/26 18:10, Ross Burton wrote:
>> CAUTION: This email comes from a non Wind River email account!
>> Do not click links or open attachments unless you recognize the 
>> sender and know the content is safe.
>>
>> On 6 Jan 2026, at 01:15, Changqing Li via lists.openembedded.org 
>> <changqing.li=windriver.com@lists.openembedded.org> wrote:
>>>
>>> On 1/6/26 02:08, Ross Burton wrote:
>>>> CAUTION: This email comes from a non Wind River email account!
>>>> Do not click links or open attachments unless you recognize the 
>>>> sender and know the content is safe.
>>>>
>>>> On 22 Dec 2025, at 03:24, Changqing Li via lists.openembedded.org 
>>>> <changqing.li=windriver.com@lists.openembedded.org> wrote:
>>>>
>>>>> From: Changqing Li <changqing.li@windriver.com>
>>>>>
>>>>> This is for fixing the following error of 'bitbake meta-go-toolchain'
>>>>> when multilib is enabled:
>>>>> Error: Transaction test error:
>>>>> file /usr/bin/go conflicts between attempted installs of 
>>>>> go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>>>> file /usr/bin/gofmt conflicts between attempted installs of 
>>>>> go-1.25.4-r0.x86_64_v3 and lib32-go-1.25.4-r0.core2_32
>>>>>
>>>> Why would you do this though? We don’t support installing bash and 
>>>> lib32-bash either.
>>> Hi, Ross
>>> The issue reproduced when multilib is enabled globally in local.conf 
>>> by following config:
>>> ```
>>> require conf/multilib.conf
>>> MULTILIBS ?= "multilib:lib32"
>>> DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32"
>>> ```
>>> bitbake meta-go-toolchain will failed with above failure.
>>>
>>> [snip of meta-go-toolchain.bb]
>>> TOOLCHAIN_TARGET_TASK:append = " \ ${@multilib_pkg_extend(d, 
>>> 'packagegroup-go-sdk-target')} \ "
>>> [snip of meta-go-toolchain.bb]
>>>
>>> go is in packagegroup-go-sdk-target,  it is extended by 
>>> multilib_pkg_extend.  so both go and lib32-go will be installed.
>>> go is added in to packagegroup-go-sdk-target for providing entire 
>>> toolchain include compiler.
>> Maybe the packagegroup shouldn’t be doing that expansion then?
>
> We don't want go to be extended, but packagegroup-go-sdk-target not 
> only include go, it also includes go-runtime/go-runtime-dev, we need 
> to extend go-runtime/go-runtime-dev.
>
> so fix go packaging for multilib as this patch to avoid the conflicts 
> issue.
>
> //Changqing

ping

//Changqing

>
>>
>> Ross
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#229183): https://lists.openembedded.org/g/openembedded-core/message/229183
> Mute This Topic: https://lists.openembedded.org/mt/116896974/3616873
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [changqing.li@windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/recipes-devtools/go/go_1.25.4.bb b/meta/recipes-devtools/go/go_1.25.4.bb
index 46f5fbc6be..372aa9538c 100644
--- a/meta/recipes-devtools/go/go_1.25.4.bb
+++ b/meta/recipes-devtools/go/go_1.25.4.bb
@@ -1,7 +1,7 @@ 
 require go-${PV}.inc
 require go-target.inc
 
-inherit linuxloader
+inherit linuxloader multilib_script
 
 CGO_LDFLAGS:append = " -no-pie"
 
@@ -9,6 +9,8 @@  export GO_LDSO = "${@get_linuxloader(d)}"
 export CC_FOR_TARGET = "gcc"
 export CXX_FOR_TARGET = "g++"
 
+MULTILIB_SCRIPTS = "${PN}:${bindir}/go ${PN}:${bindir}/gofmt"
+
 # mips/rv64 doesn't support -buildmode=pie, so skip the QA checking for mips/riscv32 and its
 # variants.
 python() {