Comment 0 for bug 2039873

Revision history for this message
Aleksandr Mikhalitsyn (mihalicyn) wrote : liblxc-dev was built with LXC_DEVEL=1 in Ubuntu Jammy/Kinetic

Dear colleagues,

As I can see from:
- https://git.launchpad.net/ubuntu/+source/lxc/tree/configure?h=applied/ubuntu/jammy
- https://git.launchpad.net/ubuntu/+source/lxc/tree/configure?h=applied/ubuntu/kinetic

LXC 5.0.0 was built with LXC_DEVEL=1 set. But for release build we should have LXC_DEVEL=0.

LXC_DEVEL is a variable that appears in the /usr/include/lxc/version.h and then can be (and actually it is) used by other projects to detect if liblxc-dev is a development build or stable.

Having LXC_DEVEL=1 makes problems for the users who want to build projects those are depend on liblxc
from source (for example, LXD, go-lxc: https://github.com/canonical/lxd/pull/12420).

Q: Why it was not a problem for so long?
A: Because LXC API was stable for a long time, but recently we have extended liblxc API (https://github.com/lxc/lxc/pull/4260) and dependant package go-lxc was updated too (https://github.com/lxc/go-lxc/pull/166).
This change was developed properly to be backward compatible with the old versions of liblxc. But, there is a problem. If LXC_DEVEL=1 then the macro check VERSION_AT_LEAST (https://github.com/lxc/go-lxc/blob/ccae595aa49e779f7ecc9250329967aa546acd31/lxc-binding.h#L7) is disabled. That's why we should *not* have LXC_DEVEL=1 for *any* release build of LXC.

And also, as I can see the source code that was used to build LXC 5.0.0 in Jammy/Kinetic is not precisely the same as in the official LXC 5.0.0 tag (https://github.com/lxc/lxc/tree/lxc-5.0.0).

I understand that Jammy is a LTS release and making any changes is a problem and we should go through the SRU process. But I believe that we have to do something at least with LXC_DEVEL to make things work properly.

Kind regards,
Alex