How to Build ClickHouse on Mac OS X

Build should work on x86_64 (Intel) and arm64 (Apple Silicon) based macOS 10.15 (Catalina) and higher with recent Xcode’s native AppleClang, or Homebrew’s vanilla Clang or GCC compilers.

Install Homebrew

  1. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. # ...and follow the printed instructions on any additional steps required to complete the installation.

Install Xcode and Command Line Tools

Install the latest Xcode from App Store.

Open it at least once to accept the end-user license agreement and automatically install the required components.

Then, make sure that the latest Command Line Tools are installed and selected in the system:

  1. sudo rm -rf /Library/Developer/CommandLineTools
  2. sudo xcode-select --install

Reboot.

Install Required Compilers, Tools, and Libraries

  1. brew update
  2. brew install cmake ninja libtool gettext llvm gcc binutils

Checkout ClickHouse Sources

  1. git clone --recursive [email protected]:ClickHouse/ClickHouse.git
  2. # ...alternatively, you can use https://github.com/ClickHouse/ClickHouse.git as the repo URL.

Build ClickHouse

To build using Xcode’s native AppleClang compiler:

  1. cd ClickHouse
  2. rm -rf build
  3. mkdir build
  4. cd build
  5. cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  6. cmake --build . --config RelWithDebInfo
  7. cd ..

To build using Homebrew’s vanilla Clang compiler:

  1. cd ClickHouse
  2. rm -rf build
  3. mkdir build
  4. cd build
  5. cmake -DCMAKE_C_COMPILER=$(brew --prefix llvm)/bin/clang -DCMAKE_CXX_COMPILER=$(brew --prefix llvm)/bin/clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  6. cmake --build . --config RelWithDebInfo
  7. cd ..

To build using Homebrew’s vanilla GCC compiler:

  1. cd ClickHouse
  2. rm -rf build
  3. mkdir build
  4. cd build
  5. cmake -DCMAKE_C_COMPILER=$(brew --prefix gcc)/bin/gcc-11 -DCMAKE_CXX_COMPILER=$(brew --prefix gcc)/bin/g++-11 -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  6. cmake --build . --config RelWithDebInfo
  7. cd ..

Caveats

If you intend to run clickhouse-server, make sure to increase the system’s maxfiles variable.

Note

You’ll need to use sudo.

To do so, create the /Library/LaunchDaemons/limit.maxfiles.plist file with the following content:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  3. "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  4. <plist version="1.0">
  5. <dict>
  6. <key>Label</key>
  7. <string>limit.maxfiles</string>
  8. <key>ProgramArguments</key>
  9. <array>
  10. <string>launchctl</string>
  11. <string>limit</string>
  12. <string>maxfiles</string>
  13. <string>524288</string>
  14. <string>524288</string>
  15. </array>
  16. <key>RunAtLoad</key>
  17. <true/>
  18. <key>ServiceIPC</key>
  19. <false/>
  20. </dict>
  21. </plist>

Give the file correct permissions:

  1. sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

Validate that the file is correct:

  1. plutil /Library/LaunchDaemons/limit.maxfiles.plist

Load the file (or reboot):

  1. sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

To check if it’s working, use the ulimit -n or launchctl limit maxfiles commands.

Run ClickHouse server:

  1. cd ClickHouse
  2. ./build/programs/clickhouse-server --config-file ./programs/server/config.xml