Mailinglist Archive: opensuse-factory (1324 mails)

< Previous Next >
Re: [opensuse-factory] Virtualbox broken on tumbleweed
  • From: Tomáš Čech <sleep_walker@xxxxxxxxxxxx>
  • Date: Sat, 10 Oct 2015 17:41:15 +0200
  • Message-id: <20151010154114.GB8493@venom>
On Sat, Oct 10, 2015 at 05:33:40PM +0300, Andrei Borzenkov wrote:
10.10.2015 17:11, Knurpht - Gertjan Lettink пишет:
Op zaterdag 10 oktober 2015 14:41:48 schreef Erwin Van de Velde:
However :-) I would like to see missing packages like the kermel
modules preventing Virtualbox from working properly to be treated as a
bit more critical and updated sooner.

It's not just Virtualbox. Those of us having NVIDIA Optimus experience the
same thing re. bbswitch.
On an already running TW this IMHO should result in the system not updating
the kernel, since the updates for the installed kmp packages have not been
built yet.

Do you have any suggestion how it can be implemented?

I.e. we have packages

kernel-v1
kernel-v2
kernel-kmp-v1
kernel-kmp-v2

What Requires or Conflicts should be added to each package that allow

- installing all packages at the same time on a system
- not allowing installing kernel-v2 if kernel-kmp-v2 is missing

Given that kernel package obviously can *not* list every KMP as prerequisites.

I do not see how it can be expressed using package dependency. Nor RPM has any way to gracefully block installation.

I think it could be implemented as trigger that runs before kernel package is installed and basically tests that

for each KMP installed on system
if KMP for new kernel is not available
fail

Small implementation details are a) how to find KMP and b) how to find KMP for new kernel.

I created stupid script which could test it naively:
#!/bin/bash

for i in default desktop pv pae xen; do
provided_uname="$(zypper info --provides kernel-"$i" | grep kernel-uname-r)"
while read pkg; do
required_uname="$(zypper info --requires "$pkg" | grep kernel-uname-r)"
if [ "$required_uname" != "$provided_uname" ]; then
broken="${broken} $pkg"
fi
done < <(zypper se kmp-"$i" | grep -v debuginfo | sed
'1,/^[-+]\+$/d;s@^[^|]*| \([^ ]\+\) .*@\1@')
done

echo "$broken"

To have this working I rely on two things:
1] zypper info works with latest version of the package available

2] KMP packages contains 'kmp-$flavour' in its name (I could also
search with `zypper se --requires kernel-uname-r' and ommit kernel
packages)

If package requires kernel-uname-r symbol, it must match provided one.

Best solution would work directly with repository metadata and could be run in
openQA easily.

Best regards,

Tomas Cech
< Previous Next >