diff options
46 files changed, 276 insertions, 2292 deletions
@@ -13,7 +13,7 @@ setup ( maintainer = 'Gentoo Java Team', maintainer_email = 'java@gentoo.org', url = 'html://www.gentoo.org', - packages = ["javatoolkit", "javatoolkit.maven", "javatoolkit.xml"], + packages = ["javatoolkit", "javatoolkit.maven", "javatoolkit.xml", "javatoolkit.parser"], package_dir = { 'javatoolkit' : 'src/py/javatoolkit' }, scripts = [ "src/py/maven-helper.py", @@ -22,7 +22,9 @@ setup ( "src/py/xml-rewrite.py", "src/py/xml-rewrite-2.py", "src/py/buildparser", - "src/py/class-version-verify.py" + "src/py/class-version-verify.py", + "src/py/build-xml-rewrite", + "src/py/jarjarclean" ], data_files = [ ( '/usr/share/man/man1', ['src/man/findclass.1'] ) ] ) diff --git a/src/obsolete/bsfix/class-version-verify.py b/src/obsolete/bsfix/class-version-verify.py deleted file mode 100755 index b571c05..0000000 --- a/src/obsolete/bsfix/class-version-verify.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/env python -# -# Copyright(c) 2005, Thomas Matthijs <axxo@gentoo.org> -# Copyright(c) 2005, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/bsfix/class-version-verify.py,v 1.2 2005/07/19 10:35:18 axxo Exp $ - -import os,sys -from os.path import join, getsize -from struct import unpack -from optparse import OptionParser, make_option -from zipfile import ZipFile - -class cvv: - def __init__(self, target): - self.target = target - self.good = [] - self.bad = [] - - def add(self, version, jar, file): - if version <= self.target: - self.good.append(("1."+str(version), jar, file)) - else: - self.bad.append(("1."+str(version), jar, file)) - - def do_class(self,filename): - classFile = file(filename,"rb") - classFile.seek(4) - - temp = classFile.read(4) - #(version,) = unpack('>i',temp) - (version,) = unpack('>xxh',temp) - version-=44 - - self.add(version, None, filename) - - def do_jar(self, filename): - zipfile = ZipFile(filename, 'r') - - for file in zipfile.namelist(): - if file.endswith('class'): - classFile = zipfile.read(file) - - (version,) = unpack('>h',classFile[6:8]) - version-=44 - - self.add(version, filename, file) - - def do_file(self, filename): - if not os.path.islink(filename): - if filename.endswith(".class"): - self.do_class(filename) - if filename.endswith(".jar"): - self.do_jar(filename) - -if __name__ == '__main__': - - options_list = [ - make_option ("-r", "--recurse", action="store_true", dest="deep", default=False, help="go into dirs"), - make_option ("-t", "--target", type="string", dest="version", help="target version that is valid"), - - make_option ("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Print version of every calss"), - make_option ("-s", "--silent", action="store_true", dest="silent", default=False, help="No output"), - make_option ("-f", "--file-only", action="store_true", dest="file_only", default=False, help="Only output the files"), - ] - - parser = OptionParser("%prog -t version [-r] [-v] [-s] <class/jar files or dir>", options_list) - (options, args) = parser.parse_args() - - if not options.version: - print "-t is mandatory" - sys.exit(2) - - options.version = int(options.version.split(".")[-1]) - - cvv = cvv(options.version) - - for arg in args: - if os.path.isfile(arg): - cvv.do_file(arg) - - if options.deep and os.path.isdir(arg): - for root, dirs, files in os.walk(arg): - for filename in files: - cvv.do_file("%s/%s" % (root, filename)) - - if options.file_only: - lst = set([set[1] for set in cvv.bad]) - for i in lst: - print i - else: - - if options.verbose: - for set in cvv.good: - print "Good: %s %s %s" % set - - if not options.silent: - for set in cvv.bad: - print "Bad: %s %s %s" % set - - print "CVV: %s\nChecked: %i Good: %i Bad: %i" % (options.version, len(cvv.good)+len(cvv.bad) , len(cvv.good), len(cvv.bad)) - - if len(cvv.bad) > 0: - sys.exit(1) - else: - sys.exit(0) diff --git a/src/obsolete/bsfix/xml-rewrite-2.py b/src/obsolete/bsfix/xml-rewrite-2.py deleted file mode 100755 index a143ee3..0000000 --- a/src/obsolete/bsfix/xml-rewrite-2.py +++ /dev/null @@ -1,321 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# vim: set ai ts=8 sts=0 sw=8 tw=0 noexpandtab: - -# Copyright 2004-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public Licence v2 - -# Authors: -# Saleem Abdulrasool <compnerd@compnerd.org> -# Petteri Räty <betelgeuse@gentoo.org> -# Maintainer: Gentoo Java Herd <java@gentoo.org> -# Python based XML modifier - -# ChangeLog -# Petteri Räty <betelgeuse@gentoo.org -# December 06, 2006 - Changed to use xml.parsers.expat and basically rewrote the whole file -# December 29, 2006 - Added a SAX based implementation to handle entities etc ( test on dev-java/skinlf ) -# Saleem A. <compnerd@compnerd.org> -# December 23, 2004 - Initial Write -# December 24, 2004 - Added usage information - -import sys -import StringIO - -from xml.sax.saxutils import quoteattr,escape - -from optparse import OptionParser, make_option - -__version__ = "$Revision: 1.7 $"[11:-2] - -def add_gentoo_classpath(document): - matches = document.getElementsByTagName("classpath") - gcp = document.createElement("location") - gcp.setAttribute("path","${gentoo.classpath}") - - handled_refs = set() - for match in matches: - if match.hasAttribute("refid"): - refid = match.getAttribute("refid") - for ref in document.getElementsByTagName("path"): - id = ref.getAttribute("id") - if id not in handled_refs and id == refid: - gcp = document.createElement("pathelement") - gcp.setAttribute("path","${gentoo.classpath}") - ref.appendChild(gcp) - handled_refs.add(id) - else: - match.appendChild(gcp) - -class DomRewriter: - """ - The old DOM rewriter is still around for index based stuff. It can - be used for all the complex stuff but portage needed features should - be in StreamRewriterBase subclasses as they are much faster. - """ - from xml.dom import NotFoundErr - - def __init__(self, modifyElems, attributes, values=None, index=None): - self.modify = modifyElems - self.attributes = attributes - self.values = values - self.index = index - - def change_elem(self, elem): - for i,attr in enumerate(self.attributes): - if self.values: - elem.setAttribute(attr, self.values[i]) - else: - try: - elem.removeAttribute(attr) - except DomRewriter.NotFoundErr: - continue - - def process(self,in_stream,callback=None): - from xml.dom.minidom import parse - - self.document = parse(in_stream); - - if callback: - callback(self.document) - - if not self.modify: - return - - for tag in self.modify: - matches = self.document.getElementsByTagName(tag) - if matches: - if self.index == None: - for match in matches: - self.change_elem(match) - else: - self.change_elem(matches[self.index]) - - def write(self,stream): - stream.write(self.document.toxml()) - -class StreamRewriterBase: - - def __init__(self, elems, attributes, values, index, - sourceElems = [], sourceAttributes = [], sourceValues = [], - targetElems = [], targetAttributes = [], targetValues = [] ): - self.buffer = StringIO.StringIO() - self.__write = self.buffer.write - self.elems = elems or [] - self.attributes = attributes or [] - self.values = values or [] - self.sourceElems = sourceElems or [] - self.sourceAttributes = sourceAttributes or [] - self.sourceValues = sourceValues or [] - self.targetElems = targetElems or [] - self.targetAttributes = targetAttributes or [] - self.targetValues = targetValues or [] - - def p(self,str): - self.__write(str.encode('utf8')) - - def write(self, out_stream): - value = self.buffer.getvalue() - out_stream.write(value) - self.buffer.truncate(0) - - def write_attr(self,a,v): - self.p(u'%s=%s ' % (a,quoteattr(v, {u'©':'©'}))) - - def start_element(self, name, attrs): - self.p(u'<%s ' % name) - - match = ( name in self.elems ) - matchSource = ( name in self.sourceElems ) - matchTarget = ( name in self.targetElems ) - - for a,v in attrs: - if not ( - (match and a in self.attributes) - or (matchSource and a in self.sourceAttributes) - or (matchTarget and a in self.targetAttributes) - ): - self.write_attr(a,v) - - if matchSource: - for i, attr in enumerate(self.sourceAttributes): - self.write_attr(attr, self.sourceValues[i]) - - if matchTarget: - for i, attr in enumerate(self.targetAttributes): - self.write_attr(attr, self.targetValues[i]) - - if match: - for i, attr in enumerate(self.attributes): - self.write_attr(attr, self.values[i]) - - self.p(u'>') - -class ExpatRewriter(StreamRewriterBase): - """ - The only problem with this Expat based implementation is that it does not - handle entities doctypes etc properly so for example dev-java/skinlf fails. - """ - def process(self, in_stream): - from xml.parsers.expat import ParserCreate - parser = ParserCreate() - - parser.StartElementHandler = self.start_element - parser.EndElementHandler = self.end_element - parser.CharacterDataHandler = self.char_data - parser.ParseFile(in_stream) - self.p(u'\n') - - def start_element(self, name, attrs): - StreamRewriterBase(self, name, attrs.iteritems()) - - def end_element(self,name): - self.p(u'</%s>' % name) - - def char_data(self,data): - self.p(escape(data)) - -from xml.sax.saxutils import XMLGenerator -class SaxRewriter(XMLGenerator, StreamRewriterBase): - """ - Using Sax gives us the support for writing back doctypes and all easily - and is only marginally slower than expat as it is just a tight layer over it - """ - def __init__(self, elems, attributes, values, index, - sourceElems = [], sourceAttributes = [], sourceValues = [], - targetElems = [], targetAttributes = [], targetValues = []): - StreamRewriterBase.__init__(self, elems, attributes, values, index, - sourceElems, sourceAttributes, sourceValues, - targetElems, targetAttributes, targetValues) - XMLGenerator.__init__(self, self.buffer, 'UTF-8') - - def process(self, in_stream): - from xml.sax import parse - parse(in_stream, self) - self.p(u'\n') - - def startElement(self, name, attrs): - self.start_element(name, attrs.items()) - -if __name__ == '__main__': - usage = "XML Rewrite Python Module Version " + __version__ + "\n" - usage += "Copyright 2004,2006,2007 Gentoo Foundation\n" - usage += "Distributed under the terms of the GNU General Public Lincense v2\n" - usage += "Please contact the Gentoo Java Team <java@gentoo.org> with problems.\n" - usage += "\n" - usage += "Usage:\n" - usage += " xml-rewrite.py [-f file] --delete [-g] -e tag [-e tag] -a attribute [-a attribute] [-i index]\n" - usage += " xml-rewrite.py [-f file] --change [-g] -e tag [-e tag] -a attribute -v value [-a attribute -v value] \\\n" - usage += " [--source-element tag] [--source-attribute attribute --source-value value] \\\n" - usage += " [--target-element tag] [--target-attribute attribute --target-value value] [-i index]\n" - usage += "Or:\n" - usage += " xml-rewrite.py [-f file] -g\n" - usage += "\n" - usage += "If the -f parameter is not utilized, the script will read and\n" - usage += "write to stdin and stdout respectively. The use of quotes on\n" - usage += "parameters will break the script.\n" - - - def error(message): - print "ERROR: " + message - sys.exit(1) - - -# if len(sys.argv) == 1: -# usage(True) - - options_list = [ - make_option ("-f", "--file", action="append", dest="files", help="Transform files instead of operating on stdout and stdin"), - make_option ("-g", "--gentoo-classpath", action="store_true", dest="gentoo_classpath", help="Rewrite build.xml to use gentoo.classpath where applicable."), - make_option ("-c", "--change", action="store_true", dest="doAdd", default=False, help="Change the value of an attribute. If it does not exist, it will be created."), - make_option ("-d", "--delete", action="store_true", dest="doDelete", default=False, help="Delete an attribute from matching elements."), - make_option ("-e", "--element", action="append", dest="elements", help="Tag of the element of which the attributes to be changed. These can be chained for multiple elements."), - make_option ("-a", "--attribute", action="append", dest="attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs"), - make_option ("-v", "--value", action="append", dest="values", help="Value to set the attribute to."), - make_option ("-r", "--source-element", action="append", dest="source_elements", help="Tag of the element of which the attributes to be changed just in source scope. These can be chained for multiple elements."), - make_option ("-t","--source-attribute", action="append", dest="source_attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs (for source only)"), - make_option ("-y", "--source-value", action="append", dest="source_values", help="Value to set the attribute to. (sourceonly)"), - make_option ("-j", "--target-element", action="append", dest="target_elements", help="Tag of the element of which the attributes to be changed just in target scope. These can be chained for multiple elements."), - make_option ("-k", "--target-attribute", action="append", dest="target_attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs (for targetonly)"), - make_option ("-l", "--target-value", action="append", dest="target_values", help="Value to set the attribute to (targeronly)."), - make_option ("-i", "--index", type="int", dest="index", help="Index of the match. If none is specified, the changes will be applied to all matches within the document. Starts from zero.") - ] - - parser = OptionParser(usage, options_list) - (options, args) = parser.parse_args() - - - # Invalid Arguments Must be smited! - if not options.doAdd and not options.doDelete and not options.gentoo_classpath: - print usage - print - error("No action was specified.") - - if not options.gentoo_classpath: - if options.doAdd and options.doDelete: - error("Unable to perform multiple actions simultaneously.") - - if not options.elements and not options.target_elements and not options.source_elements: - error("At least one element (global, source only or target only) and attribute must be specified.") - - for elem in ( options.source_attributes or [] ): - if elem in ( options.attributes or [] ): - error("You can't set an attribute in global and source scope at the same time") - - for elem in ( options.target_attributes or [] ): - if elem in ( options.attributes or [] ): - error("You can't set an attribute in global and target scope at the same time") - - if options.doAdd and (len(options.values or []) != len(options.attributes or []) - or len(options.source_values or [] ) != len(options.source_attributes or []) - or len(options.target_values or [] ) != len(options.target_attributes or [])): - error("You must give attribute(s)/value(s) for every element you are changing.") - - # End Invalid Arguments Check - - def get_rewriter(options): - if options.index or options.doDelete or options.gentoo_classpath: - # java-ant-2.eclass does not use these options so we can optimize the ExpatWriter - # and let the DomRewriter do these. Also keeps the index option compatible for sure. - rewriter = DomRewriter(options.elements, options.attributes, options.values, options.index) - else: - rewriter = SaxRewriter(options.elements, options.attributes, options.values, options.index, - options.source_elements, options.source_attributes, options.source_values, - options.target_elements, options.target_attributes, options.target_values) - - return rewriter - - rewriter = get_rewriter(options) - - if options.files: - import os - for file in options.files: - print "Rewriting %s" % file - # First parse the file into memory - # Tricks with cwd are needed for relative includes of other xml files to build.xml files - cwd = os.getcwd() - dirname = os.path.dirname(file) - if dirname != '': # for file = build.xml comes out as '' - os.chdir(os.path.dirname(file)) - - f = open(os.path.basename(file),"r") - if options.gentoo_classpath: - rewriter.process(f,add_gentoo_classpath) - else: - rewriter.process(f) - - os.chdir(cwd) - f.close() - # Then write it back to the file - f = open(file, "w") - rewriter.write(f) - f.close() - - else: - if options.gentoo_classpath: - rewriter.process(sys.stdin,add_gentoo_classpath) - else: - rewriter.process(sys.stdin) - - rewriter.write(sys.stdout) - diff --git a/src/obsolete/bsfix/xml-rewrite-3.py b/src/obsolete/bsfix/xml-rewrite-3.py deleted file mode 100755 index 6d2db28..0000000 --- a/src/obsolete/bsfix/xml-rewrite-3.py +++ /dev/null @@ -1,490 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - - -# Copyright 2004-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public Licence v2 - -# Authors: -# Saleem Abdulrasool <compnerd@compnerd.org> -# Petteri Räty <betelgeuse@gentoo.org> -# kiorky <kiorky@cryptelium.net> -# Maintainer: Gentoo Java Herd <java@gentoo.org> -# Python based XML modifier - -# ChangeLog -# kiorky <kiorky@cryptelium.net> -# May 2007 - Now, all things can be done in one pass, saving us some times :) -# - javadoc target generation added -# - Rewritten to be more logical -# Petteri Räty <betelgeuse@gentoo.org -# December 06, 2006 - Changed to use xml.parsers.expat and basically rewrote the whole file -# December 29, 2006 - Added a SAX based implementation to handle entities etc ( test on dev-java/skinlf ) -# Saleem A. <compnerd@compnerd.org> -# December 23, 2004 - Initial Write -# December 24, 2004 - Added usage information - -import os -import sys -import StringIO -from xml.sax.saxutils import quoteattr,escape -from optparse import OptionParser, make_option - -__version__ = "$Revision: 1.7 $"[11:-2] - - - -class DomRewriter: - """ - The old DOM rewriter is still around for index based stuff. It can - be used for all the complex stuff but portage needed features should - be in StreamRewriterBase subclasses as they are much faster. - """ - from xml.dom import NotFoundErr - def __init__(self, modifyElems = None, attributes = None , values=None, index=None): - self.modifyElems = modifyElems - self.attributes = attributes - self.values = values - self.index = index - - - def delete_elements(self, document, **kwargs): - if not self.modifyElems: - return - - tomodify = [] - for tag in self.modifyElems: - matches = document.getElementsByTagName(tag) - if matches: - if self.index == None: - for match in matches: - tomodify.append(match) - else: - tomodify.append(matches[self.index]) - - for elem in tomodify: - for i,attr in enumerate(self.attributes): - if self.values: - elem.setAttribute(attr, self.values[i]) - else: - try: - elem.removeAttribute(attr) - except DomRewriter.NotFoundErr: - continue - - - def add_gentoo_classpath(self,document,**kwargs): - newcp = kwargs.has_key('classpath') and kwargs['classpath'] or "void" - newcp = newcp.split(":") - gcp = document.createElement("path") - for cp in newcp: - pe = document.createElement("pathelement") - pe.setAttribute("path",cp) - gcp.appendChild(pe) - - - # classpath nodes: - # if no refud: - # remove inner elems - # add our gentoo classpath node - # else - # rename refid references - matches = document.getElementsByTagName("classpath") - handled_refs = set() - for match in matches: - if not match.hasAttribute("refid"): - for node in match.childNodes[:]: - match.removeChild(node) - node.unlink() - - match.appendChild(gcp.cloneNode(True)) - else: - refid = match.getAttribute("refid") - for ref in document.getElementsByTagName("path"): - id = ref.getAttribute("id") - if id not in handled_refs and id == refid: - for node in ref.childNodes[:]: - ref.removeChild(node) - node.unlink() - - for pathnode in (gcp.cloneNode(deep=True)).childNodes: - ref.appendChild(pathnode.cloneNode(deep=True)) - - handled_refs.add(id) - - # rewrite javac elements - matches = document.getElementsByTagName("javac") - for match in matches: - classpath = match.getAttribute("classpath") - if classpath: - match.removeAttribute("classpath") - - for node in match.childNodes[:]: - if node.nodeName == "classpath": - match.removeChild(node) - node.unlink() - - classpath = document.createElement("classpath") - classpath.appendChild(gcp.cloneNode(True)) - match.appendChild(classpath) - - - def process(self,in_stream,callback=None,*args,**kwargs): - from xml.dom import minidom - self.document = minidom.parseString(in_stream); - - if callback: - callback(self.document,*args,**kwargs) - - - def write(self,stream): - from xml.dom.ext import PrettyPrint - PrettyPrint(self.document,stream) - - - -#class ExpatRewriter(StreamRewriterBase): -# """ -# The only problem with this Expat based implementation is that it does not -# handle entities doctypes etc properly so for example dev-java/skinlf fails. -# """ -# def process(self, in_stream): -# from xml.parsers.expat import ParserCreate -# parser = ParserCreate() -# -# parser.StartElementHandler = self.start_element -# parser.EndElementHandler = self.end_element -# parser.CharacterDataHandler = self.char_data -# parser.ParseFile(in_stream) -# self.p(u'\n') -# -# -# def start_element(self, name, attrs): -# StreamRewriterBase(self, name, attrs.iteritems()) -# -# -# def end_element(self,name): -# self.p(u'</%s>' % name) - - - - -from xml.sax.saxutils import XMLGenerator -class SaxRewriter(XMLGenerator): - """ - Using Sax gives us the support for writing back doctypes and all easily - and is only marginally slower than expat as it is just a tight layer over it - """ - def __init__(self, **kwds): - self.elems = kwds.has_key('elems') and kwds['elems'] or [] - self.attributes = kwds.has_key('attributes') and kwds['attributes'] or [] - self.values = kwds.has_key('values') and kwds['values'] or [] - self.sourceElems = kwds.has_key('sourceElems') and kwds['sourceElems'] or [] - self.sourceAttributes = kwds.has_key('sourceAttributes') and kwds['sourceAttributes'] or [] - self.sourceValues = kwds.has_key('sourceValues') and kwds['sourceValues'] or [] - self.targetElems = kwds.has_key('targetElems') and kwds['targetElems'] or [] - self.targetAttributes = kwds.has_key('targetAttributes') and kwds['targetAttributes'] or [] - self.targetValues = kwds.has_key('targetValues') and kwds['targetValues'] or [] - - self.deleteElems = kwds.has_key('deleteElems') and kwds['deleteElems'] or [] - self.deleteAttributes = kwds.has_key('deleteAttributes') and kwds['deleteAttributes'] or [] - - self.src_dirs = kwds.has_key('src_dirs') and kwds['src_dirs'] or [] - self.output_dir = kwds.has_key('output_dir') and kwds['output_dir'] or None - - self.buffer = StringIO.StringIO() - - XMLGenerator.__init__(self, self.buffer, 'UTF-8') - - - def add_gentoo_javadoc(self, name, attrs): - self.p(u'<%s ' % name) - for a,v in attrs.items(): - self.write_attr(a,v) - - self.p(u'>') - - if name == "project": - javadoc_str = """ - <target name=\"gentoojavadoc\" > - <mkdir dir=\"""" + self.output_dir + """\" /> - <javadoc - destdir=\"""" + self.output_dir + """\" - author="true" - version="true" - use="true" - windowtitle="javadoc"> - """ - - for src_dir in self.src_dirs: - javadoc_str += """ - <fileset dir=\"""" + src_dir + """\" defaultexcludes="yes"> - <include name="**/*.java"/> - </fileset> - """ - - javadoc_str += """ - </javadoc> - </target> - """ - - self.p(u'%s' % javadoc_str) - - - # write as they are or delete if wanted attributes first - # next, add / update - def modify_elements(self, name, attrs): - self.p(u'<%s ' % name) - - match = ( name in self.elems ) - matchSource = ( name in self.sourceElems ) - matchTarget = ( name in self.targetElems ) - matchDelete = ( name in self.deleteElems ) - - for a,v in attrs.items(): - if not ( - (match and a in self.attributes) - or (matchSource and a in self.sourceAttributes) - or (matchTarget and a in self.targetAttributes) - or (matchDelete and a in self.deleteAttributes) - ): - self.write_attr(a,v) - - if matchSource: - for i, attr in enumerate(self.sourceAttributes): - self.write_attr(attr, self.sourceValues[i]) - - if matchTarget: - for i, attr in enumerate(self.targetAttributes): - self.write_attr(attr, self.targetValues[i]) - - if match: - for i, attr in enumerate(self.attributes): - self.write_attr(attr, self.values[i]) - - self.p(u'>') - - - def char_data(self, data): - self.p(escape(data)) - - - def write(self, out_stream): - value = self.buffer.getvalue() - out_stream.write(value) - self.buffer.truncate(0) - - - def p(self,str): - self.buffer.write(str.encode('utf8')) - - - def write_attr(self,a,v): - self.p(u'%s=%s ' % (a,quoteattr(v, {u'©':'©'}))) - - - def process(self, in_stream, callback): - self.startElement = callback - from xml.sax import parseString - parseString(in_stream, self) - self.p(u'\n') - - - -if __name__ == '__main__': - usage = "XML Rewrite Python Module Version " + __version__ + "\n" - usage += "Copyright 2004,2006,2007 Gentoo Foundation\n" - usage += "Distributed under the terms of the GNU General Public Lincense v2\n" - usage += "Please contact the Gentoo Java Team <java@gentoo.org> with problems.\n" - usage += "\n" - usage += "Usage:\n" - usage += " " + sys.argv[0] + " [-f file] --delete [-g] -n tag [-n tag] -m attribute [-m attribute] [-i index]\n" - usage += " " + sys.argv[0] + " [-f file] --change [-g] -e tag [-e tag] -a attribute -v value [-a attribute -v value] \\\n" - usage += " [--source-element tag] [--source-attribute attribute --source-value value] \\\n" - usage += " [--target-element tag] [--target-attribute attribute --target-value value] [-i index]\n" - usage += "Or:\n" - usage += " " + sys.argv[0] + " [-f file] --javadoc --source-directory dir [--source-directory dir2] --output-directory dir3 \n" - usage += "Or:\n" - usage += " " + sys.argv[0] + " [-f file] -g\n" - usage += "\n" - usage += "Or:\n" - usage += " " + sys.argv[0] + " [-f file] --maven-cleaning\n" - usage += "\n" - usage += "Or for more detailed help:\n" - usage += " " + sys.argv[0] + " -h\n" - usage += "\n" - usage += "Multiple actions can be done simultaneously\n" - usage += "\n" - usage += "If the -f parameter is not utilized, the script will read and\n" - usage += "write to stdin and stdout respectively. The use of quotes on\n" - usage += "parameters will break the script.\n" - - - -# from IPython.Debugger import Tracer; debug_here = Tracer(colors="Linux");debug_here() ### Breakpoint ### - - def error(message): - print "ERROR: " + message - sys.exit(1) - - - # instream is a string - def doRewrite(rewriter, in_stream, callback=None, **kwargs): - if callback: - rewriter.process(in_stream, callback, **kwargs) - else: - rewriter.process(in_stream, **kwargs) - - out = StringIO.StringIO() - rewriter.write(out) - return out.getvalue() - - - def processActions(options, f): - out_stream = f.read() - newcp="${gentoo.classpath}" - if options.gentoo_classpath: - rewriter = DomRewriter(options.elements, options.attributes, options.values, options.index) - out_stream = doRewrite(rewriter, out_stream, rewriter.add_gentoo_classpath,classpath = newcp) - - if options.doJavadoc: - rewriter = SaxRewriter(src_dirs = options.src_dirs, output_dir = options.javadoc_dir[0]) - out_stream = doRewrite(rewriter, out_stream, rewriter.add_gentoo_javadoc) - - if options.doAdd or options.doDelete: - # java-ant-2.eclass does not use these options so we can optimize the ExpatWriter - # and let the DomRewriter do these. Also keeps the index option compatible for sure. - if options.index: - rewriter = DomRewriter(options.delete_elements, options.delete_attributes, options.values, options.index) - out_stream = doRewrite(rewriter, out_stream, rewriter.delete_elements) - else: - rewriter = SaxRewriter( - elems = options.elements, - attributes = options.attributes, - values = options.values, - sourceElems = options.source_elements, - sourceAttributes = options.source_attributes, - sourceValues = options.source_values, - targetElems = options.target_elements, - targetAttributes = options.target_attributes, - targetValues = options.target_values, - deleteElems = options.delete_elements, - deleteAttributes = options.delete_attributes - ) - out_stream = doRewrite(rewriter, out_stream, rewriter.modify_elements) - - if options.doMaven: - if options.mavenMultiProjectsDirs: - for elem in options.mavenMultiProjectsDirs: - newcp+=":"+elem - - rewriter = DomRewriter() - out_stream = doRewrite(rewriter, out_stream, rewriter.add_gentoo_classpath, classpath = newcp) - - deleteElems = [] - deleteAttributes = [] - deleteElems.append("target") - deleteAttributes.append("depends") - rewriter = SaxRewriter( deleteElems = deleteElems, deleteAttributes = deleteAttributes) - out_stream = doRewrite(rewriter, out_stream, rewriter.modify_elements) - - return out_stream - - - options_list = [ - make_option ("-a", "--attribute", action="append", dest="attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs"), - make_option ("-b", "--target-element", action="append", dest="target_elements", help="Tag of the element of which the attributes to be changed just in target scope. These can be chained for multiple elements."), - make_option ("-c", "--change", action="store_true", dest="doAdd", default=False, help="Change the value of an attribute. If it does not exist, it will be created."), - make_option ("-d", "--delete", action="store_true", dest="doDelete", default=False, help="Delete an attribute from matching elements."), - make_option ("-e", "--element", action="append", dest="elements", help="Tag of the element of which the attributes to be changed. These can be chained for multiple elements."), - make_option ("-f", "--file", action="append", dest="files", help="Transform files instead of operating on stdout and stdin"), - make_option ("-g", "--gentoo-classpath", action="store_true", dest="gentoo_classpath", help="Rewrite build.xml to use gentoo.classpath where applicable."), - make_option ("-i", "--index", type="int", dest="index", help="Index of the match. If none is specified, the changes will be applied to all matches within the document. Starts from zero."), - make_option ("-j", "--javadoc", action="store_true", dest="doJavadoc", default=False, help="add a basic javadoc target. Sources must be placed in ${WORKDIR}/javadoc_src."), - make_option ("-k", "--target-attribute", action="append", dest="target_attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs (for targetonly)"), - make_option ("-l", "--target-value", action="append", dest="target_values", help="Value to set the attribute to (targeronly)."), - make_option ("-m", "--delete-attribute", action="append", dest="delete_attributes", help="Attribute of the matching elements to delete. These can be chained for multiple value-attribute pairs"), - make_option ("-n", "--delete-element", action="append", dest="delete_elements", help="Tag of the element of which the attributes to be deleted. These can be chained for multiple elements."), - make_option ("-o", "--output-directory", action="append", dest="javadoc_dir", help="javadoc output directory. Must be an existing directory"), - make_option ("-p", "--source-directory", action="append", dest="src_dirs", help="source directory for javadoc generation. Must be an existing directory"), - make_option ("-q", "--maven-cleaning", action="store_true", dest="doMaven", default=False, help="Turns on maven generated build.xml cleanup rewriting."), - make_option ("-r", "--source-element", action="append", dest="source_elements", help="Tag of the element of which the attributes to be changed just in source scope. These can be chained for multiple elements."), - make_option ("-s", "--multi-project-dirs", action="append", dest="mavenMultiProjectsDirs", help="Dirs in classpath notation"), - - make_option ("-t", "--source-attribute", action="append", dest="source_attributes", help="Attribute of the matching elements to change. These can be chained for multiple value-attribute pairs (for source only)"), - make_option ("-v", "--value", action="append", dest="values", help="Value to set the attribute to."), - make_option ("-y", "--source-value", action="append", dest="source_values", help="Value to set the attribute to. (sourceonly)") - ] - parser = OptionParser(usage, options_list) - (options, args) = parser.parse_args() - - # Invalid Arguments Must be smited! - if not options.doAdd and not options.doDelete and not options.gentoo_classpath and not options.doJavadoc and not options.doMaven: - print usage - print - error("No action was specified.") - - if options.doAdd: - if not options.elements and not options.target_elements and not options.source_elements: - error("At least one element (global, source only or target only) and attribute must be specified.") - - for elem in ( options.source_attributes or [] ): - if elem in ( options.attributes or [] ): - error("You can't set an attribute in global and source scope at the same time") - - for elem in ( options.target_attributes or [] ): - if elem in ( options.attributes or [] ): - error("You can't set an attribute in global and target scope at the same time") - - if options.doAdd and (len(options.values or []) != len(options.attributes or []) - or len(options.source_values or [] ) != len(options.source_attributes or []) - or len(options.target_values or [] ) != len(options.target_attributes or [])): - error("You must give attribute(s)/value(s) for every element you are changing.") - - if options.doJavadoc: - if len(options.src_dirs or []) < 1: - error("You must specify as least one src directory.") - - for dir in options.src_dirs: - if not os.path.isdir(dir): - error("You must specify existing directory for src output") - - if len(options.javadoc_dir or []) != 1: - error("You must specify one and only one javadoc output directory.") - - if not os.path.isdir(options.javadoc_dir[0]): - error("You must specify an existing directory for javadoc output") - - if options.doDelete: - if not options.delete_elements: - error("At least one element to delete must be specified.") - - if options.doDelete and ( len(options.attributes or []) < 0): - error("You must give attribute(s) to delete for every element you are changing.") - # End Invalid Arguments Check - - - # main loop - if options.files: - for file in options.files: - print "Rewriting %s" % file - # First parse the file into memory - # Tricks with cwd are needed for relative includes of other xml files to build.xml files - cwd = os.getcwd() - dirname = os.path.dirname(file) - if dirname != '': # for file = build.xml comes out as '' - os.chdir(os.path.dirname(file)) - - f = open(os.path.basename(file), "r") - outxml = processActions(options, f) - os.chdir(cwd) - f.close() - # Then write it back to the file - f = open(file, "w") - f.write(outxml) - f.close() - - else: - outxml = processActions(options, sys.stdin) - sys.stdout.write(outxml) - # vim: set ai ts=8 sts=0 sw=8 tw=0 noexpandtab: diff --git a/src/obsolete/bsfix/xml-rewrite.py b/src/obsolete/bsfix/xml-rewrite.py deleted file mode 100755 index 624fd77..0000000 --- a/src/obsolete/bsfix/xml-rewrite.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public Licence v2 -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/bsfix/xml-rewrite.py,v 1.6 2005/07/19 10:35:18 axxo Exp $ - -# Author: Saleem Abdulrasool <compnerd@compnerd.org> -# Maintainer: Gentoo Java Herd <java@gentoo.org> -# Python based XML modifier - -# ChangeLog -# Saleem A. <compnerd@compnerd.org> -# December 23, 2004 - Initial Write -# December 24, 2004 - Added usage information - -import sys -from xml.dom.minidom import parse - -from optparse import OptionParser, make_option -from xml.dom import NotFoundErr - -__version__ = "$Revision: 1.6 $"[11:-2] - -class IOWrapper: - def __init__(self, object): - self.stream = object - - def stream(self): - return self.stream - - def write(self, data): - if self.stream == sys.stdin: - sys.stdout.write(data.encode('utf-8')) - else: - file = open(self.stream, 'w') - file.write(data.encode('utf-8')) - file.close() - -class Rewriter: - def __init__(self, stream): - self.stream = stream - self.document = parse(stream.stream); - - def modifyAttribute(self, elementTag, attribute, value, index=None): - matches = self.document.getElementsByTagName(elementTag) - if matches: - if index == None: - for match in matches: - match.setAttribute(attribute, value) - else: - matches[index].setAttribute(attribute, value) - - def deleteAttribute(self, elementTag, attribute, index=None): - matches = self.document.getElementsByTagName(elementTag) - if matches: - if index == None: - for match in matches: - try: - match.removeAttribute(attribute) - except NotFoundErr: - continue - else: - try: - matches[index].removeAttribute(attribute) - except NotFoundErr: - return - - def write(self): - self.stream.write(self.document.toxml()) - - -if __name__ == '__main__': - usage = "XML Rewrite Python Module Version " + __version__ + "\n" - usage += "Copyright 2004 Gentoo Foundation\n" - usage += "Distributed under the terms of the GNU General Public Lincense v2\n" - usage += "Please contact the Gentoo Java Herd <java@gentoo.org> with problems.\n" - usage += "\n" - usage += "Usage:\n" - usage += " xml-rewrite.py [-f] --delete -e tag [-e tag] -a attribute [-i index]\n" - usage += " xml-rewrite.py [-f] --change -e tag [-e tag] -a attribute -v value [-i index]\n" - usage += "\n" - usage += "If the -f parameter is not utilized, the script will read and\n" - usage += "write to stdin and stdout respectively. The use of quotes on\n" - usage += "parameters will break the script.\n" - - - def error(message): - print "ERROR: " + message - sys.exit(1) - - -# if len(sys.argv) == 1: -# usage(True) - - options_list = [ - make_option ("-f", "--file", type="string", dest="file", help="Read input from file instead of stdin"), - make_option ("-c", "--change", action="store_true", dest="doAdd", default=False, help="Change the value of an attribute. If it does not exist, it will be created."), - make_option ("-d", "--delete", action="store_true", dest="doDelete", default=False, help="Delete an attribute from matching elements."), - make_option ("-e", "--element", action="append", dest="elements", help="Tag of the element of which the attributes to be changed. These can be chained for multiple elements."), - make_option ("-a", "--attribute", type="string", dest="attribute", help="Attribute of the matching elements to change."), - make_option ("-v", "--value", type="string", dest="value", help="Value to set the attribute to."), - make_option ("-i", "--index", type="int", dest="index", help="Index of the match. If none is specified, the changes will be applied to all matches within the document.") - ] - - parser = OptionParser(usage, options_list) - (options, args) = parser.parse_args() - - - # Invalid Arguments Must be smited! - if not options.doAdd and not options.doDelete: - print usage - print - error("No action was specified.") - - if options.doAdd and options.doDelete: - error("Unable to perform multiple actions simultaneously.") - - if not options.elements or not options.attribute: - error("At least one element and attribute must be specified.") - - if options.doAdd and not options.value: - error("You must specify values for the attributes to be modified.") - # End Invalid Arguments Check - - - if options.file: - source = options.file - else: - source = sys.stdin - - rewriter = Rewriter(IOWrapper(source)) - - if options.doDelete: - for element in options.elements: - rewriter.deleteAttribute(element, options.attribute, options.index) - - if options.doAdd: - for element in options.elements: - rewriter.modifyAttribute(element, options.attribute, options.value, options.index) - - rewriter.write() diff --git a/src/obsolete/buildparser/Makefile b/src/obsolete/buildparser/Makefile deleted file mode 100644 index 8c1d749..0000000 --- a/src/obsolete/buildparser/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2004 Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/bsfix/Makefile,v 1.4 2005/01/02 02:30:12 axxo Exp $ - -include ../../makedefs.mak - -all: - -dist: - mkdir -p ../../$(distdir)/src/buildparser - cp Makefile buildparser ../../$(distdir)/src/buildparser - -install: all - install -m 0755 buildparser $(bindir)/ - diff --git a/src/obsolete/buildparser/buildparser b/src/obsolete/buildparser/buildparser deleted file mode 100644 index 0cff6d3..0000000 --- a/src/obsolete/buildparser/buildparser +++ /dev/null @@ -1,108 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# Copyright(c) 2005, Karl Trygve Kalleberg <karltk@gentoo.org> -# -# Licensed under the GNU General Public License, v2 -# -# $Header:$ - -import os -import sys -from optparse import OptionParser - -sys.path.insert(0, "/usr/share/javatoolkit/pym") - -from parser.parser import Parser -from parser.buildproperties import BuildPropertiesParser -from parser.manifest import ManifestParser -from parser.tree import Node, ParseError - -__author__ = ["James Le Cuirot <chewi@aura-online.co.uk>", "Karl Trygve Kalleberg <karltk@gentoo.org>"] -__version__ = "0.2.0" -__productname__ = "buildparser" -__description__ = "A parser for build.properties and JAR manifest files." - - -def parse_args(): - - usage = 'buildparser [options] [node name] [replacement] <filename>' - about = __productname__ + " : " + __description__ + "\n" + \ - "Version : " + __version__ + "\n" \ - "Authors : " + __author__[0] - - for x in __author__[1:]: - about += "\n " + x - - parser = OptionParser(usage, version=about) - parser.add_option('-t', '--type', action='store', type='choice', - dest='type', choices=['manifest', 'buildprops'], - help='Type of file to parse: manifest or buildprops') - - opt, args = parser.parse_args() - - if len(args) > 3: - parser.error("Too many arguments specified!") - - elif len(args) == 0: - parser.error("A filename must be specified!") - - elif not os.path.isfile(args[-1]): - parser.error(args[-1] + " does not exist!") - - return opt, args - -def main(): - - opt, args = parse_args() - - f = open(args[-1]) - - t = Node() - p = Parser() - - try: - if opt.type == "manifest": - p = ManifestParser() - - elif opt.type == "buildprops": - p = BuildPropertiesParser() - - elif os.path.basename(f.name) == "MANIFEST.MF": - p = ManifestParser() - - elif os.path.basename(f.name) == "build.properties": - p = BuildPropertiesParser() - - else: - sys.exit(__productname__ + ": error: Unknown file type. Specify using the -t option.") - - t = p.parse(f) - - except ParseError: - sys.exit(__productname__ + ": error: Unable to parse file.") - - if len(args) > 2: - n = t.find_node(args[0]) - - if n != None: - n.value = args[1] - - p.output(t) - - elif len(args) > 1: - n = t.find_node(args[0]) - - if n != None: - print n.value - - else: - for x in t.node_names(): - print x - -if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - print "Interrupted by user, aborting." - diff --git a/src/obsolete/findclass/AUTHORS b/src/obsolete/findclass/AUTHORS deleted file mode 100644 index 0decf7b..0000000 --- a/src/obsolete/findclass/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Karl Trygve Kalleberg <karltk@gentoo.org> -Fabio Lessa <flessa@gmail.com> diff --git a/src/obsolete/findclass/ChangeLog b/src/obsolete/findclass/ChangeLog deleted file mode 100644 index d0ebe22..0000000 --- a/src/obsolete/findclass/ChangeLog +++ /dev/null @@ -1,3 +0,0 @@ -2005-05-11: Karl Trygve Kalleberg <karltk@gentoo.org> - * Rewrite to Python from bash by Fabio Lessa and myself. - diff --git a/src/obsolete/findclass/Makefile b/src/obsolete/findclass/Makefile deleted file mode 100644 index 0ea4800..0000000 --- a/src/obsolete/findclass/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2004 Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/findclass/Makefile,v 1.1 2004/08/10 20:06:19 karltk Exp $ - -include ../../makedefs.mak - -all: - -dist: - mkdir -p ../../$(distdir)/src/findclass - cp {Makefile,AUTHORS,README,TODO,ChangeLog,findclass,findclass.1} ../../$(distdir)/src/findclass - -install: - install -m 0755 findclass $(bindir)/ - install -d $(docdir)/findclass - install -m 0644 {README,AUTHORS} $(docdir)/findclass/ - install -m 0644 findclass.1 $(mandir)/ diff --git a/src/obsolete/findclass/README b/src/obsolete/findclass/README deleted file mode 100644 index e69de29..0000000 --- a/src/obsolete/findclass/README +++ /dev/null diff --git a/src/obsolete/findclass/TODO b/src/obsolete/findclass/TODO deleted file mode 100644 index e69de29..0000000 --- a/src/obsolete/findclass/TODO +++ /dev/null diff --git a/src/obsolete/findclass/findclass b/src/obsolete/findclass/findclass deleted file mode 100644 index 15802c9..0000000 --- a/src/obsolete/findclass/findclass +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (c) Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright (c) Fabio Lessa <flessa@gmail.com> -# Copyright (c) 2005, Gentoo Foundation -# -# Python rewrite from the bash findclass initially performed -# by Fabio. -# -# Licensed under the GNU General Public License, v2. -# - -import os -import re -import sys -import glob -from optparse import OptionParser -from commands import getstatusoutput -from java_config.jc_util import find_exec, collect_packages - -__author__ = "Karl Trygve Kalleberg <karltk@gentoo.org> and Fabio Lessa <flessa@gmail.com>" -__version__ = "0.1.0" -__productname__ = "findclass" -__description__ = "Gentoo Java Class Query Tool" - -def parse_args(): - - usage = 'findclass [options] class.or.package.Name' - about = __productname__ + " : " + __description__ + "\n" + \ - "Authors : " + __author__ + \ - "Version : " + __version__ - - parser = OptionParser(usage, version=about) - parser.add_option('-v', '--verbose', action='store_true', - dest='verbose', help='generate verbose output') - opt, files = parser.parse_args() - - if len(files) < 1: - parser.error("Must supply at least one class or package name") - - return opt, files - -def main(): - - opt, files = parse_args() - - jarcmd = find_exec('jar') - - javapaths = [ f.replace('.', '/') for f in files ] - matchers = [ re.compile(p) for p in javapaths ] - - for pkg in get_all_packages(): - if opt.verbose: print "Searching package %s" % pkg - - for jar in collect_packages(pkg).split(':'): - if opt.verbose: print "Searching jar %s" % jar - - status, out = getstatusoutput("%s tvf %s" % (jarcmd, jar)) - - for m in matchers: - if m.search(out): - if opt.verbose: print "Found in %s" % pkg, - print jar - -def get_all_packages(): - - pkg = glob.glob('/usr/share/*/package.env') - pkg = [os.path.basename(os.path.dirname(i)) for i in pkg] - - classpath = glob.glob('/usr/share/*/classpath.env') - classpath = [os.path.basename(os.path.dirname(i)) for i in classpath] - - dir = glob.glob('/usr/share/java/packages/*') - dir = [os.path.basename(i) for i in dir] - - pkg.extend(classpath) - pkg.extend(dir) - return pkg - - -if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - print "Interrupted by user, aborting." diff --git a/src/obsolete/findclass/findclass.1 b/src/obsolete/findclass/findclass.1 deleted file mode 100644 index 7d2f959..0000000 --- a/src/obsolete/findclass/findclass.1 +++ /dev/null @@ -1,26 +0,0 @@ -.TH FINDCLASS "1" "May 2005" "javatollkit 0.1.0" "User Commands" -.SH NAME -findclass \- Searches for installed classes or packages -.SH SYNOPSIS -.B findclass -\fI[options]\fB -class.or.package.Name -.SH DESCRIPTION -.PP -.I findclass -Searches the system for the given package or class name, and prints -its location to stdout. -.SH OPTIONS -.TP -\fB-v --verbose\fI -Generates a more verbose output. - -.SH AUTHORS -Karl Trygve Kalleberg <karltk@gentoo.org>, 2004-2005 -.br -Fabio Lessa <flessa@gmail.com>, 2005 - - -.SH "SEE ALSO" -java-config(1) - diff --git a/src/obsolete/javatoolkit/.cvsignore b/src/obsolete/javatoolkit/.cvsignore deleted file mode 100644 index 0d20b64..0000000 --- a/src/obsolete/javatoolkit/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/src/obsolete/javatoolkit/Makefile b/src/obsolete/javatoolkit/Makefile deleted file mode 100644 index 108e005..0000000 --- a/src/obsolete/javatoolkit/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2004 Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# -# $Header: $ - -include ../../makedefs.mak - -all: - python -c "import compileall; compileall.compile_dir('.')" - -dist: - mkdir -p ../../$(distdir)/src/javatoolkit/parser - cp Makefile *.py ../../$(distdir)/src/javatoolkit/ - cp parser/*.py ../../$(distdir)/src/javatoolkit/parser/ - -install: all - install -d $(DESTDIR)/usr/share/javatoolkit/pym/parser - install -m 0644 *.py *.pyc $(DESTDIR)/usr/share/javatoolkit/pym/ - install -m 0644 parser/*.py parser/*.pyc $(DESTDIR)/usr/share/javatoolkit/pym/parser/ diff --git a/src/obsolete/javatoolkit/__init__.py b/src/obsolete/javatoolkit/__init__.py deleted file mode 100644 index 89a74a8..0000000 --- a/src/obsolete/javatoolkit/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/python2 -# -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/javatoolkit/__init__.py,v 1.2 2004/11/08 19:21:52 karltk Exp $ - -from classpath import * -from output import * - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/classpath.py b/src/obsolete/javatoolkit/classpath.py deleted file mode 100644 index c570774..0000000 --- a/src/obsolete/javatoolkit/classpath.py +++ /dev/null @@ -1,72 +0,0 @@ -#! /usr/bin/python2 -# -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/javatoolkit/classpath.py,v 1.4 2004/11/08 20:06:06 karltk Exp $ - -class ClasspathIter: - """An iterator for the Classpath class, below.""" - - def __init__(self, classpath): - self._classpath = classpath - self._index = 0 - - def next(self): - self._index += 1 - if self._index >= len(self._classpath.classpath): - raise StopIteration - return self._classpath.classpath[self._index] - - -class Classpath: - """A classpath object provides a collection interface to the elements of a : separated path list. """ - - def __init__(self, classpath_string = None): - if classpath_string != None: - cs = classpath_string.strip().strip("\"") - self.classpath = cs.split(":") - else: - self.classpath = [] - - - def __iter__(self): - """Returns iterator. Elements of the original classpath string are considered split by ':'.""" - - return ClasspathIter(self) - - - def __len__(self): - """Returns length (number of elements) in this classpath.""" - - return len(self.classpath) - - - def __getitem__(self, i): - """Returns i'th element.""" - - return self.classpath[i] - - - def __setitem__(self, i, val): - """Sets i'th element.""" - - self.classpath[i] = val - - - def __str__(self): - """Constructs a suitable string representation of the classpath.""" - - return ":".join(self.classpath) - - - def append(self, element): - """Appends an path to the classpath.""" - - self.classpath.append(element) - - -if __name__ == "__main__": - print "This is not an exectuable module"
\ No newline at end of file diff --git a/src/obsolete/javatoolkit/output.py b/src/obsolete/javatoolkit/output.py deleted file mode 100644 index 05192ef..0000000 --- a/src/obsolete/javatoolkit/output.py +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/python2 -# -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/javatoolkit/output.py,v 1.1 2004/11/08 19:21:52 karltk Exp $ - -import sys - -# FIXME: Use gentoolkit stuff instead - -def eerror(s): - sys.stderr.write("!!! " + s + "\n") - -def ewarn(s): - sys.stdout.write("* " + s + "\n") - -def einfo(s): - sys.stdout.write("* " + s + "\n") - -def die(err, s): - eerror(s) - sys.exit(err) - -if __name__ == "__main__": - print "This is not an executable module"
\ No newline at end of file diff --git a/src/obsolete/javatoolkit/parser/.cvsignore b/src/obsolete/javatoolkit/parser/.cvsignore deleted file mode 100644 index 0d20b64..0000000 --- a/src/obsolete/javatoolkit/parser/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/src/obsolete/javatoolkit/parser/__init__.py b/src/obsolete/javatoolkit/parser/__init__.py deleted file mode 100644 index d96be04..0000000 --- a/src/obsolete/javatoolkit/parser/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - -from helpers import * -import buildproperties - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/parser/buildproperties.py b/src/obsolete/javatoolkit/parser/buildproperties.py deleted file mode 100644 index 0c2ee53..0000000 --- a/src/obsolete/javatoolkit/parser/buildproperties.py +++ /dev/null @@ -1,83 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - -from tree import * -import parser - -class BuildPropertiesParser(parser.Parser): - - def parse(self, ins): - """ Parse an input stream containing an ant build.properties file. Return a - structured document represented by tree.Node - - @param ins - input stream - @return tree.Node containing the structured representation - """ - - lineno = 0 - continued_line = False - inside_html_comment = False - attrib = "" - value = "" - root = Node() - - for x in ins.readlines(): - lineno += 1 - x = x.strip() - - if inside_html_comment and x.find("-->") != -1: - inside_html_comment = False - x = x.split("-->", 1)[0] - - if x.find("<!--") != -1: - inside_html_comment = True - - if inside_html_comment: - continue - - if continued_line: - continued_line = False - value += x.strip("\"") - - if len(value) and value[-1] == "\\": - value = value[:-1] - continued_line = True - continue - - root.add_kid(Node(attrib,value)) - continue - - if len(x) == 0 or x[:1] == "#": - continue - - x = x.split("#", 1)[0] - xs = x.split("=", 2) - - if len(xs) > 1: - attrib = xs[0].strip() - value = xs[1].strip().strip("\"") - - if value != "" and value[-1] == "\\": - value = value[:-1] - continued_line = True - continue - - root.add_kid(Node(attrib,value)) - - else: - raise ParseError("Malformed line " + str(lineno)) - - return root - - def output(self, tree): - tree.output("", " = ", "") - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/parser/helpers.py b/src/obsolete/javatoolkit/parser/helpers.py deleted file mode 100644 index 62815de..0000000 --- a/src/obsolete/javatoolkit/parser/helpers.py +++ /dev/null @@ -1,61 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - - -def expand(root, expr, realroot = None): - """Evaluates a path expression on a given tree. - - @param root - the root of the tree - @param expr - the expression to resolve - - @return the expanded string - """ - - if realroot == None: - realroot = root - - expanded = "" - in_varref = False - varname = "" - - for i in range(len(expr)): - x = expr[i] - - if in_varref: - - if x == "}": - in_varref = False - expanded += expand(root, realroot.find_node(varname).value, realroot) - varname = "" - elif x != "{": - varname += expr[i] - - elif x == "$" and i < len(expr) and expr[i + 1] == "{": - in_varref = True - - else: - expanded += x - - return expanded - -def strip_varmarker(s): - """Strips away ${ and } in a variable expression. Idempotent if marker not found. - - Example: "${foo}" -> "foo" - Example: "foo" -> "foo" - """ - - if s.startswith("${") and s.endswith("}"): - return s[2:-1] - - return s - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/parser/manifest.py b/src/obsolete/javatoolkit/parser/manifest.py deleted file mode 100644 index 810914a..0000000 --- a/src/obsolete/javatoolkit/parser/manifest.py +++ /dev/null @@ -1,61 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - -from tree import * -import parser - -class ManifestParser(parser.Parser): - - def parse(self, ins): - """ Parse an input stream containing a MANIFEST.MF file. Return a - structured document represented by tree.Node - - @param ins - input stream - @return tree.Node containing the structured representation - """ - - lineno = 0 - attrib = "" - value = "" - root = Node() - - for x in ins.readlines(): - lineno += 1 - - if len(x.strip()) == 0: - continue - - if x[:1] == " ": - if attrib == "": - raise ParseError("Malformed line " + str(lineno)) - - value += x.strip() - continue - - xs = x.split(": ", 2) - - if len(xs) > 1: - if attrib != "": - root.add_kid(Node(attrib,value)) - - attrib = xs[0] - value = xs[1].strip() - - else: - raise ParseError("Malformed line " + str(lineno)) - - if attrib != "": - root.add_kid(Node(attrib,value)) - - return root - - def output(self, tree): - tree.output("", ": ", "", ",", " "); - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/parser/parser.py b/src/obsolete/javatoolkit/parser/parser.py deleted file mode 100644 index e99a7a1..0000000 --- a/src/obsolete/javatoolkit/parser/parser.py +++ /dev/null @@ -1,16 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - -class Parser: - def parse(self, ins): - raise NotImplementedError - def output(self, tree): - raise NotImplementedError - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/javatoolkit/parser/tree.py b/src/obsolete/javatoolkit/parser/tree.py deleted file mode 100644 index eb51874..0000000 --- a/src/obsolete/javatoolkit/parser/tree.py +++ /dev/null @@ -1,107 +0,0 @@ -#! /usr/bin/python -# -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> -# Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright(c) 2004, Gentoo Foundation -# -# Licensed under the GNU General Public License, v2 -# -# $Header: $ - -import sys - -class ParseError: - def __init__(self, error): - self.error = error - -class NodeIter: - def __init__(self, node): - self._node = node - self._index = 0 - def next(self): - self._index += 1 - if self._index >= len(self._node._kids): - raise StopIteration - return self._node._kids[self._index] - -class Node: - def __init__(self, name = None, value = None): - self.name = name - self.value = value - self._kids = [] - - def __iter__(self): - return NodeIter(self) - - def add_kid(self, kid): - for x in self._kids: - if x.name == kid.name: - return - - self._kids.append(kid) - - def _dump_kids(self, indent, ous): - for x in self._kids: - x.dump(indent + 1) - - """ - Dump self as text to stream. - """ - def dump(self, indent = 0, ous = sys.stdout): - if self.name: - ous.write((" " * indent) + self.name + " = " + self.value + "\n") - - self._dump_kids(indent, ous) - - """ - Output self as text to stream using the given format. - """ - def output(self, before, between, after, wrap = None, indent = "", ous = sys.stdout): - if self.name: - outval = self.value - - if wrap != None: - outval = outval.replace(wrap, wrap + "\n" + indent) - - ous.write(before + self.name + between + outval + after + "\n") - - for x in self._kids: - x.output(before, between, after, wrap, indent, ous) - - """ - Returns a lists of all the node names. - """ - def node_names(self): - names = [] - - if self.name: - names.append(self.name) - - for x in self._kids: - names.extend(x.node_names()) - - return names - - """ - Find a given node name in a tree. - - @param tree - the tree to search in - @param nodename - the name of the node to search for - - @return reference to the found node, if any - """ - def find_node(self, nodename): - if self.name == nodename: - return self - - else: - for x in self._kids: - y = x.find_node(nodename) - - if y != None: - return y - - return None - -if __name__ == "__main__": - print "This is not an executable module" diff --git a/src/obsolete/sun-fetch/AUTHORS b/src/obsolete/sun-fetch/AUTHORS deleted file mode 100644 index e69de29..0000000 --- a/src/obsolete/sun-fetch/AUTHORS +++ /dev/null diff --git a/src/obsolete/sun-fetch/ChangeLog b/src/obsolete/sun-fetch/ChangeLog deleted file mode 100644 index 055241d..0000000 --- a/src/obsolete/sun-fetch/ChangeLog +++ /dev/null @@ -1,6 +0,0 @@ -2005-05-11: Karl Trygve Kalleberg <karltk@gentoo.org - * Added man page. - -2004-08-10: Karl Trygve Kalleberg <karltk@gentoo.org - * Added sun-fetch, an easier front-end to sun-fetch.py - * Install sun-fetch.py in ${libdir}/bin/ diff --git a/src/obsolete/sun-fetch/Makefile b/src/obsolete/sun-fetch/Makefile deleted file mode 100644 index 1825240..0000000 --- a/src/obsolete/sun-fetch/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2004 Karl Trygve Kalleberg <karltk@gentoo.org> -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# -# $Header: /var/cvsroot/gentoo-src/javatoolkit/src/sun-fetch/Makefile,v 1.2 2004/08/10 20:38:58 karltk Exp $ - -include ../../makedefs.mak - -all: - -dist: - mkdir -p ../../$(distdir)/src/sun-fetch - cp {Makefile,AUTHORS,README,TODO,ChangeLog,sun-fetch.py,sun-fetch.1} ../../$(distdir)/src/sun-fetch - -install: - install -d $(libdir)/bin - install -m 0755 sun-fetch $(bindir)/ - install -m 0755 sun-fetch.py $(libdir)/bin - install -d $(docdir)/sun-fetch - install -m 0644 {README,AUTHORS} $(docdir)/sun-fetch/ - install -m 0644 sun-fetch.1 $(mandir)/ diff --git a/src/obsolete/sun-fetch/README b/src/obsolete/sun-fetch/README deleted file mode 100644 index e69de29..0000000 --- a/src/obsolete/sun-fetch/README +++ /dev/null diff --git a/src/obsolete/sun-fetch/TODO b/src/obsolete/sun-fetch/TODO deleted file mode 100644 index 748c2e7..0000000 --- a/src/obsolete/sun-fetch/TODO +++ /dev/null @@ -1,2 +0,0 @@ -We should get it to work on: - 7503-jce-1.4.2-oth-JPR diff --git a/src/obsolete/sun-fetch/sun-fetch b/src/obsolete/sun-fetch/sun-fetch deleted file mode 100755 index faddd2c..0000000 --- a/src/obsolete/sun-fetch/sun-fetch +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/sh - -portdir=$(portageq portdir) - -urls=$(./sun-fetch.py -q --mode id $1) - -if [ "`arch`" == "i686" ] ; then - archset="(i686|i586|i486)" -elif [ "`arch`" == "ia64" ] ; then - archset="ia64" -fi - -echo ${archset} - -for x in $urls ; do - z=$(echo $x | grep "^http:" | egrep ${archset}) - if [ ! -z "$z" ] ; then - filename=`echo $z | sed -r "s_.*/(.*)_\1_"` - wget "${x}" -O ${portdir}/distfiles/$filename - fi -done diff --git a/src/obsolete/sun-fetch/sun-fetch.1 b/src/obsolete/sun-fetch/sun-fetch.1 deleted file mode 100644 index f84b692..0000000 --- a/src/obsolete/sun-fetch/sun-fetch.1 +++ /dev/null @@ -1,24 +0,0 @@ -.TH FINDCLASS "1" "May 2005" "javatollkit 0.1.0" "User Commands" -.SH NAME -sun-fetch \- Fetches programs automatically from the Sun website -.SH SYNOPSIS -.B sun-fetch -\fI[options]\fB -program-id -.SH DESCRIPTION -.PP -.I sun-fetch -Wades through the application forms, accepts the licenses and downloads -sensible files from the Sun website. -.SH OPTIONS -.TP -\fB-v --verbose\fI -Generates a more verbose output. - -.SH AUTHORS -Karl Trygve Kalleberg <karltk@gentoo.org>, 2004-2005 - - -.SH "SEE ALSO" -java-config(1) - diff --git a/src/obsolete/sun-fetch/sun-fetch.py b/src/obsolete/sun-fetch/sun-fetch.py deleted file mode 100755 index 954fad3..0000000 --- a/src/obsolete/sun-fetch/sun-fetch.py +++ /dev/null @@ -1,290 +0,0 @@ -#! /usr/bin/env python -# -# Copyright (c) 2004, Karl Trygve Kalleberg <karltk@boblycat.org> - -import re -import sys -import time -import codecs -import string -import pprint -import urllib -import httplib -import htmllib -import urlparse -import formatter - -ShopURL_pfx = "http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=" -ShopURL_sfx = "&SiteId=JSC&TransactionId=noreg" -InitialURL = "http://java.sun.com/products/archive/" - -verbosity = 2 - -class SnarfHTMLParser(htmllib.HTMLParser): - def __init__(self, formatter): - htmllib.HTMLParser.__init__(self, formatter) - self._urls = [] - self._forms = [] - self._curform = None - - def get_forms(self): - return self._forms - - def get_urls(self): - return self._urls - - def unknown_starttag(self, tag, attributes): - self._handle_starttag(tag, attributes) - - def unknown_endtag(self, tag): - self._handle_endtag(tag) - - def handle_data(self, data): - pass - - def get_attrib(self, needle, haystack): - for x in haystack: - if x[0] == needle: - return x[1] - return None - - def _handle_starttag(self, tag, attributes): - if tag == "a": - val = self.get_attrib("href", attributes) - if val: - self._urls.append(val) - elif tag == "form": - action = self.get_attrib("action", attributes) - self._curform = { "action" : action, "inputs" : {} } - self._forms.append(self._curform) - elif tag == "input": - name = self.get_attrib("name", attributes) - val = self.get_attrib("value", attributes) - self._curform["inputs"][name] = val - - def _handle_endtag(self, tag): - if tag == "form": - self._curform = "None" - - def handle_starttag(self, tag, method, attrs): - self._handle_starttag(tag, attrs) - - def handle_endtag(self, tag, method): - self._handle_endtag(tag) - -def fetchPageOverHTTP(url): - if verbosity > 1: - print "GET " + url - - connector = httplib.HTTPConnection - protocol = "http://" - if url.find("https://") == 0: - protocol = "https://" - connector = httplib.HTTPSConnection - - urlTokens = url.replace(protocol,"").split('/') - conn = connector(urlTokens[0]) - if verbosity > 2: - print urlTokens[0] - foo = string.join(urlTokens[1:],"/") - if verbosity > 2: - print foo - conn.request("GET", "/" + foo) - r1 = conn.getresponse() - if r1.status == 302: - url = r1.getheader("Location") - return fetchPageOverHTTP(url) - return r1.read() - -def fetchTableFromFile(url): - if verbosity > 1: - print "Loading from " + url - ins = open(url) - return ins.read() - -def stripPreproc(doc): - rx = re.compile("(<![^>]+>)") - x = rx.subn("",doc) - return x[0] - - -def stripAndParse(parser, doc): - if verbosity > 1: - print "Stripping..." - doc = stripPreproc(doc) - - if verbosity > 1: - print "Parsing..." - parser.feed(doc) - return parser - -def freshParser(): - return SnarfHTMLParser(formatter.NullFormatter(formatter.NullWriter())) - -def postForm(url, field_dict): - urltup = urlparse.urlsplit(url) - if verbosity > 3: - print urltup - connector = httplib.HTTPConnection - if urltup[0] == "https": - connector = httplib.HTTPSConnection - conn = connector(urltup[1]) - conn.putrequest("POST", urltup[2]) -# conn.putheader('User-Agent',useragent) -# if cookie <> None: conn.putheader('Cookie',cookie) - postdata = urllib.urlencode(field_dict) - conn.putheader('Content-type', 'application/x-www-form-urlencoded') - conn.putheader('Content-length', '%d' % len(postdata)) - conn.endheaders() - conn.send(postdata) - resp = conn.getresponse() - if resp.status == 200: - return resp.read() - else: - raise "Status %d" % ( resp.status, ) - -def fetchProduct(productid): - url = ShopURL_pfx + productid + ShopURL_sfx - - # - # Get license page - # - if url.find("http://") != 0: - url = urltup[0] + "://" + urltup[1] + url - - doc = fetchPageOverHTTP(url) - p = stripAndParse(freshParser(), doc) - forms = p.get_forms() - license_form = None - for x in forms: - if x["action"].find("sdlc") >= 0: - license_form = x - license_form["inputs"]["legalAcceptance_5"] = "Yes" - doc = postForm(license_form["action"], license_form["inputs"]) - p = stripAndParse(freshParser(), doc) - urls = p.get_urls() - - # - # Get final url list - # - - rx = re.compile("j2sdk") - urls = filter(lambda x: rx.search(x), urls) - rx = re.compile("linux") - urls = filter(lambda x: rx.search(x), urls) - rx = re.compile("rpm") - urls = filter(lambda x: not rx.search(x), urls) - - for x in urls: - print "URL: " + x - -def fetchJ2SDK(url): - - urltup = urlparse.urlparse(url) - - # - # Get initial page - # - if len(url) > 4 and url[0:5] == "http:": - doc = fetchPageOverHTTP(url) - - else: - doc = fetchPageFromFile(url) - - p = stripAndParse(freshParser(), doc) - urls = p.get_urls() - rx = re.compile("j2sdk|j2se") - urls = filter(lambda x: rx.search(x), urls) - rx = re.compile("javashop") - urls = filter(lambda x: rx.search(x), urls) - - rx = re.compile(".*PartDetailId=(.*)&SiteId.*") - x = rx.match(urls[0]) - product = x.group(1) - - fetchProduct(product) - -def j2sdkFilter(urls): - rx = re.compile("j2sdk|j2se") - return filter(lambda x: rx.search(x), urls) - -def fetchJ2SDKURL(ver): - urls = fetchAllVersions() - rx = re.compile(ver) - urls = filter(lambda x: rx.search(x), urls) - if len(urls) > 1: - sys.stderr.write("Ambiguous version, following found:\n") - for x in urls: - sys.stderr.write(x + "\n") - sys.exit(3) - if len(urls) == 0: - print "No version '" + ver + "' found" - sys.exit(4) - return urls[0] - -def fetchAllVersions(): - doc = fetchPageOverHTTP(InitialURL) - p = stripAndParse(freshParser(), doc) - tok = urlparse.urlsplit(InitialURL) - urls = j2sdkFilter(p.get_urls()) - return map(lambda x: tok[0] + "://" + tok[1] + x, urls) - -def listVersions(): - urls = fetchAllVersions() - for x in urls: - print x - -def printUsage(): - print "sun-fetch.py --mode [cpv|list|id|url] arg" - -def downloadByVersion(version): - url = fetchJ2SDKURL(version) - downloadByURL(url) - -def downloadByID(id): - fetchProduct(id) - -def downloadByCPV(cpv): - pass - -def downloadByURL(url): - fetchJ2SDK(url) - -def main(): - global verbosity - mode = "cpv" - arg = "" - skip = 0 - for i in range(1,len(sys.argv)): - if skip: - skip -= 1 - continue - x = sys.argv[i] - if x in ["-V","--verbose"]: - verbosity = 10 - elif x in ["-q", "--quiet"]: - verbosity = 0 - elif x in ["-u", "--url"]: - url = sys.argv[i + 1] - skip = 1 - elif x in ["-m", "--mode"]: - mode = sys.argv[i + 1] - skip = 1 - else: - arg = x - - if mode == "cpv": - downloadByCPV(arg) - elif mode == "list": - listVersions() - elif mode == "url": - downloadByURL(arg) - elif mode =="id": - downloadByID(arg) - elif mode == "version": - downloadByVersion(arg) - else: - printUsage() - -if __name__ == "__main__": - main() diff --git a/src/py/build-xml-rewrite b/src/py/build-xml-rewrite new file mode 100755 index 0000000..a762e16 --- /dev/null +++ b/src/py/build-xml-rewrite @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +import sys +import xml.etree.cElementTree as et +from optparse import OptionParser + +parser = OptionParser() +parser.add_option('-c', '--changeattributes', dest='change', action="append", nargs=3) +parser.add_option('-g', '--gentooclasspath', dest="gcp", action="store_true", default=False) +parser.add_option('-e', '--encoding', dest="encoding") +(options, args) = parser.parse_args() + +changes = [] +if options.change: + for c in options.change: + changes.append((c[0].split(),c[1], c[2])) + +gcp = options.gcp +gcp_str = '${gentoo.classpath}' +gcp_sub = et.Element('classpath', path=gcp_str) + +for file in args: + tree = et.ElementTree(file=file) + if gcp or options.encoding: + for javac in tree.getiterator('javac'): + if gcp: + javac.attrib['classpath'] = gcp_str + if options.encoding: + javac.attrib['encoding'] = options.encoding + for javadoc in tree.getiterator('javadoc'): + if gcp: + javadoc.attrib['classpath'] = gcp_str + if options.encoding: + javadoc.attrib['encoding'] = options.encoding + for c in changes: + elems, attr, value = c + for elem in elems: + for e in tree.getiterator(elem): + e.attrib[attr] = value + for junit in tree.getiterator('junit'): + if gcp: + junit.append(gcp_sub) + junit.attrib['haltonfailure'] = 'true' + + f = open(file, 'w') + tree.write(f) + f.close() diff --git a/src/py/buildparser b/src/py/buildparser index 62a2a83..f388fcd 100644..100755 --- a/src/py/buildparser +++ b/src/py/buildparser @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> +# Copyright(c) 2006, 2008 James Le Cuirot <chewi@aura-online.co.uk> # Copyright(c) 2005, Karl Trygve Kalleberg <karltk@gentoo.org> # # Licensed under the GNU General Public License, v2 @@ -13,96 +13,116 @@ from optparse import OptionParser sys.path.insert(0, "/usr/share/javatoolkit/pym") -from parser.parser import Parser -from parser.buildproperties import BuildPropertiesParser -from parser.manifest import ManifestParser -from parser.tree import Node, ParseError +from javatoolkit.parser.parser import Parser +from javatoolkit.parser.buildproperties import BuildPropertiesParser +from javatoolkit.parser.manifest import ManifestParser +from javatoolkit.parser.tree import Node, ParseError __author__ = ["James Le Cuirot <chewi@aura-online.co.uk>", "Karl Trygve Kalleberg <karltk@gentoo.org>"] -__version__ = "0.2.0" +__version__ = "0.3.0" __productname__ = "buildparser" __description__ = "A parser for build.properties and JAR manifest files." def parse_args(): - usage = 'buildparser [options] [node name] [replacement] <filename>' - about = __productname__ + " : " + __description__ + "\n" + \ - "Version : " + __version__ + "\n" \ - "Authors : " + __author__[0] - - for x in __author__[1:]: - about += "\n " + x + usage = 'buildparser [options] [node name] [replacement] <filename>' + about = __productname__ + " : " + __description__ + "\n" + \ + "Version : " + __version__ + "\n" \ + "Authors : " + __author__[0] - parser = OptionParser(usage, version=about) - parser.add_option('-t', '--type', action='store', type='choice', - dest='type', choices=['manifest', 'buildprops'], - help='Type of file to parse: manifest or buildprops') - - opt, args = parser.parse_args() + for x in __author__[1:]: + about += "\n " + x - if len(args) > 3: - parser.error("Too many arguments specified!") + parser = OptionParser(usage, version=about) - elif len(args) == 0: - parser.error("A filename must be specified!") - - elif not os.path.isfile(args[-1]): - parser.error(args[-1] + " does not exist!") + parser.add_option('-t', '--type', action='store', type='choice', + dest='type', choices=['manifest', 'buildprops'], + help='Type of file to parse: manifest or buildprops') - return opt, args + parser.add_option('-i', '--in-place', action='store_true', dest='in_place', + help='Edit file in place when replacing') + + parser.add_option('-w', '--wrap', action='store_true', dest='wrap', + help='Wrap when returning singular values') + + opt, args = parser.parse_args() + + if len(args) > 3: + parser.error("Too many arguments specified!") + + elif len(args) == 0: + parser.error("A filename must be specified!") + + elif not os.path.isfile(args[-1]): + parser.error(args[-1] + " does not exist!") + + return opt, args def main(): - - opt, args = parse_args() - - f = open(args[-1]) - - t = Node() - p = Parser() - - try: - if opt.type == "manifest": - p = ManifestParser() - - elif opt.type == "buildprops": - p = BuildPropertiesParser() - - elif os.path.basename(f.name) == "MANIFEST.MF": - p = ManifestParser() - - elif os.path.basename(f.name) == "build.properties": - p = BuildPropertiesParser() - - else: - sys.exit(__productname__ + ": error: Unknown file type. Specify using the -t option.") - - t = p.parse(f) - - except ParseError: - sys.exit(__productname__ + ": error: Unable to parse file.") - - if len(args) > 2: - n = t.find_node(args[0]) - - if n != None: - n.value = args[1] - - p.output(t) - - elif len(args) > 1: - n = t.find_node(args[0]) - - if n != None: - print n.value - - else: - for x in t.node_names(): - print x + + opt, args = parse_args() + + f = open(args[-1]) + + t = Node() + p = Parser() + + try: + if opt.type == "manifest": + p = ManifestParser() + + elif opt.type == "buildprops": + p = BuildPropertiesParser() + + elif os.path.basename(f.name) == "MANIFEST.MF": + p = ManifestParser() + + elif os.path.basename(f.name) == "build.properties": + p = BuildPropertiesParser() + + else: + sys.exit(__productname__ + ": error: Unknown file type. Specify using the -t option.") + + t = p.parse(f) + f.close() + + except ParseError: + sys.exit(__productname__ + ": error: Unable to parse file.") + + if len(args) > 2: + n = t.find_node(args[0]) + + if n != None: + n.value = args[1] + else: + t.add_kid(Node(args[0], args[1])) + + if opt.in_place: + f = open(args[-1], "w+") + p.output(f, t) + f.close() + + else: + p.output(sys.stdout, t) + + elif len(args) > 1: + n = t.find_node(args[0]) + + if n != None: + if opt.wrap: + print p.wrapped_value(n) + else: + print n.value + + else: + for x in t.node_names(): + print x if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - print "Interrupted by user, aborting." + try: + main() + except KeyboardInterrupt: + print "Interrupted by user, aborting." +#set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap diff --git a/src/py/findclass b/src/py/findclass index 15802c9..15802c9 100644..100755 --- a/src/py/findclass +++ b/src/py/findclass diff --git a/src/py/jarjarclean b/src/py/jarjarclean new file mode 100755 index 0000000..517f0be --- /dev/null +++ b/src/py/jarjarclean @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# Copyright 2008 James Le Cuirot <chewi@aura-online.co.uk> +# Copyright 2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# +# $Header: $ + +import sys +import xml.etree.cElementTree as et + +args = sys.argv[1:] +if len(args) == 0: + args = [ 'build.xml' ] + +for file in args: + tree = et.ElementTree(file=file) + tags = [] + + for elem in tree.getiterator(): + for child in list(elem): + if child.tag == 'taskdef' and child.get('classname') == 'com.tonicsystems.jarjar.JarJarTask': + tags.append(child.get('name')) + elem.remove(child) + + for tag in tags: + for jarjar in tree.getiterator(tag): + if jarjar.get('destfile') or jarjar.get('jarfile'): + jarjar.tag = 'jar' + + if jarjar.get('verbose'): + del jarjar.attrib['verbose'] + + for child in list(jarjar): + if child.tag == 'keep' or child.tag == 'rule' or child.tag == 'zipfileset': + jarjar.remove(child) + + f = open(file, 'w') + tree.write(f) + f.close() + +#set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap diff --git a/src/py/javatoolkit/parser/.cvsignore b/src/py/javatoolkit/parser/.cvsignore deleted file mode 100644 index 0d20b64..0000000 --- a/src/py/javatoolkit/parser/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/src/py/javatoolkit/parser/__init__.py b/src/py/javatoolkit/parser/__init__.py index d96be04..55f6e54 100644 --- a/src/py/javatoolkit/parser/__init__.py +++ b/src/py/javatoolkit/parser/__init__.py @@ -1,4 +1,4 @@ -#! /usr/bin/python +#!/usr/bin/env python # # Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> # Copyright(c) 2004, Gentoo Foundation diff --git a/src/py/javatoolkit/parser/buildproperties.py b/src/py/javatoolkit/parser/buildproperties.py index 468903c..e3672e5 100644 --- a/src/py/javatoolkit/parser/buildproperties.py +++ b/src/py/javatoolkit/parser/buildproperties.py @@ -1,4 +1,4 @@ -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> +# Copyright(c) 2006, 2008, James Le Cuirot <chewi@aura-online.co.uk> # Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> # Copyright(c) 2004, Gentoo Foundation # @@ -12,7 +12,7 @@ import parser class BuildPropertiesParser(parser.Parser): def parse(self, ins): - """ Parse an input stream containing an ant build.properties file. Return a + """ Parse an input stream containing an ant build.properties file. Return a structured document represented by tree.Node @param ins - input stream @@ -73,8 +73,11 @@ class BuildPropertiesParser(parser.Parser): raise ParseError("Malformed line " + str(lineno)) return root - - def output(self, tree): - tree.output("", " = ", "") + + def output(self, ous, tree): + tree.output(ous, "", " = ", "") + + def wrapped_value(self, node): + return node.output_value() # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: diff --git a/src/py/javatoolkit/parser/helpers.py b/src/py/javatoolkit/parser/helpers.py index 0f5e77c..b11b08b 100644 --- a/src/py/javatoolkit/parser/helpers.py +++ b/src/py/javatoolkit/parser/helpers.py @@ -8,10 +8,10 @@ def expand(root, expr, realroot = None): """Evaluates a path expression on a given tree. - + @param root - the root of the tree @param expr - the expression to resolve - + @return the expanded string """ @@ -21,7 +21,7 @@ def expand(root, expr, realroot = None): expanded = "" in_varref = False varname = "" - + for i in range(len(expr)): x = expr[i] @@ -39,19 +39,19 @@ def expand(root, expr, realroot = None): else: expanded += x - + return expanded def strip_varmarker(s): """Strips away ${ and } in a variable expression. Idempotent if marker not found. - + Example: "${foo}" -> "foo" Example: "foo" -> "foo" """ - + if s.startswith("${") and s.endswith("}"): return s[2:-1] - + return s # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: diff --git a/src/py/javatoolkit/parser/manifest.py b/src/py/javatoolkit/parser/manifest.py index c5c3a67..da124f9 100644 --- a/src/py/javatoolkit/parser/manifest.py +++ b/src/py/javatoolkit/parser/manifest.py @@ -1,4 +1,4 @@ -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> +# Copyright(c) 2006, 2008, James Le Cuirot <chewi@aura-online.co.uk> # # Licensed under the GNU General Public License, v2 # @@ -10,7 +10,7 @@ import parser class ManifestParser(parser.Parser): def parse(self, ins): - """ Parse an input stream containing a MANIFEST.MF file. Return a + """ Parse an input stream containing a MANIFEST.MF file. Return a structured document represented by tree.Node @param ins - input stream @@ -52,7 +52,10 @@ class ManifestParser(parser.Parser): return root - def output(self, tree): - tree.output("", ": ", "", ",", " "); + def output(self, ous, tree): + tree.output(ous, "", ": ", "", ",", " ") + + def wrapped_value(self, node): + return node.output_value(",") # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: diff --git a/src/py/javatoolkit/parser/parser.py b/src/py/javatoolkit/parser/parser.py index 55e57f3..01e1171 100644 --- a/src/py/javatoolkit/parser/parser.py +++ b/src/py/javatoolkit/parser/parser.py @@ -7,7 +7,7 @@ class Parser: def parse(self, ins): raise NotImplementedError - def output(self, tree): - raise NotImplementedError + def output(self, ous, tree): + raise NotImplementedError # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: diff --git a/src/py/javatoolkit/parser/tree.py b/src/py/javatoolkit/parser/tree.py index f5987b5..ca361c9 100644 --- a/src/py/javatoolkit/parser/tree.py +++ b/src/py/javatoolkit/parser/tree.py @@ -1,4 +1,4 @@ -# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> +# Copyright(c) 2006, 2008, James Le Cuirot <chewi@aura-online.co.uk> # Copyright(c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org> # Copyright(c) 2004, Gentoo Foundation # @@ -21,71 +21,75 @@ class NodeIter: if self._index >= len(self._node._kids): raise StopIteration return self._node._kids[self._index] - + class Node: def __init__(self, name = None, value = None): self.name = name self.value = value self._kids = [] - + def __iter__(self): return NodeIter(self) - + def add_kid(self, kid): for x in self._kids: if x.name == kid.name: return - + self._kids.append(kid) - - def _dump_kids(self, indent, ous): + + def _dump_kids(self, ous, indent): for x in self._kids: - x.dump(indent + 1) - + x.dump(ous, indent + 1) + """ Dump self as text to stream. """ - def dump(self, indent = 0, ous = sys.stdout): + def dump(self, ous, indent = 0): if self.name: ous.write((" " * indent) + self.name + " = " + self.value + "\n") - - self._dump_kids(indent, ous) - + + self._dump_kids(ous, indent) + """ Output self as text to stream using the given format. """ - def output(self, before, between, after, wrap = None, indent = "", ous = sys.stdout): + def output(self, ous, before, between, after, wrap = None, indent = ""): if self.name: - outval = self.value - - if wrap != None: - outval = outval.replace(wrap, wrap + "\n" + indent) - - ous.write(before + self.name + between + outval + after + "\n") - + ous.write(before + self.name + between + self.output_value(wrap, indent) + after + "\n") + for x in self._kids: - x.output(before, between, after, wrap, indent, ous) + x.output(ous, before, between, after, wrap, indent) + + """ + Return node value as string using the given format. + """ + def output_value(self, wrap = None, indent = ""): + if wrap == None: + return self.value + else: + return self.__wrap_outside_quotes(self.value, wrap, indent) """ Returns a lists of all the node names. """ def node_names(self): names = [] - + if self.name: names.append(self.name) - + for x in self._kids: names.extend(x.node_names()) - + return names """ Find a given node name in a tree. - + @param tree - the tree to search in @param nodename - the name of the node to search for - + @return reference to the found node, if any """ def find_node(self, nodename): @@ -95,10 +99,37 @@ class Node: else: for x in self._kids: y = x.find_node(nodename) - + if y != None: return y - + return None + """ + Wrap using the given character and indent string, without wrapping + inside quotes. Python's regexp engine cannot handle this. + + @param text - text to wrap + @param wrap - character to wrap at + @param indent - indent string to use, can be empty + @param pos - recursive parameter only, don't use + + @return wrapped text + """ + def __wrap_outside_quotes(self, text, wrap, indent, pos = None): + if pos == None: + pos = len(text) + + next_wrap = text.rfind(wrap, 0, pos) + + if next_wrap <= 0: + return text + + num_quotes = text.count('"', next_wrap, pos) + + if num_quotes % 2 != 0: + return self.__wrap_outside_quotes(text, wrap, indent, text.rfind('"', 0, next_wrap + 1)) + + return self.__wrap_outside_quotes(text[0:next_wrap] + wrap + "\n" + indent + text[next_wrap + 1:], wrap, indent, next_wrap) + # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: diff --git a/src/py/javatoolkit/xml/__init__.py b/src/py/javatoolkit/xml/__init__.py index ac60ace..8d36aa9 100644 --- a/src/py/javatoolkit/xml/__init__.py +++ b/src/py/javatoolkit/xml/__init__.py @@ -1,4 +1,4 @@ -#! /usr/bin/python2 +#!/usr/bin/env python # # Copyright(c) 2007, Gentoo Foundation # Licensed under the GNU General Public License, v2 |