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/idl2deb | |
parent | 974c0e18b9af3da1fdea4363f4abe37259238498 (diff) | |
download | wireshark-a8f543b56b86e1ac5246c70918dc7cb0f372ed77.tar.gz |
Merge asn2deb and idl2deb from official Debian package
svn path=/trunk/; revision=48133
Diffstat (limited to 'tools/idl2deb')
-rwxr-xr-x | tools/idl2deb | 216 |
1 files changed, 216 insertions, 0 deletions
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() |