#47494: root6: Undefined symbol "_environ" on Mac OS X 10.7 ----------------------+--------------------- Reporter: mojca@… | Owner: mojca@… Type: defect | Status: closed Priority: Normal | Milestone: Component: ports | Version: Resolution: fixed | Keywords: lion Port: root6 | ----------------------+--------------------- Comment (by mojca@…): Jeremy, we now found the source of the problem (old LLVM version) and worked around the problem for now, with r135179. Replying to [comment:5 jeremyhu@…]:
The ` || TARGET_OS_IPHONE` should be removed in general.
Can you please elaborate? Who should remove it and from where? Do you mean from our local MacPorts patch where I used `#if !defined(__APPLE__) || TARGET_OS_IPHONE`? I can change {{{ #if !defined(__APPLE__) || defined(TARGET_OS_IPHONE) }}} into {{{ #if !defined(__APPLE__) }}} or even into {{{ #if 0 }}} given that we don't need to support iOS. But this code is from LLVM: http://llvm.org/svn/llvm- project/llvm/trunk/lib/Support/Unix/Program.inc This is how it has been rewritten upstream (probably not that long ago): {{{ #if defined(__APPLE__) #include <TargetConditionals.h> #endif #if defined(__APPLE__) && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) #define USE_NSGETENVIRON 1 #else #define USE_NSGETENVIRON 0 #endif #if !USE_NSGETENVIRON extern char **environ; #else #include <crt_externs.h> // _NSGetEnviron #endif #endif }}} Is that what you would expect or are there any problems left with that approach? (I hope that ROOT developers will soon sync with the "latest" version of LLVM, so that the problem will no longer exist and we will no longer need to patch anything.) -- Ticket URL: <https://trac.macports.org/ticket/47494#comment:6> MacPorts <https://www.macports.org/> Ports system for OS X