# Copyright 2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import locale import logging import time from portage import os from portage.exception import PortageException from portage.localization import _ from portage.output import EOutput from portage.util import grabfile, writemsg_level def have_english_locale(): lang, enc = locale.getdefaultlocale() if lang is not None: lang = lang.lower() lang = lang.split('_', 1)[0] return lang is None or lang in ('c', 'en') def whenago(seconds): sec = int(seconds) mins = 0 days = 0 hrs = 0 years = 0 out = [] if sec > 60: mins = sec / 60 sec = sec % 60 if mins > 60: hrs = mins / 60 mins = mins % 60 if hrs > 24: days = hrs / 24 hrs = hrs % 24 if days > 365: years = days / 365 days = days % 365 if years: out.append("%dy " % years) if days: out.append("%dd " % days) if hrs: out.append("%dh " % hrs) if mins: out.append("%dm " % mins) if sec: out.append("%ds " % sec) return "".join(out).strip() def old_tree_timestamp_warn(portdir, settings): unixtime = time.time() default_warnsync = 30 timestamp_file = os.path.join(portdir, "metadata/timestamp.x") try: lastsync = grabfile(timestamp_file) except PortageException: return False if not lastsync: return False lastsync = lastsync[0].split() if not lastsync: return False try: lastsync = int(lastsync[0]) except ValueError: return False var_name = 'PORTAGE_SYNC_STALE' try: warnsync = float(settings.get(var_name, default_warnsync)) except ValueError: writemsg_level("!!! %s contains non-numeric value: %s\n" % \ (var_name, settings[var_name]), level=logging.ERROR, noiselevel=-1) return False if warnsync <= 0: return False if (unixtime - 86400 * warnsync) > lastsync: out = EOutput() if have_english_locale(): out.ewarn("Last emerge --sync was %s ago." % \ whenago(unixtime - lastsync)) else: out.ewarn(_("Last emerge --sync was %s.") % \ time.strftime('%c', time.localtime(lastsync))) return True return False