public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: Changqing Li <changqing.li@windriver.com>
To: openembedded-core@lists.openembedded.org,
	bruce.ashfield@gmail.com, richard.purdie@linuxfoundation.org,
	mathieu.dubois-briand@bootlin.com
Subject: Re: [OE-core] [PATCH V4] go.bbclass: set buildid to empty string to improve reproducibility
Date: Wed, 14 Jan 2026 14:48:13 +0800	[thread overview]
Message-ID: <5372edcd-30c6-4d7b-951c-77a1a3c9d778@windriver.com> (raw)
In-Reply-To: <188A85EB176781B4.2595076@lists.openembedded.org>

Hi, Richard, Mathieu

I noticed V2 of this patch is in master-next,   and this is just a kind 
reminder,

The only difference between V4 and V2 is the "commit message"

Regards

Changqing

On 1/14/26 14:44, Changqing Li via lists.openembedded.org wrote:
> From: Changqing Li <changqing.li@windriver.com>
>
> Go packages and binaries are stamped with build IDs that record both the
> action ID, which is a hash of the inputs to the action that produced the
> packages or binary, and the content ID, which is a hash of the action
> output, namely the archive or binary itself, Refer [1].
>
> And action ID include hash of modroot, which will include build path,
> so this make go package not reproducible.
> Refer [2], keying off module path instead of module root directory is a TODO.
>
> [snip of log]
> HASH[moduleIndex]: "go1.25.3"
> HASH[moduleIndex]: "modroot /build-a/tmp/work/x86-64-v3-wrs-linux/buildah/1.41.5/recipe-sysroot-native/usr/lib/go/src/cmd\n"
> HASH[moduleIndex]: "package go1.25.3 go index v2 /build-a/tmp/work/x86-64-v3-wrs-linux/buildah/1.41.5/recipe-sysroot-native/usr/lib/go/src/cmd/buildid\n"
> HASH[moduleIndex]: "file buildid.go 2025-10-13 16:08:43 +0000 UTC 1704\n"
> HASH[moduleIndex]: "file doc.go 2025-10-13 16:08:43 +0000 UTC 558\n"
> HASH[moduleIndex]: 007b9fe2edd5b3232f5c98ae6c46e80a435141cb627ba5418c5314c0cbf4df7b
>
> Report this issue to upstream, refer [3]
> Workaround the reproducible by setting buildid to empty, refer [4]
>
> Refer:
> [1] https://github.com/golang/go/blob/master/src/cmd/go/internal/work/buildid.go#L26
> [2] https://github.com/golang/go/blob/master/src/cmd/go/internal/modindex/read.go#L70
> [3] https://github.com/golang/go/issues/77086
> [4] https://github.com/golang/go/issues/34186
>
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---
>   meta/classes-recipe/go.bbclass | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes-recipe/go.bbclass b/meta/classes-recipe/go.bbclass
> index b540471ba2..1c43b36fc0 100644
> --- a/meta/classes-recipe/go.bbclass
> +++ b/meta/classes-recipe/go.bbclass
> @@ -51,11 +51,12 @@ GO_RPATH:class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE
>   GO_RPATH_LINK:class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
>   GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}"
>   GO_LINKMODE ?= ""
> +GO_BUILDID ?= "-buildid="
>   GO_EXTRA_LDFLAGS ?= ""
>   GO_LINUXLOADER ?= "-I ${@get_linuxloader(d)}"
>   # Use system loader. If uninative is used, the uninative loader will be patched automatically
>   GO_LINUXLOADER:class-native = ""
> -GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_LINUXLOADER} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"'
> +GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_LINUXLOADER} ${GO_EXTRA_LDFLAGS} ${GO_BUILDID} -extldflags '${GO_EXTLDFLAGS}'"'
>   export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath"
>   export GOPATH_OMIT_IN_ACTIONID ?= "1"
>   export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#229303): https://lists.openembedded.org/g/openembedded-core/message/229303
> Mute This Topic: https://lists.openembedded.org/mt/117257536/3616873
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [changqing.li@windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>


       reply	other threads:[~2026-01-14  6:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <188A85EB176781B4.2595076@lists.openembedded.org>
2026-01-14  6:48 ` Changqing Li [this message]
2026-01-14  6:44 [PATCH V4] go.bbclass: set buildid to empty string to improve reproducibility changqing.li
2026-01-14 12:36 ` Richard Purdie
     [not found]   ` <188AC968E243AEBC.2595076@lists.openembedded.org>
2026-01-23 10:35     ` [OE-core] " Changqing Li
2026-01-23 21:10       ` Randolph Sapp
2026-01-26  8:26         ` Changqing Li

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=5372edcd-30c6-4d7b-951c-77a1a3c9d778@windriver.com \
    --to=changqing.li@windriver.com \
    --cc=bruce.ashfield@gmail.com \
    --cc=mathieu.dubois-briand@bootlin.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@linuxfoundation.org \
    /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