self.log.info(line % logdata)
# Create pakfire instance.
- self.pakfire = base.Pakfire("builder", distro_config=distro_config,
- **pakfire_args)
+ self.pakfire = base.Pakfire(distro_config=distro_config, **pakfire_args)
self.distro = self.pakfire.distro
self.path = self.pakfire.path
return [" ".join(l) for l in t]
def format_size(s):
- units = ("B", "k", "M", "G", "T")
+ units = (" ", "k", "M", "G", "T")
unit = 0
while s >= 1024 and unit < len(units):
s /= 1024
unit += 1
- return "%d%s" % (int(s), units[unit])
+ return "%d %s" % (int(s), units[unit])
+
+def format_time(s):
+ return "%02d:%02d" % (s // 60, s % 60)
+
+def format_speed(s):
+ return "%sB/s" % format_size(s)
def calc_hash1(filename=None, data=None):
h = hashlib.sha1()
import os
import progressbar
import sys
+import time
import packages
import satsolver
return [a for a in self.actions if a.needs_download]
def download(self):
- downloads = self.downloads
+ # Get all download actions as a list.
+ downloads = [d for d in self.downloads]
+ downloads.sort()
+
+ # If there are no downloads, we can just stop here.
+ if not downloads:
+ return
+
+ logging.info(_("Downloading packages:"))
+ time_start = time.time()
+
+ # Calculate downloadsize.
+ download_size = 0
+ for action in downloads:
+ download_size += action.pkg.size
i = 0
- for action in self.actions:
+ for action in downloads:
i += 1
-
- action.download(text="(%02d/%02d): " % (i, len(downloads)))
+ action.download(text="(%d/%d): " % (i, len(downloads)))
+
+ # Write an empty line to the console when there have been any downloads.
+ width, height = util.terminal_size()
+
+ # Print a nice line.
+ logging.info("-" * width)
+
+ # Format and calculate download information.
+ time_stop = time.time()
+ download_time = time_stop - time_start
+ download_speed = download_size / download_time
+ download_speed = util.format_speed(download_speed)
+ download_size = util.format_size(download_size)
+ download_time = util.format_time(download_time)
+
+ line = _("%s | %-5sB %s ") % \
+ (download_speed, download_size, download_time)
+ line = " " * (width - len(line)) + line
+ logging.info(line)
+ logging.info("")
def dump_pkg(self, pkg):
ret = []
#!/usr/bin/python
+import fcntl
import os
import progressbar
import random
import shutil
import string
+import struct
import sys
+import termios
import time
from errors import Error
-from packages.util import calc_hash1, format_size
+from packages.util import calc_hash1, format_size, format_speed, format_time
from i18n import _
def cli_is_interactive():
os.system("chattr -R -i %s" % path)
else:
raise
+
+def ioctl_GWINSZ(fd):
+ try:
+ cr = struct.unpack("hh", fcntl.ioctl(fd, termios.TIOCGWINSZ, "1234"))
+ except:
+ return None
+
+ return cr
+
+def terminal_size():
+ cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
+
+ if not cr:
+ try:
+ fd = os.open(os.ctermid(), os.O_RDONLY)
+ cr = ioctl_GWINSZ(fd)
+ os.close(fd)
+ except:
+ pass
+
+ if not cr:
+ try:
+ cr = (os.environ['LINES'], os.environ['COLUMNS'])
+ except:
+ cr = (25, 80)
+
+ return int(cr[1]), int(cr[0])
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-21 14:50+0200\n"
+"POT-Creation-Date: 2011-07-21 15:40+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../pakfire/builder.py:247
+#: ../pakfire/builder.py:246
#, python-format
msgid "Extracting: %s (source)"
msgstr ""
msgid "Cleanup all temporary files."
msgstr ""
-#: ../pakfire/cli.py:234 ../pakfire/transaction.py:248
+#: ../pakfire/cli.py:234 ../pakfire/transaction.py:281
msgid "Repository"
msgstr ""
msgid "Name"
msgstr ""
-#: ../pakfire/packages/base.py:70 ../pakfire/transaction.py:247
+#: ../pakfire/packages/base.py:70 ../pakfire/transaction.py:280
msgid "Arch"
msgstr ""
-#: ../pakfire/packages/base.py:71 ../pakfire/transaction.py:247
+#: ../pakfire/packages/base.py:71 ../pakfire/transaction.py:280
msgid "Version"
msgstr ""
msgid "Release"
msgstr ""
-#: ../pakfire/packages/base.py:73 ../pakfire/transaction.py:248
+#: ../pakfire/packages/base.py:73 ../pakfire/transaction.py:281
msgid "Size"
msgstr ""
msgid "Loading installed packages"
msgstr ""
-#: ../pakfire/transaction.py:103
+#: ../pakfire/transaction.py:104
#, python-format
msgid "Extracting: %s"
msgstr ""
-#: ../pakfire/transaction.py:106
+#: ../pakfire/transaction.py:107
#, python-format
msgid "Installing: %s"
msgstr ""
-#: ../pakfire/transaction.py:108
+#: ../pakfire/transaction.py:109
#, python-format
msgid "Reinstalling: %s"
msgstr ""
-#: ../pakfire/transaction.py:110
+#: ../pakfire/transaction.py:111
#, python-format
msgid "Updating: %s"
msgstr ""
-#: ../pakfire/transaction.py:112
+#: ../pakfire/transaction.py:113
#, python-format
msgid "Downgrading: %s"
msgstr ""
-#: ../pakfire/transaction.py:129
+#: ../pakfire/transaction.py:130
#, python-format
msgid "Removing: %s"
msgstr ""
-#: ../pakfire/transaction.py:247
+#: ../pakfire/transaction.py:216
+msgid "Downloading packages:"
+msgstr ""
+
+#: ../pakfire/transaction.py:243
+#, python-format
+msgid "%s | %-5sB %s "
+msgstr ""
+
+#: ../pakfire/transaction.py:280
msgid "Package"
msgstr ""
-#: ../pakfire/transaction.py:252
+#: ../pakfire/transaction.py:285
msgid "Installing:"
msgstr ""
-#: ../pakfire/transaction.py:253
+#: ../pakfire/transaction.py:286
msgid "Reinstalling:"
msgstr ""
-#: ../pakfire/transaction.py:254
+#: ../pakfire/transaction.py:287
msgid "Updating:"
msgstr ""
-#: ../pakfire/transaction.py:255
+#: ../pakfire/transaction.py:288
msgid "Downgrading:"
msgstr ""
-#: ../pakfire/transaction.py:256
+#: ../pakfire/transaction.py:289
msgid "Removing:"
msgstr ""
-#: ../pakfire/transaction.py:262
+#: ../pakfire/transaction.py:295
msgid "Transaction Summary"
msgstr ""
-#: ../pakfire/transaction.py:269
+#: ../pakfire/transaction.py:302
msgid "package"
msgstr ""
-#: ../pakfire/transaction.py:275
+#: ../pakfire/transaction.py:308
#, python-format
msgid "Total download size: %s"
msgstr ""
-#: ../pakfire/transaction.py:284
+#: ../pakfire/transaction.py:317
msgid "Is this okay?"
msgstr ""
-#: ../pakfire/util.py:36
+#: ../pakfire/util.py:39
#, python-format
msgid "%s [y/N]"
msgstr ""