This is an automated email from the git hooks/post-receive script. smcv pushed a commit to branch master in repository game-data-packager.
commit 54a3b9319ceab71180f48e84f6e540935efdb230 Author: Simon McVittie <[email protected]> Date: Tue Feb 2 21:48:41 2016 +0000 Make progress bar display time-based, not size-based --- game_data_packager/build.py | 45 +++++++++----------------------------- game_data_packager/command_line.py | 7 +++++- game_data_packager/data.py | 9 +++++--- 3 files changed, 22 insertions(+), 39 deletions(-) diff --git a/game_data_packager/build.py b/game_data_packager/build.py index 0653d5a..873e0aa 100644 --- a/game_data_packager/build.py +++ b/game_data_packager/build.py @@ -60,12 +60,6 @@ if FORMAT == 'deb': logging.basicConfig() logger = logging.getLogger(__name__) -# arbitrary cutoff for providing progress bars -if os.path.isfile('/etc/rpi-issue'): - QUITE_LARGE = 10 * MEBIBYTE -else: - QUITE_LARGE = 50 * MEBIBYTE - class FillResult(Enum): UNDETERMINED = 0 IMPOSSIBLE = 1 @@ -247,7 +241,7 @@ class PackagingTask(object): self.compress_deb = game.compress_deb # Factory for a progress report (or None). - self.progress_factory = lambda: None + self.progress_factory = lambda info=None: None self.game.load_file_data() @@ -302,14 +296,8 @@ class PackagingTask(object): return False if hashes is None: - if size > QUITE_LARGE: - logger.info('checking %s', path) - progress = self.progress_factory() - else: - progress = None - hashes = HashedFile.from_file(path, open(path, 'rb'), size=size, - progress=progress) + progress=self.progress_factory(info='checking %s' % path)) for wanted in remaining: if not wanted.skip_hash_matching and not hashes.matches(wanted): @@ -622,16 +610,12 @@ class PackagingTask(object): wf = open(tmp, 'wb') - if entry.size is not None and entry.size > QUITE_LARGE: - progress = self.progress_factory() - logger.info('extracting %s from %s', entry.name, name) - else: - progress = None - logger.debug('extracting %s from %s', entry.name, name) - hf = HashedFile.from_file( name + '//' + entry.name, entryfile, wf, - size=entry.size, progress=progress) + size=entry.size, + progress=self.progress_factory( + info='extracting %s from %s' % (entry.name, name)), + ) wf.close() if entry.mtime is not None: @@ -671,14 +655,11 @@ class PackagingTask(object): for p in other_parts: yield open(self.found[p], 'rb') - if wanted.size >= QUITE_LARGE: - progress = self.progress_factory() - else: - progress = None - hasher = HashedFile.from_concatenated_files(wanted.name, open_files(), writer, size=wanted.size, - progress=progress) + progress=self.progress_factory(info='building %s' % + wanted.name), + ) orig_time = os.stat(self.found[provider.name]).st_mtime os.utime(path, (orig_time, orig_time)) self.use_file(wanted.name, (wanted,), path, hasher) @@ -2727,11 +2708,5 @@ class PackagingTask(object): if hashes is not None: return hashes - if size > QUITE_LARGE: - logger.info('identifying %s', path) - progress = self.progress_factory() - else: - progress = None - return HashedFile.from_file(path, open(path, 'rb'), size=size, - progress=progress) + progress=self.progress_factory(info='identifying %s' % path)) diff --git a/game_data_packager/command_line.py b/game_data_packager/command_line.py index ab3d524..88ecf67 100644 --- a/game_data_packager/command_line.py +++ b/game_data_packager/command_line.py @@ -34,7 +34,7 @@ from .util import (human_size) logger = logging.getLogger(__name__) class TerminalProgress(ProgressCallback): - def __init__(self, interval=0.2): + def __init__(self, interval=0.2, info=None): """Constructor. Progress will update at most once per @interval seconds, unless we @@ -43,6 +43,7 @@ class TerminalProgress(ProgressCallback): self.pad = ' ' self.interval = interval self.ts = time.time() + self.info = info def __call__(self, done=None, total=None, checkpoint=False): ts = time.time() @@ -50,6 +51,10 @@ class TerminalProgress(ProgressCallback): if done is None or (ts < self.ts + self.interval and not checkpoint): return + if self.info is not None: + print(self.info, file=sys.stderr) + self.info = None + if done is None or total == 0: s = '' elif total is None or total == 0: diff --git a/game_data_packager/data.py b/game_data_packager/data.py index f63cd06..bde3d0b 100644 --- a/game_data_packager/data.py +++ b/game_data_packager/data.py @@ -57,15 +57,18 @@ class HashedFile: sha256 = hashlib.new('sha256') done = 0 - with (progress or ProgressCallback()) as update_progress: + if progress is None: + progress = ProgressCallback() + + with progress: for f in fs: while True: - update_progress(done, size) + progress(done, size) blob = f.read(io.DEFAULT_BUFFER_SIZE) if not blob: - update_progress(done, size, checkpoint=True) + progress(done, size, checkpoint=True) break done += len(blob) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

