# # spec file for package python-pycurl # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define oldpython python %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-pycurl Version: 7.43.0.1 Release: 3.3 Summary: PycURL -- cURL library module License: LGPL-2.1+ AND MIT Group: Development/Languages/Python Url: http://pycurl.sourceforge.net/ Source: https://files.pythonhosted.org/packages/source/p/pycurl/pycurl-%{version}.tar.gz # PATCH-FIX-OPENSUSE increase_test_timeout.diff -- Increase the timeout in a test so it doesn't fail when obs is overloaded Patch0: increase_test_timeout.diff # PATCH-FIX-UPSTREAM handle difference between libssh and libssh2 Patch1: pycurl-libssh.patch BuildRequires: %{python_module bottle} BuildRequires: %{python_module devel} BuildRequires: %{python_module flaky} BuildRequires: %{python_module nose} BuildRequires: libcurl-devel >= 7.19.0 BuildRequires: openssl-devel BuildRequires: python-rpm-macros %ifpython2 Provides: %{oldpython}-curl = %{version} Obsoletes: %{oldpython}-curl < %{version} %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %python_subpackages %description This module provides bindings for the cURL library. %package -n %{name}-doc Summary: Documentation for python-curl Group: Development/Libraries/Python Requires: %{name} = %{version} Provides: %{python_module pycurl-doc = %{version}} BuildArch: noarch %description -n %{name}-doc This module provides bindings for the cURL library. This package contains documentation and examples. %prep %setup -q -n pycurl-%{version} %patch0 -p1 #%patch1 -p1 %build export CFLAGS="%{optflags} -fno-strict-aliasing" %python_build --with-ssl %install %python_install rm -rf %{buildroot}%{_datadir}/doc # Remove wrongly installed junk %check %ifnarch %{arm} aarch64 # taken from "make test" because we only need to run nosetests, # not the rest of the mess in the upstream runner pushd tests/fake-curl/libcurl rm -f *.so make popd # exclude certain tests test_flags='!online' if ! pkg-config --variable=supported_features libcurl|grep -qw HTTP2; then test_flags="$test_flags,\!http2" fi if ! pkg-config --variable=supported_protocols libcurl|grep -qw SCP; then test_flags="$test_flags,\!ssh" fi %{python_expand PYTHONPATH=$(ls -d build/lib.*) \ nosetests-%$python_bin_suffix --with-flaky -a "$test_flags"} %endif %files %{python_files} %defattr(-,root,root,-) %doc AUTHORS ChangeLog COPYING-LGPL COPYING-MIT README.rst %{python_sitearch}/* %files -n %{name}-doc %defattr(-,root,root) %doc examples doc/*.rst %changelog * Fri Feb 2 2018 tchvatal@suse.com - Disable tests on arm platforms as they are very flaky there, on multiple runs always different failures * Fri Feb 2 2018 tchvatal@suse.com - Disable strict aliasing as reported by the rpm checks * Tue Jan 30 2018 vcizek@suse.com - Since version 7.58.0, curl may be compiled with libssh instead of libssh2 which differ in supported functionality (bsc#1078329) * add pycurl-libssh.patch - update license * Fri Dec 8 2017 arun@gmx.de - refreshed patch increase_test_timeout.diff (updated line number) - removed patch pycurl-no-runtime-curlvercheck.patch (included upstream) - update to version 7.43.0.1: * This release collects fixes and improvements made over the past two years,notably updating Windows dependencies to address DNS resolution andTLS connection issues. * Tue Aug 8 2017 tbechtold@suse.com - Cleanup Requires and BuildRequires * Wed Jun 21 2017 alarrosa@suse.com - Add increase_test_timeout.diff so tests don't fail when obs is overloaded and it takes more than 1 second to start a service. * Thu Jun 8 2017 lnussel@suse.de - exclude http2 and ssh tests if curl(-mini) doesn't support it * Tue Dec 20 2016 jmatejek@suse.com - update for multipython build - merge python3 project - update and apply pycurl-no-runtime-curlvercheck.patch - run test suite - single doc package for all pythons * Sat Feb 6 2016 arun@gmx.de - update to version 7.43.0: * Highlights of this release: + Binary wheels are now built for Windows systems. + setopt_string method added to Curl objects to permit setting string libcurl options that PycURL does not know about. + curl module can now be imported on Windows again. + OPENSOCKETFUNCTION callback is now invoked with the address as bytes on Python 3 as was documented. + Support for many libcurl options and constants was added. * Sat Jan 30 2016 arun@gmx.de - specfile: * update copyright year * update patch - update to version 7.21.5: * Highlights of this release: + Socket callbacks are now fully implemented ("CURLOPT_OPENSOCKETFUNCTION", "CURLOPT_SOCKOPTFUNCTION", "CURLOPT_CLOSESOCKETFUNCTION"). Unfortunately this required changing "OPENSOCKETFUNCTION" API once again in a backwards-incompatible manner. Support for "SOCKOPTFUNCTION" and "CLOSESOCKETFUNCTION" was added in this release. "OPENSOCKETFUNCTION" now supports Unix sockets. + Many other libcurl options and constants have been added to PycURL. + When "pycurl" module initialization fails, "ImportError" is raised instead of a fatal error terminating the process. + Usability of official Windows builds has been greatly improved * Tue Nov 3 2015 arun@gmx.de - update to version 7.19.5.3: * python and nosetests binaries can now be overridden when running the test suite (patch by Kamil Dudka). * Files needed to run the test suite are distributed in sdist (patch by Kamil Dudka). * Mon Nov 2 2015 arun@gmx.de - update to version 7.19.5.2: * C sources made 64-bit clean on Windows. * Support for building against Python 3.5 added to winbuild.py. * Fixed build on Windows when using MS SDK 8.1+ or MSVC 14/2015 (patch by Gisle Vanem). * Added automatic SSL library detection on CentOS 6 by loading libcurl shared library in setup.py. This automatic detection is meant to permit installing pycurl seamlessly via `pip install pycurl` on CentOS; as such, it is only employed when no other configuration options or configuration environment variables are given to setup.py (original patch by Francisco Alves). * Added --libcurl-dll option to setup.py to take SSL library information out of libcurl shared library (original patch by Francisco Alves). This option is only usable with Python 2.5 or higher. * --with-ssl, --with-gnutls and --with-nss options to setup.py now result in PycURL explicitly linking against the respective SSL library. Previously setup.py relied on curl-config to supply the needed libraries in this case. * List and tuples are now accepted in all positions of HTTPPOST option values. * Tuples are now accepted for options taking list values (e.g. HTTPHEADER). * Fixed a use after free in HTTPPOST when using FORM_BUFFERPTR with a Unicode string (patch by Clint Clayton). * Fixed a memory leak in HTTPPOST for multiple FORM_BUFFERPTR (patch by Clint Clayton). * CURLMOPT_* option constants were mistakenly defined on Curl instances but not on CurlMulti instances. These option constants are now defined on CurlMulti instances and on pycurl module, but not on Curl instances. * Fixed several memory leaks when setting string options to Unicode values failed. * Fixed a memory leak when using POSTFIELDS with unicode objects on Python 2 (patch by Clint Clayton). * Official support for Python 2.4 and 2.5 dropped. PycURL is no longer tested against these Python versions on Travis. * Added CURLAUTH_NEGOTIATE (libcurl 7.38.0+), CURLAUTH_NTLM_WB (libcurl 7.22.0+), CURLAUTH_ONLY (libcurl 7.21.3+), * Added CURLOPT_SERVICE_NAME (libcurl 7.43.0+). * Added CURLOPT_PROXY_SERVICE_NAME (libcurl 7.43.0+). * Added CURLE_SSL_CRL_BADFILE, CURLE_SSL_INVALIDCERTSTATUS (libcurl 7.41.0+), CURLE_SSL_ISSUER_ERROR and CURLE_SSL_PINNEDPUBKEYNOTMATCH (libcurl 7.39.0+). * Added CURLOPT_SSL_VERIFYSTATUS (libcurl 7.41.0+). * Added CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1 and CURL_SSLVERSION_TLSv1_2 (libcurl 7.34.0+). * The second argument of DEBUGFUNCTION callback is now of type bytes on Python 3. When response body contains non-ASCII data and DEBUGFUNCTION is enabled, this argument would receive non-ASCII data. Which encoding this data is in is unknown by PycURL, and e.g. in the case of HTTP requires parsing response headers. GitHub issue [#210], patch by Barry Warsaw with help from Gregory Petukhov. * Fixed build on GCC 4.4.5 (patch by Travis Jensen). * Added CURLOPT_GSSAPI_DELEGATION, CURLGSSAPI_DELEGATION_FLAG, CURLGSSAPI_DELEGATION_NONE and CURLGSSAPI_DELEGATION_POLICY_FLAG (libcurl 7.22.0+, patch by Dmitry Ketov). * Wed Mar 25 2015 mcihar@suse.cz - Run testsuite during build * Wed Mar 25 2015 mcihar@suse.cz - Update to 7.19.5.1: * Added CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5_HOSTNAME. * setup.py now prints PycURL-specific option help when -h is used. * LibreSSL is now supported (patch by JiCiT.) * Fixed an oversight that broke PycURL building against libcurl 7.19.4 through 7.21.1. The bug was introduced in PycURL 7.19.5. * Tests are now included in source distributions again, thanks to Kamil Dudka and Johan Bergstroem. * Added CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT (libcurl 7.20.0+) and CURLOPT_MAIL_AUTH (libcurl 7.25.0+). * Tests removed from source and binary distributions. * Documentation greatly improved. Quickstart guide added. * pycurl.Curl, pycurl.CurlMulti and pycurl.CurlShare are now classes rather than factory functions. Previously, the classes were "hidden" (they were accessible as e.g. type(pycurl.Curl()), but could not be instantiated, nor could class methods be obtained from the classes. Please see this mailing list post for further information: http://curl.haxx.se/mail/curlpython-2014-06/0004.html * When passing a file-like object to READDATA option, PycURL was mistakenly looking for write method on this object. Now read method is looked up, as would be expected. * Python 3.4 is now officially supported. * Windows packages now build libcurl against zlib. * CherryPy is no longer required for the test suite, ssl module from the Python standard library is used instead. * Fixed a reference leak of SOCKET and TIMER callbacks on CurlMulti instances, thanks to Ben Darnell. * Fixed build against openssl on cygwin, where pycurl needs to link against libcrypto rather than libssl. * Added CURLOPT_SSH_KNOWNHOSTS (libcurl 7.19.6+). * Added CURLE_FTP_ACCEPT_FAILED (libcurl 7.24.0+). * Mon May 26 2014 toddrme2178@gmail.com - Removed part of patch that breaks now necessary things: pycurl-no-runtime-curlvercheck.patch - Specify ssl type since it is not automatically detected. * Wed May 21 2014 toddrme2178@gmail.com - Removed patch specific to python3-pycurl: pycurl-python3.patch - Rebase patch: pycurl-no-runtime-curlvercheck.patch * Tue May 20 2014 toddrme2178@gmail.com - Update to version 7.19.3.1 * Added --avoid-stdio setup.py option to avoid passing FILE pointers from Python to libcurl. Applies to Python 2 only. * Added CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_MAX_TOTAL_CONNECTIONS multi options (patch by Jakob Truelsen). * SSL detection logic changed to consult `curl-config --static-libs` even if `curl-config --libs` succeeded. This should achieve pre-7.19.3 behavior with respect to automatic SSL detection (patch by Andjelko Horvat). - Update to version 7.19.3 * Added CURLOPT_NOPROXY. * Added CURLINFO_LOCAL_PORT, CURLINFO_PRIMARY_PORT and CURLINFO_LOCAL_IP (patch by Adam Jacob Muller). * When running on Python 2.x, for compatibility with Python 3.x, Unicode strings containing ASCII code points only are now accepted in setopt() calls. * PycURL now requires that compile time SSL backend used by libcurl is the same as the one used at runtime. setup.py supports - -with-ssl, --with-gnutls and --with-nss options like libcurl does, to specify which backend libcurl uses. On some systems PycURL can automatically figure out libcurl's backend. If the backend is not one for which PycURL provides crypto locks (i.e., any of the other backends supported by libcurl), no runtime SSL backend check is performed. * Default PycURL user agent string is now built at runtime, and will include the user agent string of libcurl loaded at runtime rather than the one present at compile time. * PycURL will now use WSAduplicateSocket rather than dup on Windows to duplicate sockets obtained from OPENSOCKETFUNCTION. Using dup may have caused crashes, OPENSOCKETFUNCTION should now be usable on Windows. * A new script, winbuild.py, was added to build PycURL on Windows against Python 2.6, 2.7, 3.2 and 3.3. * Added CURL_LOCK_DATA_SSL_SESSION (patch by Tom Pierce). * Added E_OPERATION_TIMEDOUT (patch by Romuald Brunet). * setup.py now handles --help argument and will print PycURL-specific configuration options in addition to distutils help. * Windows build configuration has been redone: PYCURL_USE_LIBCURL_DLL #define is gone, use --use-libcurl-dll argument to setup.py to build against a libcurl DLL. CURL_STATICLIB is now #defined only when --use-libcurl-dll is not given to setup.py, and PycURL is built against libcurl statically. - -libcurl-lib-name option can be used to override libcurl import library name. * Added CURLAUTH_DIGEST_IE as pycurl.HTTPAUTH_DIGEST_IE. * Added CURLOPT_POSTREDIR option and CURL_REDIR_POST_301, CURL_REDIR_POST_302, CURL_REDIR_POST_303 and CURL_REDIR_POST_ALL constants. CURL_REDIR_POST_303 requires libcurl 7.26.0 or higher, all others require libcurl 7.19.1 or higher. * PycURL now supports Python 3.1 through 3.3. Python 3.0 might work but it appears to ship with broken distutils, making virtualenv not function on it. * PycURL multi objects now have the multi constants defined on them. Previously the constants were only available on pycurl module. The new behavior matches that of curl and share objects. * PycURL share objects can now be closed via the close() method. * PycURL will no longer call `curl-config --static-libs` if `curl-config --libs` succeeds and returns output. Systems on which neither `curl-config --libs` nor `curl-config --static-libs` do the right thing should provide a `curl-config` wrapper that is sane. * Added CURLFORM_BUFFER and CURLFORM_BUFFERPTR. * pycurl.version and user agent string now include both PycURL version and libcurl version as separate items. * Added CURLOPT_DNS_SERVERS. * PycURL can now be dynamically linked against libcurl on Windows if PYCURL_USE_LIBCURL_DLL is #defined during compilation. * Breaking change: opensocket callback now takes an additional (address, port) tuple argument. Existing callbacks will need to be modified to accept this new argument. https://github.com/pycurl/pycurl/pull/18 - Update to version 7.19.0.3 * Re-release of 7.19.0.2 with minor changes to build Windows packages due to botched 7.19.0.2 files on PyPi. http://curl.haxx.se/mail/curlpython-2013-12/0021.html - Update to version 7.19.0.2 [requires libcurl-7.19.0 or better] - 2013-10-08 * Fixed a bug in a commit made in 2008 but not released until 7.19.0.1 which caused CURLOPT_POSTFIELDS to not correctly increment reference count of the object being given as its argument, despite libcurl not copying the data provided by said object. * Added support for libcurl pause/unpause functionality, via curl_easy_pause call and returning READFUNC_PAUSE from read callback function. - Update to version 7.19.0.1 [requires libcurl-7.19.0 or better] - 2013-09-23 * Test matrix tool added to test against all supported Python and libcurl versions. * Python 2.4 is now the minimum required version. * Source code, bugs and patches are now kept on GitHub. * Added CURLINFO_CERTINFO and CURLOPT_CERTINFO. * Added CURLOPT_RESOLVE. * PycURL can now be used with Python binaries without thread support. * gcrypt is no longer initialized when a newer version of gnutls is used. * Marked NSS as supported. * Fixed relative URL request logic. * Fixed a memory leak in util_curl_init. * Added CURLOPT_USERNAME and CURLOPT_PASSWORD. * Fixed handling of big timeout values. * Added GLOBAL_ACK_EINTR. * setopt(..., None) can be used as unsetopt(). * CURLOPT_RANGE can now be unset. * Write callback can return -1 to signal user abort. * Reorganized tests into an automated test suite. * Added CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA. * Cleaned up website. * Fix pycurl.reset() (patch by ). * Fix install routine in setup.py where certain platforms (Solaris, Mac OSX, etc) would search for a static copy of libcurl (dbp). * Fixed build on OpenSolaris 0906 and other platforms on which curl-config does not have a --static-libs option. * No longer keep string options copies in the Curl Python objects, since string options are now managed by libcurl. - Add additional dependencies - Remove no longer necessary patch: * pycurl-7.18.1-nostaticlibs.patch * Fri Aug 30 2013 crrodriguez@opensuse.org - remove runtime curl version check and __DATE__ __TIME__ usage (pycurl-no-runtime-curlvercheck.patch) * Fri Apr 5 2013 idonmez@suse.com - Add Source URL, see https://en.opensuse.org/SourceUrls * Sat Apr 28 2012 highwaystar.ru@gmail.com - added python3 package - spec file slighly cleaned (old buildroot macro replaced) * Thu Jan 12 2012 coolo@suse.com - change license to be in spdx.org format * Tue Sep 20 2011 saschpe@suse.de - Renamed package to 'python-pycurl' to match upstream name - Removed authors from description * Wed Feb 10 2010 jfunk@funktronics.ca - Update to 7.19.0: * Added CURLFILE, ADDRESS_SCOPE and ISSUERCERT options, as well as the APPCONNECT_TIME info. * Added PRIMARY_IP info (patch by Yuhui H ). * Added support for curl_easy_reset through a new 'reset' method on curl objects (patch by Nick Pilon ). * Added support for OPENSOCKET callbacks. See 'tests/test_opensocket.py' for example usage (patch by Thomas Hunger ). - Version 7.18.2: * Added REDIRECT_URL info and M_MAXCONNECTS option (patch by Yuhui H ). * Added socket_action() method to CurlMulti objects. See 'tests/test_multi_socket_select.py' for example usage (patch by Yuhui H ). * Added AUTOREFERER option. * Allow resetting some list operations (HTTPHEADER, QUOTE, POSTQUOTE, PREQUOTE) by passing an empty list to setopt (patch by Jim Patterson). - Split off doc subpackage * Fri Apr 25 2008 jfunk@funktronics.ca - Update to 7.18.1: * Added POST301, SSH_HOST_PUBLIC_KEY_MD5, COPYPOSTFIELDS and PROXY_TRANSFER_MODE options. * Check for static libs in setup.py to better detect whether libcurl was linked with OpenSSL or GNUTLS. * PycURL is now dual licensed under the LGPL and a license similar to the cURL license (an MIT/X derivate). - Version 7.16.4: * Allow any callable object as the callback function. This change comes handy when you would like to use objects which are callable but are not functions or methods, for example those objects created by the functions in the functools module (patch by Daniel Pena Arteaga ). * Added NEW_DIRECTORY_PERMS and NEW_FILE_PERMS options. - Version 7.16.2.1: * Added IOCMD_NOP and IOCMD_RESTARTREAD for ioctl callback handling (patch by Mark Eichin). * Use Py_ssize_t where appropriate for Python 2.5 and 64-bit compatibility. This fixes the problem reported by Aaron Hill, where the exception "pycurl.error: (2, '')" is thrown when calling setopt(pycurl.POSTFIELDS,...) on 64-bit platforms. - Version 7.16.2: * Added options HTTP_TRANSFER_DECODING, HTTP_CONTENT_DECODING, TIMEOUT_MS, CONNECTTIMEOUT_MS from libcurl 7.16.2. * Right-strip URLs read from files in the test scripts to avoid sending requests with '\n' at the end. - Version 7.16.1: * Added constants for all libcurl (error) return codes. They are named the same as the macro constants in curl.h but prefixed with E_ instead of CURLE. Return codes for the multi API are prefixed with M_ instead of CURLM. * Added CURLOPT_FTP_SSL_CCC, CURLOPT_SSH_PUBLIC_KEYFILE, CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPT_SSH_AUTH_TYPES. * Removed CLOSEPOLICY and friends since this option is now deprecated in libcurl. * Set the _use_datetime attribute on the CURLTransport class to unbreak xmlrpc_curl.py on Python 2.5. - Version 7.16.0 [no public release]: * Added CURLOPT_SSL_SESSIONID_CACHE. * Removed SOURCE_* options since they are no longer supported by libcurl. * Mon Oct 2 2006 cthiel@suse.de - fix build on older distributions * Sun Oct 1 2006 cthiel@suse.de - update to version 7.15.5.1 * Added test for basic ftp usage (tests/test_ftp.py). * Fix broken ssl mutex lock funcction when using GNU TLS * Thu Sep 21 2006 cthiel@suse.de - fix build with python 2.5 * Mon Aug 14 2006 cthiel@suse.de - update to version 7.15.5 * Added CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_MAX_SEND_SPEED_LARGE, and CURLOPT_MAX_RECV_SPEED_LARGE. - requires curl >= 7.15.5 * Sat Aug 5 2006 cthiel@suse.de - initial package (version 7.15.4.2)