Source: golang-1.21
Version: 1.21.0-1
Severity: important
Tags: ftbfs

Context: trying to build local golang-1.21 packages against stable (bookworm) 

If dh-golang is installed, building the golang toolchain itself fails tests,
specifically TestCgoLib in src/cmd/nm/nm_cgo_test.go:

--- FAIL: TestCgoLib (2.19s)
    nm_test.go:264: go tool nm: exit status 1
        open /tmp/TestGoLib2084668406/gopath/src/mylib/mylib.a: unrecognized 
object file

After much digging and adding printf-y debugging output to the go toolchain,
I eventually tracked this down to dh-golang copying CFLAGS (and related) env
vars to CGO_CFLAGS (etc.).  This notably includes the `-ffile-prefix-map`
flag, which the go toolchain doesn't like, which causes it to put a
"preferlinkext" sigil file in the `.a` file the test generates, which then
makes the `go tool nm` program under test barf, because it doesn't know what
that flag file is.

I've reported the issue with `go tool nm` upstream: 
https://github.com/golang/go/issues/62036

However, I don't think `dh-golang` should be getting pulled in when building
the Go toolchain itself, should it, at least not for setting CGO flags since
I don't think the toolchain uses CGO, so this is only messing with tests?

This also affects golang-1.20, and based on my analysis of the root cause in
the upstream issue, I believe will affect golang-1.19 too, but I have not
directly confirmed that.

-- System Information:
Debian Release: 12.1
  APT prefers stable-updates
  APT policy: (990, 'stable-updates'), (990, 'stable-security'), (990, 
'stable'), (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 
'testing'), (500, 'oldstable'), (490, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-10-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to