[MacPorts] #52507: erlang @19.1_0+hipe+ssl.darwin_10.x86_64 fails to compile/assemble?

MacPorts noreply at macports.org
Sat May 12 17:39:06 UTC 2018


#52507: erlang @19.1_0+hipe+ssl.darwin_10.x86_64 fails to compile/assemble?
-------------------------+-------------------------
  Reporter:  macports@…  |      Owner:  ci42
      Type:  defect      |     Status:  new
  Priority:  Normal      |  Milestone:
 Component:  ports       |    Version:  2.3.4
Resolution:              |   Keywords:  snowleopard
      Port:  erlang      |
-------------------------+-------------------------

Comment (by kencu):

 OK. It installs:
 {{{
 $ port -v installed erlang
 The following ports are currently installed:
   erlang @20.3_0+hipe+ssl (active) platform='darwin 10' archs='x86_64'
 date='2018-05-12T10:30:23-0700'
 }}}
 My system is set up with LibcxxOnOlderSystems, and defaults to macports-
 clang-3.9 as a compiler. I did not see the error you saw above, so
 presumably my newer compiler got by that error.

 However, the build did error out on the patch that was put in for 10.6
 some years ago
 {{{
 $ cat patch-erts_emulator_sys_unix_ddll.c.diff
 --- erts/emulator/sys/unix/erl_unix_sys_ddll.c.orig
 +++ erts/emulator/sys/unix/erl_unix_sys_ddll.c
 @@ -49,6 +49,13 @@ static char **errcodes = NULL;
  static int num_errcodes = 0;
  static int num_errcodes_allocated = 0;

 +static void call_cf_initialize() __attribute__ ((constructor));
 +
 +static void call_cf_initialize()
 +{
 +    __CFInitialize();
 +}
 +
  #define my_strdup(WHAT) my_strdup_in(ERTS_ALC_T_DDLL_ERRCODES, WHAT);

  static char *my_strdup_in(ErtsAlcType_t type, char *what)
 }}}
 with this error:
 {{{
  CC     obj/x86_64-apple-darwin10.8.0/opt/smp/erl_unix_sys_ddll.o
 sys/unix/erl_unix_sys_ddll.c:57:5: error: implicit declaration of function
 '__CFInitialize' is invalid in C99 [-Werror,-Wimplicit-function-
 declaration]
     __CFInitialize();
     ^
 1 error generated.
 }}}

 That was funny -- looks like it's not seeing the CoreFoundation headers on
 10.6.8. I just deleted that patch, and then it built right on through to
 the end without any troubles for me.

 SO: for you to get it built, without going through the whole
 LibcxxOnOlderSystems routine, I would try a newer compiler, like this
 perhaps:
 {{{
 sudo port -v install clang-3.9
 sudo port -v install erlang configure.compiler=macports-clang-3.9
 }}}
 you can either take out the patch in the Portfile now, or try it yourself,
 and if it errors, delete the patched bit from:
 {{{
 erts/emulator/sys/unix/erl_unix_sys_ddll.c
 }}}
 like I did.

 Still to be considered: that patch was put in there for a reason, as per
 the note in the Portfile. It should still work. It would probably be best
 to figure out why the CFInitialize definition can't be found, and fix that
 -- possibly by including the header in that file? I'm not sure about that
 just now.

-- 
Ticket URL: <https://trac.macports.org/ticket/52507#comment:5>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list