From: Michael Tremer Date: Sun, 7 Aug 2011 10:18:16 +0000 (+0200) Subject: Dump information about built packages afterwards. X-Git-Tag: 0.9.9~39 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c157d1e23a31bc44eaeb33bf697c6739f3a6cec0;p=pakfire.git Dump information about built packages afterwards. --- diff --git a/pakfire/builder.py b/pakfire/builder.py index d96acbc25..6d0358121 100644 --- a/pakfire/builder.py +++ b/pakfire/builder.py @@ -683,6 +683,9 @@ class Builder(object): self.settings["icecream_toolchain"] = "/%s" % m.group(1) def build(self): + assert self.pkg + + # Create icecream toolchain. self.create_icecream_toolchain() try: @@ -694,6 +697,21 @@ class Builder(object): for pkg in reversed(self.packages): packager = packages.BinaryPackager(self.pakfire, pkg, self) packager() + self.log.info("") + + self.log.info(_("Dumping created packages")) + repo = repository.RepositoryDir(self.pakfire, "build-%s" % self.build_id, + "", self.chrootPath("result"), type="binary") + self.pakfire.repos.add_repo(repo) + + repo.update() + for line in repo.dump(long=True, filelist=True).splitlines(): + self.log.info(" %s" % line) + self.log.info("") + + self.pakfire.repos.rem_repo(repo) + + return repo def dist(self): self.pkg.dist(self) diff --git a/pakfire/packages/base.py b/pakfire/packages/base.py index 542f48870..32a2c9aed 100644 --- a/pakfire/packages/base.py +++ b/pakfire/packages/base.py @@ -81,7 +81,7 @@ class Package(object): return hash("-".join(hashstr)) - def dump(self, short=False, long=False): + def dump(self, short=False, long=False, filelist=False): if short: return "%s.%s : %s" % (self.name, self.arch, self.summary) @@ -119,6 +119,11 @@ class Package(object): items.append((caption, req)) caption = "" + # Append filelist if requested. + if filelist: + for file in self.filelist: + items.append((_("File"), file)) + format = "%%-%ds : %%s" % (max([len(k) for k, v in items])) s = [] @@ -296,6 +301,9 @@ class Package(object): Automatically convert the UNIX timestamp from self.build_time to a humanly readable format. """ + if self.build_time is None: + return _("Not set") + return "%s UTC" % datetime.datetime.utcfromtimestamp(self.build_time) @property @@ -359,6 +367,10 @@ class Package(object): def obsoletes(self): return self.metadata.get("PKG_OBSOLETES", "").split() + @property + def filelist(self): + raise NotImplementedError + def extract(self, path, prefix=None): raise NotImplementedError, "%s" % repr(self) diff --git a/pakfire/packages/solv.py b/pakfire/packages/solv.py index 5f2637a5e..0ec8973a4 100644 --- a/pakfire/packages/solv.py +++ b/pakfire/packages/solv.py @@ -94,7 +94,7 @@ class SolvPackage(base.Package): @property def description(self): - return self.solvable.get_description() + return self.solvable.get_description() or "" @property def groups(self): @@ -176,6 +176,11 @@ class SolvPackage(base.Package): def filename(self): return self.solvable.get_filename() + @property + def filelist(self): + # XXX need to support filelist. + return ["%s does not support filelists, yet." % self.__class__.__name__,] + @property def is_in_cache(self): # Local files are always kinda cached. diff --git a/pakfire/repository/__init__.py b/pakfire/repository/__init__.py index a6dc69c29..901fdbee4 100644 --- a/pakfire/repository/__init__.py +++ b/pakfire/repository/__init__.py @@ -109,6 +109,15 @@ class Repositories(object): self.__repos[repo.name] = repo + def rem_repo(self, repo): + """ + Remove the given repository from the global repository set. + """ + try: + del self.__repos[repo.name] + except KeyError: + logging.debug("Repository that was to be removed does not exist: %s" % repo.name) + def get_repo(self, name): """ Get the repository with the given name, if not available, return diff --git a/pakfire/repository/base.py b/pakfire/repository/base.py index d6d760b3d..e2ca5174f 100644 --- a/pakfire/repository/base.py +++ b/pakfire/repository/base.py @@ -125,6 +125,15 @@ class RepositoryFactory(object): assert self.index self.index.clear() + def dump(self, long=False, filelist=False): + dumps = [] + # Dump all package information of the packages in this repository. + for pkg in self: + dump = pkg.dump(long=long, filelist=filelist) + dumps.append(dump) + + return "\n\n".join(dumps) + class RepositoryDummy(RepositoryFactory): """ diff --git a/po/pakfire.pot b/po/pakfire.pot index 0bb6f4309..62409f3e7 100644 --- a/po/pakfire.pot +++ b/po/pakfire.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-08-06 20:55+0200\n" +"POT-Creation-Date: 2011-08-07 12:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -39,7 +39,7 @@ msgid "Downgrading" msgstr "" #: ../pakfire/base.py:188 ../pakfire/base.py:202 ../pakfire/base.py:244 -#: ../pakfire/base.py:279 ../pakfire/base.py:312 +#: ../pakfire/base.py:284 ../pakfire/base.py:317 msgid "Nothing to do" msgstr "" @@ -47,7 +47,7 @@ msgstr "" msgid "There are no packages to install." msgstr "" -#: ../pakfire/base.py:508 +#: ../pakfire/base.py:513 msgid "Everything is fine." msgstr "" @@ -56,6 +56,10 @@ msgstr "" msgid "Extracting: %s (source)" msgstr "" +#: ../pakfire/builder.py:702 +msgid "Dumping created packages" +msgstr "" + #: ../pakfire/cli.py:42 msgid "Pakfire command line interface." msgstr "" @@ -367,6 +371,14 @@ msgstr "" msgid "Requires" msgstr "" +#: ../pakfire/packages/base.py:125 +msgid "File" +msgstr "" + +#: ../pakfire/packages/base.py:305 +msgid "Not set" +msgstr "" + #: ../pakfire/repository/index.py:220 #, python-format msgid ""