if self.options.record_pkgs:
configmgr.create['record_pkgs'] = []
for infotype in self.options.record_pkgs.split(','):
- if infotype not in ('name', 'content', 'license'):
+ if infotype not in ('name', 'content', 'license', 'vcs'):
raise errors.Usage('Invalid pkg recording: %s, valid ones:'
- ' "name", "content", "license"' \
+ ' "name", "content", "license", "vcs"' \
% infotype)
configmgr.create['record_pkgs'].append(infotype)
f.close()
self.outimage.append(licensefile)
+ if 'vcs' in self._recording_pkgs:
+ vcsfile = os.path.join(destdir, self.name + '.vcs')
+ f = open(vcsfile, "w")
+ f.write('\n'.join(["%s\n %s" % (k, v)
+ for (k, v) in self._pkgs_vcsinfo.items()]))
+ f.close()
+
def _get_required_packages(self):
"""Return a list of required packages.
finally:
self._pkgs_content = pkg_manager.getAllContent()
self._pkgs_license = pkg_manager.getPkgsLicense()
+ self._pkgs_vcsinfo = pkg_manager.getVcsInfo()
self.__attachment_packages(pkg_manager)
pkg_manager.close()
self.__pkgs_license = {}
self.__pkgs_content = {}
+ self.__pkgs_vcsinfo = {}
self.repos = []
self.to_deselect = []
self.localpkgs = {}
except Exception, e:
raise CreatorError("Package installation failed: %s" % (e,))
+ def getVcsInfo(self):
+ if self.__pkgs_vcsinfo:
+ return
+
+ if not self.ts:
+ self.__initialize_transaction()
+
+ mi = self.ts.dbMatch()
+ for hdr in mi:
+ lname = misc.RPM_FMT % {
+ 'name': hdr['name'],
+ 'arch': hdr['arch'],
+ 'version': hdr['version'],
+ 'release': hdr['release']
+ }
+ self.__pkgs_vcsinfo[lname] = hdr['VCS']
+
+ return self.__pkgs_vcsinfo
+
def getAllContent(self):
if self.__pkgs_content:
return self.__pkgs_content