Commit: "UBUNTU: [Packaging] introduce do_lib_rust and enable it only on
generic amd64" introduces the "do_lib_rust" variable in rules.d/ that
avoids generating the extra rust package when unset/false. However, this
is not checked when inserting a symlink to the linux-lib-rust package
directory in the headers, resulting in a dangling symlink when rust is
turned off. This can cause issues when e.g. building dkms modules
against the headers, where the build will fail due to not finding the
directory.
[How to reproduce it]
1. Build linux-headers-* package for kernel with rust disabled (e.g.
realtime)
2. Install (or extract) the package
3. View corresponding /usr/src/linux-headers-*/ directory
4. Observe /usr/src/linux-headers-*/rust -> ../linux-lib-rust-* but
linux-lib-rust is never built and installed
[Fix]
Check the existing do_lib_rust variable is true before trying to symlink
the linux-lib-rust files.
[Test plan]
1. Apply the fix and rebuild the kernel headers packages
2. Install or inspect the headers
3. Ensure /usr/src/linux-headers-*/rust points to an existing directory
[Regression potential]
Very low. This is a simple fix, and it only impacts rust packaging for
kernels with do_lib_rust unset/false so the visibility is low.
[SRU Justification]
[Impact]
Commit: "UBUNTU: [Packaging] introduce do_lib_rust and enable it only on
generic amd64" introduces the "do_lib_rust" variable in rules.d/ that
avoids generating the extra rust package when unset/false. However, this
is not checked when inserting a symlink to the linux-lib-rust package
directory in the headers, resulting in a dangling symlink when rust is
turned off. This can cause issues when e.g. building dkms modules
against the headers, where the build will fail due to not finding the
directory.
[How to reproduce it]
1. Build linux-headers-* package for kernel with rust disabled (e.g. linux-headers- */ directory linux-headers- */rust -> ../linux-lib-rust-* but
realtime)
2. Install (or extract) the package
3. View corresponding /usr/src/
4. Observe /usr/src/
linux-lib-rust is never built and installed
[Fix]
Check the existing do_lib_rust variable is true before trying to symlink
the linux-lib-rust files.
[Test plan]
1. Apply the fix and rebuild the kernel headers packages linux-headers- */rust points to an existing directory
2. Install or inspect the headers
3. Ensure /usr/src/
[Regression potential]
Very low. This is a simple fix, and it only impacts rust packaging for
kernels with do_lib_rust unset/false so the visibility is low.