- rm(self.tree.basedir+'/'+arch+'/RPMS/'+rpm)
- if arch=='noarch':
- if fileexists(noarchcachedir+rpm+'.filelist'):
- rm(noarchcachedir+rpm+'.filelist')
- if fileexists(noarchcachedir+rpm+'.reqlist'):
- rm(noarchcachedir+rpm+'.reqlist')
- rm(self.tree.basedir+'/SRPMS/.metadata/'+self.nvr+'.src.rpm.info')
-
- def move(self, dsttree):
+ if self.is_debuginfo(rpm):
+ rm(self.tree.basedir + '/' + arch + '/debuginfo/' + rpm, test)
+ else:
+ rm(self.tree.basedir + '/' + arch + '/RPMS/' + rpm, test)
+ if arch == 'noarch':
+ if fileexists(noarchcachedir + rpm + '.filelist'):
+ rm(noarchcachedir + rpm + '.filelist', test)
+ if fileexists(noarchcachedir + rpm + '.reqlist'):
+ rm(noarchcachedir + rpm + '.reqlist', test)
+ rm(self.tree.basedir + '/SRPMS/.metadata/' + self.nvr + '.src.rpm.info', test)
+
+ def rpmfiles(self, debugfiles = True, sourcefiles = True):
+ """
+ Return rpm files related to this package
+ """
+ files = []
+ for arch, rpms in self.files.items():
+ for nvr in rpms:
+ if self.is_debuginfo(nvr):
+ if debugfiles:
+ files.append(self.tree.basedir + '/' + arch + '/debuginfo/' + nvr)
+ else:
+ if self.is_sourcefile(nvr):
+ if sourcefiles:
+ files.append(self.tree.basedir + '/' + arch + '/RPMS/' + nvr)
+ else:
+ files.append(self.tree.basedir + '/' + arch + '/RPMS/' + nvr)
+ return files
+
+ def obsoletes(self):
+ """
+ Return obsoletes for all packages in Pkg:
+
+ {'php-geshi': set(['geshi'])}
+
+ """
+ def rpmhdr(pkg):
+ ts = rpm.ts()
+ ts.setVSFlags(rpm.RPMVSF_NODSAHEADER)
+ fdno = os.open(pkg, os.O_RDONLY)
+ hdr = ts.hdrFromFdno(fdno)
+ os.close(fdno)
+ return hdr
+
+ obsoletes = {}
+ for rpmfile in self.rpmfiles():
+ if not os.path.exists(rpmfile):
+ continue
+ hdr = rpmhdr(rpmfile)
+ if not hdr[rpm.RPMTAG_OBSOLETES]:
+ continue
+
+ name = hdr[rpm.RPMTAG_NAME]
+ if not name in obsoletes:
+ obsoletes[name] = set()
+
+ for tag in hdr[rpm.RPMTAG_OBSOLETES]:
+ obsoletes[name].add(tag)
+
+ return obsoletes
+
+ def move(self, dsttree, test = False):