aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/epkginfo/epkginfo')
-rwxr-xr-xtrunk/src/epkginfo/epkginfo210
1 files changed, 0 insertions, 210 deletions
diff --git a/trunk/src/epkginfo/epkginfo b/trunk/src/epkginfo/epkginfo
deleted file mode 100755
index 637deff..0000000
--- a/trunk/src/epkginfo/epkginfo
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/usr/bin/python
-##############################################################################
-# $Header: $
-##############################################################################
-# Distributed under the terms of the GNU General Public License, v2 or later
-# Author: Ned Ludd <solar@gentoo.org> (glue all the parts together)
-# Author: Eldad Zack <eldad@gentoo.org> (earch)
-# Author : Eric Olinger <EvvL AT RustedHalo DOT net> (metadata)
-
-# Gentoo metadata xml and arch keyword checking tool.
-
-import os
-import sys
-try:
- import portage
-except ImportError:
- sys.path.insert(0, "/usr/lib/portage/pym")
- import portage
-import re
-from stat import *
-try:
- from portage.output import *
-except ImportError:
- from output import *
-from xml.sax import saxutils, make_parser, handler
-from xml.sax.handler import feature_namespaces
-
-version="0.4.1"
-
-def getvar(pkg, var):
- file = open(pkg + ".ebuild")
- for line in file.readlines():
- line = line.rstrip()
- if re.match("^"+var+"=",line):
- vars = re.split("\"",line)[1]
- file.close
- return re.split(" ",vars)
- file.close
-
-def earch(workdir):
- """Prints arch keywords for a given dir"""
- portdir = portage.settings["PORTDIR"]
- #workdir = "."
- os.chdir(workdir)
-
- archdict = {}
- ebuildlist = []
- for file in os.listdir(workdir):
- if re.search("\.ebuild$",file):
- ebuildlist.append(re.split("\.ebuild$",file)[0])
-
- ebuildlist.sort(lambda x,y: portage.pkgcmp(portage.pkgsplit(x),portage.pkgsplit(y)))
-
- for pkg in ebuildlist:
- keywords = getvar(pkg, "KEYWORDS")
- for arch in keywords:
- if arch == "":
- arch = None
- archdict[arch] = pkg
-
- archlist = archdict.keys();
- archlist.sort()
-
- for pkg in ebuildlist:
- print darkgreen("Keywords: ") + pkg + ":",
- for value in archlist:
- if (value and archdict[value] == pkg):
- if value[0] == "-":
- print red(value),
- elif "~" == value[0]:
- print blue(value),
- else:
- print green(value),
- print ""
-
-
-class Metadata_XML(handler.ContentHandler):
- _inside_herd="No"
- _inside_maintainer="No"
- _inside_email="No"
- _inside_longdescription="No"
-
- _herd = ""
- _maintainers = []
- _longdescription = ""
-
- def startElement(self, tag, attr):
- if tag == "herd":
- self._inside_herd="Yes"
- if tag == "longdescription":
- self._inside_longdescription="Yes"
- if tag == "maintainer":
- self._inside_maintainer="Yes"
- if tag == "email":
- self._inside_email="Yes"
-
- def endElement(self, tag):
- if tag == "herd":
- self._inside_herd="No"
- if tag == "longdescription":
- self._inside_longdescription="No"
- if tag == "maintainer":
- self._inside_maintainer="No"
- if tag == "email":
- self._inside_email="No"
-
- def characters(self, contents):
- if self._inside_herd == "Yes":
- self._herd = contents
-
- if self._inside_longdescription == "Yes":
- self._longdescription = contents
-
- if self._inside_maintainer=="Yes" and self._inside_email=="Yes":
- self._maintainers.append(contents)
-
-
-def check_metadata(full_package):
- """Checks that the primary maintainer is still an active dev and list the hed the package belongs to"""
- metadata_file=portage.settings["PORTDIR"] + "/" + portage.pkgsplit(full_package)[0] + "/metadata.xml"
- if not os.path.exists(metadata_file):
- print darkgreen("Maintainer: ") + red("Error (Missing metadata.xml)")
- return 1
-
- parser = make_parser()
- handler = Metadata_XML()
- handler._maintainers = []
- parser.setContentHandler(handler)
- parser.parse( metadata_file )
-
- if len(handler._herd) < 1:
- print darkgreen("Herd: ") + red("Error (No Herd)")
- return 1
- else:
- print darkgreen("Herd: ") + handler._herd
-
- if len(handler._maintainers) < 1:
- print darkgreen("Maintainer: ") + handler._herd
- else:
- print darkgreen("Maintainer: ") + ", ".join(handler._maintainers)
-
- if len(handler._longdescription) > 1:
- print darkgreen("Description: ") + handler._longdescription
- print darkgreen("Location: ") + os.path.normpath(portage.settings["PORTDIR"] + "/" + portage.pkgsplit(full_package)[0])
-
-
-def usage(code):
- """Prints the uage information for this script"""
- print green("epkginfo v" + version + "\n")
- print "Usage: epkginfo [package-cat/]package"
- sys.exit(code)
-
-
-# default color setup
-if ( not sys.stdout.isatty() ) or ( portage.settings["NOCOLOR"] in ["yes","true"] ):
- nocolor()
-
-def fc(x,y):
- return cmp(y[0], x[0])
-
-
-def grab_changelog_devs(catpkg):
- try:
- os.chdir(portage.settings["PORTDIR"] + "/" + catpkg)
- foo=""
- r=re.compile("<[^@]+@gentoo.org>", re.I)
- s="\n".join(portage.grabfile("ChangeLog"))
- d={}
- for x in r.findall(s):
- if x not in d:
- d[x] = 0
- d[x] += 1
-
- l=[(d[x], x) for x in d.keys()]
- #l.sort(lambda x,y: cmp(y[0], x[0]))
- l.sort(fc)
- for x in l:
- p = str(x[0]) +" "+ x[1].lstrip("<").rstrip(">")
- foo += p[:p.find("@")]+", "
- return foo
- except:
- raise
-
-def main ():
- if len( sys.argv ) < 2:
- usage(1)
-
- for pkg in sys.argv[1:]:
-
- if sys.argv[1:][:1] == "-":
- print "NOT WORKING?=="+sys.argv[1:]
- continue
-
- try:
- package_list = portage.portdb.xmatch("match-all", pkg)
- if package_list:
-
- catpkg = portage.pkgsplit(package_list[0])[0]
-
- print darkgreen("Package: ") + catpkg
- check_metadata(package_list[0])
- earch(portage.settings["PORTDIR"] + "/" + catpkg)
- #print darkgreen("ChangeLog: ") + grab_changelog_devs(catpkg)
- print ""
- except:
- print red("Error: "+pkg+"\n")
-
-
-if __name__ == '__main__':
- main()