diff --git a/abi_used_symbols b/abi_used_symbols --- a/abi_used_symbols +++ b/abi_used_symbols @@ -12,6 +12,7 @@ libc.so.6:stderr libc.so.6:strchr libc.so.6:strlen +libc.so.6:strncmp libcrypto.so.1.1:BIO_free libcrypto.so.1.1:BIO_new_mem_buf libcrypto.so.1.1:ERR_clear_error diff --git a/files/skip-incompatible-libcurl-tests.patch b/files/skip-incompatible-libcurl-tests.patch new file mode 100644 --- /dev/null +++ b/files/skip-incompatible-libcurl-tests.patch @@ -0,0 +1,112 @@ +From 18f1103fb9c6b4dc2233e323e3df1818db25c209 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Thu, 27 May 2021 10:52:09 +0200 +Subject: [PATCH 1/2] option_constants_test: skip check of SSLVERSION_SSLv* + +... with curl-7.77.0, where they started to return +CURLE_BAD_FUNCTION_ARGUMENT: + + https://github.com/curl/curl/pull/6773 + +Closes: https://github.com/pycurl/pycurl/pull/689 +--- + tests/option_constants_test.py | 9 ++++++++- + tests/util.py | 15 +++++++++++++++ + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/tests/option_constants_test.py b/tests/option_constants_test.py +index 20228c66f..8b3bd9c69 100644 +--- a/tests/option_constants_test.py ++++ b/tests/option_constants_test.py +@@ -164,9 +164,16 @@ def test_gssapi_delegation_options(self): + def test_sslversion_options(self): + curl = pycurl.Curl() + curl.setopt(curl.SSLVERSION, curl.SSLVERSION_DEFAULT) ++ curl.setopt(curl.SSLVERSION, curl.SSLVERSION_TLSv1) ++ curl.close() ++ ++ # SSLVERSION_SSLv* return CURLE_BAD_FUNCTION_ARGUMENT with curl-7.77.0 ++ @util.removed_in_libcurl(7, 77, 0) ++ @util.only_ssl ++ def test_legacy_sslversion_options(self): ++ curl = pycurl.Curl() + curl.setopt(curl.SSLVERSION, curl.SSLVERSION_SSLv2) + curl.setopt(curl.SSLVERSION, curl.SSLVERSION_SSLv3) +- curl.setopt(curl.SSLVERSION, curl.SSLVERSION_TLSv1) + curl.close() + + @util.min_libcurl(7, 34, 0) +diff --git a/tests/util.py b/tests/util.py +index e12e25152..37ad2f9ab 100644 +--- a/tests/util.py ++++ b/tests/util.py +@@ -122,6 +122,21 @@ def decorated(*args, **kwargs): + + return decorator + ++def removed_in_libcurl(major, minor, patch): ++ import nose.plugins.skip ++ ++ def decorator(fn): ++ @functools.wraps(fn) ++ def decorated(*args, **kwargs): ++ if not pycurl_version_less_than(major, minor, patch): ++ raise nose.plugins.skip.SkipTest('libcurl >= %d.%d.%d' % (major, minor, patch)) ++ ++ return fn(*args, **kwargs) ++ ++ return decorated ++ ++ return decorator ++ + def only_ssl(fn): + import nose.plugins.skip + import pycurl + +From a03c4a4ea3fb42b347bada24faae1d31c7d0c90e Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Tue, 1 Jun 2021 16:56:40 +0200 +Subject: [PATCH 2/2] failonerror_test: skip the test with curl-7.75.0+ + +libcurl does not provide the reason phrase from HTTP status line +in the error buffer any more: + + https://github.com/curl/curl/issues/6615 + +Fixes: https://github.com/pycurl/pycurl/issues/679 +--- + tests/failonerror_test.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/tests/failonerror_test.py b/tests/failonerror_test.py +index dc4d8cd6b..519aed821 100644 +--- a/tests/failonerror_test.py ++++ b/tests/failonerror_test.py +@@ -21,6 +21,8 @@ def tearDown(self): + # not sure what the actual min is but 7.26 is too old + # and does not include status text, only the status code + @util.min_libcurl(7, 38, 0) ++ # no longer supported by libcurl: https://github.com/curl/curl/issues/6615 ++ @util.removed_in_libcurl(7, 75, 0) + def test_failonerror(self): + self.curl.setopt(pycurl.URL, 'http://%s:8380/status/403' % localhost) + sio = util.BytesIO() +@@ -41,6 +43,8 @@ def test_failonerror(self): + # not sure what the actual min is but 7.26 is too old + # and does not include status text, only the status code + @util.min_libcurl(7, 38, 0) ++ # no longer supported by libcurl: https://github.com/curl/curl/issues/6615 ++ @util.removed_in_libcurl(7, 75, 0) + def test_failonerror_status_line_invalid_utf8_python2(self): + self.curl.setopt(pycurl.URL, 'http://%s:8380/status_invalid_utf8' % localhost) + sio = util.BytesIO() +@@ -61,6 +65,8 @@ def test_failonerror_status_line_invalid_utf8_python2(self): + # not sure what the actual min is but 7.26 is too old + # and does not include status text, only the status code + @util.min_libcurl(7, 38, 0) ++ # no longer supported by libcurl: https://github.com/curl/curl/issues/6615 ++ @util.removed_in_libcurl(7, 75, 0) + def test_failonerror_status_line_invalid_utf8_python3(self): + self.curl.setopt(pycurl.URL, 'http://%s:8380/status_invalid_utf8' % localhost) + sio = util.BytesIO() + diff --git a/package.yml b/package.yml --- a/package.yml +++ b/package.yml @@ -1,6 +1,6 @@ name : python-pycurl version : 7.43.0.3 -release : 11 +release : 12 source : - https://files.pythonhosted.org/packages/source/p/pycurl/pycurl-7.43.0.3.tar.gz : 6f08330c5cf79fa8ef68b9912b9901db7ffd34b63e225dce74db56bb21deda8e homepage : http://pycurl.io/ @@ -8,7 +8,8 @@ component : system.base summary : Curl module for python description: | - PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features + PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features. +ccache : no builddeps : - pkgconfig(libcurl) - pyflakes @@ -17,6 +18,8 @@ - python-nose - python-setuptools setup : | + %patch -p1 < $pkgfiles/skip-incompatible-libcurl-tests.patch + # remove bundled libraries rm -f tests/fake-curl/libcurl/*.so diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml --- a/pspec_x86_64.xml +++ b/pspec_x86_64.xml @@ -9,14 +9,14 @@ MIT system.base Curl module for python - PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features + PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features. https://getsol.us/sources/README.Solus python-pycurl Curl module for python - PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features + PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of features. system.base @@ -59,8 +59,8 @@ - - 2021-01-20 + + 2021-09-01 7.43.0.3 Packaging update Algent Albrahimi