in reply to Re^2: cURL And XML breaking the install of a previosuly fine script
in thread cURL And XML breaking the install of a previosuly fine script

Curl.xs is contained in the distribution directory, see here. You should find it when you unpack the distribution tarball.

I'm sure that if you review your SLA you have with the module author that you will find there the terms for approriate inclusion of patches. Most likely, you will also find there where and how to reach the authors hotline where you get support appropriate to your level of SLA.

Maybe you're unaware that most of CPANs authors work on a voluntary basis and don't get paid, so your expectation that some fix be released within some specified frame of time seems a bit unreasonable. Usually, authors are receptive to some kind words though, so maybe you can ask the author how you could help them, or submit the changes as described in prose in the ticket as a pull request.

  • Comment on Re^3: cURL And XML breaking the install of a previosuly fine script
  • Download Code

Replies are listed 'Best First'.
Re^4: cURL And XML breaking the install of a previosuly fine script
by wintermute115 (Acolyte) on Apr 20, 2017 at 14:16 UTC

    OK, so I'd have to download the tarball from cpan.org, rather than using cpan / apt-get to install them? That's something I don't think I've tried before, but I think I can give it a go when I get home.

    I think I'm a half-way decent coder, but I know very little about the internals or development of perl itself. I certainly don't have any idea if I have an SLA with module authors, let alone where it is or what it might say. I don't feel that I'm competent to patch the source code, and am only prepared to try this because it seems very simple. I certainly don't know how I would go about submitting a pull request. And I don't think those should be requirements for installing a module.

    I don't feel unjustified in being frustrated that I've spent hours banging my head against a brick wall, when seems to be something that the maintainer could have fixed relatively quickly in the last six months. I'm not suggesting that all bugs need to be fixed within a week or anything like that, but if you have a major issue that literally stops the module from being installed, and it seems to be a relatively simple fix, and they can't find the time to deal with that within six months, then perhaps it needs to be considered abandoned and someone else take over. Perhaps that is unreasonable, I didn't get a lot of sleep last night, and my mood isn't the best. I'm trying to be fair, and I beg your indulgence if it's not coming off that way; I'm sure I'll be less short tomorrow.

    And before someone suggests it, no I'm not volunteering. I don't have the skills or the understanding or the talent to even begin to take on such a project.

      Do as I did here:

      cpanm --look Net::Curl::Easy

      It will download the module to a temporary directory, then drop you into a shell. You can make your changes then install with:

      cpanm -v .

      Note that the -v is simply the verbose flag, so it prints to screen what it's doing.

      If you're going to build things from source it's pretty much essential that you check for open bugs. Your OS package management may already have this module bundled up for you. With respect it's unreasonable to expect this module to be abandoned, and while I understand that you're frustrated/tired/grumpy, not everyone will encounter this problem. Your OS upgrade may have changed the compiler/build tools. For me this module installs via cpanm without issue. So don't be angry that you've spent a long time trying to get this working. Embrace the fact that you know how to deal with the situation and in future that you will check the open issues for such things when building from source.

        OK, so I did that, and I get the following output:

        $ cpanm -v . cpanm (App::cpanminus) 1.7043 on perl 5.018004 built for x86_64-linux Work directory is /home/ross/.cpanm/work/1492717489.7595 You have make /usr/bin/make You have LWP 6.26 You have /bin/tar: tar (GNU tar) 1.29 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gp +l.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. You have /usr/bin/unzip --> Working on . Entering /home/ross/.cpanm/work/1492717361.7540/Net-Curl-0.37 Checking configure dependencies from META.json Checking if you have ExtUtils::MakeMaker::Config 0 ... Yes (6.66) Running Makefile.PL Configuring Net-Curl-0.37 ... Found libcurl version 7.52.1 Reading /usr/include/x86_64-linux-gnu/curl/curl.h (cc -E -I/usr/includ +e/x86_64-linux-gnu /usr/include/x86_64-linux-gnu/curl/curl.h) Reading /usr/include/x86_64-linux-gnu/curl/multi.h (cc -E -I/usr/inclu +de/x86_64-linux-gnu /usr/include/x86_64-linux-gnu/curl/multi.h) CURLE_HTTP2_STREAM unexpected CURLE_SSL_INVALIDCERTSTATUS unexpected CURLE_WEIRD_SERVER_REPLY unexpected CURLFORM_CONTENTLEN unexpected CURLINFO_ACTIVESOCKET unexpected CURLINFO_HTTP_VERSION unexpected CURLINFO_PROTOCOL unexpected CURLINFO_PROXY_SSL_VERIFYRESULT unexpected CURLINFO_SCHEME unexpected CURLINFO_SOCKET unexpected CURLINFO_TLS_SSL_PTR unexpected CURLMOPT_PUSHDATA unexpected CURLMOPT_PUSHFUNCTION unexpected CURLOPTTYPE_STRINGPOINT unexpected CURLOPT_CONNECT_TO unexpected CURLOPT_DEFAULT_PROTOCOL unexpected CURLOPT_KEEP_SENDING_ON_ERROR unexpected CURLOPT_PATH_AS_IS unexpected CURLOPT_PIPEWAIT unexpected CURLOPT_PRE_PROXY unexpected CURLOPT_PROXY_CAINFO unexpected CURLOPT_PROXY_CAPATH unexpected CURLOPT_PROXY_CRLFILE unexpected CURLOPT_PROXY_KEYPASSWD unexpected CURLOPT_PROXY_PINNEDPUBLICKEY unexpected CURLOPT_PROXY_SERVICE_NAME unexpected CURLOPT_PROXY_SSLCERT unexpected CURLOPT_PROXY_SSLCERTTYPE unexpected CURLOPT_PROXY_SSLKEY unexpected CURLOPT_PROXY_SSLKEYTYPE unexpected CURLOPT_PROXY_SSLVERSION unexpected CURLOPT_PROXY_SSL_CIPHER_LIST unexpected CURLOPT_PROXY_SSL_OPTIONS unexpected CURLOPT_PROXY_SSL_VERIFYHOST unexpected CURLOPT_PROXY_SSL_VERIFYPEER unexpected CURLOPT_PROXY_TLSAUTH_PASSWORD unexpected CURLOPT_PROXY_TLSAUTH_TYPE unexpected CURLOPT_PROXY_TLSAUTH_USERNAME unexpected CURLOPT_SERVICE_NAME unexpected CURLOPT_SSL_FALSESTART unexpected CURLOPT_SSL_VERIFYSTATUS unexpected CURLOPT_STREAM_DEPENDS unexpected CURLOPT_STREAM_DEPENDS_E unexpected CURLOPT_STREAM_WEIGHT unexpected CURLOPT_TCP_FASTOPEN unexpected CURLOPT_TFTP_NO_OPTIONS unexpected CURLPIPE_HTTP1 unexpected CURLPIPE_MULTIPLEX unexpected CURLPIPE_NOTHING unexpected CURLPROXY_HTTPS unexpected CURLSSLBACKEND_BORINGSSL unexpected CURLSSLBACKEND_LIBRESSL unexpected CURLSSLBACKEND_MBEDTLS unexpected CURLSSLBACKEND_WOLFSSL unexpected CURLSSLOPT_NO_REVOKE unexpected CURL_DID_MEMORY_FUNC_TYPEDEFS unexpected CURL_HTTPPOST_BUFFER unexpected CURL_HTTPPOST_CALLBACK unexpected CURL_HTTPPOST_FILENAME unexpected CURL_HTTPPOST_LARGE unexpected CURL_HTTPPOST_PTRBUFFER unexpected CURL_HTTPPOST_PTRCONTENTS unexpected CURL_HTTPPOST_PTRNAME unexpected CURL_HTTPPOST_READFILE unexpected CURL_HTTP_VERSION_2 unexpected CURL_HTTP_VERSION_2TLS unexpected CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE unexpected CURL_PUSH_DENY unexpected CURL_PUSH_OK unexpected CURL_SSLVERSION_TLSv1_3 unexpected CURL_STRICTER unexpected CURL_VERSION_HTTPS_PROXY unexpected CURL_VERSION_PSL unexpected -> found 788 constants (should be 715) Writing const-defenums-h.inc Writing const-curl-xs.inc Writing const-easy-xs.inc Writing const-form-xs.inc Writing const-multi-xs.inc Writing const-share-xs.inc Writing curl-Easy-c.inc Writing curl-Easy-xs.inc Writing curl-Form-c.inc Writing curl-Form-xs.inc Writing curl-Multi-c.inc Writing curl-Multi-xs.inc Writing curl-Share-c.inc Writing curl-Share-xs.inc Writing lib/Net/Curl/examples.pod <- examples/01-curl-transport.pl <- examples/02-multi-simple.pl <- examples/03-multi-event.pl <- examples/04-share-threads.pl <- examples/05-irssi-downloader.pl Writing lib/Net/Curl/Compat.pm Checking if your kit is complete... Looks good Writing Makefile for Net::Curl Wide character in print at /home/ross/perl5/perlbrew/perls/perl-5.18.4 +/lib/5.18.4/ExtUtils/MakeMaker.pm line 1034. Wide character in print at /home/ross/perl5/perlbrew/perls/perl-5.18.4 +/lib/5.18.4/ExtUtils/MakeMaker.pm line 1034. Wide character in print at /home/ross/perl5/perlbrew/perls/perl-5.18.4 +/lib/5.18.4/ExtUtils/MakeMaker.pm line 1034. Wide character in print at /home/ross/perl5/perlbrew/perls/perl-5.18.4 +/lib/5.18.4/ExtUtils/MakeMaker.pm line 1034. Writing MYMETA.yml and MYMETA.json OK Checking dependencies from MYMETA.json ... Checking if you have overload 0 ... Yes (1.22) Checking if you have Carp 0 ... Yes (1.29) Checking if you have DynaLoader 0 ... Yes (1.18) Checking if you have Exporter 0 ... Yes (5.68) Checking if you have warnings 0 ... Yes (1.18) Checking if you have strict 0 ... Yes (1.07) Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.66) Building and testing Net-Curl-0.37 ... cp lib/Net/Curl/Compat.pm blib/ +lib/Net/Curl/Compat.pm cp lib/Net/Curl/Multi.pm blib/lib/Net/Curl/Multi.pm cp lib/Net/Curl/examples.pod blib/lib/Net/Curl/examples.pod cp lib/Net/Curl.pm blib/lib/Net/Curl.pm cp lib/Net/Curl/Share.pm blib/lib/Net/Curl/Share.pm cp lib/Net/Curl/Form.pm blib/lib/Net/Curl/Form.pm cp lib/Net/Curl/Easy.pm blib/lib/Net/Curl/Easy.pm /home/ross/perl5/perlbrew/perls/perl-5.18.4/bin/perl /home/ross/perl5/ +perlbrew/perls/perl-5.18.4/lib/5.18.4/ExtUtils/xsubpp -typemap /home +/ross/perl5/perlbrew/perls/perl-5.18.4/lib/5.18.4/ExtUtils/typemap -t +ypemap typemap Curl.xs > Curl.xsc && mv Curl.xsc Curl.c cc -c -Wall -I/usr/include/x86_64-linux-gnu -O2 -DVERSION=\"0.37\" + -DXS_VERSION=\"0.37\" -fPIC "-I/home/ross/perl5/perlbrew/perls/perl- +5.18.4/lib/5.18.4/x86_64-linux/CORE" Curl.c Curl.xs: In function ‘perl_curl_constant_add’: Curl.xs:388:0: warning: ignoring #pragma clang diagnostic [-Wunknown-p +ragmas] #pragma clang diagnostic push Curl.xs:389:0: warning: ignoring #pragma clang diagnostic [-Wunknown-p +ragmas] #pragma clang diagnostic ignored "-Wunused-value" Curl.xs:391:0: warning: ignoring #pragma clang diagnostic [-Wunknown-p +ragmas] #pragma clang diagnostic pop ./curl-Easy-xs.inc: In function ‘XS_Net__Curl__Easy_pause’: ./curl-Easy-xs.inc:493:26: warning: passing argument 1 of ‘curl_easy_p +ause’ from incompatible pointer type [-Wincompatible-pointer-types] ret = curl_easy_pause( easy, bitmask ); ^~~~ In file included from Curl.xs:21:0: /usr/include/x86_64-linux-gnu/curl/curl.h:2491:22: note: expected ‘CUR +L * {aka struct Curl_easy *}’ but argument is of type ‘Net__Curl__Eas +y {aka struct perl_curl_easy_s *}’ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); ^~~~~~~~~~~~~~~ Running Mkbootstrap for Net::Curl () chmod 644 Curl.bs rm -f blib/arch/auto/Net/Curl/Curl.so LD_RUN_PATH="/usr/lib/x86_64-linux-gnu" cc -shared -O2 -L/usr/local/l +ib -fstack-protector Curl.o -o blib/arch/auto/Net/Curl/Curl.so \ -lcurl \ chmod 755 blib/arch/auto/Net/Curl/Curl.so cp Curl.bs blib/arch/auto/Net/Curl/Curl.bs chmod 644 blib/arch/auto/Net/Curl/Curl.bs Manifying blib/man3/Net::Curl::examples.3 Manifying blib/man3/Net::Curl::Share.3 Manifying blib/man3/Net::Curl.3 Manifying blib/man3/Net::Curl::Easy.3 Manifying blib/man3/Net::Curl::Multi.3 Manifying blib/man3/Net::Curl::Compat.3 Manifying blib/man3/Net::Curl::Form.3 PERL_DL_NONLAZY=1 /home/ross/perl5/perlbrew/perls/perl-5.18.4/bin/perl + "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/ar +ch')" t/*.t t/00-info.t ................................ # libcurl # version(): # libcurl/7.52.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/0.16 libpsl/ +0.17.0 (+libidn2/0.16) librtmp/2.3 # version_info(): # {age} = 3; # {ares_num} = 0; # {features} = # | CURL_VERSION_IPV6 (1<<0) # | CURL_VERSION_SSL (1<<2) # | CURL_VERSION_LIBZ (1<<3) # | CURL_VERSION_NTLM (1<<4) # | CURL_VERSION_ASYNCHDNS (1<<7) # | CURL_VERSION_SPNEGO (1<<8) # | CURL_VERSION_LARGEFILE (1<<9) # | CURL_VERSION_IDN (1<<10) # | CURL_VERSION_TLSAUTH_SRP (1<<14) # | CURL_VERSION_NTLM_WB (1<<15) # | CURL_VERSION_GSSAPI (1<<17) # | CURL_VERSION_KERBEROS5 (1<<18) # | CURL_VERSION_UNIX_SOCKETS (1<<19) # | CURL_VERSION_PSL (1<<20) # | CURL_VERSION_HTTPS_PROXY (1<<21); # missing features = # | CURL_VERSION_KERBEROS4 (1<<1) # | CURL_VERSION_GSSNEGOTIATE (1<<5) # | CURL_VERSION_DEBUG (1<<6) # | CURL_VERSION_SSPI (1<<11) # | CURL_VERSION_CONV (1<<12) # | CURL_VERSION_CURLDEBUG (1<<13) # | CURL_VERSION_HTTP2 (1<<16); # {host} = 'x86_64-pc-linux-gnu'; # {iconv_ver_num} = 0; # {libidn} = '0.16'; # {libz_version} = '1.2.11'; # {protocols} = dict, file, ftp, ftps, gopher, http, https, imap +, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smb, smbs, smtp, smtps +, telnet, tftp; # {ssl_version} = 'OpenSSL/1.0.2g'; # {ssl_version_num} = 0; # {version} = '7.52.1'; # {version_num} = 0x073401; # build version: # LIBCURL_COPYRIGHT = '1996 - 2016 Daniel Stenberg, <daniel@haxx +.se>.' # LIBCURL_VERSION = '7.52.1' # LIBCURL_VERSION_NUM = 0x073401 # LIBCURL_VERSION_MAJOR = 7 # LIBCURL_VERSION_MINOR = 52 # LIBCURL_VERSION_PATCH = 1 # LIBCURL_TIMESTAMP = 'Fri Dec 23 07:22:31 UTC 2016' t/00-info.t ................................ ok t/01-constants.t ........................... ok t/02-methods.t ............................. ok t/03-cookies.t ............................. ok t/40-callback-opensocket.t ................. ok t/50-crash-lastref.t ....................... ok t/51-crash-destroy-with-callbacks.t ........ skipped: This test requir +es reliable Internet connection. Set AUTOMATED_TESTING env variable t +o run this test. t/52-alter-base.t .......................... ok t/53-crash-destroy-with-callbacks-multi.t .. skipped: This test requir +es reliable Internet connection. Set AUTOMATED_TESTING env variable t +o run this test. t/54-crash-getinfo-slist.t ................. ok t/55-crash-reset.t ......................... ok t/60-multi-wait.t .......................... ok t/70-escape-unescape.t ..................... ok t/96-leak.t ................................ skipped: Devel::Leak requ +ired t/99-symbols.t ............................. skipped: Author test. Se +t $ENV{AUTHOR_TESTING} to a true value to run. t/author-critic.t .......................... skipped: these tests are +for testing by the author t/compat-00constants.t ..................... ok t/compat-01basic.t ......................... ok t/compat-02callbacks.t ..................... ok t/compat-04abort-test.t .................... ok t/compat-05progress.t ...................... ok t/compat-08ssl.t ........................... skipped: Not that useful +test. Set $ENV{EXTENDED_TESTING} to a true value to run. t/compat-09times.t ......................... 1/17 # DNS LOOKUP time is + 3.6e-05 @ linux t/compat-09times.t ......................... ok t/compat-10errbuf.t ........................ ok t/compat-14duphandle.t ..................... ok t/compat-15duphandle-callback.t ............ ok t/compat-18twinhandles.t ................... ok t/compat-19multi.t ......................... ok t/compat-20undefined_subs.t ................ ok t/compat-21write-to-scalar.t ............... ok t/old-01basic.t ............................ ok t/old-02-form.t ............................ ok t/old-02callbacks.t ........................ ok t/old-04abort-test.t ....................... ok t/old-05progress.t ......................... ok t/old-06http-post.t ........................ skipped: Not performing h +ttp POST/upload tests t/old-07ftp-upload.t ....................... skipped: Not performing f +tp upload tests t/old-08ssl.t .............................. skipped: Not that useful +test. Set $ENV{EXTENDED_TESTING} to a true value to run. t/old-09times.t ............................ 1/17 # DNS LOOKUP time is + 4.1e-05 @ linux t/old-09times.t ............................ ok t/old-10errbuf.t ........................... ok t/old-14duphandle.t ........................ ok t/old-15duphandle-callback.t ............... ok t/old-16formpost.t ......................... skipped: Not performing P +OST t/old-17slist.t ............................ skipped: Not performing p +rintenv cgi tests t/old-18twinhandles.t ...................... ok t/old-19multi.t ............................ ok t/old-20undefined_subs.t ................... ok t/old-21write-to-scalar.t .................. ok t/old-22sendrecv.t ......................... 1/7 # Failed test 'no more data to read' # at t/old-22sendrecv.t line 64. # Looks like you failed 1 test of 7. t/old-22sendrecv.t ......................... Dubious, test returned 1 +(wstat 256, 0x100) Failed 1/7 subtests t/old-23socket-action.t .................... ok t/old-24-multi-refcount.t .................. ok t/old-25xrefinfo.t ......................... ok t/release-consistent-version.t ............. skipped: these tests are +for release candidate testing t/release-cpan-changes.t ................... skipped: these tests are +for release candidate testing t/release-dist-manifest.t .................. skipped: these tests are +for release candidate testing t/release-distmeta.t ....................... skipped: these tests are +for release candidate testing t/release-kwalitee.t ....................... skipped: these tests are +for release candidate testing t/release-minimum-version.t ................ skipped: these tests are +for release candidate testing t/release-mojibake.t ....................... skipped: these tests are +for release candidate testing t/release-pod-coverage.t ................... skipped: these tests are +for release candidate testing t/release-pod-linkcheck.t .................. skipped: these tests are +for release candidate testing t/release-pod-syntax.t ..................... skipped: these tests are +for release candidate testing t/release-portability.t .................... skipped: these tests are +for release candidate testing t/release-test-version.t ................... skipped: these tests are +for release candidate testing t/release-unused-vars.t .................... skipped: these tests are +for release candidate testing Test Summary Report ------------------- t/old-22sendrecv.t (Wstat: 256 Tests: 7 Failed: +1) Failed test: 7 Non-zero exit status: 1 Files=65, Tests=3351, 5 wallclock secs ( 0.25 usr 0.04 sys + 3.12 c +usr 0.71 csys = 4.12 CPU) Result: FAIL Failed 1/65 test programs. 1/3351 subtests failed. Makefile:1096: recipe for target 'test_dynamic' failed make: *** [test_dynamic] Error 255 FAIL ! Installing . failed. See /home/ross/.cpanm/work/1492717489.7595/buil +d.log for details. Retry with --force to force install it.
        I re-ran it with --force and it appears to install; when I try and install it again via cpan it tells me:
        $ cpan install Net::Curl::Easy Reading '/home/ross/.cpan/Metadata' Database was generated on Wed, 19 Apr 2017 22:53:51 GMT Net::Curl::Easy is up to date (0.37).
        But If I try and run the script, I still get:
        $ ./scripts/podcasts/podcasts.pl Can't locate Net/Curl/Easy.pm in @INC (you may need to install the Net +::Curl::Easy module) (@INC contains: /etc/perl /usr/local/lib/x86_64- +linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-li +nux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5. +24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linu +x-gnu/perl-base) at ./scripts/podcasts/podcasts.pl line 11. BEGIN failed--compilation aborted at ./scripts/podcasts/podcasts.pl li +ne 11.
        Which implies that cpanm didn't install it to the right place?
        $ locate Easy.pm /home/ross/.cpan/sources/authors/id/S/SY/SYP/Net-Curl-0.37/blib/lib/Ne +t/Curl/Easy.pm /home/ross/.cpan/sources/authors/id/S/SY/SYP/Net-Curl-0.37/inc/Compat/ +WWW/Curl/Easy.pm /home/ross/.cpan/sources/authors/id/S/SY/SYP/Net-Curl-0.37/lib/Net/Cur +l/Easy.pm /usr/lib/x86_64-linux-gnu/perl5/5.24/WWW/Curl/Easy.pm
        Those are not in the path. If I copy over Net-Curl-0.37/lib/Net/ to /usr/share/perl5 I get the following message:
        $ ~/scripts/podcasts/podcasts.pl -l Can't locate loadable object for module Net::Curl in @INC (@INC contai +ns: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/ +share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/per +l5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/loca +l/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/pe +rl5/Net/Curl.pm line 33. BEGIN failed--compilation aborted at /usr/share/perl5/Net/Curl.pm line + 33. Compilation failed in require at /usr/share/perl5/Net/Curl/Easy.pm lin +e 5. BEGIN failed--compilation aborted at /usr/share/perl5/Net/Curl/Easy.pm + line 5. Compilation failed in require at /home/ross/scripts/podcasts/podcasts. +pl line 11. BEGIN failed--compilation aborted at /home/ross/scripts/podcasts/podca +sts.pl line 11.

        Which seems to be suggesting that I need to copy something else as well, but I don't know what or where to put it...