diff options
author | Balint Reczey <balint@balintreczey.hu> | 2013-03-06 13:31:08 +0000 |
---|---|---|
committer | Balint Reczey <balint@balintreczey.hu> | 2013-03-06 13:31:08 +0000 |
commit | a8f543b56b86e1ac5246c70918dc7cb0f372ed77 (patch) | |
tree | 5aa30d8c53957d915c3ef987af3ee5bff4893adf /tools | |
parent | 974c0e18b9af3da1fdea4363f4abe37259238498 (diff) |
Merge asn2deb and idl2deb from official Debian package
svn path=/trunk/; revision=48133
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/asn2deb | 219 | ||||
-rwxr-xr-x | tools/idl2deb | 216 |
2 files changed, 435 insertions, 0 deletions
diff --git a/tools/asn2deb b/tools/asn2deb new file mode 100755 index 0000000000..e61f1dfe33 --- /dev/null +++ b/tools/asn2deb @@ -0,0 +1,219 @@ +#!/usr/bin/env python + +# asn2deb - quick hack by W. Borgert <debacle@debian.org> to create +# Debian GNU/Linux packages from ASN.1 files for Wireshark. +# Copyright 2004, W. Borgert + +# ASN.1 module for Wireshark, use of snacc type table: +# Copyright 2003, Matthijs Melchior <matthijs.melchior@xs4all.nl> +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.com> +# Copyright 1998 Gerald Combs + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +import getopt, os, string, sys, time + +scriptinfo = """asn2deb version 2004-02-17 +Copyright 2004, W. Borgert +Free software, released under the terms of the GPL.""" + +options = {'asn': None, + 'dbopts': "", + 'email': "invalid@invalid.invalid", + 'help': 0, + 'name': "No Name", + 'preserve': 0, + 'version': 0} + +def bootstrap(): + """Generate Makefile.in and configure script.""" + os.system("aclocal-1.7") + os.system("autoconf") + os.system("automake-1.7 --add-missing --copy --foreign") + +def create_file(filename, content, mode = None): + """Create a file with given content.""" + global options + if options['preserve'] and os.path.isfile(filename): + return + f = open(filename, 'w') + f.write(content) + f.close() + if mode: + os.chmod(filename, mode) + +def create_files(version, deb, email, asn, name, iso, rfc): + """Create all files for the .deb build process.""" + base = asn.lower()[:-5] + create_file("Makefile.am", """# + +BUILT_SOURCES = %s.tt +asn1ttdir = $(datadir)/wireshark/asn1 +asn1tt_DATA = %s.tt + +%s.tt: """ % ((base,) * 3) + asn + """ + snacc -u /usr/include/snacc/asn1/asn-useful.asn1 -T $@ $< +""") + + create_file("configure.ac", """AC_INIT(%s, 1.0) +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE +AC_PROG_INSTALL +SNACC=\"`type -p snacc`\" +AC_SUBST(SNACC) +dnl WIRESHARK_VERSION=\"%s\" +dnl plugindir=\"$prefix/share/wireshark/asn.1\" +dnl AC_SUBST(plugindir) +AC_OUTPUT([Makefile]) +""" % (base, version)) + + if not os.path.isdir("debian"): + os.mkdir("debian") + + create_file("debian/rules", """#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk + +PREFIX=`pwd`/debian/wireshark-asn1-%s + +binary-post-install/wireshark-asn1-%s:: + rm -f $(PREFIX)/usr/lib/wireshark/plugins/%s/*.a +""" % (base, base, version), 0755) + + create_file("debian/control", """Source: wireshark-asn1-%s +Section: net +Priority: optional +Maintainer: %s <%s> +Standards-Version: 3.6.1.0 +Build-Depends: snacc, autotools-dev, debhelper, cdbs + +Package: wireshark-asn1-%s +Architecture: all +Depends: wireshark (= %s) +Description: ASN.1/BER dissector for %s + This package provides a type table for decoding BER (Basic Encoding + Rules) data over TCP or UDP, described by an ASN.1 (Abstract Syntax + Notation 1) file '%s.asn1'. +""" % (base, name, email, base, deb, base, base)) + + create_file("debian/changelog", + """wireshark-asn1-%s (0.0.1-1) unstable; urgency=low + + * Automatically created package. + + -- %s <%s> %s +""" % (base, name, email, rfc + "\n (" + iso + ")")) + + create_file("debian/copyright", + """This package has been created automatically be asn2deb on +%s for Debian GNU/Linux. + +Wireshark: http://www.wireshark.com/ + +Copyright: + +GPL, as evidenced by existence of GPL license file \"COPYING\". +(the GNU GPL may be viewed on Debian systems in +/usr/share/common-licenses/GPL) +""" % (iso)) + +def get_wrs_version(): + """Detect version of wireshark-dev package.""" + deb = os.popen( + "dpkg-query -W --showformat='${Version}' wireshark-dev").read() + debv = string.find(deb, "-") + if debv == -1: debv = len(deb) + version = deb[string.find(deb, ":")+1:debv] + return version, deb + +def get_time(): + """Detect current time and return ISO and RFC time string.""" + currenttime = time.gmtime() + return time.strftime("%Y-%m-%d %H:%M:%S +0000", currenttime), \ + time.strftime("%a, %d %b %Y %H:%M:%S +0000", currenttime) + +def main(): + global options + process_opts(sys.argv) + iso, rfc = get_time() + version, deb = get_wrs_version() + create_files(version, deb, + options['email'], options['asn'], options['name'], + iso, rfc) + bootstrap() + os.system("dpkg-buildpackage " + options['dbopts']) + +def process_opts(argv): + """Process command line options.""" + global options + try: + opts, args = getopt.getopt(argv[1:], "a:d:e:hn:pv", + ["asn=", + "dbopts=", + "email=", + "help", + "name=", + "preserve", + "version"]) + except getopt.GetoptError: + usage(argv[0]) + sys.exit(1) + for o, a in opts: + if o in ("-a", "--asn"): + options['asn'] = a + if o in ("-d", "--dbopts"): + options['dbopts'] = a + if o in ("-e", "--email"): + options['email'] = a + if o in ("-h", "--help"): + options['help'] = 1 + if o in ("-n", "--name"): + options['name'] = a + if o in ("-p", "--preserve"): + options['preserve'] = 1 + if o in ("-v", "--version"): + options['version'] = 1 + if options['help']: + usage(argv[0]) + sys.exit(0) + if options['version']: + print scriptinfo + sys.exit(0) + if not options['asn']: + print "mandatory ASN.1 file parameter missing" + sys.exit(1) + if not os.access(options['asn'], os.R_OK): + print "ASN.1 file not accessible" + sys.exit(1) + +def usage(name): + """Print usage help.""" + print "Usage: " + name + " <parameters>\n" + \ + "Parameters are\n" + \ + " --asn -a asn1file, ASN.1 file to use (mandatory)\n" + \ + " --dbopts -d opts, options for dpkg-buildpackage\n" + \ + " --email -e address, use e-mail address\n" + \ + " --help -h, print help and exit\n" + \ + " --name -n name, use user name\n" + \ + " --preserve -p, do not overwrite files\n" + \ + " --version -v, print version and exit\n" + \ + "Example:\n" + \ + name + " -e me@foo.net -a bar.asn1 -n \"My Name\" " + \ + "-d \"-rfakeroot -uc -us\"" +if __name__ == '__main__': + main() diff --git a/tools/idl2deb b/tools/idl2deb new file mode 100755 index 0000000000..b857be3670 --- /dev/null +++ b/tools/idl2deb @@ -0,0 +1,216 @@ +#!/usr/bin/env python + +# idl2deb - quick hack by W. Martin Borgert <debacle@debian.org> to create +# Debian GNU/Linux packages from idl2wrs modules for Wireshark. +# Copyright 2003, 2008, W. Martin Borgert + +# Makefile.am and configure.ac code by: +# Copyright 2001, Ericsson Inc. +# Frank Singleton <frank.singleton@ericsson.com> +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.com> +# Copyright 1998 Gerald Combs + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +import optparse +import os +import string +import sys +import time + +scriptinfo = """idl2deb version 2008-03-10 +Copyright 2003, 2008, W. Martin Borgert +Free software, released under the terms of the GPL.""" + +def bootstrap(): + """Generate Makefile.in and configure script.""" + os.system("aclocal") + os.system("autoconf") + os.system("libtoolize --automake --copy --force") + os.system("automake --add-missing --copy --foreign") + +def create_file(preserve, filename, content, mode = None): + """Create a file with given content.""" + if preserve and os.path.isfile(filename): + return + f = open(filename, 'w') + f.write(content) + f.close() + if mode: + os.chmod(filename, mode) + +def create_files(version, deb, email, idl, name, preserve, iso, rfc): + """Create all files for the .deb build process.""" + base = os.path.basename(idl.lower().split(".idl")[0]) + create_file(preserve, "Makefile.am", """# + +plugindir = @plugindir@ + +plugin_LTLIBRARIES = %s.la +%s_la_SOURCES = packet-%s.c +%s_la_LDFLAGS = -module -avoid-version + +GLIB_CFLAGS = `pkg-config --cflags glib-2.0` +GLIB_LIBS = `pkg-config --libs glib-2.0` +BUILT_SOURCES = packet-%s.c +INCLUDES = -DHAVE_CONFIG -DHAVE_SYS_TYPES_H -DHAVE_SYS_TIME_H \\ + -DHAVE_STDARG_H -D_U_=\"__attribute__((unused))\" \\ + -I/usr/include/wireshark -DWS_VAR_IMPORT=extern $(GLIB_CFLAGS) +LDADD = $(GLIB_LIBS) + +# Libs must be cleared, or else libtool won't create a shared module. +# If your module needs to be linked against any particular libraries, +# add them here. +LIBS = + +%s_la_DEPENDENCIES = packet-%s-static.o + +packet-%s-static.o: packet-%s.c + $(LTCOMPILE) -c -o packet-%s-static.o \\ + -D__WIRESHARK_STATIC__ packet-%s.c + +packet-%s.c: """ % ((base,) * 12) + idl + """ + $(IDL2WRS) -I. $< > $@ +""") + + create_file(preserve, "configure.ac", """AC_INIT(%s, 1.0) +AC_PROG_LIBTOOL +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE +AC_PROG_CC +AC_STDC_HEADERS +AC_PROG_INSTALL +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) +PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.2.2) +AC_SUBST(GLIB_CFLAGS) +AC_SUBST(GLIB_LIBS) +IDL2WRS=\"`type -p idl2wrs`\" +AC_SUBST(IDL2WRS) +WIRESHARK_VERSION=\"%s\" +plugindir=\"$libdir/wireshark/plugins/$WIRESHARK_VERSION\" +AC_SUBST(plugindir) +AC_OUTPUT([Makefile]) +""" % (base, version)) + + if not os.path.isdir("debian"): + os.mkdir("debian") + + create_file(preserve, "debian/rules", """#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk + +PREFIX=`pwd`/debian/wireshark-giop-%s + +binary-post-install/wireshark-giop-%s:: + rm -f $(PREFIX)/usr/lib/wireshark/plugins/%s/*.a +""" % (base, base, version), 0755) + + create_file(preserve, "debian/control", """Source: wireshark-giop-%s +Section: net +Priority: optional +Maintainer: %s <%s> +Standards-Version: 3.6.1.0 +Build-Depends: wireshark-dev, autotools-dev, debhelper, cdbs + +Package: wireshark-giop-%s +Architecture: any +Depends: wireshark (= %s), ${shlibs:Depends} +Description: GIOP dissector for CORBA interface %s + This package provides a dissector for GIOP (General Inter-ORB + Protocol) for the Wireshark protocol analyser. It decodes the CORBA + (Common Object Request Broker Architecture) interfaces described + in the IDL (Interface Definition Language) file '%s.idl'. +""" % (base, name, email, base, deb, base, base)) + + create_file(preserve, "debian/changelog", + """wireshark-giop-%s (0.0.1-1) unstable; urgency=low + + * Automatically created package. + + -- %s <%s> %s +""" % (base, name, email, rfc)) + + create_file(preserve, "debian/copyright", + """This package has been created automatically by idl2deb on +%s for Debian GNU/Linux. + +Wireshark: http://www.wireshark.org/ + +Copyright: + +GPL, as evidenced by existence of GPL license file \"COPYING\". +(the GNU GPL may be viewed on Debian systems in +/usr/share/common-licenses/GPL) +""" % (iso)) + +def get_wrs_version(): + """Detect version of wireshark-dev package.""" + deb = os.popen( + "dpkg-query -W --showformat='${Version}' wireshark-dev").read() + debv = string.find(deb, "-") + if debv == -1: debv = len(deb) + version = deb[string.find(deb, ":")+1:debv] + return version, deb + +def get_time(): + """Detect current time and return ISO and RFC time string.""" + currenttime = time.gmtime() + return time.strftime("%Y-%m-%d %H:%M:%S +0000", currenttime), \ + time.strftime("%a, %d %b %Y %H:%M:%S +0000", currenttime) + +def main(): + opts = process_opts(sys.argv) + iso, rfc = get_time() + version, deb = get_wrs_version() + create_files(version, deb, + opts.email, opts.idl, opts.name, opts.preserve, + iso, rfc) + bootstrap() + os.system("dpkg-buildpackage " + opts.dbopts) + +def process_opts(argv): + """Process command line options.""" + parser = optparse.OptionParser( + version=scriptinfo, + description="""Example: +%prog -e me@foo.net -i bar.idl -n \"My Name\" -d \"-rfakeroot -uc -us\"""") + parser.add_option("-d", "--dbopts", + default="", metavar="opts", + help="options for dpkg-buildpackage") + parser.add_option("-e", "--email", metavar="address", + default="invalid@invalid.invalid", + help="use e-mail address") + parser.add_option("-i", "--idl", metavar="idlfile", + help="IDL file to use (mandatory)") + parser.add_option("-n", "--name", default="No Name", + help="use user name", metavar="name") + parser.add_option("-p", "--preserve", action="store_true", + help="do not overwrite files") + opts, args = parser.parse_args() + if not opts.idl: + print "mandatory IDL file parameter missing" + sys.exit(1) + if not os.access(opts.idl, os.R_OK): + print "IDL file not accessible" + sys.exit(1) + return opts + +if __name__ == '__main__': + main() |