[Bug 2039873] Re: liblxc-dev was built with LXC_DEVEL=1 in Ubuntu 22.04 and later releases
Dave Jones
2039873 at bugs.launchpad.net
Mon Jan 22 15:15:51 UTC 2024
I had a little time to look over this again in my patch-pilot shift. I
agree it's almost certainly best to just get LXC_DEVEL set correctly
quickly. Andreas' suggested branch is a good start, but I agree with the
critique that the DEP-8 test should be checking the installed headers
rather than the built source. Due to this, it's probably also best if
the test is named something other than "build". Also, I agree it
shouldn't be marked "superficial".
I've pushed a few commits on top of Andreas' to another clone here,
which also fixes a build-failure on noble (lib/systemd instead of
usr/lib/systemd in d/lxc-utils.install):
https://code.launchpad.net/~waveform/ubuntu/+source/lxc/+git/lxc
I've tested the DEP-8 passes with the branch, and crucially that it
fails when the LXC_DEVEL fix is reverted (which it does). If this looks
sane to someone else, I'm happy to sponsor this into noble (and start
SRU proceedings for mantic and jammy).
--
You received this bug notification because you are a member of Ubuntu
Sponsors, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2039873
Title:
liblxc-dev was built with LXC_DEVEL=1 in Ubuntu 22.04 and later
releases
Status in lxc package in Ubuntu:
Confirmed
Status in lxc source package in Jammy:
Confirmed
Status in lxc source package in Mantic:
Confirmed
Status in lxc source package in Noble:
Confirmed
Bug description:
[ Impact ]
LXC 5.0.0 was built with LXC_DEVEL=1 set for Jammy. 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.
[ Test Plan ]
Install liblxc-dev package and check /usr/include/lxc/version.h file
LXC_DEVEL should be 0
[ Where problems could occur ]
Theoretically, build of a software which depends on liblxc-dev may start to fail
if it assumes that LXC_DEVEL is 1.
[ Other Info ]
-
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/2039873/+subscriptions
More information about the Ubuntu-sponsors
mailing list