#961916 gccgo-go fails to build golang-github-cloudflare-tableflip

Package:
gccgo-go
Source:
golang-defaults
Description:
Go programming language -- gccgo
Submitter:
Pirate Praveen
Date:
2026-08-17 23:37:03 UTC
Severity:
important
Tags:
#961916#5
Date:
2020-05-31 13:49:03 UTC
From:
To:
Changing build dependency to golang-go (>= 2:1.14~) from golang-any (>=
2:1.14~) works. I wonder why gccgo-go is selected over golang-go in
buster-backports though. It builds fine in sid when gccgo-go (>=
2:1.14~) is used as build dependency.

Command used to build the backport is,

sbuild -A -s --force-orig-source -c buster-amd64-sbuild
--extra-repository='deb http://deb.debian.org/debian buster-backports 
main' --extra-repository='deb http://incoming.debian.org/debian-buildd
buildd-buster-backports main' --build-dep-resolver=aptitude
--no-run-lintian

github.com/cloudflare/tableflip
# github.com/cloudflare/tableflip
src/github.com/cloudflare/tableflip/fds.go:82:13: error: reference to
undefined identifier ‘net.ListenConfig’
  lc *net.ListenConfig
             ^
src/github.com/cloudflare/tableflip/fds.go:85:47: error: reference to
undefined identifier ‘net.ListenConfig’
 func newFds(inherited map[fileName]*file, lc *net.ListenConfig) *Fds {
                                               ^
src/github.com/cloudflare/tableflip/fds.go:91:13: error: reference to
undefined identifier ‘net.ListenConfig’
   lc = &net.ListenConfig{}
             ^
src/github.com/cloudflare/tableflip/fds.go:91:25: error: expected
‘;’ or ‘}’ or newline
   lc = &net.ListenConfig{}
                         ^
src/github.com/cloudflare/tableflip/fds.go:94:2: error: expected
declaration
  return &Fds{
  ^
src/github.com/cloudflare/tableflip/fds.go:99:1: error: expected
declaration
 }
 ^
src/github.com/cloudflare/tableflip/upgrader.go:29:16: error: reference
to undefined identifier ‘net.ListenConfig’
  ListenConfig *net.ListenConfig
                ^
src/github.com/cloudflare/tableflip/fds.go:141:2: error: not enough
arguments to return
  return f.listenerLocked(network, addr)
  ^
src/github.com/cloudflare/tableflip/fds.go:156:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:223:2: error: not enough
arguments to return
  return f.packetConnLocked(network, addr)
  ^
src/github.com/cloudflare/tableflip/fds.go:249:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:272:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:294:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:319:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:339:2: error: argument 1
must be a map
  delete(f.inherited, key)
  ^
