<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/fa7b3c195c4b066af5bbbaa0386568fb508e7540">https://github.com/macports/macports-ports/commit/fa7b3c195c4b066af5bbbaa0386568fb508e7540</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit fa7b3c195c4b066af5bbbaa0386568fb508e7540
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Oct 21 00:06:06 2022 +1100

<span style='display:block; white-space:pre;color:#404040;'>    py-pypcap: add py310 subport
</span>---
 python/py-pypcap/Portfile                          | 23 ++++++---
 .../files/{patch-pcap.pyx => pcap.pyx.patch}       | 58 +++++++++++++++-------
 python/py-pypcap/files/py3.patch                   | 39 +++++++++++++++
 .../files/{patch-setup.py.diff => setup.py.patch}  | 13 +++--
 4 files changed, 104 insertions(+), 29 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/Portfile b/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7f618858018..203b00c9306 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,7 +10,6 @@ license                 BSD
</span> maintainers             gmail.com:andrew.reusch openmaintainer
 description             python extension module for libpcap
 long_description        A simplified object-oriented Python extension module for libpcap
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms               darwin
</span> 
 homepage                https://code.google.com/p/pypcap/
 master_sites            googlecode:pypcap
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,21 +19,31 @@ checksums               md5     034c3cbbfa81aa19e8f685b767c65764 \
</span>                         sha1    966f62deca16d5086e2ef6694b0c795f273da15c \
                         rmd160  119dcc393d42678e6fa8f0b0f8b82536ab1efb13
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions         27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions         27 310
</span> 
 if {$subport ne $name} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles         patch-setup.py.diff patch-pcap.pyx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:py${python.version}-cython
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      port:libpcap
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    pre-configure {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system -W ${worksrcpath} "${python.prefix}/bin/pyrexc pcap.pyx"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles          setup.py.patch pcap.pyx.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${python.version} >= 36} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        python.pep517   yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append   py3.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            system -W ${worksrcpath} "${python.prefix}/bin/2to3 --write --nobackups setup.py"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath} "${python.prefix}/bin/cythonize pcap.pyx"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     use_configure       yes
     configure.cmd       ${python.bin} setup.py
     configure.args      config
     configure.pre_args
     configure.post_args  --with-pcap="${prefix}"
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build           port:py${python.version}-pyrex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append      port:libpcap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.env-append    SETUP_PY_LOAD_PCAP_CONFIG=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.env-append SETUP_PY_LOAD_PCAP_CONFIG=1
</span> }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/files/patch-pcap.pyx b/python/py-pypcap/files/pcap.pyx.patch
</span>similarity index 82%
rename from python/py-pypcap/files/patch-pcap.pyx
rename to python/py-pypcap/files/pcap.pyx.patch
<span style='display:block; white-space:pre;color:#808080;'>index 763ad1d97b3..93528bd2348 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/files/patch-pcap.pyx
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/files/pcap.pyx.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./pcap.pyx.orig        2011-10-01 22:35:33.141146678 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./pcap.pyx     2011-10-01 22:35:39.416147272 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pcap.pyx.orig  2005-10-17 09:00:11.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pcap.pyx       2022-10-20 22:52:38.000000000 +1100
</span> @@ -1,7 +1,7 @@
  #
  # pcap.pyx
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,7 +9,7 @@
</span>  
  """packet capture library
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,9 +17,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,13 +17,13 @@
</span>  __version__ = '1.1'
  
  import sys
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,8 +20,12 @@
</span> +    int    PyObject_AsCharBuffer(object obj, char **buffer, int *buffer_len)
      int    PyGILState_Ensure()
      void   PyGILState_Release(int gil)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-     void   Py_BEGIN_ALLOW_THREADS()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,6 +44,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    void   Py_BEGIN_ALLOW_THREADS()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    void   Py_END_ALLOW_THREADS()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cdef extern from "pcap.h":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     struct bpf_insn:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,6 +42,10 @@
</span>          unsigned int caplen
      ctypedef struct pcap_t:
          int __xxx
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -32,7 +36,7 @@
</span>  
  ctypedef void (*pcap_handler)(void *arg, pcap_pkthdr *hdr, char *pkt)
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,6 +68,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -62,6 +66,13 @@
</span>      char   *pcap_geterr(pcap_t *p)
      void    pcap_close(pcap_t *p)
      int     bpf_filter(bpf_insn *insns, char *buf, int len, int caplen)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,7 +50,16 @@
</span>  
  cdef extern from "pcap_ex.h":
      # XXX - hrr, sync with libdnet and libevent
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -134,16 +147,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -72,7 +83,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void    pcap_ex_setup(pcap_t *p)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void    pcap_ex_setnonblock(pcap_t *p, int nonblock, char *ebuf)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int     pcap_ex_getnonblock(pcap_t *p, char *ebuf)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    int     pcap_ex_next(pcap_t *p, pcap_pkthdr **hdr, char **pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int     pcap_ex_next(pcap_t *p, pcap_pkthdr **hdr, char **pkt) nogil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int     pcap_ex_compile_nopcap(int snaplen, int dlt,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    bpf_program *fp, char *str,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    int optimize, unsigned int netmask)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -134,16 +145,18 @@
</span>              raise IOError, 'bad filter'
      def filter(self, buf):
          """Return boolean match for buf against our filter."""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -68,7 +81,7 @@
</span>      
      Open a handle to a packet capture descriptor.
      
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -152,6 +167,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,6 +165,9 @@
</span>                   or None to open the first available up interface
      snaplen   -- maximum number of bytes to capture for each packet
      promisc   -- boolean to specify promiscuous mode sniffing
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -78,7 +91,7 @@
</span>      immediate -- disable buffering, if possible
      """
      cdef pcap_t *__pcap
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -161,7 +179,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -161,7 +177,7 @@
</span>      cdef int __dloff
      
      def __init__(self, name=None, snaplen=65535, promisc=True,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -87,7 +100,7 @@
</span>          global dltoff
          cdef char *p
          
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -171,7 +189,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -171,7 +187,7 @@
</span>                  raise OSError, self.__ebuf
          else:
              p = name
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -96,7 +109,7 @@
</span>          self.__pcap = pcap_open_offline(p, self.__ebuf)
          if not self.__pcap:
              self.__pcap = pcap_open_live(pcap_ex_name(p), snaplen, promisc,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -184,7 +202,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -184,7 +200,7 @@
</span>          try: self.__dloff = dltoff[pcap_datalink(self.__pcap)]
          except KeyError: pass
          if immediate and pcap_ex_immediate(self.__pcap) < 0:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -105,7 +118,7 @@
</span>      
      property name:
          """Network interface or dumpfile name."""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -243,16 +261,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -243,16 +259,6 @@
</span>          """Return datalink type (DLT_* values)."""
          return pcap_datalink(self.__pcap)
      
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -122,7 +135,7 @@
</span>      def __add_pkts(self, ts, pkt, pkts):
          pkts.append((ts, pkt))
      
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -288,18 +296,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -288,30 +294,47 @@
</span>              raise exc[0], exc[1], exc[2]
          return n
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -149,8 +162,11 @@
</span> +        i = 1
          pcap_ex_setup(self.__pcap)
          while 1:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-             Py_BEGIN_ALLOW_THREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -308,10 +322,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            Py_BEGIN_ALLOW_THREADS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            Py_END_ALLOW_THREADS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            with nogil:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span>              if n == 1:
                  callback(hdr.ts.tv_sec + (hdr.ts.tv_usec / 1000000.0),
                           PyBuffer_FromMemory(pkt, hdr.caplen), *args)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -173,7 +189,15 @@
</span>      
      def geterr(self):
          """Return the last error message associated with this handle."""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -340,6 +366,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -334,12 +357,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cdef char *pkt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cdef int n
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         while 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            Py_BEGIN_ALLOW_THREADS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            Py_END_ALLOW_THREADS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            with nogil:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span>              if n == 1:
                  return (hdr.ts.tv_sec + (hdr.ts.tv_usec / 1000000.0),
                          PyBuffer_FromMemory(pkt, hdr.caplen))
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -182,7 +206,7 @@
</span>              elif n == -1:
                  raise KeyboardInterrupt
              elif n == -2:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -364,3 +392,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -364,3 +388,36 @@
</span>          raise OSError, ebuf
      return p
  
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/files/py3.patch b/python/py-pypcap/files/py3.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..df530fcf01a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/files/py3.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,39 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pcap.pyx.orig  2022-10-20 23:22:40.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pcap.pyx       2022-10-20 23:25:38.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,7 +20,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cdef extern from "Python.h":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    object PyBuffer_FromMemory(char *s, int len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int PyBUF_WRITE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    object PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int    PyObject_AsCharBuffer(object obj, char **buffer, int *buffer_len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int    PyGILState_Ensure()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void   PyGILState_Release(int gil)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,7 +105,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     gil = PyGILState_Ensure()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         (<object>ctx.callback)(hdr.ts.tv_sec + (hdr.ts.tv_usec/1000000.0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                               PyBuffer_FromMemory(pkt, hdr.caplen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               PyMemoryView_FromMemory(pkt, hdr.caplen, PyBUF_WRITE),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                *(<object>ctx.args))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     except:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ctx.got_exc = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -318,7 +319,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if n == 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 callback(hdr.ts.tv_sec + (hdr.ts.tv_usec / 1000000.0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                         PyBuffer_FromMemory(pkt, hdr.caplen), *args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         PyMemoryView_FromMemory(pkt, hdr.caplen, PyBUF_WRITE), *args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             elif n == 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             elif n == -1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -361,7 +362,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 n = pcap_ex_next(self.__pcap, &hdr, &pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if n == 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return (hdr.ts.tv_sec + (hdr.ts.tv_usec / 1000000.0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                        PyBuffer_FromMemory(pkt, hdr.caplen))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        PyMemoryView_FromMemory(pkt, hdr.caplen, PyBUF_WRITE))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             elif n == 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             elif n == -1:
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/files/patch-setup.py.diff b/python/py-pypcap/files/setup.py.patch
</span>similarity index 59%
rename from python/py-pypcap/files/patch-setup.py.diff
rename to python/py-pypcap/files/setup.py.patch
<span style='display:block; white-space:pre;color:#808080;'>index 82f072701b1..4b4d32226d6 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/files/patch-setup.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/files/setup.py.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- setup.py.orig  2011-01-25 10:56:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ setup.py       2011-01-25 11:19:36.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- setup.py.orig  2005-10-17 09:07:03.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ setup.py       2022-10-20 23:51:20.000000000 +1100
</span> @@ -42,7 +42,7 @@
              dirs = [ '/usr', sys.prefix ] + glob.glob('/opt/libpcap*') + \
                     glob.glob('../libpcap*') + glob.glob('../wpdpack*')
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,12 +9,15 @@
</span>                  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) ]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -75,7 +75,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,9 +75,9 @@
</span>              print "removing '%s'" % pcap_cache
              os.unlink(pcap_cache)
  
 -if len(sys.argv) > 1 and sys.argv[1] == 'build':
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+if len(sys.argv) > 1 and ('build' in sys.argv or 'install' in sys.argv):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (len(sys.argv) > 1 and ('build' in sys.argv or 'install' in sys.argv)) or "SETUP_PY_LOAD_PCAP_CONFIG" in os.environ:
</span>      try:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-         pcap_config = cPickle.load(open(pcap_cache))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        pcap_config = cPickle.load(open(pcap_cache))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        pcap_config = cPickle.load(open(pcap_cache, 'rb'))
</span>      except IOError:
<span style='display:block; white-space:pre;background:#e0ffe0;'>+         print >>sys.stderr, 'run "%s config" first!' % sys.argv[0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         sys.exit(1)
</span></pre><pre style='margin:0'>

</pre>