[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#1109655: Bug#1109513: Likely golang-github-golang-protobuf-1-{3,5}-dev transition





On Tue, Jul 29, 2025 at 3:19 AM Jochen Sprickerhof <jspricke@debian.org> wrote:
Hi Reinhard,

* Reinhard Tartler <siretart@gmail.com> [2025-07-28 18:55]:
>So, I've locally build a new package with
>https://salsa.debian.org/go-team/packages/golang-github-golang-protobuf-1-5/-/commit/2739999e3baf72f7e534fccc40918c8d5ce94229
>included, and it seems that with your test case above, no packages are held
>back and the upgrade passes. My understanding is that the "Replaces"
>relationship give apt the hint that it is fine to
>remove golang-github-golang-protobuf-1-3-dev, which is the intended outcome.

Can you explain how you tested this?

I tried to reproduce it like this:

mmdebstrap --chrooted-customize-hook="set -x ; apt -y install golang-github-denverdino-aliyungo-dev \
   && sed -e s/bookworm/trixie/ -i /etc/apt/sources.list && apt update \
        && sed -i -e 's/Package: golang-github-golang-protobuf-1-5-dev/&\nBreaks: golang-github-golang-protobuf-1-3-dev (<< 1.5)\nReplaces: golang-github-golang-protobuf-1-3-dev (<< 1.5)/' \
               -e 's/Package: protoc-gen-go-1-5/&\nBreaks: protoc-gen-go-1-3 (<< 1.5)\nReplaces: protoc-gen-go-1-3 (<< 1.5)/' \
                                 /var/lib/apt/lists/deb.debian.org_debian_dists_trixie_main_binary-amd64_Packages \
        && apt dist-upgrade" bookworm /dev/null

But still see:

The following packages have been kept back:
   golang-github-denverdino-aliyungo-dev

Did I miss anything?

I did a slight variation: First I started with:

PKG=golang-github-denverdino-aliyungo-dev; mmdebstrap \
   --chrooted-customize-hook="set -x ; apt -y install $PKG && sed -e s/bookworm/trixie/ -i /etc/apt/sources.list && apt update" \
        --chrooted-customize-hook=bash bookworm /dev/null


Then I copied the resulting deb files into /tmp/mmdebstrap.*/packages

And added the following to /tmp/mmdebstrap.*/etc/apt/sources.list:

deb [trusted=true] file:///packages ./


Also, inside the chroot I created the necessary index files with:

apt-ftparchive packages . > Packages
apt-ftparchive release . > Release

Then, after an `apt-get update && apt-get dist-upgrade`, I didn't end up with held back packages:

root@x1:/packages# apt update
Get:1 file:/packages ./ InRelease
Ign:1 file:/packages ./ InRelease
Get:2 file:/packages ./ Release [816 B]
Get:2 file:/packages ./ Release [816 B]
Get:3 file:/packages ./ Release.gpg
Ign:3 file:/packages ./ Release.gpg
Get:4 file:/packages ./ Packages [3385 B]
Hit:5 http://security.debian.org/debian-security trixie-security InRelease
Hit:6 http://deb.debian.org/debian trixie InRelease
Hit:7 http://deb.debian.org/debian trixie-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
159 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@x1:/packages# apt dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  libapt-pkg6.0 libargon2-1 libc-dev-bin libc6-dev libcrypt-dev libgnutls30 libnsl-dev libnsl2
  libprotobuf-dev libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64 libtasn1-6 libtirpc-dev libunistring2
  linux-libc-dev protobuf-compiler protoc-gen-go-1-3 rpcsvc-proto zlib1g-dev
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  golang-github-golang-protobuf-1-3-dev golang-goprotobuf-dev libdb5.3 libelf1 libext2fs2 libgdbm-compat4
  libgdbm6 libhogweed6 libnettle8 libprotobuf-lite32 libprotobuf32 libprotoc32 libreadline8 libssl3 libtirpc3
The following NEW packages will be installed:
  gcc-14-base golang-github-golang-protobuf-1-5-dev golang-github-google-go-cmp-dev
  golang-google-protobuf-dev libapt-pkg7.0 libdb5.3t64 libelf1t64 libext2fs2t64 libgdbm-compat4t64
  libgdbm6t64 libhogweed6t64 liblastlog2-2 libnettle8t64 libperl5.40 libprotobuf-lite32t64 libprotobuf32t64
  libprotoc32t64 libreadline8t64 libsqlite3-0 libssl3t64 libtirpc3t64 libunistring5 login.defs
  openssl-provider-legacy perl-modules-5.40 sqv
The following packages will be upgraded:
  adduser apt apt-utils base-files base-passwd bash bsdutils coreutils cpio cron cron-daemon-common dash
  debconf debconf-i18n debian-archive-keyring debianutils diffutils dmidecode dmsetup dpkg e2fsprogs fdisk
  findutils gcc-12-base golang-github-denverdino-aliyungo-dev gpgv grep gzip hostname ifupdown init
  init-system-helpers iproute2 iputils-ping isc-dhcp-client isc-dhcp-common kmod less libacl1 libapparmor1
  libargon2-1 libattr1 libaudit-common libaudit1 libblkid1 libbpf1 libbsd0 libbz2-1.0 libc-bin libc-dev-bin
  libc6 libc6-dev libcap-ng0 libcap2 libcap2-bin libcom-err2 libcrypt-dev libcrypt1 libcryptsetup12
  libdebconfclient0 libdevmapper1.02.1 libedit2 libfdisk1 libffi8 libfile-find-rule-perl libgcc-s1
  libgcrypt20 libgmp10 libgpg-error0 libgssapi-krb5-2 libidn2-0 libip4tc2 libjansson4 libjson-c5 libk5crypto3
  libkeyutils1 libkmod2 libkrb5-3 libkrb5support0 liblocale-gettext-perl liblz4-1 liblzma5 libmd0 libmnl0
  libmount1 libncursesw6 libnewt0.52 libnftables1 libnftnl11 libnsl-dev libnsl2 libp11-kit0 libpam-modules
  libpam-modules-bin libpam-runtime libpam0g libpcre2-8-0 libpopt0 libproc2-0 libprotobuf-dev libseccomp2
  libselinux1 libsemanage-common libsemanage2 libsepol2 libslang2 libsmartcols1 libss2 libstdc++6
  libsystemd-shared libsystemd0 libtasn1-6 libtext-charwidth-perl libtext-iconv-perl libtinfo6
  libtirpc-common libtirpc-dev libudev1 libuuid1 libxtables12 libxxhash0 libzstd1 linux-libc-dev login
  logrotate logsave mawk mount nano ncurses-base ncurses-bin netbase nftables passwd perl perl-base procps
  protobuf-compiler protoc-gen-go-1-3 readline-common sed sensible-utils systemd systemd-sysv sysvinit-utils
  tar tasksel tasksel-data tzdata udev usrmerge util-linux util-linux-extra vim-common vim-tiny whiptail
  zlib1g zlib1g-dev
158 upgraded, 26 newly installed, 15 to remove and 0 not upgraded.
Need to get 73.1 MB/73.3 MB of archives.
After this operation, 89.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

I believe this is a more realistic test than patching the apt internal files, as I don't
claim to be an expert on apt internals at all

Also note that marking 1-5 replace 1-3 would/could make
golang-gopkg-rethinkdb-rethinkdb-go.v6 FTBFS as I wrote in 1109513#30.

Let's track this separately. I agree that rethinkdb-go.v6 should be ported to protobuf@1.5,

I believe this package has been introduced as a dependency of docker.io at the time, but may
not be needed at this point. If that were true, maybe we should remove that package for trixie.

 
>In fact, all of the packages of the cloned bug no longer
>reference golang-github-golang-protobuf-1-3 at all. However, it is very
>easy to end up with a system that has golang-github-golang-protobuf-1-3-dev
>installed in bookworm, and we would rather have apt uninstall it for trixie
>ugprades in favor of golang-github-golang-protobuf-1-5.

I think the only working way is to finish the 1-5 transition and make
1-3 a transitional dummy package as per

https://wiki.debian.org/RenamingPackages

and as outlined in 1109513#25.

Cheers Jochen

I can do that, but I'm concerned that this would break packages, such as rethinkdb.v6,
which haven't been updated to work with protobuf@v1.5.

golang-github-golang-groupcache: golang-github-golang-protobuf-1-3-dev
golang-github-spiffe-go-spiffe: protoc-gen-go-1-3
golang-google-appengine: golang-github-golang-protobuf-1-3-dev
golang-gopkg-rethinkdb-rethinkdb-go.v6: golang-github-golang-protobuf-1-3-dev
                                        protoc-gen-go-1-3
golang-protobuf-extensions: golang-github-golang-protobuf-1-3-dev
golang-v2ray-core: protoc-gen-go-1-3
seems that those packages get broken by mechanically replacing 1.5 for 1.3, and may require
additional changes.

I can look into that a bit more. In the meantime, are you sure that adding the Replaces/Breaks
isn't sufficient for apt to remove the unneeded golang-github-golang-protobuf-1-3-dev package?
I wonder why my test case indicates that it would be fine?


--
regards,
    Reinhard

Reply to: