---
import_issues.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/import_issues.py b/import_issues.py
index c1dbc21..550df54 100755
--- a/import_issues.py+++ b/import_issues.py
@@ -500,7 +500,7 @@ def run(
raise RuntimeError(
f"Don't have all issues from 1 to {max_issue_id}{because_confidential_msg}, "
- f"please pass --create-missing-issues or --skip-missing-issues to proceed."+ "please pass --create-missing-issues or --skip-missing-issues to proceed." )
issues_by_id = {}
@@ -516,7 +516,7 @@ def run(
issue_id_map: Dict[int, int] = {}
# While we're creating tickets, we can't just loop over the sorted
- # issue_jsons. We have to loop over potential issue IDs and handle any that+ # issue_jsons. We have to loop over potential issue IDs and handle any that # are missing as well.
for gitlab_issue_id in range(1, max_issue_id + 1):
if gitlab_issue_id not in issues_by_id:
@@ -592,7 +592,8 @@ def run(
body = note_json["note"]
- # The "Removed" part is a guess here, don't know if that actually shows up.+ # The "Removed" part is a guess here,+ # don't know if that actually shows up. if label_ids_to_names is not None and (
system_action == "label"
or re.search(r"^(Added|Removed) ~[0-9]+ label", body)
--
2.45.1
todo.sr.ht has limited size of comments to 16k characters. When
splitting a string to multiple ones, we don't want to split lines
in the middle.
Also, start at least some unit tests.
---
import_issues.py | 18 +
tests/209_description.txt | 786 ++++++++++++++++++++++++++++++++++++
tests/__init__.py | 0
tests/test_import_issues.py | 52 +++
4 files changed, 856 insertions(+)
create mode 100644 tests/209_description.txt
create mode 100644 tests/__init__.py
create mode 100644 tests/test_import_issues.py
diff --git a/import_issues.py b/import_issues.py
index f524932..5470f4e 100755
--- a/import_issues.py
+++ b/import_issues.py
@@ -145,9 +145,27 @@ logging.basicConfig(
ID_RE = re.compile(r"^[0-9]+$")
+# todo.sr.ht seems to be limited to less than 16k comments
+# to be sure, we will do just 12k
+MAX_SIZE_COMMENT = 12 * 1024
+
tickets_to_be_closed = []
+def split_long_str(in_str: str, max_len: int = MAX_SIZE_COMMENT) -> list[str]:
+ out = []
+ tmp_str = ""
+ for line in in_str.splitlines(keepends=True):
+ if len(tmp_str + line) < max_len:
+ tmp_str += line
+ else:
+ out.append(tmp_str)
+ tmp_str = line
+ if len(tmp_str) > 0:
+ out.append(tmp_str)
+ return out
+
+
def get_labels(tracker: str) -> list[dict[str, str]]:
"""
collects labels for your named tracker
diff --git a/tests/209_description.txt b/tests/209_description.txt
new file mode 100644
index 0000000..79de873
--- /dev/null
+++ b/tests/209_description.txt
@@ -0,0 +1,786 @@
+**https://pastebin.com/FDcfSU2z More readable here** (doesn't have to be)
+
+```
+sudo pip install m2crypto==0.24.0
+Collecting m2crypto==0.24.0
+Downloading https://files.pythonhosted.org/packages/58/75/362faac80a1bc2742b4b696dc350518312043d568bfd2687a9270f18da88/M2Crypto-0.24.0.tar.gz (184kB)
+100% |████████████████████████████████| 194kB 234kB/s
+Building wheels for collected packages: m2crypto
+Running setup.py bdist_wheel for m2crypto ... error
+Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmpfQntJipip-wheel- --python-tag cp27:
+running bdist_wheel
+running build
+running build_py
+copying M2Crypto/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/threading.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EC.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Rand.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/init.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EVP.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/X509.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/util.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BN.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/callback.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BIO.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Engine.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DH.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Err.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RC4.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+creating build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+creating build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKeyRing.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/constants.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKey.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/packet.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+running build_ext
+building 'M2Crypto.__m2crypto' extension
+swigging SWIG/m2crypto.i to SWIG/m2crypto_wrap.c
+swig -python -D__x86_64 -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -includeall -modern -builtin -outdir build/lib.linux-x86_64-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:152: Warning 305: Bad constant value (ignored).
+/usr/include/x86_64-linux-gnu/bits/wchar.h:38: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+/usr/include/stdint.h:250: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+SWIG/_bio.i:64: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rand.i:21: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_evp.i:169: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dh.i:36: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rsa.i:43: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dsa.i:31: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:241: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:242: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_x509.i:323: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_util.i:11: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ec.i:111: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_engine.i:168: Warning 454: Setting a pointer/reference variable may leak memory.
+creating build/temp.linux-x86_64-2.7
+creating build/temp.linux-x86_64-2.7/SWIG
+x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-DmWv1o/python2.7-2.7.14=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -I/tmp/pip-build-cIFksT/m2crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-2.7/SWIG/_m2crypto_wrap.o -DTHREADING
+SWIG/_m2crypto_wrap.c:4186:35: error: ‘CRYPTO_NUM_LOCKS’ undeclared here (not in a function); did you mean ‘CRYPTO_UNLOCK’?
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~~~~~~~
+CRYPTO_UNLOCK
+SWIG/_m2crypto_wrap.c: In function ‘lib_init’:
+SWIG/_m2crypto_wrap.c:4567:5: warning: implicit declaration of function ‘SSLeay_add_all_algorithms’; did you mean ‘SSLeay_add_ssl_algorithms’? [-Wimplicit-function-declaration]
+SSLeay_add_all_algorithms();
+^~~~~~~~~~~~~~~~~~~~~~~~~
+SSLeay_add_ssl_algorithms
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand’:
+SWIG/_m2crypto_wrap.c:4971:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:4975:5: warning: implicit declaration of function ‘BN_init’; did you mean ‘bio_init’? [-Wimplicit-function-declaration]
+BN_init(&rnd);
+^~~~~~~
+bio_init
+SWIG/_m2crypto_wrap.c:4971:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand_range’:
+SWIG/_m2crypto_wrap.c:5000:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:5000:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+SWIG/_m2crypto_wrap.c: In function ‘rand_pseudo_bytes’:
+SWIG/_m2crypto_wrap.c:5131:5: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
+ret = RAND_pseudo_bytes(blob, n);
+^~~
+In file included from /usr/include/openssl/crypto.h:32:0,
+from /usr/include/openssl/bio.h:20,
+from /usr/include/openssl/err.h:21,
+from SWIG/_m2crypto_wrap.c:3829:
+/usr/include/openssl/rand.h:47:1: note: declared here
+DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
+^
+SWIG/_m2crypto_wrap.c: In function ‘digest_final’:
+SWIG/_m2crypto_wrap.c:5249:34: error: dereferencing pointer to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->digest->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_new’:
+SWIG/_m2crypto_wrap.c:5266:49: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(ctx = (HMAC_CTX *)PyMem_Malloc(sizeof(HMAC_CTX)))) {
+^~~~~~~~
+SWIG/_m2crypto_wrap.c:5270:5: warning: implicit declaration of function ‘HMAC_CTX_init’; did you mean ‘HMAC_CTX_new’? [-Wimplicit-function-declaration]
+HMAC_CTX_init(ctx);
+^~~~~~~~~~~~~
+HMAC_CTX_new
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_free’:
+SWIG/_m2crypto_wrap.c:5275:5: warning: implicit declaration of function ‘HMAC_CTX_cleanup’; did you mean ‘HMAC_CTX_get_md’? [-Wimplicit-function-declaration]
+HMAC_CTX_cleanup(ctx);
+^~~~~~~~~~~~~~~~
+HMAC_CTX_get_md
+SWIG/_m2crypto_wrap.c: In function ‘hmac_init’:
+SWIG/_m2crypto_wrap.c:5286:5: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
+if (!HMAC_Init(ctx, kbuf, klen, md)) {
+^~
+In file included from /usr/include/openssl/hmac.h:13:0,
+from /usr/include/openssl/ssl.h:56,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/hmac.h:28:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
+^
+SWIG/_m2crypto_wrap.c: In function ‘hmac_final’:
+SWIG/_m2crypto_wrap.c:5314:34: error: dereferencing pointer to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->md->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_ctx_new’:
+SWIG/_m2crypto_wrap.c:5353:55: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(ctx = (EVP_CIPHER_CTX *)PyMem_Malloc(sizeof(EVP_CIPHER_CTX)))) {
+^~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_final’:
+SWIG/_m2crypto_wrap.c:5434:34: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(obuf = PyMem_Malloc(ctx->cipher->block_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘pkey_get_modulus’:
+SWIG/_m2crypto_wrap.c:5582:17: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
+switch (pkey->type) {
+^~
+SWIG/_m2crypto_wrap.c:5593:35: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
+if (!BN_print(bio, rsa->n)) {
+^~
+SWIG/_m2crypto_wrap.c:5618:35: error: dereferencing pointer to incomplete type ‘DSA {aka struct dsa_st}’
+if (!BN_print(bio, dsa->pub_key)) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dh_generate_parameters’:
+SWIG/_m2crypto_wrap.c:5815:5: warning: ‘DH_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dh = DH_generate_parameters(plen, g, gendh_callback, (void *)pyfunc);
+^~
+In file included from /usr/include/openssl/bn.h:31:0,
+from /usr/include/openssl/asn1.h:24,
+from /usr/include/openssl/dh.h:18,
+from SWIG/_m2crypto_wrap.c:4243:
+/usr/include/openssl/dh.h:135:1: note: declared here
+DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5861:12: error: dereferencing pointer to incomplete type ‘DH {aka struct dh_st}’
+if (!dh->p) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘rsa_generate_key’:
+SWIG/_m2crypto_wrap.c:6319:5: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
+rsa = RSA_generate_key(bits, e, genrsa_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/rsa.h:13:0,
+from SWIG/_m2crypto_wrap.c:4246:
+/usr/include/openssl/rsa.h:193:1: note: declared here
+DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6348:29: error: dereferencing pointer to incomplete type ‘DSA_SIG {aka struct DSA_SIG_st}’
+return bn_to_mpi(dsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dsa_generate_parameters’:
+SWIG/_m2crypto_wrap.c:6378:5: warning: ‘DSA_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, genparam_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/dsa.h:28:0,
+from /usr/include/openssl/x509.h:32,
+from /usr/include/openssl/ssl.h:50,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/dsa.h:122:1: note: declared here
+DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
+^
+SWIG/_m2crypto_wrap.c: In function ‘sk_ssl_cipher_value’:
+SWIG/_m2crypto_wrap.c:7284:12: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
+return sk_SSL_CIPHER_value(stack, idx);
+^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7463:43: error: dereferencing pointer to incomplete type ‘X509_NAME {aka struct X509_name_st}’
+return PyString_FromStringAndSize(name->bytes->data, name->bytes->length);
+^~
+SWIG/_m2crypto_wrap.c: At top level:
+SWIG/_m2crypto_wrap.c:7523:2: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
+x509v3_lhash() {
+^~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509v3_lhash’:
+SWIG/_m2crypto_wrap.c:7524:12: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
+return lh_new(NULL, NULL); / Should probably be lh_CONF_VALUE_new but won't compile. */
+^~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘make_stack_from_der_sequence’:
+SWIG/_m2crypto_wrap.c:7640:13: warning: implicit declaration of function ‘ASN1_seq_unpack_X509’; did you mean ‘ASN1_item_unpack’? [-Wimplicit-function-declaration]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^~~~~~~~~~~~~~~~~~~~
+ASN1_item_unpack
+SWIG/_m2crypto_wrap.c:7640:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^
+SWIG/_m2crypto_wrap.c: In function ‘get_der_encoding_stack’:
+SWIG/_m2crypto_wrap.c:7656:16: warning: implicit declaration of function ‘ASN1_seq_pack_X509’; did you mean ‘ASN1_item_pack’? [-Wimplicit-function-declaration]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^~~~~~~~~~~~~~~~~~
+ASN1_item_pack
+SWIG/_m2crypto_wrap.c:7656:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8186:31: error: dereferencing pointer to incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
+return bn_to_mpi(ecdsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_sslv2_method’:
+SWIG/_m2crypto_wrap.c:18315:26: warning: implicit declaration of function ‘SSLv2_method’; did you mean ‘SSLv23_method’? [-Wimplicit-function-declaration]
+result = (SSL_METHOD *)SSLv2_method();
+^~~~~~~~~~~~
+SSLv23_method
+SWIG/_m2crypto_wrap.c:18315:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (SSL_METHOD *)SSLv2_method();
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_tlsv1_method’:
+SWIG/_m2crypto_wrap.c:18341:3: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
+result = (SSL_METHOD *)TLSv1_method();
+^~~~~~
+In file included from /usr/include/openssl/ct.h:13:0,
+from /usr/include/openssl/ssl.h:61,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/ssl.h:1627:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur const SSL_METHOD TLSv1_method(void)) / TLSv1.0 */
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_c2i_asn1_object’:
+SWIG/_m2crypto_wrap.c:25775:27: warning: implicit declaration of function ‘c2i_ASN1_OBJECT’; did you mean ‘d2i_ASN1_OBJECT’? [-Wimplicit-function-declaration]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^~~~~~~~~~~~~~~
+d2i_ASN1_OBJECT
+SWIG/_m2crypto_wrap.c:25775:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^
+SWIG/_m2crypto_wrap.c: In function ‘init__m2crypto’:
+SWIG/_m2crypto_wrap.c:31639:79: warning: implicit declaration of function ‘SWIG_From_wchar_t’; did you mean ‘SWIG_FromCharPtr’? [-Wimplicit-function-declaration]
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~~~~~~~
+SWIG_FromCharPtr
+SWIG/_m2crypto_wrap.c:31639:120: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31639:119: error: ‘L’ undeclared (first use in this function)
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:119: note: each undeclared identifier is reported only once for each function it appears in
+SWIG/_m2crypto_wrap.c:31640:3: error: expected ‘)’ before ‘SWIG_Python_SetConstant’
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MIN",SWIG_From_int((int)((-(0x7fffffff+L'\0') -1))));
+^~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31691:118: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31996:1: error: expected declaration or statement at end of input
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5866:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_g’:
+SWIG/_m2crypto_wrap.c:5874:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_pub’:
+SWIG/_m2crypto_wrap.c:5882:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_priv’:
+SWIG/_m2crypto_wrap.c:5890:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_e’:
+SWIG/_m2crypto_wrap.c:5999:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_n’:
+SWIG/_m2crypto_wrap.c:6007:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6334:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6349:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:6353:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_p’:
+SWIG/_m2crypto_wrap.c:6391:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_q’:
+SWIG/_m2crypto_wrap.c:6399:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_g’:
+SWIG/_m2crypto_wrap.c:6407:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_pub’:
+SWIG/_m2crypto_wrap.c:6415:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_priv’:
+SWIG/_m2crypto_wrap.c:6423:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_key’:
+SWIG/_m2crypto_wrap.c:6670:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6674:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_keylen’:
+SWIG/_m2crypto_wrap.c:6678:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7464:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8187:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:8191:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+At top level:
+SWIG/_m2crypto_wrap.c:4187:13: warning: ‘lock_count’ defined but not used [-Wunused-variable]
+static long lock_count[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~
+SWIG/_m2crypto_wrap.c:4186:27: warning: ‘lock_cs’ defined but not used [-Wunused-variable]
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~
+error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
+
+Failed building wheel for m2crypto
+Running setup.py clean for m2crypto
+Failed to build m2crypto
+Installing collected packages: m2crypto
+Found existing installation: M2Crypto 0.26.2
+Uninstalling M2Crypto-0.26.2:
+Successfully uninstalled M2Crypto-0.26.2
+Running setup.py install for m2crypto ... error
+Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-cWZrMo-record/install-record.txt --single-version-externally-managed --compile:
+running install
+running build
+running build_py
+creating build
+creating build/lib.linux-x86_64-2.7
+creating build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/threading.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EC.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Rand.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/init.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EVP.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/X509.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/util.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BN.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/callback.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BIO.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Engine.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DH.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Err.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RC4.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+creating build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+creating build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKeyRing.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/constants.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKey.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/packet.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+running build_ext
+building 'M2Crypto.__m2crypto' extension
+swigging SWIG/m2crypto.i to SWIG/m2crypto_wrap.c
+swig -python -D__x86_64 -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -includeall -modern -builtin -outdir build/lib.linux-x86_64-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:152: Warning 305: Bad constant value (ignored).
+/usr/include/x86_64-linux-gnu/bits/wchar.h:38: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+/usr/include/stdint.h:250: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+SWIG/_bio.i:64: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rand.i:21: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_evp.i:169: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dh.i:36: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rsa.i:43: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dsa.i:31: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:241: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:242: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_x509.i:323: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_util.i:11: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ec.i:111: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_engine.i:168: Warning 454: Setting a pointer/reference variable may leak memory.
+creating build/temp.linux-x86_64-2.7
+creating build/temp.linux-x86_64-2.7/SWIG
+x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-DmWv1o/python2.7-2.7.14=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -I/tmp/pip-build-cIFksT/m2crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-2.7/SWIG/_m2crypto_wrap.o -DTHREADING
+SWIG/_m2crypto_wrap.c:4186:35: error: ‘CRYPTO_NUM_LOCKS’ undeclared here (not in a function); did you mean ‘CRYPTO_UNLOCK’?
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~~~~~~~
+CRYPTO_UNLOCK
+SWIG/_m2crypto_wrap.c: In function ‘lib_init’:
+SWIG/_m2crypto_wrap.c:4567:5: warning: implicit declaration of function ‘SSLeay_add_all_algorithms’; did you mean ‘SSLeay_add_ssl_algorithms’? [-Wimplicit-function-declaration]
+SSLeay_add_all_algorithms();
+^~~~~~~~~~~~~~~~~~~~~~~~~
+SSLeay_add_ssl_algorithms
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand’:
+SWIG/_m2crypto_wrap.c:4971:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:4975:5: warning: implicit declaration of function ‘BN_init’; did you mean ‘bio_init’? [-Wimplicit-function-declaration]
+BN_init(&rnd);
+^~~~~~~
+bio_init
+SWIG/_m2crypto_wrap.c:4971:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand_range’:
+SWIG/_m2crypto_wrap.c:5000:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:5000:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+SWIG/_m2crypto_wrap.c: In function ‘rand_pseudo_bytes’:
+SWIG/_m2crypto_wrap.c:5131:5: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
+ret = RAND_pseudo_bytes(blob, n);
+^~~
+In file included from /usr/include/openssl/crypto.h:32:0,
+from /usr/include/openssl/bio.h:20,
+from /usr/include/openssl/err.h:21,
+from SWIG/_m2crypto_wrap.c:3829:
+/usr/include/openssl/rand.h:47:1: note: declared here
+DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
+^
+SWIG/_m2crypto_wrap.c: In function ‘digest_final’:
+SWIG/_m2crypto_wrap.c:5249:34: error: dereferencing pointer to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->digest->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_new’:
+SWIG/_m2crypto_wrap.c:5266:49: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(ctx = (HMAC_CTX *)PyMem_Malloc(sizeof(HMAC_CTX)))) {
+^~~~~~~~
+SWIG/_m2crypto_wrap.c:5270:5: warning: implicit declaration of function ‘HMAC_CTX_init’; did you mean ‘HMAC_CTX_new’? [-Wimplicit-function-declaration]
+HMAC_CTX_init(ctx);
+^~~~~~~~~~~~~
+HMAC_CTX_new
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_free’:
+SWIG/_m2crypto_wrap.c:5275:5: warning: implicit declaration of function ‘HMAC_CTX_cleanup’; did you mean ‘HMAC_CTX_get_md’? [-Wimplicit-function-declaration]
+HMAC_CTX_cleanup(ctx);
+^~~~~~~~~~~~~~~~
+HMAC_CTX_get_md
+SWIG/_m2crypto_wrap.c: In function ‘hmac_init’:
+SWIG/_m2crypto_wrap.c:5286:5: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
+if (!HMAC_Init(ctx, kbuf, klen, md)) {
+^~
+In file included from /usr/include/openssl/hmac.h:13:0,
+from /usr/include/openssl/ssl.h:56,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/hmac.h:28:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
+^
+SWIG/_m2crypto_wrap.c: In function ‘hmac_final’:
+SWIG/_m2crypto_wrap.c:5314:34: error: dereferencing pointer to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->md->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_ctx_new’:
+SWIG/_m2crypto_wrap.c:5353:55: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(ctx = (EVP_CIPHER_CTX *)PyMem_Malloc(sizeof(EVP_CIPHER_CTX)))) {
+^~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_final’:
+SWIG/_m2crypto_wrap.c:5434:34: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(obuf = PyMem_Malloc(ctx->cipher->block_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘pkey_get_modulus’:
+SWIG/_m2crypto_wrap.c:5582:17: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
+switch (pkey->type) {
+^~
+SWIG/_m2crypto_wrap.c:5593:35: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
+if (!BN_print(bio, rsa->n)) {
+^~
+SWIG/_m2crypto_wrap.c:5618:35: error: dereferencing pointer to incomplete type ‘DSA {aka struct dsa_st}’
+if (!BN_print(bio, dsa->pub_key)) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dh_generate_parameters’:
+SWIG/_m2crypto_wrap.c:5815:5: warning: ‘DH_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dh = DH_generate_parameters(plen, g, gendh_callback, (void *)pyfunc);
+^~
+In file included from /usr/include/openssl/bn.h:31:0,
+from /usr/include/openssl/asn1.h:24,
+from /usr/include/openssl/dh.h:18,
+from SWIG/_m2crypto_wrap.c:4243:
+/usr/include/openssl/dh.h:135:1: note: declared here
+DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5861:12: error: dereferencing pointer to incomplete type ‘DH {aka struct dh_st}’
+if (!dh->p) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘rsa_generate_key’:
+SWIG/_m2crypto_wrap.c:6319:5: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
+rsa = RSA_generate_key(bits, e, genrsa_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/rsa.h:13:0,
+from SWIG/_m2crypto_wrap.c:4246:
+/usr/include/openssl/rsa.h:193:1: note: declared here
+DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6348:29: error: dereferencing pointer to incomplete type ‘DSA_SIG {aka struct DSA_SIG_st}’
+return bn_to_mpi(dsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dsa_generate_parameters’:
+SWIG/_m2crypto_wrap.c:6378:5: warning: ‘DSA_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, genparam_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/dsa.h:28:0,
+from /usr/include/openssl/x509.h:32,
+from /usr/include/openssl/ssl.h:50,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/dsa.h:122:1: note: declared here
+DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
+^
+SWIG/_m2crypto_wrap.c: In function ‘sk_ssl_cipher_value’:
+SWIG/_m2crypto_wrap.c:7284:12: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
+return sk_SSL_CIPHER_value(stack, idx);
+^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7463:43: error: dereferencing pointer to incomplete type ‘X509_NAME {aka struct X509_name_st}’
+return PyString_FromStringAndSize(name->bytes->data, name->bytes->length);
+^~
+SWIG/_m2crypto_wrap.c: At top level:
+SWIG/_m2crypto_wrap.c:7523:2: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
+x509v3_lhash() {
+^~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509v3_lhash’:
+SWIG/_m2crypto_wrap.c:7524:12: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
+return lh_new(NULL, NULL); / Should probably be lh_CONF_VALUE_new but won't compile. */
+^~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘make_stack_from_der_sequence’:
+SWIG/_m2crypto_wrap.c:7640:13: warning: implicit declaration of function ‘ASN1_seq_unpack_X509’; did you mean ‘ASN1_item_unpack’? [-Wimplicit-function-declaration]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^~~~~~~~~~~~~~~~~~~~
+ASN1_item_unpack
+SWIG/_m2crypto_wrap.c:7640:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^
+SWIG/_m2crypto_wrap.c: In function ‘get_der_encoding_stack’:
+SWIG/_m2crypto_wrap.c:7656:16: warning: implicit declaration of function ‘ASN1_seq_pack_X509’; did you mean ‘ASN1_item_pack’? [-Wimplicit-function-declaration]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^~~~~~~~~~~~~~~~~~
+ASN1_item_pack
+SWIG/_m2crypto_wrap.c:7656:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8186:31: error: dereferencing pointer to incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
+return bn_to_mpi(ecdsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_sslv2_method’:
+SWIG/_m2crypto_wrap.c:18315:26: warning: implicit declaration of function ‘SSLv2_method’; did you mean ‘SSLv23_method’? [-Wimplicit-function-declaration]
+result = (SSL_METHOD *)SSLv2_method();
+^~~~~~~~~~~~
+SSLv23_method
+SWIG/_m2crypto_wrap.c:18315:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (SSL_METHOD *)SSLv2_method();
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_tlsv1_method’:
+SWIG/_m2crypto_wrap.c:18341:3: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
+result = (SSL_METHOD *)TLSv1_method();
+^~~~~~
+In file included from /usr/include/openssl/ct.h:13:0,
+from /usr/include/openssl/ssl.h:61,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/ssl.h:1627:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur const SSL_METHOD TLSv1_method(void)) / TLSv1.0 */
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_c2i_asn1_object’:
+SWIG/_m2crypto_wrap.c:25775:27: warning: implicit declaration of function ‘c2i_ASN1_OBJECT’; did you mean ‘d2i_ASN1_OBJECT’? [-Wimplicit-function-declaration]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^~~~~~~~~~~~~~~
+d2i_ASN1_OBJECT
+SWIG/_m2crypto_wrap.c:25775:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^
+SWIG/_m2crypto_wrap.c: In function ‘init__m2crypto’:
+SWIG/_m2crypto_wrap.c:31639:79: warning: implicit declaration of function ‘SWIG_From_wchar_t’; did you mean ‘SWIG_FromCharPtr’? [-Wimplicit-function-declaration]
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~~~~~~~
+SWIG_FromCharPtr
+SWIG/_m2crypto_wrap.c:31639:120: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31639:119: error: ‘L’ undeclared (first use in this function)
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:119: note: each undeclared identifier is reported only once for each function it appears in
+SWIG/_m2crypto_wrap.c:31640:3: error: expected ‘)’ before ‘SWIG_Python_SetConstant’
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MIN",SWIG_From_int((int)((-(0x7fffffff+L'\0') -1))));
+^~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31691:118: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31996:1: error: expected declaration or statement at end of input
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5866:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_g’:
+SWIG/_m2crypto_wrap.c:5874:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_pub’:
+SWIG/_m2crypto_wrap.c:5882:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_priv’:
+SWIG/_m2crypto_wrap.c:5890:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_e’:
+SWIG/_m2crypto_wrap.c:5999:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_n’:
+SWIG/_m2crypto_wrap.c:6007:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6334:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6349:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:6353:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_p’:
+SWIG/_m2crypto_wrap.c:6391:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_q’:
+SWIG/_m2crypto_wrap.c:6399:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_g’:
+SWIG/_m2crypto_wrap.c:6407:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_pub’:
+SWIG/_m2crypto_wrap.c:6415:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_priv’:
+SWIG/_m2crypto_wrap.c:6423:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_key’:
+SWIG/_m2crypto_wrap.c:6670:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6674:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_keylen’:
+SWIG/_m2crypto_wrap.c:6678:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7464:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8187:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:8191:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+At top level:
+SWIG/_m2crypto_wrap.c:4187:13: warning: ‘lock_count’ defined but not used [-Wunused-variable]
+static long lock_count[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~
+SWIG/_m2crypto_wrap.c:4186:27: warning: ‘lock_cs’ defined but not used [-Wunused-variable]
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~
+error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
+
+----------------------------------------
+
+Rolling back uninstall of M2Crypto
+
+ Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-cWZrMo-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-cIFksT/m2crypto/
+```
\ No newline at end of file
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_import_issues.py b/tests/test_import_issues.py
new file mode 100644
index 0000000..d6b2dbc
--- /dev/null
+++ b/tests/test_import_issues.py
@@ -0,0 +1,52 @@
+import os.path
+import textwrap
+import unittest
+
+from import_issues import MAX_SIZE_COMMENT, split_long_str
+
+
+class TestStringSplitting(unittest.TestCase):
+ maxDiff = None
+
+ def setUp(self):
+ __cur_dir = os.path.abspath(os.path.dirname(__file__))
+ with open(os.path.join(__cur_dir, "209_description.txt")) as inf:
+ self.long_str = inf.read()
+
+ def test_one_line(self):
+ in_str = "Testing string."
+ split_str = split_long_str(in_str, 100)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 1)
+ self.assertEqual(in_str, "".join(split_str))
+
+ def test_short_str(self):
+ in_str = textwrap.dedent(
+ """\
+ Reader, I married him.
+ A quiet wedding we had: he and I, the parson and clerk, were alone present.
+ When we got back from church, I went into the kitchen of the manor-house, where Mary was cooking the dinner and John cleaning the knives, and I said—
+
+ “Mary, I have been married to Mr. Rochester this morning.”
+
+ The housekeeper and her husband were both of that decent phlegmatic order of people, to whom one may at any time safely communicate a remarkable piece of news without incurring the danger of having one’s ears pierced by some shrill ejaculation, and subsequently stunned by a torrent of wordy wonderment.
+ Mary did look up, and she did stare at me: the ladle with which she was basting a pair of chickens roasting at the fire, did for some three minutes hang suspended in air; and for the same space of time John’s knives also had rest from the polishing process: but Mary, bending again over the roast, said only—
+
+ “Have you, Miss? Well, for sure!”
+
+ """
+ )
+ split_str = split_long_str(in_str, 100)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 6)
+ self.assertEqual(in_str, "".join(split_str))
+
+ def test_long_str(self):
+ split_str = split_long_str(self.long_str, MAX_SIZE_COMMENT)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 4)
+ self.assertEqual(self.long_str, "".join(split_str))
+
+
+if __name__ == "__main__":
+ unittest.main()
--
2.45.1
[PATCH lazygl2shrt v2 15/15] fix: split too long descriptions or comments and send them separately
Hi Matěj,
Very belatedly, thank you for this patchset! It's great to have a
more reliable method than email, and to have labels applied and long
messages split automatically. And to have tests.
I've applied this now. I did some minor follow-up work, mostly to
make the code more strict, but also to restore label caching and fix a
corner case of using --mode=email with split messages together with
skipped confidential tickets. (I skipped the "Bit reformatting"
commit, minor personal preference for the existing state of things
there.)
So, thanks again. Can we add a copyright line for you? You've done
plenty of work on this and you should get credit.
Cheers,
Bryan
On Sat Jul 20, 2024 at 6:01 AM CEST, Bryan Gardiner wrote:
> So, thanks again. Can we add a copyright line for you? You've done> plenty of work on this and you should get credit.
Sure, go ahead
Signed-off: Matěj Cepl <mcepl@cepl.eu>
Best,
Matěj
--
http://matej.ceplovi.cz/blog/, @mcepl@floss.social
GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8
Afraid to die alone?
Become a bus driver.
-- alleged easter egg in notepad++