Sync from SUSE:SLFO:Main python-pycurl revision 6976d42aee9a3028bbd73a3e6b3d7a70

This commit is contained in:
Adrian Schröter 2024-05-03 22:05:30 +02:00
commit d3578b0d21
10 changed files with 1070 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

View File

@ -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

View File

@ -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

22
make-leap15-compat.patch Normal file
View File

@ -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

13
pause-unpause-xfail.patch Normal file
View File

@ -0,0 +1,13 @@
Index: pycurl-7.45.2/tests/multi_callback_test.py
===================================================================
--- pycurl-7.45.2.orig/tests/multi_callback_test.py
+++ pycurl-7.45.2/tests/multi_callback_test.py
@@ -77,7 +77,7 @@ class MultiCallbackTest(unittest.TestCas
# (mid-transfer) easy.pause(PAUSE_ALL) must call SOCKETFUNCTION to remove sockets
# (mid-transfer) easy.pause(PAUSE_CONT) must call TIMERFUNCTION to resume
- @pytest.mark.xfail(sys.platform == 'darwin', reason='https://github.com/pycurl/pycurl/issues/729')
+ @pytest.mark.xfail(sys.platform is not None, reason='https://github.com/pycurl/pycurl/issues/729')
def test_easy_pause_unpause(self):
self.partial_transfer()
self.socket_result = None

BIN
pycurl-7.45.2.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

62
pycurl-libssh.patch Normal file
View File

@ -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])

709
python-pycurl.changes Normal file
View File

@ -0,0 +1,709 @@
-------------------------------------------------------------------
Fri Dec 15 01:53:16 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>
- Add patch pause-unpause-xfail.patch:
* XFAIL a test due to gh#pycurl/pycurl#729 (bsc#1218062)
-------------------------------------------------------------------
Thu Oct 12 14:09:12 UTC 2023 - Matej Cepl <mcepl@cepl.eu>
- Skip test_multi_socket_select (gh#pycurl/pycurl#819),
test_multi_socket_action (gh#pycurl/pycurl#729), and
test_request_with_verifypeer (gh#pycurl/pycurl#822).
-------------------------------------------------------------------
Sun Apr 23 23:18:42 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Switch documentation to be within the main package.
-------------------------------------------------------------------
Fri Apr 21 12:30:35 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:43:37 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Fri Feb 24 09:05:26 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
- Disable http3 tests if it's not supported
-------------------------------------------------------------------
Mon Jan 2 18:51:53 UTC 2023 - Dirk Müller <dmueller@suse.com>
- 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
- drop curl-789-error-message.patch (upstream)
-------------------------------------------------------------------
Thu Apr 28 06:00:57 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
- 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).
- Remove patch curl7770_compatibility.patch and remove_nose.patch:
* They have both merged upstream.
- Modify patch disable_randomly_failing_tests.patch:
* Use pytest rather than nose methods.
- Add patch curl-789-error-message.patch:
* Handle missing ! in a returned error message.
-------------------------------------------------------------------
Fri Jun 4 13:59:08 UTC 2021 - Matej Cepl <mcepl@suse.com>
- Add curl7770_compatibility.patch to have package compatible
with curl 7.77.0.
-------------------------------------------------------------------
Mon Mar 8 09:27:05 UTC 2021 - Pedro Monreal <pmonreal@suse.com>
- Remove a failing test-case until fixed in curl:
* Upstream issue: https://github.com/curl/curl/issues/6615
-------------------------------------------------------------------
Thu Jan 28 23:06:36 UTC 2021 - Dirk Müller <dmueller@suse.com>
- 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)
- refresh remove_nose.patch to remove even more nose code
-------------------------------------------------------------------
Tue Dec 15 12:56:23 UTC 2020 - Matej Cepl <mcepl@suse.com>
- Add make-leap15-compat.patch to pass tests on Leap 15.2
-------------------------------------------------------------------
Mon Dec 14 14:15:29 UTC 2020 - Matej Cepl <mcepl@suse.com>
- Add remove_nose.patch to remove dependency on nose
(gh#pycurl/pycurl#655).
-------------------------------------------------------------------
Mon Jun 22 08:25:46 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>
- Fixes for %_libexecdir changing to /usr/libexec
-------------------------------------------------------------------
Wed Apr 8 12:05:25 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Do not pull in py2 package on doc subpkg
-------------------------------------------------------------------
Tue Mar 3 12:01:13 UTC 2020 - Ondřej Súkup <mimi.vx@gmail.com>
- 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
-------------------------------------------------------------------
Mon Nov 18 10:52:42 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- Skip 4 tests that are tied to old bottle version so we can
update the python-bottle package
-------------------------------------------------------------------
Tue Jul 23 10:20:14 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- 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.
- Rebase patch:
* python-pycurl-7.43.0-tls-backend.patch
-------------------------------------------------------------------
Mon Apr 8 15:35:42 CEST 2019 - Matej Cepl <mcepl@suse.com>
- 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)
-------------------------------------------------------------------
Tue Mar 12 14:20:40 UTC 2019 - Matej Cepl <mcepl@suse.com>
- Fix URL of the project
-------------------------------------------------------------------
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 <vcizek@suse.com>
- 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 <mcepl@suse.com>
- Switch to multibuild, so that we don't need testing BuildRequires
always.
-------------------------------------------------------------------
Thu Aug 30 12:36:12 UTC 2018 - Tomáš Chvátal <tchvatal@suse.com>
- 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 <johansen at sun.com>).
* 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 <eyecat at gmail.com>).
* Added support for curl_easy_reset through a
new 'reset' method on curl objects
(patch by Nick Pilon <npilon at oreilly.com>).
* Added support for OPENSOCKET callbacks.
See 'tests/test_opensocket.py' for example
usage (patch by Thomas Hunger <teh at camvine.com>).
- Version 7.18.2:
* Added REDIRECT_URL info and M_MAXCONNECTS option
(patch by Yuhui H <eyecat at gmail.com>).
* Added socket_action() method to CurlMulti objects.
See 'tests/test_multi_socket_select.py' for example
usage (patch by Yuhui H <eyecat at gmail.com>).
* 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 <dpena at ph.tum.de>).
* 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)

