diff --git a/.githooks/pre-commit b/.githooks/pre-commit index df8c02d42..8a241e48b 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -33,4 +33,4 @@ for file in $modified_files; do fi done; -return ${FAIL} +exit ${FAIL} diff --git a/environment/.gitignore b/environment/.gitignore deleted file mode 100644 index 365d034c0..000000000 --- a/environment/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -archives -build diff --git a/environment/README.md b/environment/README.md index cc9d90073..8654d7d4a 100644 --- a/environment/README.md +++ b/environment/README.md @@ -1,5 +1,10 @@ # Memgraph Operating Environments +## Issues related to build toolchain + +* GCC 11.2 (toolchain-v4) doesn't compile on Fedora 38, multiple definitions of enum issue +* spdlog 1.10/11 doesn't work with fmt 10.0.0 + ## os Under the `os` directory, you can find scripts to install all required system diff --git a/environment/os/amzn-2.sh b/environment/os/amzn-2.sh index 92e3ff3be..dc0467bc3 100755 --- a/environment/os/amzn-2.sh +++ b/environment/os/amzn-2.sh @@ -18,7 +18,7 @@ TOOLCHAIN_BUILD_DEPS=( curl libcurl-devel # for cmake readline-devel # for cmake and llvm libffi-devel libxml2-devel # for llvm - libedit-devel pcre-devel automake bison # for swig + libedit-devel pcre-devel pcre2-devel automake bison # for swig file openssl-devel gmp-devel diff --git a/environment/os/centos-7.sh b/environment/os/centos-7.sh index 622dd4315..df16fbc73 100755 --- a/environment/os/centos-7.sh +++ b/environment/os/centos-7.sh @@ -20,7 +20,7 @@ TOOLCHAIN_BUILD_DEPS=( curl # snappy readline-devel # cmake and llvm libffi-devel libxml2-devel perl-Digest-MD5 # llvm - libedit-devel pcre-devel automake bison # swig + libedit-devel pcre-devel pcre2-devel automake bison # swig file openssl-devel gmp-devel diff --git a/environment/os/centos-9.sh b/environment/os/centos-9.sh index c20185d87..8a431807e 100755 --- a/environment/os/centos-9.sh +++ b/environment/os/centos-9.sh @@ -17,7 +17,7 @@ TOOLCHAIN_BUILD_DEPS=( expat-devel xz-devel python3-devel texinfo libbabeltrace-devel # for gdb readline-devel # for cmake and llvm libffi-devel libxml2-devel # for llvm - libedit-devel pcre-devel automake bison # for swig + libedit-devel pcre-devel pcre2-devel automake bison # for swig file openssl-devel gmp-devel diff --git a/environment/os/debian-10.sh b/environment/os/debian-10.sh index cfd2849f8..4c1deda42 100755 --- a/environment/os/debian-10.sh +++ b/environment/os/debian-10.sh @@ -24,7 +24,7 @@ TOOLCHAIN_BUILD_DEPS=( libgmp-dev # for gdb gperf # for proxygen git # for fbthrift - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/os/debian-11-arm.sh b/environment/os/debian-11-arm.sh index bc973a08f..c8a3cca1c 100755 --- a/environment/os/debian-11-arm.sh +++ b/environment/os/debian-11-arm.sh @@ -18,7 +18,7 @@ TOOLCHAIN_BUILD_DEPS=( libcurl4-openssl-dev # for cmake libreadline-dev # for cmake and llvm libffi-dev libxml2-dev # for llvm - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig curl # snappy file # for libunwind libssl-dev # for libevent diff --git a/environment/os/debian-11.sh b/environment/os/debian-11.sh index 740432125..c7e82b52c 100755 --- a/environment/os/debian-11.sh +++ b/environment/os/debian-11.sh @@ -18,7 +18,7 @@ TOOLCHAIN_BUILD_DEPS=( libcurl4-openssl-dev # for cmake libreadline-dev # for cmake and llvm libffi-dev libxml2-dev # for llvm - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig curl # snappy file # for libunwind libssl-dev # for libevent diff --git a/environment/os/fedora-36.sh b/environment/os/fedora-36.sh index decd263b2..f7bd0c53a 100755 --- a/environment/os/fedora-36.sh +++ b/environment/os/fedora-36.sh @@ -18,7 +18,7 @@ TOOLCHAIN_BUILD_DEPS=( curl libcurl-devel # for cmake readline-devel # for cmake and llvm libffi-devel libxml2-devel # for llvm - libedit-devel pcre-devel automake bison # for swig + libedit-devel pcre-devel pcre2-devel automake bison # for swig file openssl-devel gmp-devel diff --git a/environment/os/fedora-38.sh b/environment/os/fedora-38.sh new file mode 100755 index 000000000..7837f018b --- /dev/null +++ b/environment/os/fedora-38.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +set -Eeuo pipefail + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +source "$DIR/../util.sh" + +check_operating_system "fedora-38" +check_architecture "x86_64" + +TOOLCHAIN_BUILD_DEPS=( + 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 xz-devel python3-devel texinfo libbabeltrace-devel # for gdb + curl libcurl-devel # for cmake + readline-devel # for cmake and llvm + libffi-devel libxml2-devel # for llvm + libedit-devel pcre-devel pcre2-devel automake bison # for swig + file + openssl-devel + gmp-devel + gperf + diffutils + libipt libipt-devel # intel + patch + perl # for openssl +) + +TOOLCHAIN_RUN_DEPS=( + make # generic build tools + tar gzip bzip2 xz # used for archive unpacking + zlib # zlib library used for all builds + expat xz-libs python3 # for gdb + readline # for cmake and llvm + libffi libxml2 # for llvm + openssl-devel +) + +MEMGRAPH_BUILD_DEPS=( + git # source code control + make pkgconf-pkg-config # build system + wget # for downloading libs + libuuid-devel java-11-openjdk # required by antlr + readline-devel # for memgraph console + python3-devel # for query modules + openssl-devel + libseccomp-devel + python3 python3-pip python3-virtualenv python3-virtualenvwrapper python3-pyyaml nmap-ncat # for tests + libcurl-devel # mg-requests + rpm-build rpmlint # for RPM package building + doxygen graphviz # source documentation generators + which nodejs golang zip unzip java-11-openjdk-devel # for driver tests + sbcl # for custom Lisp C++ preprocessing + autoconf # for jemalloc code generation + libtool # for protobuf code generation +) + +list() { + echo "$1" +} + +check() { + if [ -v LD_LIBRARY_PATH ]; then + # On Fedora 38 yum/dnf and python11 use newer glibc which is not compatible + # with ours, so we need to momentarely disable env + local OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH} + LD_LIBRARY_PATH="" + fi + local missing="" + for pkg in $1; do + if ! dnf list installed "$pkg" >/dev/null 2>/dev/null; then + missing="$pkg $missing" + fi + done + if [ "$missing" != "" ]; then + echo "MISSING PACKAGES: $missing" + exit 1 + fi + if [ -v OLD_LD_LIBRARY_PATH ]; then + echo "Restoring LD_LIBRARY_PATH..." + LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH} + fi +} + +install() { + cd "$DIR" + if [ "$EUID" -ne 0 ]; then + echo "Please run as root." + exit 1 + fi + # If GitHub Actions runner is installed, append LANG to the environment. + # Python related tests don't work without the LANG export. + if [ -d "/home/gh/actions-runner" ]; then + echo "LANG=en_US.utf8" >> /home/gh/actions-runner/.env + else + echo "NOTE: export LANG=en_US.utf8" + fi + dnf update -y + for pkg in $1; do + dnf install -y "$pkg" + done +} + +deps=$2"[*]" +"$1" "${!deps}" diff --git a/environment/os/ubuntu-18.04.sh b/environment/os/ubuntu-18.04.sh index b599c0336..27d876e4f 100755 --- a/environment/os/ubuntu-18.04.sh +++ b/environment/os/ubuntu-18.04.sh @@ -25,7 +25,7 @@ TOOLCHAIN_BUILD_DEPS=( libgmp-dev # for gdb gperf # for proxygen libssl-dev - libedit-dev libpcre3-dev automake bison # swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # swig ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/os/ubuntu-20.04.sh b/environment/os/ubuntu-20.04.sh index 8a562c063..8a308406e 100755 --- a/environment/os/ubuntu-20.04.sh +++ b/environment/os/ubuntu-20.04.sh @@ -24,7 +24,7 @@ TOOLCHAIN_BUILD_DEPS=( libgmp-dev # for gdb gperf # for proxygen libssl-dev - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/os/ubuntu-22.04-arm.sh b/environment/os/ubuntu-22.04-arm.sh index 9a0af5a27..45a4f3d4c 100755 --- a/environment/os/ubuntu-22.04-arm.sh +++ b/environment/os/ubuntu-22.04-arm.sh @@ -24,7 +24,7 @@ TOOLCHAIN_BUILD_DEPS=( libgmp-dev # for gdb gperf # for proxygen libssl-dev - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/os/ubuntu-22.04.sh b/environment/os/ubuntu-22.04.sh index 586dde744..59361dd81 100755 --- a/environment/os/ubuntu-22.04.sh +++ b/environment/os/ubuntu-22.04.sh @@ -24,7 +24,7 @@ TOOLCHAIN_BUILD_DEPS=( libgmp-dev # for gdb gperf # for proxygen libssl-dev - libedit-dev libpcre3-dev automake bison # for swig + libedit-dev libpcre2-dev libpcre3-dev automake bison # for swig ) TOOLCHAIN_RUN_DEPS=( diff --git a/environment/toolchain/.gitignore b/environment/toolchain/.gitignore index 335ec9573..e75f93b12 100644 --- a/environment/toolchain/.gitignore +++ b/environment/toolchain/.gitignore @@ -1 +1,4 @@ +archives +build +output *.tar.gz diff --git a/environment/toolchain/v1.sh b/environment/toolchain/v1/build.sh similarity index 100% rename from environment/toolchain/v1.sh rename to environment/toolchain/v1/build.sh diff --git a/environment/toolchain/v2.sh b/environment/toolchain/v2/build.sh similarity index 98% rename from environment/toolchain/v2.sh rename to environment/toolchain/v2/build.sh index 6288093f9..49a9c372e 100755 --- a/environment/toolchain/v2.sh +++ b/environment/toolchain/v2/build.sh @@ -7,7 +7,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" CPUS=$( grep -c processor < /proc/cpuinfo ) cd "$DIR" -source "$DIR/../util.sh" +source "$DIR/../../util.sh" DISTRO="$(operating_system)" # toolchain version @@ -30,10 +30,10 @@ LLVM_VERSION=11.0.0 SWIG_VERSION=4.0.2 # used only for LLVM compilation # Check for the dependencies. -echo "ALL BUILD PACKAGES: $($DIR/../os/$DISTRO.sh list TOOLCHAIN_BUILD_DEPS)" -$DIR/../os/$DISTRO.sh check TOOLCHAIN_BUILD_DEPS -echo "ALL RUN PACKAGES: $($DIR/../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS)" -$DIR/../os/$DISTRO.sh check TOOLCHAIN_RUN_DEPS +echo "ALL BUILD PACKAGES: $($DIR/../../os/$DISTRO.sh list TOOLCHAIN_BUILD_DEPS)" +$DIR/../../os/$DISTRO.sh check TOOLCHAIN_BUILD_DEPS +echo "ALL RUN PACKAGES: $($DIR/../../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS)" +$DIR/../../os/$DISTRO.sh check TOOLCHAIN_RUN_DEPS # check installation directory NAME=toolchain-v$TOOLCHAIN_VERSION @@ -442,7 +442,7 @@ In order to be able to run all of these tools you should install the following packages: \`\`\` -$($DIR/../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS) +$($DIR/../../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS) \`\`\` ## Usage diff --git a/environment/toolchain/v3.sh b/environment/toolchain/v3/build.sh similarity index 98% rename from environment/toolchain/v3.sh rename to environment/toolchain/v3/build.sh index 75214064e..78823eae0 100755 --- a/environment/toolchain/v3.sh +++ b/environment/toolchain/v3/build.sh @@ -7,7 +7,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" CPUS=$( grep -c processor < /proc/cpuinfo ) cd "$DIR" -source "$DIR/../util.sh" +source "$DIR/../../util.sh" DISTRO="$(operating_system)" # toolchain version @@ -31,10 +31,10 @@ LLVM_VERSION_LONG=12.0.1-rc4 SWIG_VERSION=4.0.2 # used only for LLVM compilation # Check for the dependencies. -echo "ALL BUILD PACKAGES: $($DIR/../os/$DISTRO.sh list TOOLCHAIN_BUILD_DEPS)" -$DIR/../os/$DISTRO.sh check TOOLCHAIN_BUILD_DEPS -echo "ALL RUN PACKAGES: $($DIR/../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS)" -$DIR/../os/$DISTRO.sh check TOOLCHAIN_RUN_DEPS +echo "ALL BUILD PACKAGES: $($DIR/../../os/$DISTRO.sh list TOOLCHAIN_BUILD_DEPS)" +$DIR/../../os/$DISTRO.sh check TOOLCHAIN_BUILD_DEPS +echo "ALL RUN PACKAGES: $($DIR/../../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS)" +$DIR/../../os/$DISTRO.sh check TOOLCHAIN_RUN_DEPS # check installation directory NAME=toolchain-v$TOOLCHAIN_VERSION @@ -452,7 +452,7 @@ In order to be able to run all of these tools you should install the following packages: \`\`\` -$($DIR/../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS) +$($DIR/../../os/$DISTRO.sh list TOOLCHAIN_RUN_DEPS) \`\`\` ## Usage diff --git a/environment/toolchain/v4.sh b/environment/toolchain/v4/build.sh similarity index 99% rename from environment/toolchain/v4.sh rename to environment/toolchain/v4/build.sh index 2ac92441f..540dd65e1 100755 --- a/environment/toolchain/v4.sh +++ b/environment/toolchain/v4/build.sh @@ -7,7 +7,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" CPUS=$( grep -c processor < /proc/cpuinfo ) cd "$DIR" -source "$DIR/../util.sh" +source "$DIR/../../util.sh" DISTRO="$(operating_system)" function log_tool_name () { @@ -51,17 +51,13 @@ CPPCHECK_VERSION=2.6 LLVM_VERSION=13.0.0 SWIG_VERSION=4.0.2 # used only for LLVM compilation -# Set the right env script -ENV_SCRIPT="$DIR/../os/$DISTRO.sh" +# Set the right operating system setup script. +ENV_SCRIPT="$DIR/../../os/$DISTRO.sh" if [[ "$for_arm" = true ]]; then - ENV_SCRIPT="$DIR/../os/$DISTRO-arm.sh" + ENV_SCRIPT="$DIR/../../os/$DISTRO-arm.sh" fi - -# Check for the toolchain build dependencies. echo "ALL BUILD PACKAGES: $(${ENV_SCRIPT} list TOOLCHAIN_BUILD_DEPS)" ${ENV_SCRIPT} check TOOLCHAIN_BUILD_DEPS - -# Check for the toolchain run dependencies. echo "ALL RUN PACKAGES: $(${ENV_SCRIPT} list TOOLCHAIN_RUN_DEPS)" ${ENV_SCRIPT} check TOOLCHAIN_RUN_DEPS @@ -658,7 +654,7 @@ In order to be able to run all of these tools you should install the following packages: \`\`\` -$($DIR/../os/$ENV_SCRIPT.sh list TOOLCHAIN_RUN_DEPS) +$($DIR/../../os/$ENV_SCRIPT.sh list TOOLCHAIN_RUN_DEPS) \`\`\` ## Usage diff --git a/environment/toolchain/folly.patch b/environment/toolchain/v4/folly.patch similarity index 100% rename from environment/toolchain/folly.patch rename to environment/toolchain/v4/folly.patch diff --git a/environment/toolchain/proxygen.patch b/environment/toolchain/v4/proxygen.patch similarity index 100% rename from environment/toolchain/proxygen.patch rename to environment/toolchain/v4/proxygen.patch diff --git a/environment/toolchain/snappy.patch b/environment/toolchain/v4/snappy.patch similarity index 99% rename from environment/toolchain/snappy.patch rename to environment/toolchain/v4/snappy.patch index d5fd9296f..4016bfd89 100644 --- a/environment/toolchain/snappy.patch +++ b/environment/toolchain/v4/snappy.patch @@ -4,7 +4,7 @@ diff -ur a/CMakeLists.txt b/CMakeLists.txt @@ -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-") @@ -17,7 +17,7 @@ diff -ur a/CMakeLists.txt b/CMakeLists.txt @@ -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") @@ -25,5 +25,5 @@ diff -ur a/CMakeLists.txt b/CMakeLists.txt + # 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/xz_pgp.txt b/environment/toolchain/v4/xz_pgp.txt similarity index 100% rename from environment/toolchain/xz_pgp.txt rename to environment/toolchain/v4/xz_pgp.txt diff --git a/environment/toolchain/v5/build.sh b/environment/toolchain/v5/build.sh new file mode 100755 index 000000000..b6c1ff6d8 --- /dev/null +++ b/environment/toolchain/v5/build.sh @@ -0,0 +1,1280 @@ +#!/bin/bash -e + +# helpers +pushd () { command pushd "$@" > /dev/null; } +popd () { command popd "$@" > /dev/null; } +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +CPUS=$( grep -c processor < /proc/cpuinfo ) +cd "$DIR" +source "$DIR/../../util.sh" +DISTRO="$(operating_system)" + +function log_tool_name () { + echo "" + echo "" + echo "#### $1 ####" + echo "" + echo "" +} + +for_arm=false +if [[ "$#" -eq 1 ]]; then + if [[ "$1" == "--for-arm" ]]; then + for_arm=true + else + echo "Invalid argument received. Use '--for-arm' if you want to build the toolchain for ARM based CPU." + exit 1 + fi +fi +TOOLCHAIN_STDCXX="${TOOLCHAIN_STDCXX:-libstdc++}" +if [[ "$TOOLCHAIN_STDCXX" != "libstdc++" && "$TOOLCHAIN_STDCXX" != "libc++" ]]; then + echo "Only GCC (libstdc++) or LLVM (libc++) C++ standard library implementations are supported." + exit 1 +fi +# TODO(gitbuda): Make LLVM linker configurable -DLLVM_ENABLE_LLD=ON + -fuse-ld=lld (gold vs lld). +# TODO(gitbuda): Add --skip-gpg and somehow make gpg check configurable per OS. +TOOLCHAIN_VERSION=5 +# package versions used +GCC_VERSION=13.2.0 +BINUTILS_VERSION=2.41 +case "$DISTRO" in + centos-7) # because GDB >= 9 does NOT compile with readline6. + GDB_VERSION=8.3 + ;; + *) + GDB_VERSION=13.2 + ;; +esac +CMAKE_VERSION=3.27.7 +CPPCHECK_VERSION=2.12.1 +LLVM_VERSION=17.0.2 +SWIG_VERSION=4.1.1 # used only for LLVM compilation +# define the name used to make the toolchain archive +DISTRO_FULL_NAME=${DISTRO} +if [[ "${DISTRO}" == centos* ]]; then + if [[ "$for_arm" = "true" ]]; then + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-aarch64" + else + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-x86_64" + fi +else + if [[ "$for_arm" = "true" ]]; then + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-arm64" + else + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-amd64" + fi +fi +if [ "$TOOLCHAIN_STDCXX" = "libstdc++" ]; then + # Pass because infra scripts assume there is not C++ standard lib in the name. + echo "NOTE: Not adding anything to the archive name, GCC C++ standard lib is used to build libraries." +else + echo "NOTE: Adding libc++ to the archive name, all libraries are built with LLVM standard C++ library." + DISTRO_FULL_NAME="$DISTRO_FULL_NAME-libc++" +fi + +# Set the right operating system setup script. +ENV_SCRIPT_RELATIVE="environment/os/$DISTRO.sh" +if [[ "$for_arm" = true ]]; then + ENV_SCRIPT_RELATIVE="environment/os/$DISTRO-arm.sh" +fi +ENV_SCRIPT="$DIR/../../../$ENV_SCRIPT_RELATIVE" +echo "ALL BUILD PACKAGES: $(${ENV_SCRIPT} list TOOLCHAIN_BUILD_DEPS)" +${ENV_SCRIPT} check TOOLCHAIN_BUILD_DEPS +echo "ALL RUN PACKAGES: $(${ENV_SCRIPT} list TOOLCHAIN_RUN_DEPS)" +${ENV_SCRIPT} check TOOLCHAIN_RUN_DEPS + +# check installation directory +NAME=toolchain-v$TOOLCHAIN_VERSION +PREFIX=/opt/$NAME +mkdir -p $PREFIX >/dev/null 2>/dev/null || true +if [ ! -d $PREFIX ] || [ ! -w $PREFIX ]; then + echo "Please make sure that the directory '$PREFIX' exists and is writable by the current user!" + echo + echo "If unsure, execute these commands as root:" + echo " mkdir $PREFIX && chown $USER:$USER $PREFIX" + echo + echo "Press <return> when you have created the directory and granted permissions." + # wait for the directory to be created + while true; do + read + if [ ! -d $PREFIX ] || [ ! -w $PREFIX ]; then + echo + echo "You can't continue before you have created the directory and granted permissions!" + echo + echo "Press <return> when you have created the directory and granted permissions." + else + break + fi + done +fi + +# create archives directory +mkdir -p archives && pushd archives +# download all archives +if [ ! -f gcc-$GCC_VERSION.tar.gz ]; then + wget https://ftp.gnu.org/gnu/gcc/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.gz +fi +if [ ! -f binutils-$BINUTILS_VERSION.tar.gz ]; then + wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS_VERSION.tar.gz +fi +if [ ! -f gdb-$GDB_VERSION.tar.gz ]; then + wget https://ftp.gnu.org/gnu/gdb/gdb-$GDB_VERSION.tar.gz +fi +if [ ! -f cmake-$CMAKE_VERSION.tar.gz ]; then + wget https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION.tar.gz +fi +if [ ! -f cppcheck-$CPPCHECK_VERSION.tar.gz ]; then + wget https://github.com/danmar/cppcheck/archive/refs/tags/$CPPCHECK_VERSION.tar.gz -O cppcheck-$CPPCHECK_VERSION.tar.gz +fi +if [ ! -d llvmorg-$LLVM_VERSION ]; then + git clone --depth 1 --branch llvmorg-$LLVM_VERSION https://github.com/llvm/llvm-project.git llvmorg-$LLVM_VERSION +fi +if [ ! -f pahole-gdb-master.zip ]; then + wget https://github.com/PhilArmstrong/pahole-gdb/archive/master.zip -O pahole-gdb-master.zip +fi +if [ ! -f swig-$SWIG_VERSION.tar.gz ]; then + wget https://github.com/swig/swig/archive/refs/tags/v$SWIG_VERSION.tar.gz -O swig-$SWIG_VERSION.tar.gz +fi + +# verify all archives +# NOTE: Verification can fail if the archive is signed by another developer. I +# haven't added commands to download all developer GnuPG keys because the +# download is very slow. If the verification fails for you, figure out who has +# signed the archive and download their public key instead. +GPG="gpg --homedir .gnupg" +KEYSERVER="hkp://keyserver.ubuntu.com" +mkdir -p .gnupg +chmod 700 .gnupg + +popd +# create build directory +mkdir -p build +pushd build + +log_tool_name "GCC $GCC_VERSION" +if [ ! -f $PREFIX/bin/gcc ]; then + if [ -d gcc-$GCC_VERSION ]; then + rm -rf gcc-$GCC_VERSION + fi + tar -xvf ../archives/gcc-$GCC_VERSION.tar.gz + pushd gcc-$GCC_VERSION + ./contrib/download_prerequisites + mkdir build && pushd build + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=gcc-11&arch=arm64&ver=11.2.0-14&stamp=1642052446&raw=0 + if [[ "$for_arm" = true ]]; then + ../configure -v \ + --prefix=$PREFIX \ + --disable-multilib \ + --with-system-zlib \ + --enable-languages=c,c++,fortran \ + --enable-gold=yes \ + --enable-ld=yes \ + --disable-vtable-verify \ + --enable-libmpx \ + --without-cuda-driver \ + --enable-shared \ + --enable-linker-build-id \ + --without-included-gettext \ + --enable-threads=posix \ + --enable-nls \ + --enable-bootstrap \ + --enable-clocale=gnu \ + --enable-libstdcxx-debug \ + --enable-libstdcxx-time=yes \ + --with-default-libstdcxx-abi=new \ + --enable-gnu-unique-object \ + --disable-libquadmath \ + --disable-libquadmath-support \ + --enable-plugin \ + --enable-default-pie \ + --with-system-zlib \ + --enable-libphobos-checking=release \ + --with-target-system-zlib=auto \ + --enable-objc-gc=auto \ + --enable-multiarch \ + --enable-fix-cortex-a53-843419 \ + --disable-werror \ + --enable-checking=release \ + --build=aarch64-linux-gnu \ + --host=aarch64-linux-gnu \ + --target=aarch64-linux-gnu \ + --with-build-config=bootstrap-lto-lean \ + --enable-link-serialization=4 + else + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=gcc-8&arch=amd64&ver=8.3.0-6&stamp=1554588545 + ../configure -v \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --target=x86_64-linux-gnu \ + --prefix=$PREFIX \ + --disable-multilib \ + --with-system-zlib \ + --enable-checking=release \ + --enable-languages=c,c++,fortran \ + --enable-gold=yes \ + --enable-ld=yes \ + --enable-lto \ + --enable-bootstrap \ + --disable-vtable-verify \ + --disable-werror \ + --without-included-gettext \ + --enable-threads=posix \ + --enable-nls \ + --enable-clocale=gnu \ + --enable-libstdcxx-debug \ + --enable-libstdcxx-time=yes \ + --enable-gnu-unique-object \ + --enable-libmpx \ + --enable-plugin \ + --enable-default-pie \ + --with-target-system-zlib \ + --with-tune=generic \ + --without-cuda-driver + #--program-suffix=$( printf "$GCC_VERSION" | cut -d '.' -f 1,2 ) \ + fi + make -j$CPUS + # make -k check # run test suite + make install + popd && popd +fi + +# activate toolchain +export PATH=$PREFIX/bin:$PATH +export LD_LIBRARY_PATH=$PREFIX/lib64 + +log_tool_name "binutils $BINUTILS_VERSION" +if [ ! -f $PREFIX/bin/ld.gold ]; then + if [ -d binutils-$BINUTILS_VERSION ]; then + rm -rf binutils-$BINUTILS_VERSION + fi + tar -xvf ../archives/binutils-$BINUTILS_VERSION.tar.gz + pushd binutils-$BINUTILS_VERSION + mkdir build && pushd build + if [[ "$for_arm" = true ]]; then + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=binutils&arch=arm64&ver=2.37.90.20220130-2&stamp=1643576183&raw=0 + env \ + CC=gcc \ + CXX=g++ \ + CFLAGS="-g -O2" \ + CXXFLAGS="-g -O2" \ + LDFLAGS="" \ + ../configure \ + --build=aarch64-linux-gnu \ + --host=aarch64-linux-gnu \ + --prefix=$PREFIX \ + --enable-ld=default \ + --enable-gold \ + --enable-lto \ + --enable-pgo-build=lto \ + --enable-plugins \ + --enable-shared \ + --enable-threads \ + --with-system-zlib \ + --enable-deterministic-archives \ + --disable-compressed-debug-sections \ + --disable-x86-used-note \ + --enable-obsolete \ + --enable-new-dtags \ + --disable-werror + else + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=binutils&arch=amd64&ver=2.32-7&stamp=1553247092 + env \ + CC=gcc \ + CXX=g++ \ + CFLAGS="-g -O2" \ + CXXFLAGS="-g -O2" \ + LDFLAGS="" \ + ../configure \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --prefix=$PREFIX \ + --enable-ld=default \ + --enable-gold \ + --enable-lto \ + --enable-plugins \ + --enable-shared \ + --enable-threads \ + --with-system-zlib \ + --enable-deterministic-archives \ + --disable-compressed-debug-sections \ + --enable-new-dtags \ + --disable-werror + fi + make -j$CPUS + # make -k check # run test suite + make install + popd && popd +fi + +log_tool_name "GDB $GDB_VERSION" +if [ ! -f $PREFIX/bin/gdb ]; then + if [ -d gdb-$GDB_VERSION ]; then + rm -rf gdb-$GDB_VERSION + fi + tar -xvf ../archives/gdb-$GDB_VERSION.tar.gz + pushd gdb-$GDB_VERSION + mkdir build && pushd build + if [[ "$for_arm" = true ]]; then + # https://buildd.debian.org/status/fetch.php?pkg=gdb&arch=arm64&ver=10.1-2&stamp=1614889767&raw=0 + env \ + CC=gcc \ + CXX=g++ \ + CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security" \ + CXXFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security" \ + CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC" \ + LDFLAGS="-Wl,-z,relro" \ + PYTHON="" \ + ../configure \ + --build=aarch64-linux-gnu \ + --host=aarch64-linux-gnu \ + --prefix=$PREFIX \ + --disable-maintainer-mode \ + --disable-dependency-tracking \ + --disable-silent-rules \ + --disable-gdbtk \ + --disable-shared \ + --without-guile \ + --with-system-gdbinit=$PREFIX/etc/gdb/gdbinit \ + --with-system-readline \ + --with-expat \ + --with-system-zlib \ + --with-lzma \ + --without-babeltrace \ + --enable-tui \ + --with-python=python3 + else + # https://buildd.debian.org/status/fetch.php?pkg=gdb&arch=amd64&ver=8.2.1-2&stamp=1550831554&raw=0 + env \ + CC=gcc \ + CXX=g++ \ + CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security" \ + CXXFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security" \ + CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC" \ + LDFLAGS="-Wl,-z,relro" \ + PYTHON="" \ + ../configure \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --prefix=$PREFIX \ + --disable-maintainer-mode \ + --disable-dependency-tracking \ + --disable-silent-rules \ + --disable-gdbtk \ + --disable-shared \ + --without-guile \ + --with-system-gdbinit=$PREFIX/etc/gdb/gdbinit \ + --with-system-readline \ + --with-expat \ + --with-system-zlib \ + --with-lzma \ + --with-babeltrace \ + --with-intel-pt \ + --enable-tui \ + --with-python=python3 + fi + make -j$CPUS + make install + popd && popd +fi + +log_tool_name "install pahole" +if [ ! -d $PREFIX/share/pahole-gdb ]; then + unzip ../archives/pahole-gdb-master.zip + mv pahole-gdb-master $PREFIX/share/pahole-gdb +fi + +log_tool_name "setup system gdbinit" +if [ ! -f $PREFIX/etc/gdb/gdbinit ]; then + mkdir -p $PREFIX/etc/gdb + cat >$PREFIX/etc/gdb/gdbinit <<EOF +# improve formatting +set print pretty on +set print object on +set print static-members on +set print vtbl on +set print demangle on +set demangle-style gnu-v3 +set print sevenbit-strings off + +# load libstdc++ pretty printers +add-auto-load-scripts-directory $PREFIX/lib64 +add-auto-load-safe-path $PREFIX + +# load pahole +python +sys.path.insert(0, "$PREFIX/share/pahole-gdb") +import offsets +import pahole +end +EOF +fi + +log_tool_name "cmake $CMAKE_VERSION" +if [ ! -f $PREFIX/bin/cmake ]; then + if [ -d cmake-$CMAKE_VERSION ]; then + rm -rf cmake-$CMAKE_VERSION + fi + tar -xvf ../archives/cmake-$CMAKE_VERSION.tar.gz + pushd cmake-$CMAKE_VERSION + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=cmake&arch=amd64&ver=3.13.4-1&stamp=1549799837 + echo 'set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip rpath" FORCE)' >> build-flags.cmake + echo 'set(CMAKE_USE_RELATIVE_PATHS ON CACHE BOOL "Use relative paths" FORCE)' >> build-flags.cmake + echo 'set(CMAKE_C_FLAGS "-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" CACHE STRING "C flags" FORCE)' >> build-flags.cmake + echo 'set(CMAKE_CXX_FLAGS "-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" CACHE STRING "C++ flags" FORCE)' >> build-flags.cmake + echo 'set(CMAKE_SKIP_BOOTSTRAP_TEST ON CACHE BOOL "Skip BootstrapTest" FORCE)' >> build-flags.cmake + echo 'set(BUILD_CursesDialog ON CACHE BOOL "Build curses GUI" FORCE)' >> build-flags.cmake + mkdir build && pushd build + ../bootstrap \ + --prefix=$PREFIX \ + --init=../build-flags.cmake \ + --parallel=$CPUS \ + --system-curl + make -j$CPUS + # make test # run test suite + make install + popd && popd +fi + +log_tool_name "cppcheck $CPPCHECK_VERSION" +if [ ! -f $PREFIX/bin/cppcheck ]; then + if [ -d cppcheck-$CPPCHECK_VERSION ]; then + rm -rf cppcheck-$CPPCHECK_VERSION + fi + tar -xvf ../archives/cppcheck-$CPPCHECK_VERSION.tar.gz + pushd cppcheck-$CPPCHECK_VERSION + env \ + CC=gcc \ + CXX=g++ \ + PREFIX=$PREFIX \ + FILESDIR=$PREFIX/share/cppcheck \ + CFGDIR=$PREFIX/share/cppcheck/cfg \ + make -j$CPUS + env \ + CC=gcc \ + CXX=g++ \ + PREFIX=$PREFIX \ + FILESDIR=$PREFIX/share/cppcheck \ + CFGDIR=$PREFIX/share/cppcheck/cfg \ + make install + popd +fi + +log_tool_name "swig $SWIG_VERSION" +if [ ! -d swig-$SWIG_VERSION/install ]; then + if [ -d swig-$SWIG_VERSION ]; then + rm -rf swig-$SWIG_VERSION + fi + tar -xvf ../archives/swig-$SWIG_VERSION.tar.gz + pushd swig-$SWIG_VERSION + ./autogen.sh + mkdir build && pushd build + ../configure --prefix=$DIR/build/swig-$SWIG_VERSION/install + make -j$CPUS + make install + popd && popd +fi + +log_tool_name "LLVM $LLVM_VERSION" +if [ ! -f $PREFIX/bin/clang ]; then + if [ -d llvmorg-$LLVM_VERSION ]; then + rm -rf llvmorg-$LLVM_VERSION + fi + cp -r ../archives/llvmorg-$LLVM_VERSION ./llvmorg-$LLVM_VERSION + + # NOTE: Go under llvmorg-$LLVM_VERSION/llvm/CMakeLists.txt to see all + # options, docs pages are not up to date. + TOOLCHAIN_LLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;lldb;lld" + TOOLCHAIN_LLVM_ENABLE_RUNTIMES="libunwind" + if [ "$TOOLCHAIN_STDCXX" = "libc++" ]; then + TOOLCHAIN_LLVM_ENABLE_RUNTIMES="$TOOLCHAIN_LLVM_ENABLE_RUNTIMES;libcxx;libcxxabi" + fi + + pushd llvmorg-$LLVM_VERSION + # activate swig + export PATH=$DIR/build/swig-$SWIG_VERSION/install/bin:$PATH + # influenced by: https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-7&arch=amd64&ver=1%3A7.0.1%7E%2Brc2-1%7Eexp1&stamp=1541506173&raw=0 + cmake -S llvm -B build -G "Unix Makefiles" \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DCMAKE_C_COMPILER=$PREFIX/bin/gcc \ + -DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \ + -DCMAKE_CXX_LINK_FLAGS="-L$PREFIX/lib64 -Wl,-rpath,$PREFIX/lib64" \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -DNDEBUG" \ + -DCMAKE_CXX_FLAGS=' -fuse-ld=gold -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option' \ + -DCMAKE_C_FLAGS=' -fuse-ld=gold -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option' \ + -DLLVM_ENABLE_PROJECTS="$TOOLCHAIN_LLVM_ENABLE_PROJECTS" \ + -DLLVM_ENABLE_RUNTIMES="$TOOLCHAIN_LLVM_ENABLE_RUNTIMES" \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_INSTALL_UTILS=ON \ + -DLLVM_VERSION_SUFFIX= \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DLLVM_BINUTILS_INCDIR=$PREFIX/include/ \ + -DLLVM_INCLUDE_BENCHMARKS=OFF \ + -DLLVM_USE_PERF=yes \ + -DCOMPILER_RT_INCLUDE_TESTS=OFF \ + -DLIBCXX_INCLUDE_BENCHMARKS=OFF + pushd build + make -j$CPUS + if [[ "$for_arm" = false ]]; then + make -j$CPUS check-clang # run clang test suite + # ldd is not used + # make -j$CPUS check-lld # run lld test suite + fi + make install + popd && popd +fi + +popd + +# create README +if [ ! -f $PREFIX/README.md ]; then + cat >$PREFIX/README.md <<EOF +# Memgraph Toolchain v$TOOLCHAIN_VERSION + +## Included tools + + - GCC $GCC_VERSION + - Binutils $BINUTILS_VERSION + - GDB $GDB_VERSION + - CMake $CMAKE_VERSION + - Cppcheck $CPPCHECK_VERSION + - LLVM (clang;clang-tools-extra;compiler-rt;libunwind;lldb[;libcxx;libcxxabi]) $LLVM_VERSION + +## Required libraries + +In order to be able to run all of these tools you should install the following +packages: +\`\`\` +./$ENV_SCRIPT_RELATIVE list TOOLCHAIN_RUN_DEPS) +\`\`\` +by executing: +\`\`\` +./$ENV_SCRIPT_RELATIVE install TOOLCHAIN_RUN_DEPS) +\`\`\` + +## Usage + +In order to use the toolchain you just have to source the activation script: + +\`\`\` +source $PREFIX/activate +\`\`\` + +On the other hand, \`deactivate\` will get back your original setup by restoring +the initial environment variables. +EOF +fi + +# create activation script +if [ ! -f $PREFIX/activate ]; then + cat >$PREFIX/activate <<EOF +# This file must be used with "source $PREFIX/activate" *from bash* +# You can't run it directly! + +env_error="You already have an active virtual environment!" + +# zsh does not recognize the option -t of the command type +# therefore we use the alternative whence -w +if [[ "\$ZSH_NAME" == "zsh" ]]; then + # check for active virtual environments + if [ "\$( whence -w deactivate )" != "deactivate: none" ]; then + echo \$env_error + return 0; + fi +# any other shell +else + # check for active virtual environments + if [ "\$( type -t deactivate )" != "" ]; then + echo \$env_error + return 0 + fi +fi + +# check that we aren't root +if [[ "\$USER" == "root" ]]; then + echo "You shouldn't use the toolchain as root!" + return 0 +fi + +# save original environment +export ORIG_PATH=\$PATH +export ORIG_PS1=\$PS1 +export ORIG_LD_LIBRARY_PATH=\$LD_LIBRARY_PATH +export ORIG_CXXFLAGS=\$CXXFLAGS +export ORIG_CFLAGS=\$CFLAGS + +# activate new environment +export PATH=$PREFIX:$PREFIX/bin:\$PATH +export PS1="($NAME) \$PS1" +export LD_LIBRARY_PATH=$PREFIX/lib:$PREFIX/lib64 +export CXXFLAGS=-isystem\ $PREFIX/include\ \$CXXFLAGS +export CFLAGS=-isystem\ $PREFIX/include\ \$CFLAGS + +# disable root +function su () { + echo "You don't want to use root functions while using the toolchain!" + return 1 +} +function sudo () { + echo "You don't want to use root functions while using the toolchain!" + return 1 +} + +# create deactivation function +function deactivate() { + export PATH=\$ORIG_PATH + export PS1=\$ORIG_PS1 + export LD_LIBRARY_PATH=\$ORIG_LD_LIBRARY_PATH + export CXXFLAGS=\$ORIG_CXXFLAGS + export CFLAGS=\$ORIG_CFLAGS + unset ORIG_PATH ORIG_PS1 ORIG_LD_LIBRARY_PATH ORIG_CXXFLAGS ORIG_CFLAGS + unset -f su sudo deactivate +} +EOF +fi + +################################### +# # +# Third-party library compilation # +# # +################################### +# variable: +# * architecture : ARM, x86 +# * operating system: Lin, Mac, Win (many distros and versions) +# * compiler : clang, gcc +# * standard lib : libstdc++, libc++ +# options: +# * extreme 1 -> move all libs + Memgraph compilation here, have one giant script +# * extreme 2 -> build a granular package manager, each lib (for all variable) separated +BOOST_SHA256=205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6 +BOOST_VERSION=1.81.0 +BOOST_VERSION_UNDERSCORES=`echo "${BOOST_VERSION//./_}"` +BZIP2_SHA256=a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd +BZIP2_VERSION=1.0.6 +DOUBLE_CONVERSION_SHA256=8a79e87d02ce1333c9d6c5e47f452596442a343d8c3e9b234e8a62fce1b1d49c +DOUBLE_CONVERSION_VERSION=3.1.6 + +# NOTE: At some point Folly stopped supporting OpenSSL 1.0 which is critical +# for CentOS7. If you decide to bump FBLIBS_VERSION drop Folly of stop +# supporting CentOS7. +FBLIBS_VERSION=2022.01.31.00 +# FBLIBS_VERSION=2023.09.25.00 +FIZZ_SHA256=32a60e78d41ea2682ce7e5d741b964f0ea83642656e42d4fea90c0936d6d0c7d +# FIZZ_SHA256=002949ec9e57e2b205e43a7ca4e2acd8730923ad124dba8ecbe4c0dc44e4627b +FOLLY_SHA256=7b8d5dd2eb51757858247af0ad27af2e3e93823f84033a628722b01e06cd68a9 +# FOLLY_SHA256=195712d6ff7e08d64e1340ad8d21e39a261114da0119920e747f5d43b1b47aac +PROXYGEN_SHA256=5360a8ccdfb2f5a6c7b3eed331ec7ab0e2c792d579c6fff499c85c516c11fe14 +# PROXYGEN_SHA256=7a0d9f048c1d8b0ffbf59ab401fe6970a39e88bf6293cf5c296e9eab4ca2a69e +WANGLE_SHA256=1002e9c32b6f4837f6a760016e3b3e22f3509880ef3eaad191c80dc92655f23f +# WANGLE_SHA256=0e493c03572bb27fe9ca03a9da5023e52fde99c95abdcaa919bb6190e7e69532 + +FLEX_VERSION=2.6.4 +FMT_SHA256=78b8c0a72b1c35e4443a7e308df52498252d1cefc2b08c9a97bc9ee6cfe61f8b +FMT_VERSION=10.1.1 +# NOTE: spdlog depends on exact fmt versions -> UPGRADE fmt and spdlog TOGETHER. +SPDLOG_SHA256=4dccf2d10f410c1e2feaff89966bfc49a1abb29ef6f08246335b110e001e09a9 +SPDLOG_VERSION=1.12.0 +GFLAGS_COMMIT_HASH=b37ceb03a0e56c9f15ce80409438a555f8a67b7c +GLOG_SHA256=eede71f28371bf39aa69b45de23b329d37214016e2055269b3b5e7cfd40b59f5 +GLOG_VERSION=0.5.0 +JEMALLOC_VERSION=5.2.1 # Some people complained about 5.3.0 performance. +LIBAIO_VERSION=0.3.112 +LIBEVENT_VERSION=2.1.12-stable +LIBSODIUM_VERSION=1.0.18 +LIBUNWIND_VERSION=1.6.2 +LZ4_SHA256=0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b +LZ4_VERSION=1.9.4 +SNAPPY_SHA256=75c1fbb3d618dd3a0483bff0e26d0a92b495bbe5059c8b4f1c962b478b6e06e7 +SNAPPY_VERSION=1.1.9 +XZ_VERSION=5.2.5 # for LZMA +ZLIB_VERSION=1.3 +ZSTD_VERSION=1.5.0 + +pushd archives +if [ ! -f boost_$BOOST_VERSION_UNDERSCORES.tar.gz ]; then + # do not redirect the download into a file, because it will download the file into a ".1" postfixed file + # I am not sure why this is happening, but I think because of some redirects that happens during the download + wget https://boostorg.jfrog.io/artifactory/main/release/$BOOST_VERSION/source/boost_$BOOST_VERSION_UNDERSCORES.tar.gz -O boost_$BOOST_VERSION_UNDERSCORES.tar.gz +fi +if [ ! -f bzip2-$BZIP2_VERSION.tar.gz ]; then + wget https://sourceforge.net/projects/bzip2/files/bzip2-$BZIP2_VERSION.tar.gz -O bzip2-$BZIP2_VERSION.tar.gz +fi +if [ ! -f double-conversion-$DOUBLE_CONVERSION_VERSION.tar.gz ]; then + wget https://github.com/google/double-conversion/archive/refs/tags/v$DOUBLE_CONVERSION_VERSION.tar.gz -O double-conversion-$DOUBLE_CONVERSION_VERSION.tar.gz +fi +if [ ! -f fizz-$FBLIBS_VERSION.tar.gz ]; then + wget https://github.com/facebookincubator/fizz/releases/download/v$FBLIBS_VERSION/fizz-v$FBLIBS_VERSION.tar.gz -O fizz-$FBLIBS_VERSION.tar.gz +fi +if [ ! -f flex-$FLEX_VERSION.tar.gz ]; then + wget https://github.com/westes/flex/releases/download/v$FLEX_VERSION/flex-$FLEX_VERSION.tar.gz -O flex-$FLEX_VERSION.tar.gz +fi +if [ ! -f fmt-$FMT_VERSION.tar.gz ]; then + wget https://github.com/fmtlib/fmt/archive/refs/tags/$FMT_VERSION.tar.gz -O fmt-$FMT_VERSION.tar.gz +fi +if [ ! -f spdlog-$SPDLOG_VERSION.tar.gz ]; then + wget https://github.com/gabime/spdlog/archive/refs/tags/v$SPDLOG_VERSION.tar.gz -O spdlog-$SPDLOG_VERSION.tar.gz +fi +if [ ! -d folly-$FBLIBS_VERSION ]; then + git clone --depth 1 --branch v$FBLIBS_VERSION https://github.com/facebook/folly.git folly-$FBLIBS_VERSION +fi +if [ ! -f glog-$GLOG_VERSION.tar.gz ]; then + wget https://github.com/google/glog/archive/refs/tags/v$GLOG_VERSION.tar.gz -O glog-$GLOG_VERSION.tar.gz +fi +if [ ! -f libaio-$LIBAIO_VERSION.tar.gz ]; then + wget https://releases.pagure.org/libaio/libaio-$LIBAIO_VERSION.tar.gz -O libaio-$LIBAIO_VERSION.tar.gz +fi +if [ ! -f libevent-$LIBEVENT_VERSION.tar.gz ]; then + wget https://github.com/libevent/libevent/releases/download/release-$LIBEVENT_VERSION/libevent-$LIBEVENT_VERSION.tar.gz -O libevent-$LIBEVENT_VERSION.tar.gz +fi +if [ ! -f libsodium-$LIBSODIUM_VERSION.tar.gz ]; then + curl https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VERSION.tar.gz -o libsodium-$LIBSODIUM_VERSION.tar.gz +fi +if [ ! -f libunwind-$LIBUNWIND_VERSION.tar.gz ]; then + wget https://github.com/libunwind/libunwind/releases/download/v$LIBUNWIND_VERSION/libunwind-$LIBUNWIND_VERSION.tar.gz -O libunwind-$LIBUNWIND_VERSION.tar.gz +fi +if [ ! -f lz4-$LZ4_VERSION.tar.gz ]; then + wget https://github.com/lz4/lz4/archive/v$LZ4_VERSION.tar.gz -O lz4-$LZ4_VERSION.tar.gz +fi +if [ ! -f proxygen-$FBLIBS_VERSION.tar.gz ]; then + wget https://github.com/facebook/proxygen/releases/download/v$FBLIBS_VERSION/proxygen-v$FBLIBS_VERSION.tar.gz -O proxygen-$FBLIBS_VERSION.tar.gz +fi +if [ ! -f snappy-$SNAPPY_VERSION.tar.gz ]; then + wget https://github.com/google/snappy/archive/refs/tags/$SNAPPY_VERSION.tar.gz -O snappy-$SNAPPY_VERSION.tar.gz +fi +if [ ! -f xz-$XZ_VERSION.tar.gz ]; then + wget https://tukaani.org/xz/xz-$XZ_VERSION.tar.gz -O xz-$XZ_VERSION.tar.gz +fi +if [ ! -f zlib-$ZLIB_VERSION.tar.gz ]; then + wget https://zlib.net/zlib-$ZLIB_VERSION.tar.gz -O zlib-$ZLIB_VERSION.tar.gz +fi +if [ ! -f zstd-$ZSTD_VERSION.tar.gz ]; then + wget https://github.com/facebook/zstd/releases/download/v$ZSTD_VERSION/zstd-$ZSTD_VERSION.tar.gz -O zstd-$ZSTD_VERSION.tar.gz +fi +if [ ! -f wangle-$FBLIBS_VERSION.tar.gz ]; then + wget https://github.com/facebook/wangle/releases/download/v$FBLIBS_VERSION/wangle-v$FBLIBS_VERSION.tar.gz -O wangle-$FBLIBS_VERSION.tar.gz +fi + +# verify boost +echo "$BOOST_SHA256 boost_$BOOST_VERSION_UNDERSCORES.tar.gz" | sha256sum -c +# verify bzip2 +echo "$BZIP2_SHA256 bzip2-$BZIP2_VERSION.tar.gz" | sha256sum -c +# verify double-conversion +echo "$DOUBLE_CONVERSION_SHA256 double-conversion-$DOUBLE_CONVERSION_VERSION.tar.gz" | sha256sum -c +# verify fizz +echo "$FIZZ_SHA256 fizz-$FBLIBS_VERSION.tar.gz" | sha256sum -c +# verify flex +if [ ! -f flex-$FLEX_VERSION.tar.gz.sig ]; then + wget https://github.com/westes/flex/releases/download/v$FLEX_VERSION/flex-$FLEX_VERSION.tar.gz.sig +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0xE4B29C8D64885307 + $GPG --verify flex-$FLEX_VERSION.tar.gz.sig flex-$FLEX_VERSION.tar.gz +fi +# verify fmt +echo "$FMT_SHA256 fmt-$FMT_VERSION.tar.gz" | sha256sum -c +# verify spdlog +echo "$SPDLOG_SHA256 spdlog-$SPDLOG_VERSION.tar.gz" | sha256sum -c +# verify folly +# echo "$FOLLY_SHA256 folly-$FBLIBS_VERSION.tar.gz" | sha256sum -c +# verify glog +echo "$GLOG_SHA256 glog-$GLOG_VERSION.tar.gz" | sha256sum -c +# verify libaio +if [ ! -f libaio-CHECKSUMS ]; then + wget https://releases.pagure.org/libaio/CHECKSUMS -O libaio-CHECKSUMS +fi +cat libaio-CHECKSUMS | grep "SHA256 (libaio-$LIBAIO_VERSION.tar.gz)" | sha256sum -c +# verify libevent +if [ ! -f libevent-$LIBEVENT_VERSION.tar.gz.asc ]; then + wget https://github.com/libevent/libevent/releases/download/release-$LIBEVENT_VERSION/libevent-$LIBEVENT_VERSION.tar.gz.asc +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0x9E3AC83A27974B84D1B3401DB86086848EF8686D + $GPG --verify libevent-$LIBEVENT_VERSION.tar.gz.asc libevent-$LIBEVENT_VERSION.tar.gz +fi +# verify libsodium +if [ ! -f libsodium-$LIBSODIUM_VERSION.tar.gz.sig ]; then + curl https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VERSION.tar.gz.sig -o libsodium-$LIBSODIUM_VERSION.tar.gz.sig +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0x0C7983A8FD9A104C623172CB62F25B592B6F76DA + $GPG --verify libsodium-$LIBSODIUM_VERSION.tar.gz.sig libsodium-$LIBSODIUM_VERSION.tar.gz +fi +# verify libunwind +if [ ! -f libunwind-$LIBUNWIND_VERSION.tar.gz.sig ]; then + wget https://github.com/libunwind/libunwind/releases/download/v$LIBUNWIND_VERSION/libunwind-$LIBUNWIND_VERSION.tar.gz.sig +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0x75D2CFC56CC2E935A4143297015A268A17D55FA4 + $GPG --verify libunwind-$LIBUNWIND_VERSION.tar.gz.sig libunwind-$LIBUNWIND_VERSION.tar.gz +fi +# verify lz4 +echo "$LZ4_SHA256 lz4-$LZ4_VERSION.tar.gz" | sha256sum -c +# verify proxygen +echo "$PROXYGEN_SHA256 proxygen-$FBLIBS_VERSION.tar.gz" | sha256sum -c +# verify snappy +echo "$SNAPPY_SHA256 snappy-$SNAPPY_VERSION.tar.gz" | sha256sum -c +# verify xz +if [ ! -f xz-$XZ_VERSION.tar.gz.sig ]; then + wget https://tukaani.org/xz/xz-$XZ_VERSION.tar.gz.sig +fi +if false; then + $GPG --import ../xz_pgp.txt + $GPG --verify xz-$XZ_VERSION.tar.gz.sig xz-$XZ_VERSION.tar.gz +fi +# verify zlib +if [ ! -f zlib-$ZLIB_VERSION.tar.gz.asc ]; then + wget https://zlib.net/zlib-$ZLIB_VERSION.tar.gz.asc +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0x783FCD8E58BCAFBA + $GPG --verify zlib-$ZLIB_VERSION.tar.gz.asc zlib-$ZLIB_VERSION.tar.gz +fi +#verify zstd +if [ ! -f zstd-$ZSTD_VERSION.tar.gz.sig ]; then + wget https://github.com/facebook/zstd/releases/download/v$ZSTD_VERSION/zstd-$ZSTD_VERSION.tar.gz.sig +fi +if false; then + $GPG --keyserver $KEYSERVER --recv-keys 0xEF8FE99528B52FFD + $GPG --verify zstd-$ZSTD_VERSION.tar.gz.sig zstd-$ZSTD_VERSION.tar.gz +fi +# verify wangle +echo "$WANGLE_SHA256 wangle-$FBLIBS_VERSION.tar.gz" | sha256sum -c +popd + +pushd build +source $PREFIX/activate +export CC=$PREFIX/bin/clang +export CXX=$PREFIX/bin/clang++ +export CFLAGS="$CFLAGS -fPIC" +if [ "$TOOLCHAIN_STDCXX" = "libstdc++" ]; then + export CXXFLAGS="$CXXFLAGS -fPIC" +else + export CXXFLAGS="$CXXFLAGS -fPIC -stdlib=libc++" +fi +COMMON_CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=$PREFIX + -DCMAKE_PREFIX_PATH=$PREFIX + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_C_COMPILER=$CC + -DCMAKE_CXX_COMPILER=$CXX + -DBUILD_SHARED_LIBS=OFF + -DCMAKE_CXX_STANDARD=20 + -DBUILD_TESTING=OFF + -DCMAKE_REQUIRED_INCLUDES=$PREFIX/include + -DCMAKE_POSITION_INDEPENDENT_CODE=ON" +COMMON_CONFIGURE_FLAGS="--enable-shared=no --prefix=$PREFIX" +COMMON_MAKE_INSTALL_FLAGS="-j$CPUS BUILD_SHARED=no PREFIX=$PREFIX install" + +log_tool_name "bzip2 $BZIP2_VERSION" +if [ ! -f $PREFIX/include/bzlib.h ]; then + if [ -d bzip2-$BZIP2_VERSION ]; then + rm -rf bzip2-$BZIP2_VERSION + fi + tar -xzf ../archives/bzip2-$BZIP2_VERSION.tar.gz + pushd bzip2-$BZIP2_VERSION + make $COMMON_MAKE_INSTALL_FLAGS + popd +fi + +log_tool_name "fmt $FMT_VERSION" +if [ ! -d $PREFIX/include/fmt ]; then + if [ -d fmt-$FMT_VERSION ]; then + rm -rf fmt-$FMT_VERSION + fi + tar -xzf ../archives/fmt-$FMT_VERSION.tar.gz + pushd fmt-$FMT_VERSION + mkdir build && pushd build + cmake .. $COMMON_CMAKE_FLAGS -DFMT_TEST=OFF + make -j$CPUS install + popd && popd +fi + +log_tool_name "spdlog $SPDLOG_VERSION" +if [ ! -d $PREFIX/include/spdlog ]; then + if [ -d spdlog-$SPDLOG_VERSION ]; then + rm -rf spdlog-$SPDLOG_VERSION + fi + tar -xzf ../archives/spdlog-$SPDLOG_VERSION.tar.gz + pushd spdlog-$SPDLOG_VERSION + mkdir build && pushd build + cmake .. $COMMON_CMAKE_FLAGS + make -j$CPUS install + popd && popd +fi + +log_tool_name "lz4 $LZ4_VERSION" +if [ ! -f $PREFIX/include/lz4.h ]; then + if [ -d lz4-$LZ4_VERSION ]; then + rm -rf lz4-$LZ4_VERSION + fi + tar -xzf ../archives/lz4-$LZ4_VERSION.tar.gz + pushd lz4-$LZ4_VERSION + make $COMMON_MAKE_INSTALL_FLAGS + popd +fi + +log_tool_name "xz $XZ_VERSION" +if [ ! -f $PREFIX/include/lzma.h ]; then + if [ -d xz-$XZ_VERSION ]; then + rm -rf xz-$XZ_VERSION + fi + tar -xzf ../archives/xz-$XZ_VERSION.tar.gz + pushd xz-$XZ_VERSION + ./configure $COMMON_CONFIGURE_FLAGS + make -j$CPUS install + popd +fi + +log_tool_name "zlib $ZLIB_VERSION" +if [ ! -f $PREFIX/include/zlib.h ]; then + if [ -d zlib-$ZLIB_VERSION ]; then + rm -rf zlib-$ZLIB_VERSION + fi + tar -xzf ../archives/zlib-$ZLIB_VERSION.tar.gz + pushd zlib-$ZLIB_VERSION + mkdir build && pushd build + cmake .. $COMMON_CMAKE_FLAGS + make -j$CPUS install + rm $PREFIX/lib/libz.so* + popd && popd +fi + +log_tool_name "zstd $ZSTD_VERSION" +if [ ! -f $PREFIX/include/zstd.h ]; then + if [ -d zstd-$ZSTD_VERSION ]; then + rm -rf zstd-$ZSTD_VERSION + fi + tar -xzf ../archives/zstd-$ZSTD_VERSION.tar.gz + pushd zstd-$ZSTD_VERSION + # build is used by facebook builder + mkdir _build + pushd _build + cmake ../build/cmake $COMMON_CMAKE_FLAGS -DZSTD_BUILD_SHARED=OFF + make -j$CPUS install + popd && popd +fi + +log_tool_name "jmalloc $JEMALLOC_VERSION" +if [ ! -d $PREFIX/include/jemalloc ]; then + if [ -d jemalloc ]; then + rm -rf jemalloc + fi + git clone https://github.com/jemalloc/jemalloc.git jemalloc + pushd jemalloc + git checkout $JEMALLOC_VERSION + ./autogen.sh + MALLOC_CONF="retain:false,percpu_arena:percpu,oversize_threshold:0,muzzy_decay_ms:5000,dirty_decay_ms:5000" \ + ./configure \ + --disable-cxx \ + $COMMON_CONFIGURE_FLAGS \ + --with-malloc-conf="retain:false,percpu_arena:percpu,oversize_threshold:0,muzzy_decay_ms:5000,dirty_decay_ms:5000" + make -j$CPUS install + # NOTE: Old jmalloc config (toolchain-v4 and before). + # ./autogen.sh --with-malloc-conf="percpu_arena:percpu,oversize_threshold:0,muzzy_decay_ms:5000,dirty_decay_ms:5000" + # env \ + # EXTRA_FLAGS="-DJEMALLOC_NO_PRIVATE_NAMESPACE -D_GNU_SOURCE -Wno-redundant-decls" \ + # ./configure $COMMON_CONFIGURE_FLAGS --disable-cxx + # make -j$CPUS install + popd +fi + +log_tool_name "BOOST $BOOST_VERSION" +if [ ! -d $PREFIX/include/boost ]; then + if [ -d boost_$BOOST_VERSION_UNDERSCORES ]; then + rm -rf boost_$BOOST_VERSION_UNDERSCORES + fi + tar -xzf ../archives/boost_$BOOST_VERSION_UNDERSCORES.tar.gz + pushd boost_$BOOST_VERSION_UNDERSCORES + ./bootstrap.sh --prefix=$PREFIX --with-toolset=clang --with-python=python3 --without-icu + if [ "$TOOLCHAIN_STDCXX" = "libstdc++" ]; then + ./b2 toolset=clang -j$CPUS install variant=release link=static cxxstd=20 --disable-icu \ + -sZLIB_SOURCE="$PREFIX" -sZLIB_INCLUDE="$PREFIX/include" -sZLIB_LIBPATH="$PREFIX/lib" \ + -sBZIP2_SOURCE="$PREFIX" -sBZIP2_INCLUDE="$PREFIX/include" -sBZIP2_LIBPATH="$PREFIX/lib" \ + -sLZMA_SOURCE="$PREFIX" -sLZMA_INCLUDE="$PREFIX/include" -sLZMA_LIBPATH="$PREFIX/lib" \ + -sZSTD_SOURCE="$PREFIX" -sZSTD_INCLUDE="$PREFIX/include" -sZSTD_LIBPATH="$PREFIX/lib" + else + ./b2 toolset=clang -j$CPUS install variant=release link=static cxxstd=20 --disable-icu \ + cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" \ + -sZLIB_SOURCE="$PREFIX" -sZLIB_INCLUDE="$PREFIX/include" -sZLIB_LIBPATH="$PREFIX/lib" \ + -sBZIP2_SOURCE="$PREFIX" -sBZIP2_INCLUDE="$PREFIX/include" -sBZIP2_LIBPATH="$PREFIX/lib" \ + -sLZMA_SOURCE="$PREFIX" -sLZMA_INCLUDE="$PREFIX/include" -sLZMA_LIBPATH="$PREFIX/lib" \ + -sZSTD_SOURCE="$PREFIX" -sZSTD_INCLUDE="$PREFIX/include" -sZSTD_LIBPATH="$PREFIX/lib" + fi + popd +fi + +log_tool_name "double-conversion $DOUBLE_CONVERSION_VERSION" +if [ ! -d $PREFIX/include/double-conversion ]; then + if [ -d double-conversion-$DOUBLE_CONVERSION_VERSION ]; then + rm -rf double-conversion-$DOUBLE_CONVERSION_VERSION + fi + tar -xzf ../archives/double-conversion-$DOUBLE_CONVERSION_VERSION.tar.gz + pushd double-conversion-$DOUBLE_CONVERSION_VERSION + # build is used by facebook builder + mkdir build + pushd build + cmake .. $COMMON_CMAKE_FLAGS + make -j$CPUS install + popd && popd +fi + +log_tool_name "gflags (memgraph fork $GFLAGS_COMMIT_HASH)" +if [ ! -d $PREFIX/include/gflags ]; then + if [ -d gflags ]; then + rm -rf gflags + fi + + git clone https://github.com/memgraph/gflags.git gflags + pushd gflags + git checkout $GFLAGS_COMMIT_HASH + mkdir build + pushd build + cmake .. $COMMON_CMAKE_FLAGS \ + -DREGISTER_INSTALL_PREFIX=OFF \ + -DBUILD_gflags_nothreads_LIB=OFF \ + -DGFLAGS_NO_FILENAMES=0 + make -j$CPUS install + popd && popd +fi + +log_tool_name "libunwind $LIBUNWIND_VERSION" +if [ ! -f $PREFIX/include/libunwind.h ]; then + if [ -d libunwind-$LIBUNWIND_VERSION ]; then + rm -rf libunwind-$LIBUNWIND_VERSION + fi + tar -xzf ../archives/libunwind-$LIBUNWIND_VERSION.tar.gz + pushd libunwind-$LIBUNWIND_VERSION + ./configure $COMMON_CONFIGURE_FLAGS \ + --disable-minidebuginfo # disable LZMA usage to not depend on libLZMA + make -j$CPUS install + popd +fi + +log_tool_name "glog $GLOG_VERSION" +if [ ! -d $PREFIX/include/glog ]; then + if [ -d glog-$GLOG_VERSION ]; then + rm -rf glog-$GLOG_VERSION + fi + tar -xzf ../archives/glog-$GLOG_VERSION.tar.gz + pushd glog-$GLOG_VERSION + mkdir build + pushd build + cmake .. $COMMON_CMAKE_FLAGS -DGFLAGS_NOTHREADS=OFF + make -j$CPUS install + popd && popd +fi + +log_tool_name "libevent $LIBEVENT_VERSION" +if [ ! -d $PREFIX/include/event2 ]; then + if [ -d libevent-$LIBEVENT_VERSION ]; then + rm -rf libevent-$LIBEVENT_VERSION + fi + tar -xzf ../archives/libevent-$LIBEVENT_VERSION.tar.gz + pushd libevent-$LIBEVENT_VERSION + mkdir build + pushd build + cmake .. $COMMON_CMAKE_FLAGS \ + -DEVENT__DISABLE_BENCHMARK=ON \ + -DEVENT__DISABLE_REGRESS=ON \ + -DEVENT__DISABLE_SAMPLES=ON \ + -DEVENT__DISABLE_TESTS=ON \ + -DEVENT__LIBRARY_TYPE="STATIC" + make -j$CPUS install + popd && popd +fi + +log_tool_name "snappy $SNAPPY_VERSION" +if [ ! -f $PREFIX/include/snappy.h ]; then + if [ -d snappy-$SNAPPY_VERSION ]; then + rm -rf snappy-$SNAPPY_VERSION + fi + tar -xzf ../archives/snappy-$SNAPPY_VERSION.tar.gz + pushd snappy-$SNAPPY_VERSION + patch -p1 < $DIR/snappy.patch + mkdir build + pushd build + cmake .. $COMMON_CMAKE_FLAGS \ + -DSNAPPY_BUILD_TESTS=OFF \ + -DSNAPPY_BUILD_BENCHMARKS=OFF \ + -DSNAPPY_FUZZING_BUILD=OFF + make -j$CPUS install + popd && popd +fi + +log_tool_name "libsodium $LIBSODIUM_VERSION" +if [ ! -f $PREFIX/include/sodium.h ]; then + if [ -d libsodium-$LIBSODIUM_VERSION ]; then + rm -rf libsodium-$LIBSODIUM_VERSION + fi + tar -xzf ../archives/libsodium-$LIBSODIUM_VERSION.tar.gz + pushd libsodium-$LIBSODIUM_VERSION + ./configure $COMMON_CONFIGURE_FLAGS + make -j$CPUS install + popd +fi + +log_tool_name "libaio $LIBAIO_VERSION" +if [ ! -f $PREFIX/include/libaio.h ]; then + if [ -d libaio-$LIBAIO_VERSION ]; then + rm -rf libaio-$LIBAIO_VERSION + fi + tar -xzf ../archives/libaio-$LIBAIO_VERSION.tar.gz + pushd libaio-$LIBAIO_VERSION + make prefix=$PREFIX ENABLE_SHARED=0 -j$CPUS install + popd +fi + +# NOTE: Skip FBLIBS -> only used on project-pineapples +# * older versions don't compile on the latest GCC +# * newer versions don't work with OpenSSL 1.0 which is critical for CentOS7 +if false; then + log_tool_name "folly $FBLIBS_VERSION" + if [ ! -d $PREFIX/include/folly ]; then + if [ -d folly-$FBLIBS_VERSION ]; then + rm -rf folly-$FBLIBS_VERSION + fi + cp -r ../archives/folly-$FBLIBS_VERSION ./folly-$FBLIBS_VERSION + pushd folly-$FBLIBS_VERSION + git apply $DIR/folly-$FBLIBS_VERSION.patch + # build is used by facebook builder + mkdir _build + pushd _build + cmake .. $COMMON_CMAKE_FLAGS \ + -DBOOST_LINK_STATIC=ON \ + -DBUILD_TESTS=OFF \ + -DGFLAGS_NOTHREADS=OFF \ + -DCXX_STD="c++20" + make -j$CPUS install + popd && popd + fi + + log_tool_name "fizz $FBLIBS_VERSION" + if [ ! -d $PREFIX/include/fizz ]; then + if [ -d fizz-$FBLIBS_VERSION ]; then + rm -rf fizz-$FBLIBS_VERSION + fi + mkdir fizz-$FBLIBS_VERSION + tar -xzf ../archives/fizz-$FBLIBS_VERSION.tar.gz -C fizz-$FBLIBS_VERSION + pushd fizz-$FBLIBS_VERSION + # build is used by facebook builder + mkdir _build + pushd _build + cmake ../fizz $COMMON_CMAKE_FLAGS \ + -DBUILD_TESTS=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DGFLAGS_NOTHREADS=OFF + make -j$CPUS install + popd && popd + fi + + log_tool_name "wangle FBLIBS_VERSION" + if [ ! -d $PREFIX/include/wangle ]; then + if [ -d wangle-$FBLIBS_VERSION ]; then + rm -rf wangle-$FBLIBS_VERSION + fi + mkdir wangle-$FBLIBS_VERSION + tar -xzf ../archives/wangle-$FBLIBS_VERSION.tar.gz -C wangle-$FBLIBS_VERSION + pushd wangle-$FBLIBS_VERSION + # build is used by facebook builder + mkdir _build + pushd _build + cmake ../wangle $COMMON_CMAKE_FLAGS \ + -DBUILD_TESTS=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DGFLAGS_NOTHREADS=OFF + make -j$CPUS install + popd && popd + fi + + log_tool_name "proxygen $FBLIBS_VERSION" + if [ ! -d $PREFIX/include/proxygen ]; then + if [ -d proxygen-$FBLIBS_VERSION ]; then + rm -rf proxygen-$FBLIBS_VERSION + fi + mkdir proxygen-$FBLIBS_VERSION + tar -xzf ../archives/proxygen-$FBLIBS_VERSION.tar.gz -C proxygen-$FBLIBS_VERSION + pushd proxygen-$FBLIBS_VERSION + # build is used by facebook builder + mkdir _build + pushd _build + cmake .. $COMMON_CMAKE_FLAGS \ + -DBUILD_TESTS=OFF \ + -DBUILD_SAMPLES=OFF \ + -DGFLAGS_NOTHREADS=OFF \ + -DBUILD_QUIC=OFF + make -j$CPUS install + popd && popd + fi + + log_tool_name "fbthrift $FBLIBS_VERSION" + if [ ! -d $PREFIX/include/thrift ]; then + if [ -d fbthrift-$FBLIBS_VERSION ]; then + rm -rf fbthrift-$FBLIBS_VERSION + fi + git clone --depth 1 --branch v$FBLIBS_VERSION https://github.com/facebook/fbthrift.git fbthrift-$FBLIBS_VERSION + pushd fbthrift-$FBLIBS_VERSION + # build is used by facebook builder + mkdir _build + pushd _build + if [ "$TOOLCHAIN_STDCXX" = "libstdc++" ]; then + CMAKE_CXX_FLAGS="-fsized-deallocation" + else + CMAKE_CXX_FLAGS="-fsized-deallocation -stdlib=libc++" + fi + cmake .. $COMMON_CMAKE_FLAGS \ + -Denable_tests=OFF \ + -DGFLAGS_NOTHREADS=OFF \ + -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" + make -j$CPUS install + popd + fi +fi + +log_tool_name "flex $FLEX_VERSION" +if [ ! -f $PREFIX/include/FlexLexer.h ]; then + if [ -d flex-$FLEX_VERSION ]; then + rm -rf flex-$FLEX_VERSION + fi + tar -xzf ../archives/flex-$FLEX_VERSION.tar.gz + pushd flex-$FLEX_VERSION + ./configure $COMMON_CONFIGURE_FLAGS + make -j$CPUS install + popd +fi + +popd +# NOTE: It's important/clean (e.g., easier upload to S3) to have a separated +# folder to the output archive. +mkdir -p output +pushd output +# Create the toolchain archive. +if [ ! -f $NAME-binaries-$DISTRO_FULL_NAME.tar.gz ]; then + tar --owner=root --group=root -cpvzf $NAME-binaries-$DISTRO_FULL_NAME.tar.gz -C /opt $NAME +else + echo "NOTE: Skipping archiving because the file already exists" +fi + +# output final instructions +echo -e "\n\n" +echo "All tools have been built. They are installed in '$PREFIX'." +echo "In order to distribute the tools to someone else, an archive with the toolchain was created in the 'build' directory." +echo "If you want to install the packed tools you should execute the following command:" +echo +echo " tar -xvzf output/$NAME-binaries.tar.gz -C /opt" +echo +echo "Because the tools were built on this machine, you should probably change the permissions of the installation directory using:" +echo +echo " OPTIONAL: chown -R root:root $PREFIX" +echo +echo "In order to use all of the newly compiled tools you should use the prepared activation script:" +echo +echo " source $PREFIX/activate" +echo +echo "Or, for more advanced uses, you can add the following lines to your script:" +echo +echo " export PATH=$PREFIX/bin:\$PATH" +echo " export LD_LIBRARY_PATH=$PREFIX/lib:$PREFIX/lib64" +echo +echo "Enjoy!" diff --git a/environment/toolchain/v5/clean.sh b/environment/toolchain/v5/clean.sh new file mode 100755 index 000000000..15394aed2 --- /dev/null +++ b/environment/toolchain/v5/clean.sh @@ -0,0 +1,42 @@ +#!/bin/bash -ex +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +PREFIX=/opt/toolchain-v5 + +# NOTE: Often times when versions in the build script are changes, something +# doesn't work. To avoid rebuild of the whole toolchain but rebuild specific +# lib from 0, just comment specific line under this cript and run it. Don't +# forget to comment back to avoid unnecessary deletes next time your run this +# cript. + +# rm -rf "$DIR/build" +# rm -rf "$DIR/output" + +# rm -rf "$PREFIX/bin/gcc" +# rm -rf "$PREFIX/bin/ld.gold" +# rm -rf "$PREFIX/bin/gdb" +# rm -rf "$PREFIX/bin/cmake" +# rm -rf "$PREFIX/bin/clang" +# rm -rf "$PREFIX/include/bzlib.h" +# rm -rf "$PREFIX/include/fmt" +# rm -rf "$PREFIX/include/lz4.h" +# rm -rf "$PREFIX/include/lzma.h" +# rm -rf "$PREFIX/include/zlib.h" +# rm -rf "$PREFIX/include/zstd.h" +# rm -rf "$PREFIX/include/jemalloc" +# rm -rf "$PREFIX/include/boost" +# rm -rf "$PREFIX/include/double-conversion" +# rm -rf "$PREFIX/include/gflags" +# rm -rf "$PREFIX/include/libunwind.h" +# rm -rf "$PREFIX/include/glog" +# rm -rf "$PREFIX/include/event2" +# rm -rf "$PREFIX/include/sodium.h" +# rm -rf "$PREFIX/include/libaio.h" +# rm -rf "$PREFIX/include/FlexLexer.h" +# rm -rf "$PREFIX/include/snappy.h" +# rm -rf "$PREFIX/include/fizz" +# rm -rf "$PREFIX/include/folly" +# rm -rf "$PREFIX/include/proxygen" +# rm -rf "$PREFIX/include/wangle" +# rm -rf "$PREFIX/include/thrift" + +# rm -rf "$PREFIX" diff --git a/environment/toolchain/v5/folly-2022.01.31.00.patch b/environment/toolchain/v5/folly-2022.01.31.00.patch new file mode 100644 index 000000000..481412502 --- /dev/null +++ b/environment/toolchain/v5/folly-2022.01.31.00.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(<coroutine>) || __has_include(<experimental/coroutine>)) +-#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/v5/folly-2023.09.25.00.patch b/environment/toolchain/v5/folly-2023.09.25.00.patch new file mode 100644 index 000000000..0c06cb329 --- /dev/null +++ b/environment/toolchain/v5/folly-2023.09.25.00.patch @@ -0,0 +1,26 @@ +diff --git a/folly/CMakeLists.txt b/folly/CMakeLists.txt +index e0e16df..471131e 100644 +--- a/folly/CMakeLists.txt ++++ b/folly/CMakeLists.txt +@@ -28,7 +28,7 @@ install( + ) + + add_subdirectory(experimental/exception_tracer) +-add_subdirectory(logging/example) ++# add_subdirectory(logging/example) + + if (PYTHON_EXTENSIONS) + # Create tree of symbolic links in structure required for successful +diff --git a/folly/Portability.h b/folly/Portability.h +index 365ef1b..42d24b8 100644 +--- a/folly/Portability.h ++++ b/folly/Portability.h +@@ -560,7 +560,7 @@ constexpr auto kCpplibVer = 0; + (defined(__cpp_coroutines) && __cpp_coroutines >= 201703L) || \ + (defined(__cpp_impl_coroutine) && __cpp_impl_coroutine >= 201902L)) && \ + (__has_include(<coroutine>) || __has_include(<experimental/coroutine>)) +-#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/v5/snappy.patch b/environment/toolchain/v5/snappy.patch new file mode 100644 index 000000000..4016bfd89 --- /dev/null +++ b/environment/toolchain/v5/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/v5/xz_pgp.txt b/environment/toolchain/v5/xz_pgp.txt new file mode 100644 index 000000000..44e17c173 --- /dev/null +++ b/environment/toolchain/v5/xz_pgp.txt @@ -0,0 +1,75 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +MlVin9BQPTpdA+PpRiJvKJgVDeAFOg== +=asTC +-----END PGP PUBLIC KEY BLOCK----- diff --git a/src/license/license_sender.cpp b/src/license/license_sender.cpp index ac20c23a2..ac93565e8 100644 --- a/src/license/license_sender.cpp +++ b/src/license/license_sender.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/src/license/license_sender.hpp b/src/license/license_sender.hpp index 0adbd147c..6c936846f 100644 --- a/src/license/license_sender.hpp +++ b/src/license/license_sender.hpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/src/query/plan/read_write_type_checker.hpp b/src/query/plan/read_write_type_checker.hpp index 34222c52c..87a9f81b2 100644 --- a/src/query/plan/read_write_type_checker.hpp +++ b/src/query/plan/read_write_type_checker.hpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/tests/integration/env_variable_check/tester.cpp b/tests/integration/env_variable_check/tester.cpp index 1d9aedc5c..df7dfe757 100644 --- a/tests/integration/env_variable_check/tester.cpp +++ b/tests/integration/env_variable_check/tester.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/tests/integration/flag_check/flag_check.cpp b/tests/integration/flag_check/flag_check.cpp index cf44333f3..3b266b9c9 100644 --- a/tests/integration/flag_check/flag_check.cpp +++ b/tests/integration/flag_check/flag_check.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/tests/integration/flag_check/tester.cpp b/tests/integration/flag_check/tester.cpp index 1d9aedc5c..df7dfe757 100644 --- a/tests/integration/flag_check/tester.cpp +++ b/tests/integration/flag_check/tester.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/tests/integration/license_info/client.cpp b/tests/integration/license_info/client.cpp index 2f0f00364..9b6977a5a 100644 --- a/tests/integration/license_info/client.cpp +++ b/tests/integration/license_info/client.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source diff --git a/tests/unit/utils_memory.cpp b/tests/unit/utils_memory.cpp index 983d09acb..5173a5f7b 100644 --- a/tests/unit/utils_memory.cpp +++ b/tests/unit/utils_memory.cpp @@ -1,4 +1,4 @@ -// Copyright 2022 Memgraph Ltd. +// Copyright 2023 Memgraph Ltd. // // Use of this software is governed by the Business Source License // included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source