home *** CD-ROM | disk | FTP | other *** search
- # Install method for disk image installs (CD & NFS)
-
- from comps import ComponentSet, HeaderList
- import os
- import isys
- import rpm
-
- import todo
-
- FILENAME = 1000000
-
- class InstallMethod:
-
- def readComps(self, hdlist):
- isys.makeDevInode(self.device, '/tmp/' + self.device)
- isys.mount('/tmp/' + self.device, "/tmp/hdimage",
- fstype = self.fstype);
- cs = ComponentSet("/tmp/hdimage/" + self.path +
- '/RedHat/base/comps', hdlist)
- isys.umount("/tmp/hdimage")
- return cs
-
- def getFilename(self, h):
- return self.tree + "/RedHat/RPMS/" + self.fnames[h]
-
- def readHeaders(self):
- isys.makeDevInode(self.device, '/tmp/' + self.device)
- isys.mount('/tmp/' + self.device, "/tmp/hdimage",
- fstype = self.fstype);
- hl = []
- path = "/tmp/hdimage" + self.path + "/RedHat/RPMS"
- for n in os.listdir(path):
- fd = os.open(path + "/" + n, 0)
- try:
- (h, isSource) = rpm.headerFromPackage(fd)
- if (h and not isSource):
- self.fnames[h] = n
- hl.append(h)
- except:
- pass
- os.close(fd)
-
- isys.umount("/tmp/hdimage")
- return HeaderList(hl)
-
- def targetFstab(self, fstab):
- self.isMounted = 0
- for (mntpoint, device, fsystem, reformat, size) in fstab.mountList():
- if (device == self.device and fsystem == "ext2"):
- self.isMounted = 1
- self.tree = "/mnt/sysimage" + mntpoint + "/" + self.path
- self.needsUnmount = 0
-
- if (not self.isMounted):
- isys.mount('/tmp/' + self.device, "/tmp/hdimage",
- fstype = self.fstype)
- self.tree = "/tmp/hdimage/" + self.path
- self.needsUnmount = 1
-
- def filesDone(self):
- if (self.needsUnmount):
- isys.umount("/tmp/hdimage")
-
- def unlinkFilename(self, fullName):
- pass
-
- def __init__(self, device, type, path):
- self.device = device
- self.path = path
- self.fstype = type
- self.fnames = {}
-