Compilation
Download Docker Mirror
Check mirror download completed:
Note: For different versions of Doris, you need to download the corresponding mirror version.
note:
Running Mirror
$ docker run -it apache/incubator-doris:build-env-1.4.2
It is recommended to run the container by mounting the local Doris source directory, so that the compiled binary file will be stored in the host machine and will not disappear because the container exits.
At the same time, it is recommended to mount the maven
.m2
directory in the mirror to the host directory at the same time to prevent repeated downloading of maven’s dependent libraries each time the compilation is started.$ docker run -it -v /your/local/.m2:/root/.m2 -v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-1.4.2
Download source code
After starting the mirror, you should be in the container. The Doris source code can be downloaded from the following command (local source directory mounted is not required):
-
$ sh build.sh
** Note: **
If you are using
build-env-1.4.1
This environment, use the following command when compiling:sh build.sh --clean --be --fe --ui
This is because the version 1.4.1 image has upgraded thrift (0.9 -> 0.13), you need to use the —clean command to force the use of the new version of thrift to generate code files, otherwise incompatible code will appear.
After compilation, the output file is in the directory.
Self-compiling Development Environment Mirror
You can also create a Doris development environment mirror yourself, referring specifically to the docker/README.md
file.
You can try to compile Doris directly in your own Linux environment.
System Dependence
Before commit will use the dependencies as follows:
GCC 7.3+, Oracle JDK 1.8+, Python 2.7+, Apache Maven 3.5+, CMake 3.11+ Bison 3.0+
If you are using Ubuntu 16.04 or newer, you can use the following command to install the dependencies
sudo apt-get install build-essential openjdk-8-jdk maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python autopoint pkg-config
If you are using CentOS you can use the following command to install the dependencies
sudo yum groupinstall 'Development Tools' && sudo yum install maven cmake byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc++-static java-1.8.0-openjdk
After commit ad67dd3 (opens new window) will use the dependencies as follows:
GCC 10+, Oracle JDK 1.8+, Python 2.7+, Apache Maven 3.5+, CMake 3.19.2+ Bison 3.0+
sudo apt install build-essential openjdk-8-jdk maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt update
sudo apt install gcc-10 g++-10
sudo apt-get install autoconf automake libtool autopoint
If you are using CentOS you can use the following command to install the dependencies
sudo yum install centos-release-scl
scl enable devtoolset-10 bash
If devtoolset-10 is not found in current repo. Oracle has already rebuilt the devtoolset-10 packages. You can use this repo file:
After installation, set environment variables
PATH
,JAVA_HOME
, etc. Doris 0.14.0 will use gcc7 env to compile.
Compile Doris
$ sh build.sh
After compilation, the output file is in the
output/
directory.
Could not transfer artifact net.sourceforge.czt.dev:cup-maven-plugin:pom:1.6-cdh from/to xxx
If you encounter the above error, please refer to to modify the cloudera-related repo configuration in
fe/pom.xml
.The third party relies on download connection errors, failures, etc.
The download links of the third-party libraries that Doris relies on are all in the
thirdparty/vars.sh
file. Over time, some download connections may fail. If you encounter this situation. It can be solved in the following two ways:Manually modify the
thirdparty/vars.sh
fileManually modify the problematic download connection and the corresponding MD5 value.
Use a third-party download warehouse:
export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
sh build-thirdparty.sh
REPOSITORY_URL contains all third-party library source code packages and their historical versions.
Starting from version 0.13, the dependency on the two third-party libraries [1] and [2] will be removed in the default compiled output. These two third-party libraries are under GNU General Public License V3 (opens new window). This license is incompatible with , so it should not appear in the Apache release by default.
Remove library [1] will result in the inability to access MySQL external tables. The feature of accessing MySQL external tables will be implemented through UnixODBC
in future release version.
Remove library [2] will cause some data written in earlier versions (before version 0.8) to be unable to read. Because the data in the earlier version was compressed using the LZO algorithm, in later versions, it has been changed to the LZ4 compression algorithm. We will provide tools to detect and convert this part of the data in the future.
Note that when users rely on these two third-party libraries, Doris is not used under the Apache License 2.0 by default. Please pay attention to the GPL related agreements.
- [1] mysql-5.7.18
- [2] lzo-2.10