Bionic: debian-installer FTBFS because udev-udeb depends on libkmod2 not libkmod2-udeb
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
kmod (Ubuntu) | ||||||
Bionic |
Fix Released
|
High
|
Mauricio Faria de Oliveira | |||
systemd (Ubuntu) | ||||||
Bionic |
Fix Released
|
High
|
Mauricio Faria de Oliveira |
Bug Description
[Impact]
* debian-installer currently FTBFS on Bionic because
udev-udeb depends on libkmod2 not on libkmod2-udeb.
* This regression has been introduced in kmod 24-1ubuntu3.3,
and it propagated into udev-udeb in systemd 237-3ubuntu10.40.
* See the '[Details]' section for the details. :)
[Fix]
* That kmod change fixes a FTBFS with newer debhelper on Eoan and later,
but it is not required with older debhelper on Bionic. Just revert it.
* There is no need to "fix" this in Eoan and later (debhelper >= 12.3)
* No-change rebuild of systemd (for udev-udeb to pick up libkmod2-udeb.)
[Test Case]
* Try to build debian-installer on Bionic; it FTBFS:
The following packages have unmet dependencies:
udev-udeb : Depends: libkmod2 but it is not installable
E: Unable to correct problems, you have held broken packages.
* Check if libkmod2's shlibs file contains an udeb line:
$ dpkg-deb --control libkmod2_
$ cat dir/shlibs
libkmod 2 libkmod2
udeb: libkmod 2 libkmod2-udeb # this is good.
[Regression Potential]
* The fix only changes the libkmod2's shlibs file to include
an udeb line (so udebs that depend on that library package
should depend on the -udeb package.)
Thus the regression potential is limited to the installer,
and the udeb packages which depend on libkmod2 (udev-udeb
only, probably.)
Regressions could be seen as failures to load libkmod2.so
and/or not finding its dynamic symbols.
* There is a no-change rebuild of systemd involved/required,
so some dependency updates may potentially impact systemd.
[Details]
debian-installer currently FTBFS on Bionic because
udev-udeb depends on libkmod2 not on libkmod2-udeb:
The following packages have unmet dependencies:
udev-udeb : Depends: libkmod2 but it is not installable
E: Unable to correct problems, you have held broken packages.
This regression has been introduced in kmod 24-1ubuntu3.3,
and it propagated into udev-udeb in systemd 237-3ubuntu10.40.
kmod (24-1ubuntu3.3) bionic; urgency=medium
<...>
* Removed --add-udeb from dh_makeshlibs, since libkmod2-udeb does not
actually contain a library. (Closes: #939779)
<...>
From dh_makeshlibs(1):
--add-udeb=udeb
Create an additional line for udebs in the shlibs file
and use udeb as the package name for udebs to depend on
instead of the regular library package.
Before:
$ dpkg-deb --control libkmod2_
$ cat libkmod2-
libkmod 2 libkmod2
udeb: libkmod 2 libkmod2-udeb
$ dpkg-deb --info udev-udeb_
Depends: ..., libkmod2-udeb, ...
After:
$ dpkg-deb --control libkmod2_
$ cat libkmod2-
libkmod 2 libkmod2
$ dpkg-deb --info udev-udeb_
Depends: ..., libkmod2, ...
That kmod change fixes a FTBFS with newer debhelper on Eoan and later,
but it is not required with older debhelper on Bionic:
Eoan:
$ dpkg -s debhelper | grep Version:
Version: 12.6.1ubuntu2
$ dpkg-buildpackpage
<...>
dh_makeshlibs --add-udeb=
dh_makeshlibs: The udeb libkmod2-udeb does not contain any shared libraries but --add-udeb=
make: *** [debian/rules:120: .stamp-binary] Error 255
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
Bionic:
$ dpkg -s debhelper | grep Version:
Version: 11.1.6ubuntu2
$ dpkg-buildpackpage
<...>
dh_makeshlibs --add-udeb=
dh_shlibdeps -- --warnings=7
<...>
dpkg-buildpackage: info: binary and diff upload (original source NOT included)
There is no need to "fix" this in Eoan and later, as debhelper >= 12.3
has support for udeb auto-detection in dh_makeshlibs(1) -- and the udeb
line is added to shlibs by default (without --add-udeb):
From dh_makeshlibs(1):
Since debhelper 12.3, dh_makeshlibs will by default add an additional udeb line for udebs
in the shlibs file, when the udeb has the same name as the deb followed by a "-udeb" suffix
<...>
Please use the --add-udeb and --no-add-udeb options below when this auto-detection is insufficient.
$ dpkg-deb --control libkmod2_
$ cat libkmod2-
libkmod 2 libkmod2
udeb: libkmod 2 libkmod2-udeb
$ dpkg-deb --control libkmod2_
$ cat libkmod2-
libkmod 2 libkmod2 (>= 27)
udeb: libkmod 2 libkmod2-udeb (>= 27)
$ dpkg-deb --control libkmod2_
$ cat libkmod2-
libkmod 2 libkmod2 (>= 27+20200310)
udeb: libkmod 2 libkmod2-udeb (>= 27+20200310)
This also needs a no-change rebuild on systemd, after kmod is built/available in archive.
Changed in kmod (Ubuntu): | |
status: | New → Invalid |
Changed in kmod (Ubuntu Bionic): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in systemd (Ubuntu): | |
status: | New → Invalid |
Changed in systemd (Ubuntu Bionic): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in kmod (Ubuntu Bionic): | |
milestone: | none → ubuntu-18.04.5 |
Changed in systemd (Ubuntu Bionic): | |
milestone: | none → ubuntu-18.04.5 |
Changed in systemd (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
no longer affects: | kmod (Ubuntu) |
no longer affects: | systemd (Ubuntu) |
tags: | added: ftbfs regression-update |
There's a systemd upload for Bionic with this version number already.
I guess that is a larger change that may be intended for post-release,
while this change is needed for release, so d-i builds w/ new kernels.
So, keeping the same number for now, in case this needs to trump that.