Please update to 20260115.00

Bug #2139356 reported by Chloé Smith
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
google-guest-agent (Ubuntu)
New
Undecided
Chloé Smith

Bug Description

Following on from similar package update requests @ LP: #2113792, LP: #2096765, LP: #2084498, LP: #2073163 and LP: #2040945, this bug is a request to update the google-guest-agent package to the upstream version `20260115.00` @ https://github.com/GoogleCloudPlatform/guest-agent/releases/tag/20260115.00

This package has an SRU exception @ https://wiki.ubuntu.com/StableReleaseUpdates#google-guest-agent including an ageing exception detailed @ https://wiki.ubuntu.com/google-guest-agent-Updates

We now also vendor the brand new upstream plugin manager source (confusingly named `google-guest-agent` in github [0]) using a secondary orig tar (currently) called `google-guest-agent_20260115.00.orig-google-guest-agent.tar.xz` which is (currently) pinned to git hash `e5ea53c707`. We build these plugin manager binaries from the vendored tree *during* the pkg build so LP won't need network access. We also build and include the golang protobuf sources in the dedicated vendor tree (d/extra/vendor-google-guest-agent) and now set `GOTOOLCHAIN=local` and explicit `GOCACHE`/`GOTMPDIR` paths in `d/rules`

[Impact]

This package is provided by Google for installation within guests that run on Google Compute Engine. It is part of a collection of tools and daemons, that ensure that the Ubuntu images published to GCE run properly on their platform.

Cloud platforms evolve at a rate that can't be handled in six-month increments, and they will often develop features that they would like to be available to customers who don't want to upgrade from earlier Ubuntu releases. As such, updating this package to more recent upstream releases is required within all Ubuntu releases, so they continue to function properly in the GCP environment.

[Test Case]

When a new version of this package is uploaded to -proposed, the following will happen:

 * an image based on -proposed will be built for GCE and published to the ubuntu-os-cloud-image-proposed project
 * the CPC team will run internal validations (CTF) and Google's upstream test suite `cloud-image-tests` (CIT)
 * the GCE team will be asked to validate that the new package addresses the issues it is expected to address, and that the image passes their own internal image validation.

If all the testing indicates that the new package is acceptable, verification can be considered done.

[Vendored Dependencies]

