From c6e19ec09f974e8a683faf470c6bc39f62c4225a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1nos=20Benjamin=20Antal?= Date: Mon, 14 Feb 2022 14:31:27 +0100 Subject: [PATCH] Fix folly in toolchain-v4 (#346) --- CMakeLists.txt | 2 ++ environment/os/centos-7.sh | 3 +- environment/os/centos-8.sh | 8 ++++-- environment/toolchain/folly.diff | 2 -- environment/toolchain/folly.patch | 41 ++++++++++++++++++++++++++++ environment/toolchain/proxygen.diff | 2 -- environment/toolchain/proxygen.patch | 11 ++++++++ environment/toolchain/snappy.diff | 16 ----------- environment/toolchain/snappy.patch | 29 ++++++++++++++++++++ environment/toolchain/v4.sh | 17 ++++++++---- 10 files changed, 102 insertions(+), 29 deletions(-) delete mode 100644 environment/toolchain/folly.diff create mode 100644 environment/toolchain/folly.patch delete mode 100644 environment/toolchain/proxygen.diff create mode 100644 environment/toolchain/proxygen.patch delete mode 100644 environment/toolchain/snappy.diff create mode 100644 environment/toolchain/snappy.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index 0eedf4404..dc5fc204f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,6 +204,8 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") # release flags set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") +SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -pthread") + #debug flags set(PREFERRED_DEBUGGER "gdb" CACHE STRING "Tunes the debug output for your preferred debugger (gdb or lldb).") diff --git a/environment/os/centos-7.sh b/environment/os/centos-7.sh index fa9aff2f7..fc7611632 100755 --- a/environment/os/centos-7.sh +++ b/environment/os/centos-7.sh @@ -11,7 +11,7 @@ TOOLCHAIN_BUILD_DEPS=( gnupg2 # used for archive signature verification tar gzip bzip2 xz unzip # used for archive unpacking zlib-devel # zlib library used for all builds - expat-devel libipt-devel libbabeltrace-devel xz-devel python3-devel # gdb + expat-devel libipt libipt-devel libbabeltrace-devel xz-devel python3-devel # gdb texinfo # gdb libcurl-devel # cmake curl # snappy @@ -22,6 +22,7 @@ TOOLCHAIN_BUILD_DEPS=( openssl-devel gmp-devel gperf + patch ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/os/centos-8.sh b/environment/os/centos-8.sh index 61de17039..50c4f8f3a 100755 --- a/environment/os/centos-8.sh +++ b/environment/os/centos-8.sh @@ -6,12 +6,12 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" source "$DIR/../util.sh" TOOLCHAIN_BUILD_DEPS=( - coreutils gcc gcc-c++ make # generic build tools + coreutils-common gcc gcc-c++ make # generic build tools wget # used for archive download gnupg2 # used for archive signature verification tar gzip bzip2 xz unzip # used for archive unpacking zlib-devel # zlib library used for all builds - expat-devel libipt-devel libbabeltrace-devel xz-devel python36-devel texinfo # for gdb + expat-devel libipt libipt-devel libbabeltrace-devel xz-devel python36-devel texinfo # for gdb libcurl-devel # for cmake curl # snappy readline-devel # for cmake and llvm @@ -21,6 +21,7 @@ TOOLCHAIN_BUILD_DEPS=( openssl-devel gmp-devel gperf + patch ) TOOLCHAIN_RUN_DEPS=( @@ -116,9 +117,10 @@ install() { # https://centos.pkgs.org # Since 2020, there is Babeltrace2 (https://babeltrace.org). Not used # within GDB yet (an assumption). + # http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/libbabeltrace-devel-1.5.4-3.el8.x86_64.rpm not working if [ "$pkg" == libbabeltrace-devel ]; then if ! dnf list installed libbabeltrace-devel >/dev/null 2>/dev/null; then - dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/libbabeltrace-devel-1.5.4-3.el8.x86_64.rpm + dnf install -y https://rpmfind.net/linux/centos/8-stream/PowerTools/x86_64/os/Packages/libbabeltrace-devel-1.5.4-3.el8.x86_64.rpm fi continue fi diff --git a/environment/toolchain/folly.diff b/environment/toolchain/folly.diff deleted file mode 100644 index 45d3a567e..000000000 --- a/environment/toolchain/folly.diff +++ /dev/null @@ -1,2 +0,0 @@ -31d30 -< add_subdirectory(logging/example) diff --git a/environment/toolchain/folly.patch b/environment/toolchain/folly.patch new file mode 100644 index 000000000..481412502 --- /dev/null +++ b/environment/toolchain/folly.patch @@ -0,0 +1,41 @@ +diff -ur a/folly/CMakeLists.txt b/folly/CMakeLists.txt +--- a/folly/CMakeLists.txt 2021-12-12 23:10:42.000000000 +0100 ++++ b/folly/CMakeLists.txt 2022-02-03 15:19:41.349693134 +0100 +@@ -28,7 +28,6 @@ + ) + + add_subdirectory(experimental/exception_tracer) +-add_subdirectory(logging/example) + + if (PYTHON_EXTENSIONS) + # Create tree of symbolic links in structure required for successful +diff -ur a/folly/experimental/exception_tracer/ExceptionTracerLib.cpp b/folly/experimental/exception_tracer/ExceptionTracerLib.cpp +--- a/folly/experimental/exception_tracer/ExceptionTracerLib.cpp 2021-12-12 23:10:42.000000000 +0100 ++++ b/folly/experimental/exception_tracer/ExceptionTracerLib.cpp 2022-02-03 15:19:11.003368891 +0100 +@@ -96,6 +96,7 @@ + #define __builtin_unreachable() + #endif + ++#if 0 + namespace __cxxabiv1 { + + void __cxa_throw( +@@ -154,5 +155,5 @@ + } + + } // namespace std +- ++#endif + #endif // defined(__GLIBCXX__) +diff -ur a/folly/Portability.h b/folly/Portability.h +--- a/folly/Portability.h 2021-12-12 23:10:42.000000000 +0100 ++++ b/folly/Portability.h 2022-02-03 15:19:11.003368891 +0100 +@@ -566,7 +566,7 @@ + #define FOLLY_HAS_COROUTINES 0 + #elif (__cpp_coroutines >= 201703L || __cpp_impl_coroutine >= 201902L) && \ + (__has_include() || __has_include()) +-#define FOLLY_HAS_COROUTINES 1 ++#define FOLLY_HAS_COROUTINES 0 + // This is mainly to workaround bugs triggered by LTO, when stack allocated + // variables in await_suspend end up on a coroutine frame. + #define FOLLY_CORO_AWAIT_SUSPEND_NONTRIVIAL_ATTRIBUTES FOLLY_NOINLINE diff --git a/environment/toolchain/proxygen.diff b/environment/toolchain/proxygen.diff deleted file mode 100644 index f0790413e..000000000 --- a/environment/toolchain/proxygen.diff +++ /dev/null @@ -1,2 +0,0 @@ -24d23 -< find_dependency(mvfst) diff --git a/environment/toolchain/proxygen.patch b/environment/toolchain/proxygen.patch new file mode 100644 index 000000000..f313022a2 --- /dev/null +++ b/environment/toolchain/proxygen.patch @@ -0,0 +1,11 @@ +diff -ur a/cmake/proxygen-config.cmake.in b/cmake/proxygen-config.cmake.in +--- a/cmake/proxygen-config.cmake.in 2021-12-13 02:37:05.000000000 +0100 ++++ b/cmake/proxygen-config.cmake.in 2022-01-27 17:14:28.284810621 +0100 +@@ -21,7 +21,6 @@ + find_dependency(folly) + find_dependency(wangle) + find_dependency(Fizz) +-find_dependency(mvfst) + # For now, anything that depends on Proxygen has to copy its FindZstd.cmake + # and issue a `find_package(Zstd)`. Uncommenting this won't work because + # this Zstd module exposes a library called `zstd`. The right fix is diff --git a/environment/toolchain/snappy.diff b/environment/toolchain/snappy.diff deleted file mode 100644 index 4b8a9ba20..000000000 --- a/environment/toolchain/snappy.diff +++ /dev/null @@ -1,16 +0,0 @@ -55,57c55,57 -< # Disable RTTI. -< string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -< set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") ---- -> # # Disable RTTI. -> # string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -> # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") -80,82c80,82 -< # Disable RTTI. -< string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -< set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") ---- -> # # Disable RTTI. -> # string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -> # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") diff --git a/environment/toolchain/snappy.patch b/environment/toolchain/snappy.patch new file mode 100644 index 000000000..d5fd9296f --- /dev/null +++ b/environment/toolchain/snappy.patch @@ -0,0 +1,29 @@ +diff -ur a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2021-05-05 00:53:34.000000000 +0200 ++++ b/CMakeLists.txt 2022-01-27 17:18:34.758302398 +0100 +@@ -52,9 +52,9 @@ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs-c-") + add_definitions(-D_HAS_EXCEPTIONS=0) + +- # Disable RTTI. +- string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") ++ # # Disable RTTI. ++ # string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") ++ # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") + else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + # Use -Wall for clang and gcc. + if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall") +@@ -77,9 +77,9 @@ + string(REGEX REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + +- # Disable RTTI. +- string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") ++ # # Disable RTTI. ++ # string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") ++ # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") + endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + + # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make diff --git a/environment/toolchain/v4.sh b/environment/toolchain/v4.sh index 9802599ea..164e1d4be 100755 --- a/environment/toolchain/v4.sh +++ b/environment/toolchain/v4.sh @@ -538,7 +538,8 @@ if [ ! -f $PREFIX/bin/clang ]; then make -j$CPUS if [[ "$for_arm" = false ]]; then make -j$CPUS check-clang # run clang test suite - make -j$CPUS check-lld # run lld test suite + # ldd is not used + # make -j$CPUS check-lld # run lld test suite fi make install popd && popd @@ -1029,7 +1030,7 @@ if [ ! -f $PREFIX/include/snappy.h ]; then fi tar -xzf ../archives/snappy-$SNAPPY_VERSION.tar.gz pushd snappy-$SNAPPY_VERSION - patch CMakeLists.txt ../../snappy.diff + patch -p1 < ../../snappy.patch mkdir build pushd build cmake .. $COMMON_CMAKE_FLAGS \ @@ -1071,7 +1072,7 @@ if [ ! -d $PREFIX/include/folly ]; then mkdir folly-$FBLIBS_VERSION tar -xzf ../archives/folly-$FBLIBS_VERSION.tar.gz -C folly-$FBLIBS_VERSION pushd folly-$FBLIBS_VERSION - patch folly/CMakeLists.txt ../../folly.diff + patch -p1 < ../../folly.patch # build is used by facebook builder mkdir _build pushd _build @@ -1130,7 +1131,7 @@ if [ ! -d $PREFIX/include/proxygen ]; then mkdir proxygen-$FBLIBS_VERSION tar -xzf ../archives/proxygen-$FBLIBS_VERSION.tar.gz -C proxygen-$FBLIBS_VERSION pushd proxygen-$FBLIBS_VERSION - patch cmake/proxygen-config.cmake.in ../../proxygen.diff + patch -p1 < ../../proxygen.patch # build is used by facebook builder mkdir _build pushd _build @@ -1177,7 +1178,13 @@ popd # create toolchain archive if [ ! -f $NAME-binaries-$DISTRO.tar.gz ]; then - tar --owner=root --group=root -cpvzf $NAME-binaries-$DISTRO.tar.gz -C /opt $NAME + DISTRO_FULL_NAME=$DISTRO + if [ "$for_arm" = true ]; then + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-aarch64" + else + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-x86_64" + fi + tar --owner=root --group=root -cpvzf $NAME-binaries-$DISTRO_FULL_NAME.tar.gz -C /opt $NAME fi # output final instructions