From 9c45c1e47bac205a642514e7e208b5a4c6b41b96 Mon Sep 17 00:00:00 2001 From: Thomas Spura Date: Sep 21 2011 09:40:16 +0000 Subject: - update to new version - run testsuite on python3 --- diff --git a/.gitignore b/.gitignore index 66c37b9..5048bb2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /pyzmq-2.0.10.1.tar.gz /pyzmq-2.1.1.tar.gz /pyzmq-2.1.4.tar.gz +/pyzmq-2.1.9.tar.gz diff --git a/buildutils.py b/buildutils.py deleted file mode 100644 index 83c18a6..0000000 --- a/buildutils.py +++ /dev/null @@ -1,268 +0,0 @@ -"""Detect zmq version""" -# -# Copyright (c) 2011 Min Ragan-Kelley -# -# This file is part of pyzmq, copied and adapted from h5py. -# h5py source used under the New BSD license -# -# h5py: -# BSD license: -# -# pyzmq is free software; you can redistribute it and/or modify it under -# the terms of the Lesser GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# pyzmq 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 -# Lesser GNU General Public License for more details. -# -# You should have received a copy of the Lesser GNU General Public License -# along with this program. If not, see . - -import shutil -import sys -import os -import logging -import pickle -from distutils import ccompiler -from subprocess import Popen, PIPE - -try: - from configparser import ConfigParser -except: - from ConfigParser import ConfigParser - -pjoin = os.path.join - -#----------------------------------------------------------------------------- -# Logging (adapted from h5py: http://h5py.googlecode.com) -#----------------------------------------------------------------------------- -logger = logging.getLogger() -logger.addHandler(logging.StreamHandler(sys.stderr)) - -def debug(what): - pass - -def fatal(instring, code=1): - logger.error("Fatal: "+instring) - exit(code) - -def warn(instring): - logger.error("Warning: "+instring) - - -#----------------------------------------------------------------------------- -# Utility functions (adapted from h5py: http://h5py.googlecode.com) -#----------------------------------------------------------------------------- - -def detect_zmq(basedir, **compiler_attrs): - """Compile, link & execute a test program, in empty directory `basedir`. - - The C compiler will be updated with any keywords given via setattr. - - Parameters - ---------- - - basedir : path - The location where the test program will be compiled and run - **compiler_attrs : dict - Any extra compiler attributes, which will be set via ``setattr(cc)``. - - Returns - ------- - - A dict of properties for zmq compilation, with the following two keys: - - vers : tuple - The ZMQ version as a tuple of ints, e.g. (2,2,0) - options : dict - The compiler options used to compile the test function, e.g. `include_dirs`, - `library_dirs`, `libs`, etc. - """ - - cc = ccompiler.new_compiler() - for name, val in compiler_attrs.items(): - setattr(cc, name, val) - - cfile = pjoin(basedir, 'vers.c') - efile = pjoin(basedir, 'vers') - - f = open(cfile, 'w') - try: - f.write( -r""" -#include -#include "zmq.h" - -int main(){ - unsigned int major, minor, patch; - zmq_version(&major, &minor, &patch); - fprintf(stdout, "vers: %d.%d.%d\n", major, minor, patch); - return 0; -} -""") - finally: - f.close() - - if sys.platform == 'darwin': - # allow for missing UB arch, since it will still work: - preargs = ['-undefined', 'dynamic_lookup'] - else: - preargs = None - - objs = cc.compile([cfile]) - cc.link_executable(objs, efile, extra_preargs=preargs) - - result = Popen(efile, stdout=PIPE, stderr=PIPE) - so, se = result.communicate() - # for py3k: - so = so.decode() - se = se.decode() - if result.returncode: - msg = "Error running version detection script:\n%s\n%s" % (so,se) - logging.error(msg) - raise IOError(msg) - - handlers = {'vers': lambda val: tuple(int(v) for v in val.split('.'))} - - props = {} - for line in (x for x in so.split('\n') if x): - key, val = line.split(':') - props[key] = handlers[key](val) - - props['options'] = compiler_attrs - return props - -def localpath(*args): - plist = [os.path.dirname(__file__)]+list(args) - return os.path.abspath(pjoin(*plist)) - -def loadpickle(name): - """ Load object from pickle file, or None if it can't be opened """ - name = pjoin('conf', name) - try: - f = open(name,'rb') - except IOError: - # raise - return None - try: - return pickle.load(f) - except Exception: - # raise - return None - finally: - f.close() - -def savepickle(name, data): - """ Save to pickle file, exiting if it can't be written """ - if not os.path.exists('conf'): - os.mkdir('conf') - name = pjoin('conf', name) - try: - f = open(name, 'wb') - except IOError: - fatal("Can't open pickle file \"%s\" for writing" % name) - try: - pickle.dump(data, f, 0) - finally: - f.close() - -def v_str(v_tuple): - """turn (2,0,1) into '2.0.1'.""" - return ".".join(str(x) for x in v_tuple) - -def get_eargs(): - """ Look for options in environment vars """ - - settings = {} - - zmq = os.environ.get("ZMQ_DIR", '') - if zmq != '': - debug("Found environ var ZMQ_DIR=%s" % zmq) - settings['zmq'] = zmq - - return settings - -def get_cfg_args(): - """ Look for options in setup.cfg """ - - settings = {} - zmq = '' - if not os.path.exists('setup.cfg'): - return settings - cfg = ConfigParser() - cfg.read('setup.cfg') - if 'build_ext' in cfg.sections() and \ - cfg.has_option('build_ext', 'include_dirs'): - includes = cfg.get('build_ext', 'include_dirs') - include = includes.split(os.pathsep)[0] - if include.endswith('include') and os.path.isdir(include): - zmq = include[:-8] - if zmq != '': - debug("Found ZMQ=%s in setup.cfg" % zmq) - settings['zmq'] = zmq - - return settings - -def get_cargs(): - """ Look for global options in the command line """ - settings = loadpickle('buildconf.pickle') - if settings is None: settings = {} - for arg in sys.argv[:]: - if arg.find('--zmq=') == 0: - zmq = arg.split('=')[-1] - if zmq.lower() == 'default': - settings.pop('zmq', None) - else: - settings['zmq'] = zmq - sys.argv.remove(arg) - savepickle('buildconf.pickle', settings) - return settings - -def discover_settings(): - """ Discover custom settings for ZMQ path""" - settings = get_cfg_args() # lowest priority - settings.update(get_eargs()) - settings.update(get_cargs()) # highest priority - return settings.get('zmq') - -def copy_and_patch_libzmq(ZMQ, libzmq): - """copy libzmq into source dir, and patch it if necessary. - - This command is necessary prior to running a bdist on Linux or OS X. - """ - if sys.platform.startswith('win'): - return - # copy libzmq into zmq for bdist - local = localpath('zmq',libzmq) - if ZMQ is None and not os.path.exists(local): - fatal("Please specify zmq prefix via `setup.py configure --zmq=/path/to/zmq` " - "or copy libzmq into zmq/ manually prior to running bdist.") - try: - lib = pjoin(ZMQ, 'lib', libzmq) - print ("copying %s -> %s"%(lib, local)) - shutil.copy(lib, local) - except Exception: - if not os.path.exists(local): - fatal("Could not copy libzmq into zmq/, which is necessary for bdist. " - "Please specify zmq prefix via `setup.py configure --zmq=/path/to/zmq` " - "or copy libzmq into zmq/ manually.") - finally: - # link libzmq.dylib -> libzmq.1.dylib - link = localpath('zmq',libzmq.replace('.1','')) - if not os.path.exists(link): - os.symlink(libzmq, link) - - if sys.platform == 'darwin': - # patch install_name on darwin, instead of using rpath - cmd = ['install_name_tool', '-id', '@loader_path/../%s'%libzmq, local] - try: - p = Popen(cmd, stdout=PIPE,stderr=PIPE) - except OSError: - fatal("install_name_tool not found, cannot patch libzmq for bundling.") - out,err = p.communicate() - if p.returncode: - fatal("Could not patch bundled libzmq install_name: %s"%err, p.returncode) - diff --git a/python-zmq.spec b/python-zmq.spec index f51ee31..f1f4017 100644 --- a/python-zmq.spec +++ b/python-zmq.spec @@ -15,8 +15,8 @@ %global run_tests 1 Name: python-zmq -Version: 2.1.4 -Release: 2%{?dist} +Version: 2.1.9 +Release: 1%{?dist} Summary: Software library for fast, message-based applications Group: Development/Libraries @@ -28,8 +28,6 @@ URL: http://www.zeromq.org/bindings:python # cd pyzmq.git # git archive --format=tar --prefix=pyzmq-%%{version}/ %%{checkout} | xz -z --force - > pyzmq-%%{version}.tar.xz Source0: http://cloud.github.com/downloads/zeromq/pyzmq/pyzmq-%{version}.tar.gz -# upstream forgot to add this file into the tarball, fetched from current git -Source1: buildutils.py BuildRequires: python2-devel BuildRequires: python-setuptools @@ -41,8 +39,7 @@ BuildRequires: python3-devel BuildRequires: python3-setuptools # needed for 2to3 BuildRequires: python-tools -# not yet build -#BuildRequires: python3-nose +BuildRequires: python3-nose %endif %description @@ -120,8 +117,6 @@ chmod -x examples/pubsub/topics_sub.py # delete hidden files #find examples -name '.*' | xargs rm -v -cp %{SOURCE1} . - %if 0%{?with_python3} rm -rf %{py3dir} @@ -167,14 +162,14 @@ popd %if 0%{?run_tests} rm zmq/__* PYTHONPATH=%{buildroot}%{python_sitearch} \ - %{__python} setup.py test + %{__python} setup.py test %if 0%{?with_python3} # there is no python3-nose yet pushd %{py3dir} rm zmq/__* - #PYTHONPATH=%{buildroot}%{python3_sitearch} \ - # %{__python3} setup.py test + PYTHONPATH=%{buildroot}%{python3_sitearch} \ + %{__python3} setup.py test popd %endif %endif @@ -205,6 +200,10 @@ popd %changelog +* Wed Sep 21 2011 Thomas Spura - 2.1.9-1 +- update to new version +- run testsuite on python3 + * Sun Jul 31 2011 Thomas Spura - 2.1.4-2 - don't delete the tests, needed by ipython-tests on runtime - don't use _sourcedir macro diff --git a/sources b/sources index 6a9fa0f..9c669d5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c43876c1726ea2f2c4e4b0bbb090951a pyzmq-2.1.4.tar.gz +44efd9e7dd041b9f779e3026d189f870 pyzmq-2.1.9.tar.gz