hhvm/homebrew-hhvm

dyld: Symbol not found while installing 3.27-lts on 10.14.6

quizlet-chiragmedhora opened this issue · 3 comments

Description

Same issue as facebook/hhvm#8839, but on HHVM 3.27-lts

Steps to reproduce

brew upgrade
brew install hhvm@3.27-lts
hhvm

Expected behavior
HHVM starts

Actual behavior

dyld: Symbol not found: __ZN6google21kLogSiteUninitializedE
  Referenced from: /usr/local/bin/hhvm
  Expected in: /usr/local/opt/glog/lib/libglog.0.dylib
 in /usr/local/bin/hhvm

Context and Logs

Parameter Value
OS X Version: 10.14.6 Mojave
Homebrew Version: 3.1.9

Output of clang -v:

Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

I've kicked off a rebuild but:

  • if successful, it will require MacOS Catalina or above; we are no longer able to build packages for Mojave
  • I expect it to fail, due to the age of the dependencies, and that move to Catalina as a baseline also requires updating the XCode version and MacOS SDK

If issues are relatively straightforward, I should be able to resolve them, but as this release has been unsupported since 2019, I won't be able to spend much time on it or make it a priority. If there are more in-depth issues, this might need community pull requests (which I'll be happy to review), but we won't be able to drop the Catalina+ requirement.

Initial failure:

In file included from /tmp/hhvmA3.27-lts-20210602-15073-1hfu4rm/hhvm-3.27.8/third-party/folly/src/folly/Conv.cpp:16:
In file included from /tmp/hhvmA3.27-lts-20210602-15073-1hfu4rm/hhvm-3.27.8/third-party/folly/src/folly/Conv.h:47:
In file included from /tmp/hhvmA3.27-lts-20210602-15073-1hfu4rm/hhvm-3.27.8/third-party/folly/src/folly/portability/Math.h:19:
/Applications/Xcode_12.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:317:9: error: no member named 'signbit' in the global namespace
using ::signbit;
      ~~^

This suggests that folly isn't correctly using the MacOS SDK root, but that is being specified by homebrew, and in 3.27, folly is built using HHVM's existing CMake, so it's not clear if that's actually the problem.

This isn't a bug in folly: 3.27 needs a version of folly that is several years older than the compilers and macos sdks we have available. TBC: what's required to make the older version of folly compatible, and if there are other issues with the build.

Partial fix for folly (not able to reproduce the original error):

Index: hhvm/third-party/folly/src/folly/String-inl.h
===================================================================
--- hhvm.orig/third-party/folly/src/folly/String-inl.h
+++ hhvm/third-party/folly/src/folly/String-inl.h
@@ -19,6 +19,7 @@
 #include <iterator>
 #include <stdexcept>

+#include <boost/type_traits.hpp>
 #include <folly/CppAttributes.h>

 #ifndef FOLLY_STRING_H_

hhvm-third-party also needs this:

diff --git a/folly/CMakeLists.txt b/folly/CMakeLists.txt
index 1b48097..2be9598 100644
--- a/folly/CMakeLists.txt
+++ b/folly/CMakeLists.txt
@@ -1,3 +1,5 @@
+# Required for new boost
+string(REPLACE "-fno-operator-names" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(FOLLY_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(FOLLY_DIR "${FOLLY_ROOT}/folly")

Then facebook/hhvm@a1b37f2 would need backporting, and it's not a clean backport.

Sorry, but I'm not able to spend more time on this at the moment; I hope I will be able to next week, but not certain.