#!/usr/bin/python # # Script to generate some stats from the portage tree # # Copyright 2005 Sven Wegener # Distributed under the terms of the GNU General Public License v2 # # $Id: portagestats 20 2005-05-27 23:11:54Z sven $ # from glob import glob from os import stat from operator import add import portage def calcsize(files): return reduce(add, [stat(x).st_size for x in files]) portdir = portage.settings["PORTDIR"] size = {} size["ebuild"] = calcsize(glob(portdir + "/*/*/*.ebuild")) size["manifest"] = calcsize(glob(portdir + "/*/*/Manifest")) size["changelog"] = calcsize(glob(portdir + "/*/*/ChangeLog")) size["metadata.xml"] = calcsize(glob(portdir + "/*/*/metadata.xml")) size["digest"] = calcsize(glob(portdir + "/*/*/files/digest-*")) size["files"] = calcsize(portage.flatten([[x + "/" + y for y in portage.listdir(x, True, True, True)] for x in glob(portdir + "/*/*/files")])) - size["digest"] size["profiles"] = calcsize([portdir + "/profiles/" + x for x in portage.listdir(portdir + "/profiles", True, True, True)]) size["licenses"] = calcsize([portdir + "/licenses/" + x for x in portage.listdir(portdir + "/licenses", True, True, True)]) size["metadata"] = calcsize([portdir + "/metadata/" + x for x in portage.listdir(portdir + "/metadata", True, True, True)]) totalsize = reduce(add, size.values()) for key, value in size.iteritems(): print "%s: %.3f kB (%2.1f%%)" % (key, (float(value) / 1024), (float(value) / totalsize * 100)) print "total: %.3f kB" % (float(totalsize) / 1024)