Subject: vip-manager and vip-manager2 FTBFS

From: Bradford Boyle <[email-masked]>
Date: Sun, 11 Aug 2024 23:34:14 -0700

Hi All,

The package golang-etcd-server-dev was updated from 3.4.30 to to 3.5.15
at the end of July. This version of etcd introduced a couple of changes
to import paths that caused vip-manager and vip-manager2 to FTBFS in sid
[1, 2]. I've prepared patches for both packages to update the import
paths [3, 4]. With these patches, both packages build on sid and
autopkgtests pass.

However, bookworm has etcd 3.4.23 and noble has 3.4.30 so the patches
break the build on older distributions. I don't believe this is an issue
for vip-manager since this pakcage provides vip-manager 1.x which hasn't
had a new release since 2022. vip-manager2 has had a release as recently
as three weeks ago. If we want to build updated packages of vip-manager2
for both bookworm and trixie on pgdg, we would need to apply different
patches for etcd 3.4 and 3.5.

I suppose we could also just disable vip-manager2 for any distribution
besides sid and trixie but I don't have a sense of how popular this
package is and if that is a viable solution for this particular package.

Before updating these packages, I wanted to see if there was any input
on how to handle these packages on older distributions.

Thanks,
-- Bradford

[1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078322
[2]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078323
[3]: https://salsa.debian.org/postgresql/vip-manager/-/commit/ac57eaba565013c462da95276db4824af3069beb
[4]: https://salsa.debian.org/postgresql/vip-manager2/-/commit/244ba273f40125861603403064171e2736a2978d

---

From: Christoph Berg <[email-masked]>
Date: Fri, 16 Aug 2024 11:53:52 +0200

Re: Bradford Boyle
> on how to handle these packages on older distributions.

etcd is often run independently on the network, so might be a version
unrelated to the local OS. Supporting v1 and v2 APIs in parallel make
sense to some degree.

And then there's the problem of different etcd-client module versions
on top. I was talking to Pavlo about this yesterday and he suggested
"go replace":
https://thewebivore.com/using-replace-in-go-mod-to-point-to-your-local-module/
But I think this solves a different problem than we have.

The way to go is probably still patches for the respective etcd-client
versions, and enabling them in debian/patches/series from
generate-pgdg-source depending on the distribution targeted.

Or we might try "go get" on that module if a distribution other than
sid/testing is being built. (Unsure how to best hook that into the
build process, possibly via logic in debian/rules.)

Christoph

---

From: Bradford Boyle <[email-masked]>
Date: Tue, 20 Aug 2024 23:21:21 -0700

Hi Christoph,

> generate-pgdg-source depending on the distribution targeted.

I've pushed my changes for vip-manager and vip-manager2 packages to
salsa and attached is patch for gnerate-pgdg-source that selectively
enable/disable the patches depending on the distributions. I have
manually tested the sed commands and that the resulting source package
builds on sid and bookworm.

As time permits, I would appreciate any reviews.

Thanks,
-- Bradford

---

From: Christoph Berg <[email-masked]>
Date: Fri, 23 Aug 2024 13:15:14 +0200

Re: Bradford Boyle
> builds on sid and bookworm.

Thanks!

Unfortunately, Go is a mess, and there was still a build problem on
jammy where it worked before and is now broken for whatever reason:

11:52:57 src/github.com/cybertec-postgresql/vip-manager/checker/etcd_leader_checker.go:15:2: cannot find package "go.etcd.io/etcd/client/v2" in any of:
11:52:57 	/usr/lib/go-1.18/src/go.etcd.io/etcd/client/v2 (from $GOROOT)
11:52:57 	/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/go.etcd.io/etcd/client/v2 (from $GOPATH)

I gave up and just copied the binaries from bullseye to jammy, which
is already done for buster and focal anyway.

Christoph