Howdy All,
I've been working on the kernel module plugin for SL 4.5.
I like Axel's kmdl plugin so much I simply tossed the old plugin and
started fresh with his. But there were a few points I changed.
My goal is to get the plugin to work in the same manner for
kernel-modules for S.L. 3.0.x.
I am one step away from that goal, but I'm sort stuck and need some help.
So, here is what I changed thus far.
1- changed the format from <module name>-kdml-<kernel> to
kernel-module-<module name>-<kernel>
2- I separated the function kmdls to new_kmdls and old_kmdls, similar to
the new_kernels and old_kernels.
2a- It now checks to see if there are any new kernels (new_kernels) OR
any new kernel modules (new_kmdls), if there aren't either, than it just
exits. If there are some, then it collects the list of installed
kernels (old_kernels), and the list of installed kernel modules
(old_kmdls) to process. The processing is in the same.
I did 2a to cut down on the processing time when a user isn't
installing/updating any kernels or kernel modules. It also makes it so
that when a user installs a kernel module, they get the kernel modules
for all the kernels they have installed, or are installing.
3- I put alot more bebugging lines. -d4 is alot more informative, and
-d6 is almost annoying if you have alot of kernels.
So, where am I stuck.
I'm still stuck with my number one problem.
If a user just installs the program that requires a kernel-module, such
as openafs-client, then yum just picks the first kernel-module that
works, whether they have that kernel installed or not.
I have a solution, but I just can't figure out the details.
In the function new_kmdls, after I have found out that there is a kernel
module ready to be installed or updated, I put the module name in my
list. I can then remove that package from the main list of packages to
be installed.
I can remove it because if that package happens to be one for a kernel
we have installed, it will get re-added to the list later on. If it
isn't for a kernel we have installed, then it needs to be taken off.
But I am unable to take the package off the list of packages to be
installed or updated. I have tried the remove() command. But with yum
2.4.x, the remove function is just a stub, saying it will be written later.
I've tried cutting and pasting the code from yum 2.4.6 in, and that
didn't work either.
I've tried setting the ts_state to None, but it seemed like it didn't
really stick, it went back after the function.
Any ideas?
Thanks
Troy
p.s. The remove function is in transactioninfo.py. The new code is
def remove(self, pkgtup):
"""remove a package from the transaction"""
if not self.pkgdict.has_key(pkgtup):
self.debugprint("Package: %s not in ts" %(pkgtup,))
return
for txmbr in self.pkgdict[pkgtup]:
txmbr.po.state = None
del self.pkgdict[pkgtup]
self.changed = True
--
__________________________________________________
Troy Dawson [log in to unmask] (630)840-6468
Fermilab ComputingDivision/LCSI/CSI DSS Group
__________________________________________________
|