New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #30089 (closed defect: fixed)

Opened 23 months ago

Last modified 18 months ago

couchdb: configure fails claiming erlang is missing openssl support

Reported by: conradwt@… Owned by: bfulgham@…
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: lion Cc: paul@…, joh.dokler@…, jwa@…, ryandesign@…
Port: couchdb

Description

Hi, the couchdb port failed to build failed because erlang port is missing the openssl support. Next, in ticket #30012, I updated the portfile for erlang and the build completed successfully and port was activated. However, I noticed many erlang level errors which appeared to be erlang tests.

$ sudo port -v install couchdb
Password:
--->  Computing dependencies for couchdb.
--->  Configuring couchdb
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /opt/local/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking for gcc... /Developer/usr/bin/llvm-gcc-4.2
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /Developer/usr/bin/llvm-gcc-4.2 accepts -g... yes
checking for /Developer/usr/bin/llvm-gcc-4.2 option to accept ISO C89... none needed
checking dependency style of /Developer/usr/bin/llvm-gcc-4.2... gcc3
checking how to run the C preprocessor... /Developer/usr/bin/llvm-gcc-4.2 -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for gcc... (cached) /Developer/usr/bin/llvm-gcc-4.2
checking whether we are using the GNU C compiler... (cached) yes
checking whether /Developer/usr/bin/llvm-gcc-4.2 accepts -g... (cached) yes
checking for /Developer/usr/bin/llvm-gcc-4.2 option to accept ISO C89... (cached) none needed
checking dependency style of /Developer/usr/bin/llvm-gcc-4.2... (cached) gcc3
checking build system type... x86_64-apple-darwin11.0.0
checking host system type... x86_64-apple-darwin11.0.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by /Developer/usr/bin/llvm-gcc-4.2... /Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from /Developer/usr/bin/llvm-gcc-4.2 object... ok
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /Developer/usr/bin/llvm-gcc-4.2 supports -fno-rtti -fno-exceptions... no
checking for /Developer/usr/bin/llvm-gcc-4.2 option to produce PIC... -fno-common -DPIC
checking if /Developer/usr/bin/llvm-gcc-4.2 PIC flag -fno-common -DPIC works... yes
checking if /Developer/usr/bin/llvm-gcc-4.2 static flag -static works... no
checking if /Developer/usr/bin/llvm-gcc-4.2 supports -c -o file.o... yes
checking if /Developer/usr/bin/llvm-gcc-4.2 supports -c -o file.o... (cached) yes
checking whether the /Developer/usr/bin/llvm-gcc-4.2 linker (/Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin11.0.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking whether ln -s works... yes
checking for pthread_create in -lpthread... yes
checking for JS_NewContext in -lmozjs... no
checking for JS_NewContext in -ljs... yes
checking jsapi.h usability... yes
checking jsapi.h presence... yes
checking for jsapi.h... yes
checking for icu-config... /opt/local/bin/icu-config
checking for ICU >= 3.4.1... yes
checking ICU_CFLAGS... -pipe -O2 -arch x86_64 -O2 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long   
checking ICU_CXXFLAGS... -pipe -O2 -arch x86_64 -O2 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   
checking ICU_LIBS... -arch x86_64  -lpthread -lm   -L/opt/local/lib -licui18n -licuuc -licudata  -lpthread -lm   
checking for curl-config... /opt/local/bin/curl-config
checking for curl >= 7.18.0... yes
checking CURL_CFLAGS... -I/opt/local/include
checking CURL_LIBS... -L/opt/local/lib -lcurl -L/opt/local/lib -L/opt/local/lib -L/opt/local/lib -lidn -lssl -lcrypto -lssl -lcrypto -lz -lz
checking for erl... /opt/local/bin/erl
configure: error: Could not find the Erlang crypto library. Has Erlang been compiled with OpenSSL support?
shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_couchdb/couchdb/work/apache-couchdb-1.1.0" && ./configure --prefix=/opt/local --with-js-include=/opt/local/include/js --with-erlang=/opt/local/lib/erlang/usr/include " returned error 1
Error: Target org.macports.configure returned: configure failure: shell command failed (see log for details)
Warning: the following items did not execute (for couchdb): org.macports.activate org.macports.configure org.macports.build org.macports.destroot org.macports.install
Log for couchdb is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_couchdb/couchdb/main.log
Error: Status 1 encountered during processing.

Change History

comment:1 Changed 23 months ago by macsforever2000@…

  • Owner changed from macports-tickets@… to jwa@…

comment:2 Changed 23 months ago by jwa@…

  • Status changed from new to closed
  • Resolution set to wontfix

Erlang port now has the ssl support as a default, so nothing to do here. And 10.7 is not yet in the public...

comment:3 Changed 22 months ago by hypertornado@…

  • Status changed from closed to reopened
  • Resolution wontfix deleted

10.7 is now in public, so what should i do to fix this error?

comment:4 Changed 22 months ago by bfulgham@…

I've just updated to Lion, and am attempting the build now.

comment:5 Changed 22 months ago by bfulgham@…

This works properly for me. Can you provide a new error message after getting a successful erlang build under 10.7?

comment:6 Changed 22 months ago by jwa@…

  • Status changed from reopened to closed
  • Resolution set to invalid

Ok, this is an erlang thing that is fixed, so I'll leave it at that…

comment:7 Changed 22 months ago by paul@…

  • Status changed from closed to reopened
  • Resolution invalid deleted

Hey all, sorry to be a pain, but I'm still butting against this issue. It's odd, as I'm running the new version of Erlang (referenced in ticket #30012). Basically, CouchDB refuses to compile, barfing out with the following message:

:info:configure checking CURL_LIBS... -L/opt/local/lib -lcurl -L/opt/local/lib -L/opt/local/lib -L/opt/local/lib -lidn -lssl -lcrypto -lssl -lcrypto -lz -lz
:info:configure checking for erl... /opt/local/bin/erl
:info:configure configure: error: Could not find the Erlang crypto library. Has Erlang been compiled with OpenSSL support?
:info:configure shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_couchdb/couchdb/work/apache-couchdb-1.1.0" && ./configure --prefix=/opt/local --with-js-include=/opt/local/include/js --with-erlang=/opt/local/lib/erlang/usr/include " returned error 1

The funny thing is, if I cd to the working directory, and run

./configure --prefix=/opt/local --with-js-include=/opt/local/include/js --with-erlang=/opt/local/lib/erlang/usr/include

It compiles cleanly, and the resulting binary works as expected. Any ideas on what may be going on here?

comment:8 Changed 22 months ago by conradwt@…

The couchdb port now installs for me without any issues using the standard build process (i.e. sudo port install couched).

comment:9 Changed 22 months ago by conradwt@…

Correction: (i.e. sudo port install couchdb)

comment:10 Changed 22 months ago by jmr@…

  • Cc paul@… added

Please cc yourself when you reopen.

comment:11 Changed 22 months ago by jmr@…

paul@: Is erlang installed with +ssl? Check with

port installed erlang

It's a default variant but it can be turned off.

comment:12 follow-up: ↓ 18 Changed 22 months ago by paul@…

Thanks for the note about CCing. Erlang is definitely compiled with SSL, and couchdb will compile cleanly when run directly:

WC-MacBook ~ $ port list variant:ssl | grep erlang
erlang                         @R14B03         lang/erlang

Any chance it could be a shell issue; some permissions than an user's interactive shell would have that a subshell wouldn't?

comment:13 Changed 21 months ago by joh.dokler@…

The configure for the couchdb is run as a macports user. When checking for the ssl library using:

has_crypto=`${ERL} -eval "case application:load(crypto) of ok -> ok; _ -> exit(no_crypto) end." -noshell -s init stop`

the erl returns the following error:

=ERROR REPORT==== 13-Aug-2011::13:58:20 === file:path_eval([".","/var/root"],".erlang"): permission denied

Which indicates that the erl tries to eval the .erlang init file inside /var/root. Which is of course is inaccessible to the macports user.

comment:14 Changed 21 months ago by joh.dokler@…

  • Cc joh.dokler@… added

Cc Me!

comment:15 Changed 21 months ago by joh.dokler@…

  • Cc joh.dokler@… removed

Cc Me!

comment:16 Changed 21 months ago by joh.dokler@…

  • Cc joh.dokler@… added

Cc Me!

comment:17 Changed 21 months ago by paul@…

Yeap, that's the ticket. I manually futzed with the Portfile, and removed the check for Erlang's crpyto library:

sudo vi /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_couchdb/couchdb/work/apache-couchdb-1.1.0/configure

And just deleted the following code block:

has_crypto=`${ERL} -eval "case application:load(crypto) of ok -> ok; _ -> exit(no_crypto) end." -noshell -s init stop`

if test -n "$has_crypto"; then
    as_fn_error $? "Could not find the Erlang crypto library. Has Erlang been compiled with OpenSSL support?" "$LINENO" 5
fi

Now, this doesn't actually fix the bloody problem, but it bypasses the test for the Erlang crypto library, which is included by default in the Macports Erlang port, and allows the build to go forward.

comment:18 in reply to: ↑ 12 Changed 21 months ago by jmr@…

Replying to paul@…:

port list variant:ssl | grep erlang

JFYI, that only tells you that erlang has an ssl variant, not that it is selected in the installed port.

comment:19 Changed 20 months ago by bfulgham@…

  • Status changed from reopened to new
  • Owner changed from jwa@… to bfulgham@…

Couchdb builds and runs find for me R14B04 erlang. Erlang always builds with +ssl now, so I don't think you should be having any problems.

comment:20 Changed 19 months ago by dougie.richardson@…

I ran into the same problem on Snow Leopard and deleting the block paul mentioned did the trick.

comment:22 Changed 18 months ago by ryandesign@…

  • Keywords x86_64 removed
  • Status changed from new to closed
  • Resolution set to fixed
  • Cc jwa@…, ryandesign@… added
  • Summary changed from couchdb failed because erlang missing openssl support to couchdb: configure fails claiming erlang is missing openssl support

I can't figure out how to reproduce the issue on my system, though I feel like I understand the problem, and feel like I should be experiencing it.

I've changed the port in r87246 to check for erlang +ssl in the portfile, so we can fail early with a nicer error message, and in r87247 I removed the same check from the configure script. This seems to have fixed the buildbot, though the pre-configure check still prints this warning:

file:path_eval([".","/var/root"],".erlang"): permission denied

I'm not sure if this means the check was done or not. So in r87248 I changed it further to set HOME to a value inside workpath, which should not have any permissions problems. See also #31827. But of course the buildbot isn't building it again now

Building couchdb (1 of 1)...package found, not building again

So I have to just assume I fixed this.

Note: See TracTickets for help on using tickets.