示例#1
0
文件: setup.py 项目: ezhangle/pyzmq
    def bundle_libsodium_extension(self, libzmq):
        bundledir = "bundled"
        ext_modules = self.distribution.ext_modules
        if ext_modules and any(m.name == 'zmq.libsodium' for m in ext_modules):
            # I've already been run
            return

        if not os.path.exists(bundledir):
            os.makedirs(bundledir)

        line()
        info("Using bundled libsodium")

        # fetch sources for libsodium
        fetch_libsodium(bundledir)

        # stage headers
        stage_libsodium_headers(pjoin(bundledir, 'libsodium'))

        # construct the Extension
        libsodium_src = pjoin(bundledir, 'libsodium', 'src', 'libsodium')
        exclude = pjoin(libsodium_src, 'crypto_stream', 'salsa20',
                        'amd64_xmm6')  # or ref?
        exclude = pjoin(libsodium_src, 'crypto_scalarmult', 'curve25519',
                        'donna_c64')  # or ref?

        libsodium_sources = [pjoin('buildutils', 'initlibsodium.c')]

        for dir, subdirs, files in os.walk(libsodium_src):
            if dir.startswith(exclude):
                continue
            for f in files:
                if f.endswith('.c'):
                    libsodium_sources.append(pjoin(dir, f))

        libsodium = Extension(
            'zmq.libsodium',
            sources=libsodium_sources,
            include_dirs=[
                pjoin(libsodium_src, 'include'),
                pjoin(libsodium_src, 'include', 'sodium'),
            ],
        )
        # register the Extension
        self.distribution.ext_modules.insert(0, libsodium)

        if sys.byteorder == 'little':
            libsodium.define_macros.append(("NATIVE_LITTLE_ENDIAN", 1))
        else:
            libsodium.define_macros.append(("NATIVE_BIG_ENDIAN", 1))

        # tell libzmq about libsodium
        libzmq.define_macros.append(("HAVE_LIBSODIUM", 1))
        libzmq.include_dirs.extend(libsodium.include_dirs)
示例#2
0
文件: setup.py 项目: lanwan/pyzmq
 def bundle_libsodium_extension(self, libzmq):
     bundledir = "bundled"
     if "PyPy" in sys.version:
         fatal("Can't bundle libsodium as an Extension in PyPy (yet!)")
     ext_modules = self.distribution.ext_modules
     if ext_modules and any(m.name == 'zmq.libsodium' for m in ext_modules):
         # I've already been run
         return
     
     if not os.path.exists(bundledir):
         os.makedirs(bundledir)
     
     line()
     info("Using bundled libsodium")
     
     # fetch sources for libsodium
     fetch_libsodium(bundledir)
     
     # stage headers
     stage_libsodium_headers(pjoin(bundledir, 'libsodium'))
     
     # construct the Extension
     libsodium_src = pjoin(bundledir, 'libsodium', 'src', 'libsodium')
     exclude = pjoin(libsodium_src, 'crypto_stream', 'salsa20', 'amd64_xmm6') # or ref?
     exclude = pjoin(libsodium_src, 'crypto_scalarmult', 'curve25519', 'donna_c64') # or ref?
     
     libsodium_sources = [pjoin('buildutils', 'initlibsodium.c')]
     
     for dir,subdirs,files in os.walk(libsodium_src):
         if dir.startswith(exclude):
             continue
         for f in files:
             if f.endswith('.c'):
                 libsodium_sources.append(pjoin(dir, f))
     
     libsodium = Extension(
         'zmq.libsodium',
         sources = libsodium_sources,
         include_dirs = [
             pjoin(libsodium_src, 'include'),
             pjoin(libsodium_src, 'include', 'sodium'),
         ],
     )
     # register the Extension
     self.distribution.ext_modules.insert(0, libsodium)
     
     if sys.byteorder == 'little':
         libsodium.define_macros.append(("NATIVE_LITTLE_ENDIAN", 1))
     else:
         libsodium.define_macros.append(("NATIVE_BIG_ENDIAN", 1))
     
     # tell libzmq about libsodium
     libzmq.define_macros.append(("HAVE_LIBSODIUM", 1))
     libzmq.include_dirs.extend(libsodium.include_dirs)
示例#3
0
文件: setup.py 项目: fwph/pyzmq
 def run(self):
     # fetch sources for libzmq extension:
     bundledir = "bundled"
     if os.path.exists(bundledir):
         info("Scrubbing directory: %s" % bundledir)
         shutil.rmtree(bundledir)
     if not os.path.exists(bundledir):
         os.makedirs(bundledir)
     fetch_libsodium(bundledir)
     fetch_libzmq(bundledir)
     for tarball in glob(pjoin(bundledir, '*.tar.gz')):
         os.remove(tarball)
示例#4
0
文件: setup.py 项目: twosixlabs/pyzmq
 def run(self):
     # fetch sources for libzmq extension:
     bundledir = "bundled"
     if os.path.exists(bundledir):
         info("Scrubbing directory: %s" % bundledir)
         shutil.rmtree(bundledir)
     if not os.path.exists(bundledir):
         os.makedirs(bundledir)
     fetch_libsodium(bundledir)
     fetch_libzmq(bundledir)
     for tarball in glob(pjoin(bundledir, '*.tar.gz')):
         os.remove(tarball)