src/github.com/cloudflare/tableflip/fds.go:349:2: error: range clause
must have array, slice, string, map, or channel type
  for key, file := range f.used {
  ^
src/github.com/cloudflare/tableflip/fds.go:360:2: error: range clause
must have array, slice, string, map, or channel type
  for key, file := range f.inherited {
  ^
src/github.com/cloudflare/tableflip/fds.go:393:2: error: range clause
must have array, slice, string, map, or channel type
  for _, file := range f.used {
  ^
src/github.com/cloudflare/tableflip/fds.go:403:2: error: range clause
must have array, slice, string, map, or channel type
  for key, file := range f.used {
  ^
src/github.com/cloudflare/tableflip/upgrader.go:71:13: error: reference
to undefined name ‘newUpgrader’
  upg, err = newUpgrader(stdEnv, opts)
             ^
src/github.com/cloudflare/tableflip/upgrader.go:80:3: error: return
with value in function with no return type
   return nil, errors.New("couldn't determine initial working
directory")
   ^
src/github.com/cloudflare/tableflip/upgrader.go:85:3: error: return
with value in function with no return type
   return nil, err
   ^
src/github.com/cloudflare/tableflip/upgrader.go:107:2: error: return
with value in function with no return type
  return u, nil
  ^
src/github.com/cloudflare/tableflip/fds.go:349:6: error: invalid type
for range clause
  for key, file := range f.used {
      ^
src/github.com/cloudflare/tableflip/fds.go:349:6: error: invalid type
for range clause
src/github.com/cloudflare/tableflip/fds.go:360:6: error: invalid type
for range clause
  for key, file := range f.inherited {
      ^
src/github.com/cloudflare/tableflip/fds.go:360:6: error: invalid type
for range clause
src/github.com/cloudflare/tableflip/fds.go:393:6: error: invalid type
for range clause
  for _, file := range f.used {
      ^
src/github.com/cloudflare/tableflip/fds.go:403:6: error: invalid type
for range clause
  for key, file := range f.used {
      ^
src/github.com/cloudflare/tableflip/fds.go:403:6: error: invalid type
for range clause
src/github.com/cloudflare/tableflip/upgrader.go:221:3: error: expected
channel
   case request := <-u.upgradeC:
   ^
src/github.com/cloudflare/tableflip/upgrader.go:256:3: error: expected
channel
   case request := <-u.upgradeC:
   ^
src/github.com/cloudflare/tableflip/upgrader.go:83:34: error: argument
1 has incompatible type
  parent, files, err := newParent(env)
                                  ^
src/github.com/cloudflare/tableflip/upgrader.go:83:34: error: invalid
use of type
src/github.com/cloudflare/tableflip/upgrader.go:163:23: error: expected
channel
  case err = <-u.parent.result:
                       ^
src/github.com/cloudflare/tableflip/upgrader.go:164:16: error: expected
channel
  case err = <-u.parentErr:
                ^
src/github.com/cloudflare/tableflip/upgrader.go:185:10: error: expected
channel
  case <-u.stopC:
          ^
src/github.com/cloudflare/tableflip/upgrader.go:187:10: error: expected
channel
  case <-u.exitC:
          ^
src/github.com/cloudflare/tableflip/upgrader.go:189:8: error: expected
channel
  case u.upgradeC <- response:
        ^
src/github.com/cloudflare/tableflip/upgrader.go:214:10: error: expected
channel
   case <-processReady:
          ^
src/github.com/cloudflare/tableflip/upgrader.go:217:11: error: expected
channel
   case <-u.stopC:
           ^
src/github.com/cloudflare/tableflip/upgrader.go:221:22: error: expected
channel
   case request := <-u.upgradeC:
                      ^
src/github.com/cloudflare/tableflip/upgrader.go:256:22: error: expected
channel
   case request := <-u.upgradeC:
                      ^
src/github.com/cloudflare/tableflip/upgrader.go:265:11: error: expected
channel
   case <-u.stopC:
           ^

#961916#10
Date:
2020-05-31 19:17:09 UTC
From:
To:
gccgo-go (>= 2:1.14)  doesn't mean this version implements go1.14 features.
As in buster-backports, the gccgo-go points to gccgo-8, which
implements go1.10 features.
You can always check what version of go spec is implemented, by
running `go version`.

This is the go1.11 feature. See https://github.com/golang/go/issues/9661

As gcc maintainers are unlikely to backport gcc, so there's nothing we
can do to make gccgo build this.

What can be fixed is why your build env picks up gccgo instead of golang-go.

#961916#15
Date:
2020-05-31 20:13:50 UTC
From:
To:
Its a bit misleading, but thanks for explaining. I thought it could be
the older gcc version, hence confirmed on sid with newer gcc version.

Can't gccgo-8 then provide gloang-any (=2:1.10)?

That will also work. I think if gccgo-8 did not Provide golang-any
2:1.14 (and instead provided only golang-any 2:1.10), aptitude
(build-dep resolver) would have picked golang-go correctly.

#961916#24
Date:
2026-02-19 06:10:43 UTC
From:
To:
It's a tiny bit tangential, so apologies for that, but I think it
would probably be prudent to finally do something about gccgo too,
while we're opening the hood on src:golang-defaults.

For a long time now, gccgo has been stuck at an implementation of Go
1.18, but even then, it's only a *partial* implementation of 1.18
(notably missing generics).

As noted and discussed in the CC'd https://bugs.debian.org/961916,
bin:gccgo-go's version is misleading at best and actively harmful at
worst, because it *looks* like it's 1.24, and this is where I think
the overlap with the proposal to update to 1.26 appears - that number
drifts even further from any truth.

In ideating on solutions, I was thinking about doing something really
goofy, like having bin:gccgo-go have a Version: that's 1.18 or
something, but that ship has sailed (we can't downgrade in the
archive), and it would be really poor behavior for one source package
to do that anyhow.

So concretely, what I'd propose for src:golang-defaults 1.26+ is that
we remove all traces of gccgo entirely instead.  This is somewhat
disruptive, but I don't think it's unreasonable.  Every interesting
architecture is currently supported by upstream golang-go, gccgo
hasn't been a suitable GOROOT_BOOTSTRAP for Go itself for several
versions now, and gccgo is a very outdated implementation.  On top of
all that, I strongly doubt there are many (if any) meaningful Go
packages left in the archive that really successfully build with
gccgo.

I am going to work on an even more concrete MR for review after
sending this email. 🙇

♥,
- Tianon

#961916#29
Date:
2026-02-19 06:54:58 UTC
From:
To:
(and a tiny follow-up to remove the last bits of Perl code from the
package: https://salsa.debian.org/go-team/compiler/golang-defaults/-/merge_requests/6)

♥,
- Tianon

#961916#34
Date:
2026-02-19 09:47:03 UTC
From:
To:
Am 19.02.26 um 07:10 schrieb Tianon Gravi:

Hi Tianon,

thanks for raising this topic. I think it's a very sensible idea. I
wouldn't mind dropping gccgo from the golang-defaults package. I've
already looked at your MRs on salsa, and from a quick glance, both MRs
look good to me (but I haven't tested them yet).

However, I'd really like to move the default compiler to golang-1.26
rather sooner than later, because golang-1.24 is no longer supported by
upstream after the release of golang-1.26.
You know that, most probably. :-)

So I'm wondering if it might be better to upload an updated
golang-defaults package in the next few days (still *with* gccgo)? We'd
have more time to roll out your MRs in a later upload, then. This way,
we could wait for more opinions from other golang-compiler team members.

On the other hand, I don't know how many people are currently really
involved in this team. :-)

Regards,Tobias

#961916#39
Date:
2026-02-20 03:27:28 UTC
From:
To:
Yeah, that's sane -- this will create some cruft/churn that could
potentially delay migration, so I agree, let's get 1.26 in first, then
do this removal (I was hoping we could squeeze it in, but the
possibility of delaying 1.26 over this isn't worth it).  I'll note the
same on the MRs.

I really appreciate all the work you've done here, fwiw - coordinating
with the release team, coordinating test builds, etc.  I'm happy to
help shoulder some of the package update work if you'd like (once/if
we get the RT green-light), but happy to let you do it if you'd prefer
/ are already geared up. 👍

♥,
- Tianon

#961916#44
Date:
2026-02-20 15:35:45 UTC
From:
To:
Am 20.02.26 um 04:27 schrieb Tianon Gravi:

Hi Tianon,

thanks for those nice words, much appreciated. :-)

Regarding your offer to help with package updates, that would be very
welcome. I've not prepared anything yet, so your help would be great.

As I've written to the release team, I expect around 21 *new* FTBFS
bugs. However, I think most (if not all) of them are due to outdated
golang packages, not really due to golang-1.26. Therefore, I hope that
uploading new releases of those failing packages will resolve the build
failures. We'll see.

Regards,
Tobias

#961916#47
Date:
2026-08-17 16:54:13 UTC
From:
To:
Hello,

Bug #961916 in golang-defaults reported by you has been fixed in the
Git repository and is awaiting an upload. You can see the commit
message below and you can check the diff of the fix at:

https://salsa.debian.org/go-team/compiler/golang-defaults/-/commit/2ca0c71626cc34ab45c2481f6e399dfdf07690de
------------------------------------------------------------------------
Remove gccgo-go metapackage and deprecate golang-any

In short, gccgo is currently (and has been for a while now) an incomplete implementation of Go 1.18, which is no longer suitable for building most software in the Debian archive, and the version of the "gccgo-go" metapackage has been misleading for several releases.

(see https://bugs.debian.org/1123912#10 for longer-form thoughts)

Closes: #961916, #1123912
------------------------------------------------------------------------

(this message was generated automatically)
-- 
Greetings

https://bugs.debian.org/961916

#961916#54
Date:
2026-08-17 23:35:53 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
golang-defaults, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 961916@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Dr. Tobias Quathamer <toddy@debian.org> (supplier of updated golang-defaults package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Tue, 18 Aug 2026 01:04:44 +0200
Source: golang-defaults
Architecture: source
Version: 2:1.26~2
Distribution: unstable
Urgency: medium
Maintainer: Debian Go Compiler Team <team+go-compiler@tracker.debian.org>
Changed-By: Dr. Tobias Quathamer <toddy@debian.org>
Closes: 961916 1123912 1140566
Changes:
 golang-defaults (2:1.26~2) unstable; urgency=medium
 .
   [ Tianon Gravi ]
   * Remove gccgo-go metapackage and deprecate golang-any
 .
     In short, gccgo is currently (and has been for a while now) an incomplete
     implementation of Go 1.18, which is no longer suitable for building most
     software in the Debian archive, and the version of the "gccgo-go"
     metapackage has been misleading for several releases.
 .
     (see https://bugs.debian.org/1123912#10 for longer-form thoughts)
 .
     Closes: #961916, #1123912, #1140566
 .
   * Remove "gover.pl" helper (replaced with a d/rules one-liner)
 .
   [ Dr. Tobias Quathamer ]
   * Update Standards-Version to 4.7.4, no changes needed
   * Add debian/salsa-ci.yml with standard recipe
   * Remove debian/gitlab-ci.yml
Checksums-Sha1:
 de0b4029c9f30a7d344352fc9d87b62980f82741 2283 golang-defaults_1.26~2.dsc
 ace0afd39f9b2a82c6bc496a39bca7475d594363 36084 golang-defaults_1.26~2.tar.xz
 28278af239d0219ab2ad084fa37fafe9b93da4fe 6270 golang-defaults_1.26~2_amd64.buildinfo
Checksums-Sha256:
 7cd1ab0315561490caf728ed91d91db6b95f1c51b990551921191a596f007a53 2283 golang-defaults_1.26~2.dsc
 4e505ded0ee2b83f7f820240a42c859db81f10093982375ecad4ae1e4ce06bef 36084 golang-defaults_1.26~2.tar.xz
 5f2d7f92847ebadae57f3f8b0a1c89554dea2a2426115fb48e5f3a4f92574f21 6270 golang-defaults_1.26~2_amd64.buildinfo
Files:
 c61cf5f09f01f1ae85e00c163620ab4c 2283 golang optional golang-defaults_1.26~2.dsc
 1535e714540cc7a95ddb84b61d629438 36084 golang optional golang-defaults_1.26~2.tar.xz
 3ac8eebab1f68be9890643dd079aea34 6270 golang optional golang-defaults_1.26~2_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEE0cuPObxd7STF0seMEwLx8Dbr6xkFAmqDlPIACgkQEwLx8Dbr
6xmGNA//VGHEmSDYQfmqHF/mUAOIoZBJQwyV1ChLY6viLiVKjQ0Pa6cvZn/2Af+9
6Fo/9VRPZZwxJgsq9cgWWV0zRJukZbsMg2OIi9LjoASVe7FU82fLRqfFucADlrd6
qcQ3eJMOEz0zCLo/sqS+OimSxa4Hy/f8CYkcffziSr9n7fOdRJEwDxS6rv1lRMyx
bjRpuCsExoV9sSQ52JC0Vt+ZicyqsWjVTEuUxtck+2RKtFfxDjVKypzhaGl8M9Z6
pXtpsZrcLHHxTkRRUBqqyW2AyRJf2QuHim34dYP+JQPy/1YxYfq9JyZkfYmwD70W
AjdamhvA9l3arf/+zZDkOxcliju5NynJE8NEYoXnEcuejLE5uUAOvlvxB4rg+xef
n+4eVmfwMiUUcAjf56TaNv+DfS+Te4x37fCu4w04UjVkHJLmFueiiB+5pe3JM3BP
eLWg2prGD8xWDH61dZhsXCg69TIVtjEGBsx70nSUX7fOzc+tzLV1GTYFSMidk9vq
HvnXk09UMwAbEfA2IZ2XV/ZkDxmY2HHFNmO5eDj4OGWFkyqa0TM4zUb0JT/ntjAp
CDrRlKGmVUolqoOqZrhe2lxoX4TGLkTACH9QnT9qCsnwhMT14+VFG7eeBpULeDTU
YU7GsD6WWKMdvOAcAtZkWBKVc1ed2XwZvz5p4nNzr4hLSM9duVc=
=QjbM
-----END PGP SIGNATURE-----