forked from osmocom/wireshark
d1847f0b49
Change-Id: I2a36a833f00f4acda253e5741c96c519588aa046 Reviewed-on: https://code.wireshark.org/review/16919 Reviewed-by: Guy Harris <guy@alum.mit.edu>
217 lines
6.9 KiB
Python
Executable file
217 lines
6.9 KiB
Python
Executable file
#!/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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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()
|