SCIENTIFIC-LINUX-DEVEL Archives

February 2007

SCIENTIFIC-LINUX-DEVEL@LISTSERV.FNAL.GOV

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Troy Dawson <[log in to unmask]>
Reply To:
Troy Dawson <[log in to unmask]>
Date:
Fri, 9 Feb 2007 12:46:45 -0600
Content-Type:
multipart/mixed
Parts/Attachments:
text/plain (3107 bytes) , kernel-module.py (5 kB)
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
__________________________________________________


ATOM RSS1 RSS2