pypcap package
git-svn-id: svn://svn.openwrt.org/openwrt/packages@7525 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
f699b0134d
commit
26f09f1acd
39
net/pypcap/Makefile
Normal file
39
net/pypcap/Makefile
Normal file
@ -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))
|
142
net/pypcap/patches/000-no_cpickle.patch
Normal file
142
net/pypcap/patches/000-no_cpickle.patch
Normal file
@ -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',
|
Loading…
x
Reference in New Issue
Block a user