summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Yardley2007-06-07 17:48:27 +0000
committerTim Yardley2007-06-07 17:48:27 +0000
commitf808d72df67a4abdb05f79511c9ae8592aad8104 (patch)
tree3d379cd79f552d42fd1e457ffbba0e43eb230599
parente1b0b8669f2c86f954e34974caedc1bc538d3cad (diff)
downloadarchive-f808d72df67a4abdb05f79511c9ae8592aad8104.tar.gz
pypcap package
SVN-Revision: 7525
-rw-r--r--net/pypcap/Makefile39
-rw-r--r--net/pypcap/patches/000-no_cpickle.patch142
2 files changed, 181 insertions, 0 deletions
diff --git a/net/pypcap/Makefile b/net/pypcap/Makefile
new file mode 100644
index 0000000000..c8def4ef0c
--- /dev/null
+++ b/net/pypcap/Makefile
@@ -0,0 +1,39 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pypcap
+PKG_VERSION:=1.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypcap.googlecode.com/files
+PKG_CAT:=zcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pypcap
+ DEPENDS:=+python +libpcap
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=pypcap
+ DESCRIPTION:=\
+ pypcap
+ URL:=http://www
+endef
+
+define Build/Compile
+ cd $(PKG_BUILD_DIR); \
+ PCAP_HOME=$(STAGING_DIR)/usr \
+ $(STAGING_DIR)/usr/bin/hostpython ./setup.py build
+endef
+
+define Package/pypcap/install
+ cd $(PKG_BUILD_DIR); \
+ $(STAGING_DIR)/usr/bin/hostpython ./setup.py install \
+ --no-compile --prefix $(PKG_INSTALL_DIR)/usr
+ cp -a $(PKG_INSTALL_DIR)/* $(1)/
+endef
+
+$(eval $(call BuildPackage,pypcap))
diff --git a/net/pypcap/patches/000-no_cpickle.patch b/net/pypcap/patches/000-no_cpickle.patch
new file mode 100644
index 0000000000..55e04665b7
--- /dev/null
+++ b/net/pypcap/patches/000-no_cpickle.patch
@@ -0,0 +1,142 @@
+--- pypcap/setup.py 2006-03-15 13:59:54.000000000 -0600
++++ pypcap.new/setup.py 2007-05-25 17:29:02.413355500 -0500
+@@ -4,69 +4,53 @@
+
+ from distutils.core import setup, Extension
+ from distutils.command import config, clean
+-import cPickle, glob, os, sys
++import os,sys,glob
+
+-pcap_config = {}
+-pcap_cache = 'config.pkl'
++# where to find pcap
++pcap_location = os.environ.get('PCAP_HOME')
+
+-class config_pcap(config.config):
+- description = 'configure pcap paths'
+- user_options = [ ('with-pcap=', None,
+- 'path to pcap build or installation directory') ]
+-
+- def initialize_options(self):
+- config.config.initialize_options(self)
+- self.dump_source = 0
+- #self.noisy = 0
+- self.with_pcap = None
+-
+- def _write_config_h(self, cfg):
+- # XXX - write out config.h for pcap_ex.c
+- d = {}
+- if os.path.exists(os.path.join(cfg['include_dirs'][0], 'pcap-int.h')):
+- d['HAVE_PCAP_INT_H'] = 1
+- buf = open(os.path.join(cfg['include_dirs'][0], 'pcap.h')).read()
+- if buf.find('pcap_file(') != -1:
+- d['HAVE_PCAP_FILE'] = 1
+- if buf.find('pcap_compile_nopcap(') != -1:
+- d['HAVE_PCAP_COMPILE_NOPCAP'] = 1
+- if buf.find('pcap_setnonblock(') != -1:
+- d['HAVE_PCAP_SETNONBLOCK'] = 1
+- f = open('config.h', 'w')
+- for k, v in d.iteritems():
+- f.write('#define %s %s\n' % (k, v))
+-
+- def _pcap_config(self, dirs=[ None ]):
+- cfg = {}
+- if not dirs[0]:
+- dirs = [ '/usr', sys.prefix ] + glob.glob('/opt/libpcap*') + \
+- glob.glob('../libpcap*') + glob.glob('../wpdpack*')
+- for d in dirs:
+- for sd in ('include', 'include/pcap', ''):
+- incdirs = [ os.path.join(d, sd) ]
+- if os.path.exists(os.path.join(d, sd, 'pcap.h')):
+- cfg['include_dirs'] = [ os.path.join(d, sd) ]
+- for sd in ('lib', ''):
+- for lib in (('pcap', 'libpcap.a'),
+- ('pcap', 'libpcap.dylib'),
+- ('wpcap', 'wpcap.lib')):
+- if os.path.exists(os.path.join(d, sd, lib[1])):
+- cfg['library_dirs'] = [ os.path.join(d, sd) ]
+- cfg['libraries'] = [ lib[0] ]
+- if lib[0] == 'wpcap':
+- cfg['libraries'].append('iphlpapi')
+- cfg['extra_compile_args'] = \
+- [ '-DWIN32', '-DWPCAP' ]
+- print 'found', cfg
+- self._write_config_h(cfg)
+- return cfg
+- raise "couldn't find pcap build or installation directory"
+-
+- def run(self):
+- #config.log.set_verbosity(0)
+- cPickle.dump(self._pcap_config([ self.with_pcap ]),
+- open(pcap_cache, 'wb'))
+- self.temp_files.append(pcap_cache)
++def write_config_h(cfg):
++ # XXX - write out config.h for pcap_ex.c
++ d = {}
++ if os.path.exists(os.path.join(cfg['include_dirs'][0], 'pcap-int.h')):
++ d['HAVE_PCAP_INT_H'] = 1
++ buf = open(os.path.join(cfg['include_dirs'][0], 'pcap.h')).read()
++ if buf.find('pcap_file(') != -1:
++ d['HAVE_PCAP_FILE'] = 1
++ if buf.find('pcap_compile_nopcap(') != -1:
++ d['HAVE_PCAP_COMPILE_NOPCAP'] = 1
++ if buf.find('pcap_setnonblock(') != -1:
++ d['HAVE_PCAP_SETNONBLOCK'] = 1
++ f = open('config.h', 'w')
++ for k, v in d.iteritems():
++ f.write('#define %s %s\n' % (k, v))
++
++
++def f_pcap_config(dirs=[ None ]):
++ cfg = {}
++ if not dirs[0]:
++ dirs = [ '/usr', sys.prefix ] + glob.glob('/opt/libpcap*') + \
++ glob.glob('../libpcap*') + glob.glob('../wpdpack*')
++ for d in dirs:
++ for sd in ('include', 'include/pcap', ''):
++ incdirs = [ os.path.join(d, sd) ]
++ if os.path.exists(os.path.join(d, sd, 'pcap.h')):
++ cfg['include_dirs'] = [ os.path.join(d, sd) ]
++ for sd in ('lib', ''):
++ for lib in (('pcap', 'libpcap.a'),
++ ('pcap', 'libpcap.dylib'),
++ ('wpcap', 'wpcap.lib')):
++ if os.path.exists(os.path.join(d, sd, lib[1])):
++ cfg['library_dirs'] = [ os.path.join(d, sd) ]
++ cfg['libraries'] = [ lib[0] ]
++ if lib[0] == 'wpcap':
++ cfg['libraries'].append('iphlpapi')
++ cfg['extra_compile_args'] = \
++ [ '-DWIN32', '-DWPCAP' ]
++ print 'found', cfg
++ write_config_h(cfg)
++ return cfg
++ raise "couldn't find pcap build or installation directory"
+
+ class clean_pcap(clean.clean):
+ def run(self):
+@@ -75,13 +59,9 @@
+ print "removing '%s'" % pcap_cache
+ os.unlink(pcap_cache)
+
+-if len(sys.argv) > 1 and sys.argv[1] == 'build':
+- try:
+- pcap_config = cPickle.load(open(pcap_cache))
+- except IOError:
+- print >>sys.stderr, 'run "%s config" first!' % sys.argv[0]
+- sys.exit(1)
+
++
++pcap_config = f_pcap_config([pcap_location])
+ pcap = Extension(name='pcap',
+ sources=[ 'pcap.c', 'pcap_ex.c' ],
+ include_dirs=pcap_config.get('include_dirs', ''),
+@@ -89,7 +69,7 @@
+ libraries=pcap_config.get('libraries', ''),
+ extra_compile_args=pcap_config.get('extra_compile_args', ''))
+
+-pcap_cmds = { 'config':config_pcap, 'clean':clean_pcap }
++pcap_cmds = { 'clean':clean_pcap }
+
+ setup(name='pcap',
+ version='1.1',