151
python-pycurl.spec Normal file
View File

@ -0,0 +1,151 @@
#
# spec file
#
# Copyright (c) 2023 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/
#
%define oldpython python
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
%{?sle15_python_module_pythons}
Name: python-pycurl%{psuffix}
Version: 7.45.2
Release: 0
Summary: PycURL -- cURL library module
License: LGPL-2.1-or-later AND MIT
URL: http://pycurl.io/
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
# PATCH-FIX-OPENSUSE xfail a test around pause/unpause not behaving
Patch4: pause-unpause-xfail.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: pkgconfig(libcurl) >= 7.19.0
BuildRequires: pkgconfig(openssl)
%if %{with test}
BuildRequires: %{python_module bottle}
BuildRequires: %{python_module flaky}
BuildRequires: %{python_module pytest}
%endif
%ifpython2
Provides: %{oldpython}-curl = %{version}
Obsoletes: %{oldpython}-curl < %{version}
%endif
%python_subpackages
%description
This module provides bindings for the cURL library.
%if 0%{?suse_version} > 1500
%package -n %{name}-doc
Summary: Documentation for python-curl
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.
%endif
%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
if ! pkg-config --variable=supported_protocols libcurl|grep -qw HTTP3; then
test_flags="$test_flags or http_version_3"
fi
# test_getinfo are failing with new bottle
dont_test="or test_getinfo "
# test_multi_socket_select fails with new curl gh#pycurl/pycurl#819
dont_test+="or test_multi_socket_select "
# test_multi_socket_action gh#pycurl/pycurl#729
dont_test+="or test_multi_socket_action "
# test_request_with_verifypeer for gh#pycurl/pycurl#822
dont_test+="or test_request_with_verifypeer "
%pytest_arch -s -k "not ($test_flags $dont_test)"
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}/curl
%{python_sitearch}/pycurl*.so
%{python_sitearch}/pycurl-%{version}*-info
%if 0%{?suse_version} > 1500
%files -n %{name}-doc
%endif
%doc examples doc/*.rst
%endif
%changelog