mbox series

[Unstable,0/1] UBUNTU: [Packaging] Check do_lib_rust before linking Rust lib files

Message ID 20240627165346.78336-1-noah.wager@canonical.com
Headers show
Series UBUNTU: [Packaging] Check do_lib_rust before linking Rust lib files | expand

Message

Noah Wager June 27, 2024, 4:52 p.m. UTC
[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.
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.

Noah Wager (1):
  UBUNTU: [Packaging] Check do_lib_rust before linking Rust lib files

 debian/rules.d/2-binary-arch.mk | 2 ++
 1 file changed, 2 insertions(+)

Comments

Juerg Haefliger June 28, 2024, 8:29 a.m. UTC | #1
We also want this in Noble, no?

...Juerg


> [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.
> 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.
> 
> Noah Wager (1):
>   UBUNTU: [Packaging] Check do_lib_rust before linking Rust lib files
> 
>  debian/rules.d/2-binary-arch.mk | 2 ++
>  1 file changed, 2 insertions(+)
>
Paolo Pisati June 28, 2024, 9:12 a.m. UTC | #2
On Thu, Jun 27, 2024 at 09:52:37AM -0700, Noah Wager wrote:
> [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.
> 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.

Acked-by: Paolo Pisati <paolo.pisati@canonical.com>