```
diff --git a/go.mod b/go.mod
index 0de5570..f492f82 100644
--- a/go.mod
+++ b/go.mod
@@ -1,57 +1,78 @@
 module github.com/GoogleCloudPlatform/guest-agent

-go 1.23.0
+go 1.25

 replace github.com/GoogleCloudPlatform/guest-agent/metadata => ../metadata

 require (
- cloud.google.com/go/storage v1.31.0
- github.com/GoogleCloudPlatform/guest-logging-go v0.0.0-20250327013322-4be06cdc8bd8
- github.com/Microsoft/go-winio v0.6.1
- github.com/go-ini/ini v1.66.6
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
- github.com/google/go-cmp v0.6.0
- github.com/google/go-tpm v0.9.0
- github.com/google/go-tpm-tools v0.4.0
+ cloud.google.com/go/storage v1.56.1
+ github.com/GoogleCloudPlatform/guest-logging-go v0.0.0-20250819203904-a74b641fa7fd
+ github.com/Microsoft/go-winio v0.6.2
+ github.com/go-ini/ini v1.67.0
+ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8
+ github.com/google/go-cmp v0.7.0
+ github.com/google/go-tpm v0.9.5
+ github.com/google/go-tpm-tools v0.4.5
  github.com/google/tink/go v1.7.0
- github.com/kardianos/service v1.2.2
+ github.com/kardianos/service v1.2.4
  github.com/robfig/cron/v3 v3.0.1
  github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07
- golang.org/x/crypto v0.35.0
- golang.org/x/sys v0.30.0
- google.golang.org/api v0.134.0
- google.golang.org/grpc v1.57.1
- google.golang.org/protobuf v1.33.0
+ golang.org/x/crypto v0.45.0
+ golang.org/x/sys v0.38.0
+ google.golang.org/api v0.248.0
+ google.golang.org/grpc v1.75.0
+ google.golang.org/protobuf v1.36.8
  gopkg.in/yaml.v3 v3.0.1
- software.sslmate.com/src/go-pkcs12 v0.2.1
+ software.sslmate.com/src/go-pkcs12 v0.6.0
 )

 require (
- cloud.google.com/go v0.110.6 // indirect
- cloud.google.com/go/compute v1.23.0 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.1 // indirect
- cloud.google.com/go/logging v1.7.0 // indirect
- cloud.google.com/go/longrunning v0.5.1 // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/go-sev-guest v0.7.0 // indirect
+ cel.dev/expr v0.24.0 // indirect
+ cloud.google.com/go v0.121.6 // indirect
+ cloud.google.com/go/auth v0.16.5 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
+ cloud.google.com/go/compute/metadata v0.8.0 // indirect
+ cloud.google.com/go/iam v1.5.2 // indirect
+ cloud.google.com/go/logging v1.13.0 // indirect
+ cloud.google.com/go/longrunning v0.6.7 // indirect
+ cloud.google.com/go/monitoring v1.24.2 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect
+ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect
+ github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.2 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/google/go-configfs-tsm v0.3.3 // indirect
+ github.com/google/go-sev-guest v0.13.0 // indirect
+ github.com/google/go-tdx-guest v0.3.2-0.20241009005452-097ee70d0843 // indirect
  github.com/google/logger v1.1.1 // indirect
- github.com/google/s2a-go v0.1.4 // indirect
- github.com/google/uuid v1.3.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/pborman/uuid v1.2.1 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- go.opencensus.io v0.24.0 // indirect
- golang.org/x/mod v0.17.0 // indirect
- golang.org/x/net v0.36.0 // indirect
- golang.org/x/oauth2 v0.10.0 // indirect
- golang.org/x/sync v0.11.0 // indirect
- golang.org/x/text v0.22.0 // indirect
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e // indirect
+ github.com/google/s2a-go v0.1.9 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
+ github.com/googleapis/gax-go/v2 v2.15.0 // indirect
+ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.1.0 // indirect
+ go.opentelemetry.io/contrib/detectors/gcp v1.37.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect
+ go.opentelemetry.io/otel v1.37.0 // indirect
+ go.opentelemetry.io/otel/metric v1.37.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.37.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect
+ go.opentelemetry.io/otel/trace v1.37.0 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ golang.org/x/net v0.47.0 // indirect
+ golang.org/x/oauth2 v0.30.0 // indirect
+ golang.org/x/sync v0.18.0 // indirect
+ golang.org/x/text v0.31.0 // indirect
+ golang.org/x/time v0.12.0 // indirect
+ google.golang.org/genproto v0.0.0-20250826171959-ef028d996bc1 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect
 )
```

[Where Problems Could Occur]

There are a great deal of upstream changes between `20260115.00` vs. `20250506.01` (29 commits, 29 file changes and of course the inclusion of the new vendored .tar.gz); however between CIT [1] (which is run for validation by CPC _and_ Google) and CPC's own internal test harness (CTF), there is confidence that most if not all "edge cases" and/or obvious regressions concerns can be dismissed before the new version lands in `-updates`. There are also brand new test suites within CIT that address the functionality introduced by the new upstream code (`compatmanager` and `pluginmanager`). Also `google-guest-agent` is not a seeded package, and we vendor all golang dependencies.

[Other Information]

This bug is used for tracking of releasing the new upstream version for all supported series, as per the approved policy mentioned in the following MRE:

https://wiki.ubuntu.com/google-guest-agent-Updates

This package is only used on AMD64 and ARM64 but is built for all available architectures.

[0]: https://github.com/GoogleCloudPlatform/google-guest-agent
[1]: https://github.com/GoogleCloudPlatform/cloud-image-tests

Tags: patch

Related branches

