aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg-size/pkg-size')
-rw-r--r--src/pkg-size/pkg-size66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/pkg-size/pkg-size b/src/pkg-size/pkg-size
new file mode 100644
index 0000000..84dd7df
--- /dev/null
+++ b/src/pkg-size/pkg-size
@@ -0,0 +1,66 @@
+#! /usr/bin/python
+#
+# $Header$
+#
+# Distributed under the terms of the GNU General Public License v2
+# Copyright (c) 2003 Karl Trygve Kalleberg
+
+import portage
+import pprint
+import sys
+import os
+
+__author__ = "Karl Trygve Kalleberg"
+__email__ = "karltk@gentoo.org"
+__version__ = "0.1.0"
+__productname__ = "pkg-size"
+__description__ = "Portage package size calculator"
+
+def find(name):
+ return portage.portdb.match(name)
+
+def print_size(cpv):
+ scpv=portage.catpkgsplit(cpv)
+ cat = scpv[0]
+ pnv = scpv[1]+"-"+scpv[2]
+ if scpv[3] != "r0":
+ pnv +="-"+scpv[3]
+ db=portage.dblink(cat,pnv,"")
+ size=0
+ uncounted = 0
+ if not os.path.exists(db.getpath()):
+ return
+ k=db.getcontents()
+ if not k:
+ return
+ for i in k:
+ try:
+ size += os.stat(i).st_size
+ except OSError:
+ uncounted += 1
+ s = cpv + ": " + str(size) + " bytes (" + str((size+512)/1024) + "KB)"
+ if uncounted > 0:
+ s += " (" + str(uncounted) + " file(s) not accessible)"
+ print s
+
+
+def main():
+ # parse parameters
+ if len(sys.argv) < 2:
+ print "No arguments!"
+ return
+ name = sys.argv[1]
+ candidates = find(name)
+ if len(candidates) == 0:
+ print "No candidate packages found!"
+ return
+
+ for i in candidates:
+ print_size(i)
+
+if __name__ == "__main__":
+ try:
+ main()
+ except KeyboardInterrupt:
+ print "Operation Aborted!"
+