Phodav transition notes

I completed the phodav transition in Ubuntu 22.10 (development). In Debian/Ubuntu, phodav only has one direct reverse dependency: spice-gtk. So it looks deceptively simple.

But the phodav transition was complex so I’m writing some notes here since other distros probably want to be aware of some of the details.

spice-gtk apps

spice-gtk is a library used by several apps. The latest spice-gtk has an option to build with libsoup3. You’ll need to use that option to build it with phodav 3.0.

GNOME Boxes uses spice-gtk. It also uses libosinfo which directly depends on libsoup. To switch GNOME Boxes to use the new spice-gtk, we need to switch libosinfo to also build with libsoup3. You should cherry-pick a commit to enable that build option.

GNOME Boxes also uses tracker which uses libsoup. Because tracker is used by so many apps, I didn’t want to transition tracker to libsoup3 now. Therefore, I hacked together a patch to build GNOME Boxes without tracker support. My opinion is that the tracker feature is not commonly used so this was acceptable as a temporary distro patch. I do plan to drop the patch after transitioning tracker later this cycle.

virt-viewer uses spice-gtk and libgovirt. libgovirt uses librest which uses libsoup. librest has a lot of dependencies including gnome-online-accounts which is used by evolution-data-server. libgovirt enables a Red Hat technology that I believe is only rarely used in Debian and Ubuntu. I was able to easily disable libgovirt for now and will re-enable the feature once libgovirt is transitioned to libsoup3 in my distro.

Remmina has a spice plugin and also uses libsoup directly and in its www plugin. I simply stopped building the spice plugin for now. I did report the issue to Remmina upstream and I think Remmina will be fixed to support both libsoup2 and libsoup3 in a few weeks. (By the way, the Remmina Flatpak was briefly broken last weekend because they accidentally tried to use the new phodav.)

Other spice-gtk dependencies like virt-manager did continue working fine after the transition without needing a rebuild because they only used one libsoup-depending library.

Breaks

In the Ubuntu (.deb) packaging, I added a Breaks from spice-gtk to the GNOME Boxes version before I made the changes. I made the GNOME Boxes package depend on the new spice-gtk and libosinfo. I also made spice-gtk break the old virt-viewer and an unversioned break against the Remmina spice plugin since I don’t know when Remmina will be fixed in my distro. This is because remmina-plugin-spice was a separate binary package in my distro. If it’s not a separate binary package, a regular versioned Breaks should work fine. I just need to remember to change that unversioned breaks to a versioned breaks once I start building remmina-plugin-spice again.

I added a Breaks from libosinfo to the old GNOME Boxes. It is essential that you don’t try to run GNOME Boxes with only one of the 2 dependencies (spice-gtk and libosinfo) updated to libsoup3. They need to be upgraded simultaneously.

Next

Even more things would have to upgrade simultaneously if you do the librest and tracker transitions. My current belief is that those will need to happen in a giant transition affecting several other interconnected libraries. Basically, transitioning a large part of the GNOME 43 stack at once. This is different from how Debian GNOME usually does transitions where we prefer to keep the number of lockstep pieces as small as possible to prevent transitions from getting stuck and disrupting other transitions potentially making the transition even bigger. I think that giant transition will look like this one, only with many more pieces.

It is very strongly recommended that your distro keep both libsoup2 and libsoup3 in your distro simultaneously as separate source packages since it’s impractical to convert every single thing using those libraries at once. However, it is not recommended to try to keep multiple versions of tracker and evolution-data-server around together.

Soname?

I do wonder if a soname bump would have been more appropriate for spice-gtk and libosinfo once a distro flips them to libsoup3 since it could cause apps to break unless the upgrade is carefully managed.

This was done for phodav where the API level was bumped to 3.0 but the only change was the libsoup3 change.

2 Likes

Thanks for the info, but it’s not fair to rush such change and force maintainers to hurry up with these kind of big changes :wink:

I won’t have time to fix Remmina till the end of September, so I hope someone will send a patch earlier.

I’m sorry you feel pressured and I’m sorry that I can’t be of more help this time. With GNOME’s 6-month release cycle, these changes happen quickly.

GNOME 43 is scheduled for release September 21.

1 Like