Chloé Smith (kajiya)
Changed in google-guest-agent (Ubuntu):
assignee: nobody → Chloé Smith (kajiya)
Chloé Smith (kajiya)
description: updated
Chloé Smith (kajiya)
description: updated
description: updated
Revision history for this message
Chloé Smith (kajiya) wrote :

[resolute] debdiff of `google-guest-agent_20250506.01-0ubuntu2.dsc` vs. `google-guest-agent_20260115.00-0ubuntu1.dsc`

Revision history for this message
Chloé Smith (kajiya) wrote :

Diff of the debian dir (minus the d/extra/vendor* directories) gathered via `git diff ubuntu/resolute-devel -- debian/ ':!debian/extra/' > diff-of-debian-dir-from-resolute-devel.diff`

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "20250506.01-0ubuntu2-vs-20260115.00-0ubuntu1-dsc.diff" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch
Revision history for this message
Chloé Smith (kajiya) wrote :

Full diff of the unpacked source trees (via `diff -Nru --exclude=_build old new > google-guest-agent_0ubuntu1_to_0ubuntu2.full.diff`

Revision history for this message
Chloé Smith (kajiya) wrote :

I managed to reproduce the FTBFS via a `dget` && `sbuild` of the broken `.dsc`...

(big thanks to Athos for helping me here!) The issue is because the `ubuntu1` source upload didn't include the secondary orig *.orig-google-guest-agent.tar.xz that was promised, so `debian/rules` craps out as it expects a `google-guest-agent/` which was never there.

I've fixed it by actually now including the missing secondary orig tar and confirmed it does indeed build now via `debuild -S -sa` (and another `sbuild` using `*ubuntu2.dsc` for prosperity).

I've also got a fresh PPA set up with the build uploaded here: https://launchpad.net/~kajiya/+archive/ubuntu/gga-v2/+packages :)

Revision history for this message
Athos Ribeiro (athos) wrote :

Thanks for fixing things here, Chloé!

The diff provided in comment #5 does not seem to be correct. I would expect to see at least a d/changelog entry and the new directory (with all of its files) being added there.
It seems that I am looking the the tail of a dsc file instead.

I did have a look in the diff of the FTBFS sources in the archive vs the *ubuntu2* sources in the ppa. That looks much better. Here are some comments on that diff:

- The d/changelog entry says that the new plugin directory is there to create a missing tarball. I'd see it the other way around since people pulling the sources from the archive would use the tarball to create the directory. before a build from sources.

- From a sponsor perspective, I am having a hard time to check the provenance of the new upstream tarball for the new plugin. I can get the hash of the commit we are pinned to from d/changelog and then get a tarball from http://github.com/GoogleCloudPlatform/google-guest-agent/archive/${HASH}.tar.gz, in this case, http://github.com/GoogleCloudPlatform/google-guest-agent/archive/e5ea53c707c2ff22ce4c56b9f1d4570551adec9d.tar.gz.

Then I run

$ diffoscope --new-file UPSTREAM_TARBALL PPA_TARBALL > diffoscope-output.diff

And I get a large diff there which I am unsure how to assess:
- The file timestamps are different, this is OK, but we could preserve them upon repacking to make the diffoscope output nicer/predictable.
- I see differences on the .pb.go files, which is expected as this was automatically generated.

I suppose this is exactly what we should expect from that tarball, right?
In that case, I suppose the repacking of that tarball could be available in a script under debian/ do make these checks easier.

So, for this upload, I'd suggest:

- Fix the d/changelog entry
- Either provide a correct debdiff for a sponsor or ask them to fetch the package from your PPA, adjust the version and upload

For the future:

- provide a script to repack that tarball and document it in d/README.source.
- check if it is possible to use the uscan MUT + repacking feature to leverage this new script and automate as much as possible in d/watch (this may be harder due to the fact that we need specific commit hashes when fetching a new tarball).

Revision history for this message
Athos Ribeiro (athos) wrote :

As we discussed in matrix, I actually believe that generating the pb.go files should be part of the build process here.

Let's not block this on that specific change, but it would be nice to see that improvement in the future.

MP approved and uploaded. Thank you!

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.