Hi All!
I (once again) played a bit around with kernel-modules and a scheme for packaging those for fedora-extras. A patch for mock to pass the kernel-version for which the kernel-module-pkg should be build and a discussion about it and its usage in plague currently happens on fedora-buildsys-list.
I also did some experiments with binary packages based on the KernelModuleProposal 2 ( http://www.fedoraproject.org/wiki/Extras/KernelModuleProposal ) and how yum handles those. To make my life easier I hacked up a test-script that creates a kernel-module testing-repo for yum. Those interested can find everything needed at http://www.leemhuis.info/files/fedorarpms/MISC.fdr/km-testing-yum
Warning, use at your own risk. create_testrepo.sh creates a testrepo with ndiswrapper-rpms build from the two SRPMS (they are nearly identical with those from the KernelModuleProposal 2 with some slightly changes to simplify testing) in that dir. You need to install the SRPMS to your rpmbuild folder manually. You probably also need to adjust some variables in the script and copy two kernels from updates-testing over.
The problems that showed up during the tests (on a fresh FC4, only UP-Kernel installed and yum updated to the latest version from updates-released [no other update]) are described below. Note, this is not meant as a rant against yum. I really like yum. It just meant as a "that the state with kernel-module{s,-proposal} and yum ATM -- if we like it or not". Seth (or anybody else), if you're interested in more details, debug output or even bug reports filled: just say and I'll do what I can.
If anybody else has ideas what also could or should be tested send a mail and I'll add it.
####################### Adding a repo with
ndiswrapper-1.1-1.i386.rpm kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4smp.i686.rpm
in it and typing
# yum --disablerepo=updates-released --enablerepo=step_1 install 'kernel-module-ndiswrapper'
will result in:
[...] Dependencies Resolved
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: kernel-module-ndiswrapper i686 1.1-1.2.6.11_1.1369_FC4smp step_1 3.3 k Installing for dependencies: kernel-smp i686 2.6.11-1.1369_FC4 base 13 M ndiswrapper i386 1.1-1 step_1 22 k
Transaction Summary
Install 3 Package(s)his [...]
Seems yum prefers to install the kernel-module for the smp kernel and therefor also installs that kernel even when a UP-Kernel is installed already. Not very nice :-(
####################### Nearly the same problem as above happened when I used
# yum --disablerepo=updates-released --enablerepo=step_1 ndiswrapper
[...] Dependencies Resolved
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: ndiswrapper i386 1.1-1 step_1 22 k Installing for dependencies: kernel-module-ndiswrapper i686 1.1-1.2.6.11_1.1369_FC4smp step_1 3.3 k kernel-smp i686 2.6.11-1.1369_FC4 base 13 M
Transaction Summary
Install 3 Package(s) [...]
####################### Okay, next test; Both UP- and SMP-Kernel are installed now (as it normally is the case on SMP-Systems). typing
# yum --disablerepo=updates-released --enablerepo=step_1 install 'kernel-module-ndiswrapper'
or
# yum --disablerepo=updates-released --enablerepo=step_1 ndiswrapper
will result in something like this:
[...] Dependencies Resolved
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: kernel-module-ndiswrapper i686 1.1-1.2.6.11_1.1369_FC4smp step_1 3.3 k Installing for dependencies: ndiswrapper i386 1.1-1 step_1 22 k
Transaction Summary
Install 2 Package(s) [...]
In and ideal world yum would install modules for both up and smp in that case.
Note: The problems described up until here probably can happen with the naming schemes currently used by Livna (where uname is in the name of the package, e.g. kernel-module-ndiswrapper-2.6.11_1.1369_FC4smp-1.1-1.i686.rpm), too. We had some of those problems in the past.
####################### Next test (only with SMP-kernel): New Ndiswrapper-Version. This is in the repo now:
kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4smp.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp.i686.rpm ndiswrapper-1.1-1.i386.rpm ndiswrapper-1.1-2.i386.rpm
Works now! Did not with older yum version. Problem was: kernel-modules normally are installed, not updated. But in this case the pgk needs to be updated cause the files in the package would conflict otherwise.
[...] Dependencies Resolved
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: kernel-module-ndiswrapper i686 1.1-2.2.6.11_1.1369_FC4smp step_2 3.3 k Updating: ndiswrapper i386 1.1-2 step_2 21 k Removing: kernel-module-ndiswrapper i686 1.1-1.2.6.11_1.1369_FC4smp installed 11
Transaction Summary
Install 1 Package(s) Update 1 Package(s) Remove 1 Package(s) [...]
####################### I did two further test it this point (also only with SMP-kernel) and they worked like they should:
- I added a new kernel (2.6.12-1.1447_FC4) to the repo but the ndiswrapper-module was not yet in the repo -- yum updated the kernel
- later I added the module (kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp); yum installed it
####################### Last Test (for now). I placed another updated kernel and (at the same time) a update of ndiswrapper itself in the repo:
kernel-2.6.12-1.1447_FC4.i686.rpm kernel-2.6.12-1.1456_FC4.i686.rpm kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4smp.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4.i686.rpm kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp.i686.rpm kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4.i686.rpm kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp.i686.rpm kernel-smp-2.6.12-1.1447_FC4.i686.rpm kernel-smp-2.6.12-1.1456_FC4.i686.rpm ndiswrapper-1.1-1.i386.rpm ndiswrapper-1.1-2.i386.rpm ndiswrapper-1.2-1.i386.rpm
Yum installs the new kernel, new ndiswrapper and new kernel-module-ndiswrapper (as it should). But here we hit a problem with our proposal. Older kernel-module-versions stay installed, but they probably won't work with the new ndiswrapper-utils-package (maybe not in the case of ndiswrapper, but ati-fglrx, nvidia-glx, qemu and other pkg. likely will have this problem). I thought a Obsoletes in the kernel-module-ndiswraper.spec like the following might help:
Obsoletes: kernel-module-%{mainpkgname} < %{version}-%{release}
And it did -- a bit:
[...] Dependencies Resolved
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: kernel-module-ndiswrapper i686 1.2-1.2.6.12_1.1456_FC4smp step_5 3.4 k replacing kernel-module-ndiswrapper.i686 1.1-2.2.6.11_1.1369_FC4smp
kernel-smp i686 2.6.12-1.1456_FC4 step_5 14 M Updating: ndiswrapper i386 1.2-1 step_5 21 k
Transaction Summary
Install 2 Package(s) Update 1 Package(s) Remove 0 Package(s)
Is this ok [y/N]: y Downloading Packages: Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: kernel-smp ######################### [1/4] Installing: kernel-module-ndiswrapper ######################### [2/4] Updating : ndiswrapper ######################### [3/4] Cleanup : ndiswrapper ######################### [4/4]
Installed: kernel-module-ndiswrapper.i686 0:1.2-1.2.6.12_1.1456_FC4smp kernel-smp.i686 0:2.6.12-1.1456_FC4 Updated: ndiswrapper.i386 0:1.2-1 Replaced: kernel-module-ndiswrapper.i686 0:1.1-2.2.6.11_1.1369_FC4smp kernel-module-ndiswrapper.i686 0:1.1-2.2.6.12_1.1447_FC4smp Complete!
But huuuh, why are they still installed? afterwards?
$ rpm -qa 'kernel-module-ndiswrapper*' kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp $ rpm -Va 'kernel-module-ndiswrapper*' && echo okay okay
Something seems wrong here. Anybody any idea what?
packaging@lists.fedoraproject.org