Skip to main content

Compile With macOS

This topic is about how to compile Doris from source with macOS (both x86_64 and arm64).

Environment Requirements

  1. macOS 12 (Monterey) or newer(both Intel chip and Apple Silicon chips are supported
  2. Homebrew

Steps

  1. Use Homebrew to install dependencies.

    brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \
    python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@15 openjdk@8 npm
  2. Compile from source.

    bash build.sh

Third-Party Libraries

  1. The Apache Doris Third Party Prebuilt page contains the source code of all third-party libraries. You can download doris-thirdparty-source.tgz to obtain them.

  2. You can download the precompiled third party library from the Apache Doris Third Party Prebuilt page. You may refer to the following commands:

    cd thirdparty
    rm -rf installed

    # Intel chips
    curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz \
    -o - | tar -Jxf -

    # Apple Silicon chips
    curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz \
    -o - | tar -Jxf -

    # Make sure that protoc and thrift can run successfully.
    cd installed/bin

    ./protoc --version
    ./thrift --version
  3. When running protoc or thrift, you may meet an error which says the app can not be opened because the developer cannot be verified. Go to Security & Privacy. Click the Open Anyway button in the General pane to confirm your intent to open the app. See https://support.apple.com/en-us/HT202491.

Start-up

  1. Set file descriptorsNOTICE: If you have closed the current session, you need to set this variable again)。

    ulimit -n 65536

    You can also write this configuration into the initialization files so you don't need to set the variables again when opening a new terminal session.

    # bash
    echo 'ulimit -n 65536' >>~/.bashrc

    # zsh
    echo 'ulimit -n 65536' >>~/.zshrc

    Check if the configuration works by executing the following command.

    $ ulimit -n
    65536
  2. Start BE up

    cd output/be/bin
    ./start_be.sh --daemon
  3. Start FE up

    cd output/fe/bin
    ./start_fe.sh --daemon

FAQ

Fail to start BE up. The log shows: fail to open StorageEngine, res=file descriptors limit is too small

To fix this, please refer to the "Start-up" section above and reset file descriptors.

Java Version

Java 8 is recommended.