Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: installing WWW::Curl::Easy perl module in OS X 10.12.6

by syphilis (Chancellor)
on Feb 08, 2018 at 01:04 UTC ( #1208670=note: print w/replies, xml ) Need Help??


in reply to installing WWW::Curl::Easy perl module in OS X 10.12.6

/usr/include/AvailabilityInternal.h:22938:10: error: unterminated conditional directive

The syntax of /usr/include/AvailabilityInternal.h is illegal, at least in the eyes of your C compiler.
For every "#if" there needs to be a corresponding "#endif", and the C pre-processor hasn't found those requisite occurrences of "#endif". (All other errors are probably a consequence of this.)

I suppose one could fix the offending file, but if you're using the system perl (as I suspect you are) then I believe that, instead of using cpan, it's recommended that you install modules using your system's package manager.
/usr/include/AvailabilityInternal.h wouldn't even be looked at if you were to install WWW::Curl::Easy using the package manager.

Update: See
https://stackoverflow.com/questions/42031921/unterminated-unconditional-directive-error-when-preprocessing-c-code
if you wish to persevere with a cpanp installation.

Cheers,
Rob
  • Comment on Re: installing WWW::Curl::Easy perl module in OS X 10.12.6

Replies are listed 'Best First'.
Re^2: installing WWW::Curl::Easy perl module in OS X 10.12.6
by igods (Novice) on Feb 09, 2018 at 19:14 UTC
    Thank you Rob, I got further this time... I verified (and updated) curl and pkg_config in brew:
    ns3:linkrabbit administrator$ brew info curl curl: stable 7.58.0 (bottled), HEAD [keg-only] Get a file from an HTTP, HTTPS or FTP server https://curl.haxx.se/ /usr/local/Cellar/curl/7.51.0 (368 files, 2.6MB) Poured from bottle on 2016-11-21 at 15:29:25 /usr/local/Cellar/curl/7.56.1 (414 files, 3.0MB) Poured from bottle on 2017-11-08 at 11:37:40 /usr/local/Cellar/curl/7.58.0 (415 files, 3MB) Poured from bottle on 2018-02-09 at 10:38:12 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/cu +rl.rb ==> Dependencies Build: pkg-config ✔ Optional: openssl ✔, rtmpdump ✘, libssh2 ✘, c-are +s ✘, libmetalink ✘, nghttp2 ✘ ==> Options --with-c-ares Build with C-Ares async DNS support --with-gssapi Build with GSSAPI/Kerberos authentication support. --with-libmetalink Build with libmetalink support. --with-libssh2 Build with scp and sftp support --with-nghttp2 Build with HTTP/2 support (requires OpenSSL) --with-openssl Build with OpenSSL instead of Secure Transport --with-rtmpdump Build with RTMP support --HEAD Install HEAD version ==> Caveats This formula is keg-only, which means it was not symlinked into /usr/l +ocal, because macOS already provides this software and installing another ve +rsion in parallel can cause all kinds of trouble. If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.bash_profil +e For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/curl/lib CPPFLAGS: -I/usr/local/opt/curl/include For pkg-config to find this software you may need to set: PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig ns3:linkrabbit administrator$
    I believe what I had missed was appending my .bash_profile to be able to find the brew installed curl:
    export PATH="/usr/local/opt/curl/bin:$PATH" export CURL_CONFIG=/usr/local/Cellar/curl/7.58.0/bin/curl-config
    I then attempted again to install the WWW::Curl::Easy module using cpanp... I now encounter different problems (so this is progress, yes?!)
    ns3:linkrabbit administrator$ sudo cpanp -i WWW::Curl::Easy Installing WWW::Curl::Easy (4.17) CPANPLUS::Dist::Build::Constants will be removed from the Perl core di +stribution in the next major release. Please install it from CPAN. It + is being used at /System/Library/Perl/5.18/CPANPLUS/Dist/Build.pm, l +ine 16. [ERROR] MAKE failed: "/usr/bin/perl" "-Iinc" -MExtUtils::Command::MM +-e 'cp_nonempty' -- Curl.bs blib/arch/auto/WWW/Curl/Curl.bs 644 cc -c -I/usr/local/Cellar/curl/7.58.0/include -arch x86_64 -arch i386 + -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-prot +ector -Os -DVERSION=\"4.17\" -DXS_VERSION=\"4.17\" "-I/System/Libr +ary/Perl/5.18/darwin-thread-multi-2level/CORE" Curl.c In file included from Curl.xs:574: ./curlopt-constants.c:19:58: error: non-void function 'constant' shoul +d return a value [-Wreturn-type] if (strEQ(name, "DID_MEMORY_FUNC_TYPEDEFS")) return CURL_D +ID_MEMORY_FUNC_TYPEDEFS; ^ ./curlopt-constants.c:136:49: error: use of undeclared identifier 'CUR +L_STRICTER' if (strEQ(name, "STRICTER")) return CURL_STRICTER; ^ ./curlopt-constants.c:179:56: warning: implicit conversion from 'size_ +t' (aka 'unsigned long') to 'int' changes value from 1844674407370955 +1615 to -1 [-Wconstant-conversion] if (strEQ(name, "ZERO_TERMINATED")) return CURL_ZERO_TERMI +NATED; ~~~~~~ ^~~~~~~~~~~~~~~ +~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:1969:31: note: expan +ded from macro 'CURL_ZERO_TERMINATED' #define CURL_ZERO_TERMINATED ((size_t) -1) ^~~~~~~~~~~ In file included from Curl.xs:574: ./curlopt-constants.c:2145:44: warning: implicit conversion from 'unsi +gned long' to 'int' changes value from 18446744073709551599 to -17 [- +Wconstant-conversion] if (strEQ(name, "ANY")) return CURLAUTH_ANY; ~~~~~~ ^~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:708:32: note: expand +ed from macro 'CURLAUTH_ANY' #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) ^~~~~~~~~~~~~~~~~~~ In file included from Curl.xs:574: ./curlopt-constants.c:2146:48: warning: implicit conversion from 'unsi +gned long' to 'int' changes value from 18446744073709551598 to -18 [- +Wconstant-conversion] if (strEQ(name, "ANYSAFE")) return CURLAUTH_ANYSAFE; ~~~~~~ ^~~~~~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:709:32: note: expand +ed from macro 'CURLAUTH_ANYSAFE' #define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Curl.xs:1100:26: warning: implicit conversion from enumeration type 'C +URLINFO' to different enumeration type 'CURLoption' [-Wenum-conversio +n] curl_easy_setopt(easy, CURLINFO_PRIVATE, NULL); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:2744:68: note: expan +ded from macro 'curl_easy_setopt' #define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt +,param) ~~~~~~~~~~~~~~~~ ^~~ 4 warnings and 2 errors generated. make: *** [Curl.o] Error 1 [ERROR] Unable to create a new distribution object for 'WWW::Curl::Eas +y' -- cannot continue *** Install log written to: /Users/administrator/.cpanplus/install-logs/WWW-Curl-Easy-4.17-15182 +02859.log Error installing 'WWW::Curl::Easy' Problem installing one or more modules ns3:linkrabbit administrator$
    Rob, I'm not sure if I'm reading you right.. are you suggeting that I install WWW::Curl::Easy using brew? I'm not sure how to do that beyond:
    brew install curl

      I tried compiling WWW::Curl::Easy by hand, but came across the same errors:
      [ns3:~/src/WWW-Curl-4.17] administrator% perl Makefile.PL The version is libcurl 7.58.0 Found curl.h in /usr/local/Cellar/curl/7.58.0/include/curl/curl.h In file included from /usr/local/Cellar/curl/7.58.0/include/curl/curl. +h:38: In file included from /usr/local/Cellar/curl/7.58.0/include/curl/syste +m.h:405: In file included from /usr/include/sys/socket.h:81: In file included from /usr/include/Availability.h:190: /usr/include/AvailabilityInternal.h:22938:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_12 ^ /usr/include/AvailabilityInternal.h:22867:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_4 ^ /usr/include/AvailabilityInternal.h:22800:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_3 ^ /usr/include/AvailabilityInternal.h:22737:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11_2 ^ /usr/include/AvailabilityInternal.h:22678:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11 ^ /usr/include/AvailabilityInternal.h:22623:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10_3 ^ /usr/include/AvailabilityInternal.h:22572:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10_2 ^ /usr/include/AvailabilityInternal.h:22525:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10 ^ /usr/include/AvailabilityInternal.h:22482:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9 ^ /usr/include/AvailabilityInternal.h:22443:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 ^ /usr/include/AvailabilityInternal.h:22408:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_7 ^ /usr/include/AvailabilityInternal.h:22377:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_6 ^ /usr/include/AvailabilityInternal.h:22350:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_5 ^ /usr/include/AvailabilityInternal.h:22327:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_4 ^ /usr/include/AvailabilityInternal.h:22308:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_3 ^ /usr/include/AvailabilityInternal.h:22293:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_2 ^ /usr/include/AvailabilityInternal.h:22282:10: error: unterminated cond +itional directive #if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_1 ^ /usr/include/AvailabilityInternal.h:30:2: error: unterminated conditio +nal directive #ifndef __AVAILABILITY_INTERNAL__ ^ In file included from /usr/local/Cellar/curl/7.58.0/include/curl/curl. +h:38: In file included from /usr/local/Cellar/curl/7.58.0/include/curl/syste +m.h:405: In file included from /usr/include/sys/socket.h:81: /usr/include/Availability.h:239:2: error: #else without #if #else ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. Building curlopt-constants.c for your libcurl version Building Easy.pm constants for your libcurl version Building Share.pm constants for your libcurl version Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for WWW::Curl Writing MYMETA.yml and MYMETA.json [ns3:~/src/WWW-Curl-4.17] administrator%
      From what I can tell, this is an issue with the compiler... the reported missing "unterminated conditional directive" is actually there, but indented (seriously?!?! that's a problem?!)
      I went ahead and tried a make, but failed there too:
      [ns3:~/src/WWW-Curl-4.17] administrator% make cp lib/WWW/Curl/Share.pm blib/lib/WWW/Curl/Share.pm cp lib/WWW/Curl.pm blib/lib/WWW/Curl.pm cp lib/WWW/Curl/Multi.pm blib/lib/WWW/Curl/Multi.pm cp lib/WWW/Curl/Easy.pm blib/lib/WWW/Curl/Easy.pm cp lib/WWW/Curl/Form.pm blib/lib/WWW/Curl/Form.pm Running Mkbootstrap for WWW::Curl () chmod 644 "Curl.bs" "/Users/administrator/perl5/perlbrew/perls/perl-5.24.0/bin/perl" "-Iin +c" "/Users/administrator/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/ +ExtUtils/xsubpp" -typemap "/Users/administrator/perl5/perlbrew/perls +/perl-5.24.0/lib/5.24.0/ExtUtils/typemap" -typemap "typemap" Curl.xs + > Curl.xsc && mv Curl.xsc Curl.c cc -c -I/usr/local/Cellar/curl/7.58.0/include -fno-common -DPERL_DARW +IN -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/i +nclude -DPERL_USE_SAFE_PUTENV -O3 -DVERSION=\"4.17\" -DXS_VERSION=\ +"4.17\" "-I/Users/administrator/perl5/perlbrew/perls/perl-5.24.0/lib +/5.24.0/darwin-2level/CORE" Curl.c In file included from Curl.xs:574: ./curlopt-constants.c:19:58: error: non-void function 'constant' shoul +d return a value [-Wreturn-type] if (strEQ(name, "DID_MEMORY_FUNC_TYPEDEFS")) return CURL_D +ID_MEMORY_FUNC_TYPEDEFS; ^ ./curlopt-constants.c:136:49: error: use of undeclared identifier 'CUR +L_STRICTER' if (strEQ(name, "STRICTER")) return CURL_STRICTER; ^ ./curlopt-constants.c:179:56: warning: implicit conversion from 'size_ +t' (aka 'unsigned long') to 'int' changes value from 1844674407370955 +1615 to -1 [-Wconstant-conversion] if (strEQ(name, "ZERO_TERMINATED")) return CURL_ZERO_TERMI +NATED; ~~~~~~ ^~~~~~~~~~~~~~~ +~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:1969:31: note: expan +ded from macro 'CURL_ZERO_TERMINATED' #define CURL_ZERO_TERMINATED ((size_t) -1) ^~~~~~~~~~~ In file included from Curl.xs:574: ./curlopt-constants.c:2145:44: warning: implicit conversion from 'unsi +gned long' to 'int' changes value from 18446744073709551599 to -17 [- +Wconstant-conversion] if (strEQ(name, "ANY")) return CURLAUTH_ANY; ~~~~~~ ^~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:708:32: note: expand +ed from macro 'CURLAUTH_ANY' #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) ^~~~~~~~~~~~~~~~~~~ In file included from Curl.xs:574: ./curlopt-constants.c:2146:48: warning: implicit conversion from 'unsi +gned long' to 'int' changes value from 18446744073709551598 to -18 [- +Wconstant-conversion] if (strEQ(name, "ANYSAFE")) return CURLAUTH_ANYSAFE; ~~~~~~ ^~~~~~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:709:32: note: expand +ed from macro 'CURLAUTH_ANYSAFE' #define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Curl.xs:1100:26: warning: implicit conversion from enumeration type 'C +URLINFO' to different enumeration type 'CURLoption' [-Wenum-conversio +n] curl_easy_setopt(easy, CURLINFO_PRIVATE, NULL); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/Cellar/curl/7.58.0/include/curl/curl.h:2744:68: note: expan +ded from macro 'curl_easy_setopt' #define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt +,param) ~~~~~~~~~~~~~~~~ ^~~ 4 warnings and 2 errors generated. make: *** [Curl.o] Error 1 [ns3:~/src/WWW-Curl-4.17] administrator%
      I'm completely dead in the water here. I've been trying to pull this off for over a year.

      FYI, I checked my versions of curl and perl, and verified that they are the ones I expected:
      [ns3:~/src/WWW-Curl-4.17] administrator% which curl /usr/local/opt/curl/bin/curl [ns3:~/src/WWW-Curl-4.17] administrator% /usr/local/opt/curl/bin/curl +--version curl 7.58.0 (x86_64-apple-darwin16.7.0) libcurl/7.58.0 SecureTransport + zlib/1.2.8 Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps +pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets [ns3:~/src/WWW-Curl-4.17] administrator% which perl /Users/administrator/perl5/perlbrew/perls/perl-5.24.0/bin/perl [ns3:~/src/WWW-Curl-4.17] administrator%
        ./curlopt-constants.c:19:58: error: non-void function 'constant' should return a value [-Wreturn-type]

        Interesting ... when I build WWW-Curl on windows, I get something similar:
        In file included from Curl.xs:581:0: curlopt-constants.c: In function 'constant': curlopt-constants.c:19:58: warning: 'return' with no value, in functio +n returning non-void if (strEQ(name, "DID_MEMORY_FUNC_TYPEDEFS")) return CURL_ +DID_MEMORY_FUNC_TYPEDEFS;
        But, of course, it's only a warning for me - and this allows the build to complete successfully.

        I *think* this warning is telling me that, although CURL_DID_MEMORY_FUNC_TYPEDEFS is defined, it hasn't been assigned a value.
        In Curl.xs, try replacing:
        #include "curlopt-constants.c"
        with:
        #undef CURL_DID_MEMORY_FUNC_TYPEDEFS #define CURL_DID_MEMORY_FUNC_TYPEDEFS 0 #include "curlopt-constants.c"
        That avoids the warning for me, and will hopefully avoid the error for you.

        Cheers,
        Rob

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1208670]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2018-06-23 07:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?



    Results (125 votes). Check out past polls.

    Notices?