From 662119c66486678c20667977d77b09dc6a2a220d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Mon, 15 Jul 2024 12:57:03 +0200 Subject: [PATCH] Sync from SUSE:ALP:Source:Standard:1.0 saltbundlepy-pycurl revision 7c5b66f199becacdf14867ae6363c133 --- .gitattributes | 23 + _multibuild | 3 + disable_randomly_failing_tests.patch | 67 +++ increase_test_timeout.diff | 17 + make-leap15-compat.patch | 22 + pycurl-7.45.2.tar.gz | 3 + pycurl-libssh.patch | 62 +++ saltbundlepy-pycurl.changes | 634 +++++++++++++++++++++++++++ saltbundlepy-pycurl.spec | 143 ++++++ 9 files changed, 974 insertions(+) create mode 100644 .gitattributes create mode 100644 _multibuild create mode 100644 disable_randomly_failing_tests.patch create mode 100644 increase_test_timeout.diff create mode 100644 make-leap15-compat.patch create mode 100644 pycurl-7.45.2.tar.gz create mode 100644 pycurl-libssh.patch create mode 100644 saltbundlepy-pycurl.changes create mode 100644 saltbundlepy-pycurl.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..83bd4e9 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/disable_randomly_failing_tests.patch b/disable_randomly_failing_tests.patch new file mode 100644 index 0000000..c67c3a7 --- /dev/null +++ b/disable_randomly_failing_tests.patch @@ -0,0 +1,67 @@ +Index: pycurl-7.45.1/tests/memory_mgmt_test.py +=================================================================== +--- pycurl-7.45.1.orig/tests/memory_mgmt_test.py ++++ pycurl-7.45.1/tests/memory_mgmt_test.py +@@ -9,6 +9,7 @@ import unittest + import gc + import flaky + from . import util ++import pytest + + debug = False + +@@ -17,6 +18,7 @@ if sys.platform == 'win32': + else: + devnull = '/dev/null' + ++@pytest.mark.occasionally_failing + @flaky.flaky(max_runs=3) + class MemoryMgmtTest(unittest.TestCase): + def maybe_enable_debug(self): +Index: pycurl-7.45.1/tests/multi_memory_mgmt_test.py +=================================================================== +--- pycurl-7.45.1.orig/tests/multi_memory_mgmt_test.py ++++ pycurl-7.45.1/tests/multi_memory_mgmt_test.py +@@ -7,11 +7,13 @@ import unittest + import gc + import flaky + import weakref ++import pytest + + from . import util + + debug = False + ++@pytest.mark.occasionally_failing + @flaky.flaky(max_runs=3) + class MultiMemoryMgmtTest(unittest.TestCase): + def test_opensocketfunction_collection(self): +Index: pycurl-7.45.1/tests/multi_timer_test.py +=================================================================== +--- pycurl-7.45.1.orig/tests/multi_timer_test.py ++++ pycurl-7.45.1/tests/multi_timer_test.py +@@ -5,6 +5,7 @@ + from . import localhost + import pycurl + import unittest ++import pytest + + from . import appmanager + from . import util +@@ -23,6 +24,7 @@ def teardown_module(mod): + teardown_module_2(mod) + teardown_module_1(mod) + ++@pytest.mark.occasionally_failing + class MultiSocketTest(unittest.TestCase): + def test_multi_timer(self): + urls = [ +Index: pycurl-7.45.1/pytest.ini +=================================================================== +--- pycurl-7.45.1.orig/pytest.ini ++++ pycurl-7.45.1/pytest.ini +@@ -7,3 +7,4 @@ markers = + gssapi: mark a test as requiring GSSAPI + http2: mark a test as requiring HTTP/2 + standalone: mark a test as being standalone ++ occasionally_failing: mark a test as occasionally failing diff --git a/increase_test_timeout.diff b/increase_test_timeout.diff new file mode 100644 index 0000000..e1d7202 --- /dev/null +++ b/increase_test_timeout.diff @@ -0,0 +1,17 @@ +Index: pycurl-7.43.0/tests/runwsgi.py +=================================================================== +--- pycurl-7.43.0.orig/tests/runwsgi.py ++++ pycurl-7.43.0/tests/runwsgi.py +@@ -48,10 +48,10 @@ def start_bottle_server(app, port, serve + server_thread.daemon = True + server_thread.start() + +- ok = util.wait_for_network_service(('127.0.0.1', port), 0.1, 10) ++ ok = util.wait_for_network_service(('127.0.0.1', port), 0.1, 30) + if not ok: + import warnings +- warnings.warn('Server did not start after 1 second') ++ warnings.warn('Server did not start after 3 seconds') + + return server_thread.server + diff --git a/make-leap15-compat.patch b/make-leap15-compat.patch new file mode 100644 index 0000000..0b69af3 --- /dev/null +++ b/make-leap15-compat.patch @@ -0,0 +1,22 @@ +--- + tests/curl_object_test.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/tests/curl_object_test.py ++++ b/tests/curl_object_test.py +@@ -143,11 +143,11 @@ class CurlObjectTest(unittest.TestCase): + # change does not affect objects created later + obj3 = cls() + self.assertEqual(old_value, getattr(obj3, name)) +- ++ + def test_bogus_attribute_access(self): +- with pytest.raises(AttributeError, match='trying to obtain.*'): +- self.curl.foo +- ++ with pytest.raises(AttributeError): ++ self.curl.foo ++ + def test_bogus_attribute_delete(self): + with pytest.raises(AttributeError, match='trying to delete.*'): + del self.curl.foo diff --git a/pycurl-7.45.2.tar.gz b/pycurl-7.45.2.tar.gz new file mode 100644 index 0000000..241273c --- /dev/null +++ b/pycurl-7.45.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5730590be0271364a5bddd9e245c9cc0fb710c4cbacbdd95264a3122d23224ca +size 234245 diff --git a/pycurl-libssh.patch b/pycurl-libssh.patch new file mode 100644 index 0000000..b526ce8 --- /dev/null +++ b/pycurl-libssh.patch @@ -0,0 +1,62 @@ +--- a/tests/ssh_key_cb_test.py ++++ b/tests/ssh_key_cb_test.py +@@ -33,8 +33,11 @@ class SshKeyCbTest(unittest.TestCase): + def keyfunction(known_key, found_key, match): + return pycurl.KHSTAT_FINE + +- self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') +- self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ try: ++ self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') ++ self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ except pycurl.error as e: ++ self.assertEqual(pycurl.E_UNKNOWN_OPTION, e.args[0]) + + try: + self.curl.perform() +@@ -47,8 +50,11 @@ class SshKeyCbTest(unittest.TestCase): + def keyfunction(known_key, found_key, match): + return pycurl.KHSTAT_REJECT + +- self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') +- self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ try: ++ self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') ++ self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ except pycurl.error as e: ++ self.assertEqual(pycurl.E_UNKNOWN_OPTION, e.args[0]) + + try: + self.curl.perform() +@@ -62,8 +68,11 @@ class SshKeyCbTest(unittest.TestCase): + def keyfunction(known_key, found_key, match): + return 'bogus' + +- self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') +- self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ try: ++ self.curl.setopt(pycurl.SSH_KNOWNHOSTS, '.known_hosts') ++ self.curl.setopt(pycurl.SSH_KEYFUNCTION, keyfunction) ++ except pycurl.error as e: ++ self.assertEqual(pycurl.E_UNKNOWN_OPTION, e.args[0]) + + try: + self.curl.perform() +@@ -82,9 +91,15 @@ class SshKeyCbUnsetTest(unittest.TestCas + @util.min_libcurl(7, 19, 6) + @util.guard_unknown_libcurl_option + def test_keyfunction_none(self): +- self.curl.setopt(pycurl.SSH_KEYFUNCTION, None) ++ try: ++ self.curl.setopt(pycurl.SSH_KEYFUNCTION, None) ++ except pycurl.error as e: ++ self.assertEqual(pycurl.E_UNKNOWN_OPTION, e.args[0]) + + @util.min_libcurl(7, 19, 6) + @util.guard_unknown_libcurl_option + def test_keyfunction_unset(self): +- self.curl.unsetopt(pycurl.SSH_KEYFUNCTION) ++ try: ++ self.curl.unsetopt(pycurl.SSH_KEYFUNCTION) ++ except pycurl.error as e: ++ self.assertEqual(pycurl.E_UNKNOWN_OPTION, e.args[0]) diff --git a/saltbundlepy-pycurl.changes b/saltbundlepy-pycurl.changes new file mode 100644 index 0000000..f15d813 --- /dev/null +++ b/saltbundlepy-pycurl.changes @@ -0,0 +1,634 @@ +------------------------------------------------------------------- +Tue Aug 22 14:59:25 UTC 2023 - Victor Zhestkov + +- update to 7.45.2: + * Python 3.9 compatibility for Py_TRASHCAN_SAFE_BEGIN + * Add support for CURL_HTTP_VERSION_3 + * Add CURLOPT_TLS13_CIPHERS and CURLOPT_PROXY_TLS13_CIPHERS options + * Added HTTP09_ALLOWED option + * Removed use of distutils + +- Update to 7.45.1: + * Fixed build against libcurl < 7.64.1 (patch by Scott Talbert). + * Add CURLOPT_MAXLIFETIME_CONN (patch by fsbs). + * Easy handle duplication support (patch by fsbs). + * Support for unsetting a number of multi options (patch by fsbs). + * pycurl classes can now be subclassed (patch by fsbs). + * Multi callbacks' thread state management fixed (patch by fsbs). + * Add CURL_LOCK_DATA_PSL (patch by fsbs). + * Add support for SecureTransport SSL backend (MacOS) + (patch by Scott Talbert). + * Fixed Python thread initialization causing hangs on operations + (patch by Scott Talbert). + * getinfo(CURLINFO_FTP_ENTRY_PATH) now handles NULL return from + libcurl, returning None in this case. + * Python 3.9 is now officially supported (patch by Bill Collins). + * Added CURLOPT_DOH_URL (patch by resokou). + * Best effort Python 2 support has been reinstated. + * Added missing fields to curl_version_info struct (patch by Hasan). + * Added CURLINFO_CONDITION_UNMET (patch by Dima Tisnek). + * Exposed MAX_CONCURRENT_STREAMS in CurlMulti (patch by Alexandre Pion). + * Compilation fixed against Python 3.10 alpha (patch by Kamil Dudka). + +- update to 7.43.0.6: + * Fixed offset parameter usage in seek callback + * Added support for libcurl SSL backend detection via + `curl-config --ssl-backends` + * Added support for libcurl MultiSSL + * Added ability to unset CURLOPT_PROXY. + * Added support for CURLOPT_UPLOAD_BUFFERSIZE + * Added support for CURLOPT_MAXAGE_CONN + * Added support for sharing connection cache in libcurl + * Added support for CURLOPT_HAPROXYPROTOCOL + * CC and CFLAGS environment variables are now respected when building + * Fixed OpenSSL detection on CentOS 7 and 8 + * surrogateescape error handler is used in multi_info_read to handle + invalid UTF-8. + +- drop python-pycurl-7.43.0-tls-backend.patch (upstream) + +- Add make-leap15-compat.patch to pass tests on Leap 15.2 + +- update to 7.43.0.5 +- refresh python-pycurl-7.43.0-tls-backend.patch + * added python 3.8 support + * officialy ended support for python 2 + +- Update to 7.43.0.3: + * This release primarily fixes an OpenSSL-related installation issue, and + repairs the ability to use PycURL with newer libcurls compiled without + FTP support. + +- Added: + * make-leap15-compat.patch + +- Updated: + * disable_randomly_failing_tests.patch + +- Removed: + * python-pycurl-7.43.0-tls-backend.patch + +------------------------------------------------------------------- +Mon Apr 4 11:52:35 UTC 2022 - Victor Zhestkov + +- Strictly require Python 3.10 with saltbundlepy requrement +- Use openssl from the Salt Bundle for SLE 15 as build time dependency + +------------------------------------------------------------------- +Thu Jan 20 10:59:47 UTC 2022 - Victor Zhestkov + +- Require saltbundle-openssl-devel instead of openssl-devel + for building on SLE12 to prevent fails + +------------------------------------------------------------------- +Thu Mar 7 15:17:02 UTC 2019 - Matej Cepl + +- bsc#1128355: update to the Factory package to get multibuild and + better working tests. +- Refreshed patch against the new minor release tarball: + - pycurl-libssh.patch +- Added patches: + - disable_randomly_failing_tests.patch + - python-pycurl-7.43.0-tls-backend.patch (from + https://src.fedoraproject.org/rpms/python-pycurl/blob/master/f/0002-python-pycurl-7.43.0-tls-backend.patch) + +------------------------------------------------------------------- +Wed Feb 6 15:24:44 UTC 2019 - alarrosa@suse.com + +- Set LANG to en_US.UTF8 to fix the tests + +------------------------------------------------------------------- +Wed Dec 19 14:18:26 CET 2018 - mcepl@suse.com + +- Add missing setuptools BR + +------------------------------------------------------------------- +Fri Nov 2 11:14:22 UTC 2018 - Vítězslav Čížek + +- Don't run tests that fail randomly or under load + * add disable_randomly_failing_tests.patch + +------------------------------------------------------------------- +Thu Sep 6 12:53:06 UTC 2018 - Matěj Cepl + +- Switch to multibuild, so that we don't need testing BuildRequires + always. + +------------------------------------------------------------------- +Thu Aug 30 12:36:12 UTC 2018 - Tomáš Chvátal + +- Add patch to match up Fedora on how we detect tls backend on runtime + * python-pycurl-7.43.0-tls-backend.patch + +------------------------------------------------------------------- +Wed Aug 29 08:33:02 UTC 2018 - tchvatal@suse.com + +- Make sure we build on Leap 42.3 + +------------------------------------------------------------------- +Thu Aug 9 11:15:17 UTC 2018 - tchvatal@suse.com + +- Start excluding flaky tests + +------------------------------------------------------------------- +Tue Jul 10 11:06:40 UTC 2018 - mcepl@suse.com + +- Update to 7.43.0.2: + * Added perform_rb and perform_rs methods to Curl objects to + return response body as byte string and string, respectively. + * Added OPT_COOKIELIST constant for consistency with other + option constants. + * PycURL is now able to report errors triggered by libcurl + via CURLOPT_FAILONERROR mechanism when the error messages are + not decodable in Python's default encoding (GitHub issue #259). + * Added getinfo_raw method to Curl objects to return byte strings + as is from libcurl without attempting to decode them + (GitHub issue #493). + * When adding a Curl easy object to CurlMulti via add_handle, + the easy objects now have their reference counts increased so that + the application is no longer required to keep references to them + to keep them from being garbage collected (GitHub issue #171). + * PycURL easy, multi and share objects can now be weak referenced. + * set_ca_certs now accepts byte strings as it should have been + all along. + * Use OpenSSL 1.1 and 1.0 specific APIs for controlling thread locks + depending on OpenSSL version (patch by Vitaly Murashev). + * Fixed a crash when closesocket callback failed (patch by + Gisle Vanem and toddrme2178). + * Added CURLOPT_PROXY_SSLCERT, CURLOPT_PROXY_SSLCERTTYPE, + CURLOPT_PROXY_SSLKEY, CURLOPT_PROXY_SSLKEYTYPE, + CURLOPT_PROXY_SSL_VERIFYPEER (libcurl 7.52.0+, + patch by Casey Miller). + * Added CURLOPT_PRE_PROXY (libcurl 7.52.0+, patch by ziggy). + * Added SOCKET_BAD constant and it is now recognized as a valid + return value from OPENSOCKET callback. + +------------------------------------------------------------------- +Fri Feb 2 13:17:14 UTC 2018 - tchvatal@suse.com + +- Disable tests on arm platforms as they are very flaky there, + on multiple runs always different failures + +------------------------------------------------------------------- +Fri Feb 2 13:00:02 UTC 2018 - tchvatal@suse.com + +- Disable strict aliasing as reported by the rpm checks + +------------------------------------------------------------------- +Tue Jan 30 16:01:27 UTC 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 18:06:28 UTC 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 19:16:32 UTC 2017 - tbechtold@suse.com + +- Cleanup Requires and BuildRequires + +------------------------------------------------------------------- +Wed Jun 21 09:51:22 UTC 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 16:15:49 UTC 2017 - lnussel@suse.de + +- exclude http2 and ssh tests if curl(-mini) doesn't support it + +------------------------------------------------------------------- +Tue Dec 20 15:55:00 UTC 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 04:43:19 UTC 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 17:57:48 UTC 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 16:59:19 UTC 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 17:03:47 UTC 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 13:54:46 UTC 2015 - mcihar@suse.cz + +- Run testsuite during build + +------------------------------------------------------------------- +Wed Mar 25 13:51:16 UTC 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 14:17:15 UTC 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 15:41:00 UTC 2014 - toddrme2178@gmail.com + +- Removed patch specific to python3-pycurl: pycurl-python3.patch +- Rebase patch: pycurl-no-runtime-curlvercheck.patch + +------------------------------------------------------------------- +Tue May 20 12:13:23 UTC 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 18:07:30 UTC 2013 - crrodriguez@opensuse.org + +- remove runtime curl version check and __DATE__ __TIME__ usage + (pycurl-no-runtime-curlvercheck.patch) + +------------------------------------------------------------------- +Fri Apr 5 13:16:51 UTC 2013 - idonmez@suse.com + +- Add Source URL, see https://en.opensuse.org/SourceUrls + +------------------------------------------------------------------- +Sat Apr 28 06:42:57 UTC 2012 - highwaystar.ru@gmail.com + +- added python3 package +- spec file slighly cleaned (old buildroot macro replaced) + +------------------------------------------------------------------- +Thu Jan 12 11:31:10 UTC 2012 - coolo@suse.com + +- change license to be in spdx.org format + +------------------------------------------------------------------- +Tue Sep 20 11:54:25 UTC 2011 - saschpe@suse.de + +- Renamed package to 'python-pycurl' to match upstream name +- Removed authors from description + +------------------------------------------------------------------- +Wed Feb 10 11:45:01 UTC 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 16:45:35 ADT 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 13:51:57 CEST 2006 - cthiel@suse.de + +- fix build on older distributions + +------------------------------------------------------------------- +Sun Oct 1 15:14:26 CEST 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 14:28:54 CEST 2006 - cthiel@suse.de + +- fix build with python 2.5 + +------------------------------------------------------------------- +Mon Aug 14 10:01:34 CEST 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 16:52:04 CEST 2006 - cthiel@suse.de + +- initial package (version 7.15.4.2) + diff --git a/saltbundlepy-pycurl.spec b/saltbundlepy-pycurl.spec new file mode 100644 index 0000000..08f10fc --- /dev/null +++ b/saltbundlepy-pycurl.spec @@ -0,0 +1,143 @@ +# +# spec file for package saltbundlepy-pycurl +# +# Copyright (c) 2021 SUSE LLC +# +# 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 https://bugs.opensuse.org/ +# + + +%{?!saltbundlepy_module:%define saltbundlepy_module() saltbundlepy-%{**}} +%define pythons saltbundlepy + +# Disable python bytecompile for all distros +# It's called explicitly in the spec +%global __brp_python_bytecompile %{nil} + +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +ExclusiveArch: do-not-build +%else +%define psuffix %{nil} +%bcond_with test +%endif + +Name: saltbundlepy-pycurl%{psuffix} +Version: 7.45.2 +Release: 0 +Summary: PycURL -- cURL library module +License: LGPL-2.1-or-later 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 +Patch2: disable_randomly_failing_tests.patch +# PATCH-FIX-OPENSUSE make-leap15-compat.patch mcepl@suse.com +# Make tests passing with Leap 15.2 +Patch3: make-leap15-compat.patch +BuildRequires: %{saltbundlepy_module devel >= 3.10} +BuildRequires: %{saltbundlepy_module setuptools} +BuildRequires: fdupes +BuildRequires: libcurl-devel >= 7.19.0 +%if 0%{?suse_version} == 1315 +BuildRequires: saltbundle-openssl-devel +%else +BuildRequires: openssl-devel +%endif +BuildRequires: saltbundlepy-rpm-macros +%if %{with test} +BuildRequires: %{saltbundlepy_module bottle} +BuildRequires: %{saltbundlepy_module flaky} +BuildRequires: %{saltbundlepy_module nose} +%endif +Requires: saltbundlepy-base +%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 +%autosetup -p1 -n pycurl-%{version} + +# temporarily remove a failing test-case until the issue is +# fixed in curl: https://github.com/curl/curl/issues/6615 +rm -f tests/failonerror_test.py + +%build +export CFLAGS="%{optflags} -fno-strict-aliasing" +export PYCURL_SSL_LIBRARY=openssl +%python_build --with-openssl + +%install +export PYCURL_SSL_LIBRARY=openssl +%python_install --with-openssl + +rm -rf %{buildroot}%{_datadir}/doc # Remove wrongly installed junk + +%{python_expand \ +$python -m compileall -d %{$python_sitearch} %{buildroot}%{$python_sitearch} +$python -O -m compileall -d %{$python_sitearch} %{buildroot}%{$python_sitearch} +%fdupes %{buildroot}%{$python_sitearch} +} + +%check +%if %{with test} +export LANG=en_US.UTF-8 +export PYCURL_SSL_LIBRARY=openssl +# 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 %{?_smp_mflags} +popd +# exclude certain tests +test_flags='online or occasionally_failing' +if ! pkg-config --variable=supported_features libcurl|grep -qw HTTP2; then + test_flags="$test_flags or http2" +fi +if ! pkg-config --variable=supported_protocols libcurl|grep -qw SCP; then + test_flags="$test_flags or ssh" +fi +# test_getinfo are failing with new bottle +%pytest_arch -s -k "not ($test_flags or test_getinfo)" +rm -rf %{buildroot}%{_prefix}/lib/debug %{buildroot}%{_libdir}/python* +# test +%endif + +%if ! %{with test} +%files %{python_files} +%license COPYING-LGPL COPYING-MIT +%doc AUTHORS ChangeLog README.rst +%{python_sitearch}/* + +%files -n %{name}-doc +%doc examples doc/*.rst +%endif + +%changelog