| # 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 |