示例#5
0
文件: setup.py 项目: fwph/pyzmq
 def bundle_libsodium_extension(self, libzmq):
     bundledir = "bundled"
     ext_modules = self.distribution.ext_modules
     if ext_modules and any(m.name == 'zmq.libsodium' for m in ext_modules):
         # I've already been run
         return
     
     if not os.path.exists(bundledir):
         os.makedirs(bundledir)
     
     line()
     info("Using bundled libsodium")
     
     # fetch sources for libsodium
     fetch_libsodium(bundledir)
     
     # stage headers
     stage_libsodium_headers(pjoin(bundledir, 'libsodium'))
     
     # construct the Extension
     libsodium_src = pjoin(bundledir, 'libsodium', 'src', 'libsodium')
     exclude = pjoin(libsodium_src, 'crypto_stream', 'salsa20', 'amd64_xmm6') # or ref?
     exclude = pjoin(libsodium_src, 'crypto_scalarmult', 'curve25519', 'donna_c64') # or ref?
     
     libsodium_sources = [pjoin('buildutils', 'initlibsodium.c')]
     
     for dir,subdirs,files in os.walk(libsodium_src):
         if dir.startswith(exclude):
             continue
         for f in files:
             if f.endswith('.c'):
                 libsodium_sources.append(pjoin(dir, f))
     
     libsodium = Extension(
         'zmq.libsodium',
         sources = libsodium_sources,
         include_dirs = [
             pjoin(libsodium_src, 'include'),
             pjoin(libsodium_src, 'include', 'sodium'),
         ],
     )
     # There are a few extra things we need to do to build libsodium on
     # Windows:
     # 1) tell libsodium to export its symbols;
     # 2) prevent libsodium from defining C99 `static inline` functions
     #    which aren't parsed correctly by VS2008 nor VS2010;
     # 3) provide an implementation of <stdint.h> which is not provided in
     #    VS2008's "standard" library;
     # 4) link against Microsoft's s crypto API.
     if sys.platform.startswith('win'):
         libsodium.define_macros.append(('SODIUM_DLL_EXPORT', 1))
         libsodium.define_macros.append(('inline', ''))
         if sys.version_info < (3, 3):
             libsodium.include_dirs.append(pjoin('buildutils', 'include_win32'))
         libsodium.libraries.append('advapi32')
     # register the Extension
     self.distribution.ext_modules.insert(0, libsodium)
     
     if sys.byteorder == 'little':
         libsodium.define_macros.append(("NATIVE_LITTLE_ENDIAN", 1))
     else:
         libsodium.define_macros.append(("NATIVE_BIG_ENDIAN", 1))
     
     # tell libzmq about libsodium
     libzmq.define_macros.append(("HAVE_LIBSODIUM", 1))
     libzmq.include_dirs.extend(libsodium.include_dirs)
示例#6
0
文件: setup.py 项目: twosixlabs/pyzmq
    def bundle_libsodium_extension(self, libzmq):
        bundledir = "bundled"
        ext_modules = self.distribution.ext_modules
        if ext_modules and any(m.name == 'zmq.libsodium' for m in ext_modules):
            # I've already been run
            return

        if not os.path.exists(bundledir):
            os.makedirs(bundledir)

        line()
        info("Using bundled libsodium")

        # fetch sources for libsodium
        fetch_libsodium(bundledir)

        # stage headers
        stage_libsodium_headers(pjoin(bundledir, 'libsodium'))

        # construct the Extension
        libsodium_src = pjoin(bundledir, 'libsodium', 'src', 'libsodium')
        exclude = pjoin(libsodium_src, 'crypto_stream', 'salsa20',
                        'amd64_xmm6')  # or ref?
        exclude = pjoin(libsodium_src, 'crypto_scalarmult', 'curve25519',
                        'donna_c64')  # or ref?

        libsodium_sources = [pjoin('buildutils', 'initlibsodium.c')]

        for dir, subdirs, files in os.walk(libsodium_src):
            if dir.startswith(exclude):
                continue
            for f in files:
                if f.endswith('.c'):
                    libsodium_sources.append(pjoin(dir, f))

        libsodium = Extension(
            'zmq.libsodium',
            sources=libsodium_sources,
            include_dirs=[
                pjoin(libsodium_src, 'include'),
                pjoin(libsodium_src, 'include', 'sodium'),
            ],
        )
        # There are a few extra things we need to do to build libsodium on
        # Windows:
        # 1) tell libsodium to export its symbols;
        # 2) prevent libsodium from defining C99 `static inline` functions
        #    which aren't parsed correctly by VS2008 nor VS2010;
        # 3) provide an implementation of <stdint.h> which is not provided in
        #    VS2008's "standard" library;
        # 4) link against Microsoft's s crypto API.
        if sys.platform.startswith('win'):
            libsodium.define_macros.append(('SODIUM_DLL_EXPORT', 1))
            libsodium.define_macros.append(('inline', ''))
            if sys.version_info < (3, 3):
                libsodium.include_dirs.append(
                    pjoin('buildutils', 'include_win32'))
            libsodium.libraries.append('advapi32')
        # register the Extension
        self.distribution.ext_modules.insert(0, libsodium)

        if sys.byteorder == 'little':
            libsodium.define_macros.append(("NATIVE_LITTLE_ENDIAN", 1))
        else:
            libsodium.define_macros.append(("NATIVE_BIG_ENDIAN", 1))

        # tell libzmq about libsodium
        libzmq.define_macros.append(("HAVE_LIBSODIUM", 1))
        libzmq.include_dirs.extend(libsodium.include_dirs)