From aa1a33a58262c2982e43238ef6f7710115eba9a3 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 18 Jun 2011 12:51:12 -0700 Subject: emaint binhost: check SIZE and MTIME --- bin/emaint | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/emaint b/bin/emaint index 1b1df71c1..7294d79d7 100755 --- a/bin/emaint +++ b/bin/emaint @@ -5,6 +5,7 @@ from __future__ import print_function import re import signal +import stat import sys import textwrap import time @@ -19,6 +20,9 @@ except ImportError: from portage import os +if sys.hexversion >= 0x3000000: + long = int + class WorldHandler(object): short_desc = "Fix problems in the world file" @@ -185,7 +189,23 @@ class BinhostHandler(object): del missing[:] for i, cpv in enumerate(cpv_all): d = metadata.get(cpv) - if not d or "MD5" not in d: + if not d or \ + "MD5" not in d or \ + "SIZE" not in d or \ + "MTIME" not in d: + missing.append(cpv) + continue + + pkg_path = bintree.getname(cpv) + s = os.lstat(pkg_path) + try: + if long(d["MTIME"]) != s[stat.ST_MTIME]: + missing.append(cpv) + continue + if long(d["SIZE"]) != long(s.st_size): + missing.append(cpv) + continue + except ValueError: missing.append(cpv) maxval = len(missing) -- cgit v1.2.3-1-g7c22