build: Updated Docker Linux 64bit image to Qt 5.12.6 and LLVM/Clang 9.0.0

* updated to CentOS 7
* removed 32bit image
This commit is contained in:
Eberhard Graether
2019-12-16 15:54:01 +01:00
parent bb9c219713
commit 3518404a73
12 changed files with 86 additions and 269 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
IMAGE_64: coatisoftware/centos6_64_qt_llvm:qt5101-llvm800
IMAGE_64: coatisoftware/centos7_64_qt_llvm:qt5126-llvm900
IMAGE_32: coatisoftware/centos6_32_qt_llvm:qt5101-llvm800
## Templates ##
+6
View File
@@ -6,6 +6,7 @@ endif()
set(BUILD_CXX_LANGUAGE_PACKAGE OFF CACHE BOOL "Add C and C++ support to the Sourcetrail indexer.")
set(BUILD_JAVA_LANGUAGE_PACKAGE OFF CACHE BOOL "Add Java support to the Sourcetrail indexer.")
set(BUILD_PYTHON_LANGUAGE_PACKAGE OFF CACHE BOOL "Add Python support to the Sourcetrail indexer.")
set(DOCKER_BUILD OFF CACHE BOOL "Build runs in Docker")
#set (CMAKE_VERBOSE_MAKEFILE ON)
@@ -82,6 +83,11 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
ADD_COMPILE_OPTIONS(/MP)
endif()
# FIXME: necessary to fix build in Docker
if (DOCKER_BUILD)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
endif()
# For debugging the release build on linux
#if (UNIX AND "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
#add_definitions(-fno-omit-frame-pointer)
+2 -2
View File
@@ -1,6 +1,6 @@
function(InstallQtModule module qtversion)
get_filename_component(realpath $ENV{QT_DIR}/lib/libQt5${module}.so.${qtversion} REALPATH)
get_filename_component(realpath $ENV{Qt5_DIR}/lib/libQt5${module}.so.${qtversion} REALPATH)
INSTALL(FILES
${realpath}
DESTINATION Sourcetrail/lib
@@ -99,7 +99,7 @@ function(AddSharedToComponent)
GetAndInstallLibrary(libcrypto.so 1)
INSTALL(DIRECTORY
$ENV{QT_DIR}/plugins/platforms
$ENV{Qt5_DIR}/plugins/platforms
DESTINATION Sourcetrail/lib
)
@@ -1,155 +0,0 @@
FROM toopher/centos-i386:centos6
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
WORKDIR /opt
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl ca-certificates;
RUN yum -y install wget && \
wget https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-6/repo/\
epel-6/mlampe-devtoolset-6-epel-6.repo -O /etc/yum.repos.d/mlampe-devtoolset.repo && \
yum -y update && \
yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel \
ibxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel \
libXi-devel libudev-devel openssl-devel sqlite-devel \
gperftools gperf libicu-devel boost-devel \
libxslt-devel docbook-style-xsl.noarch python27 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel ccache re2c ImageMagick vim lftp unzip && \
yum clean all
# CMake and Maven
RUN wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz && \
tar xf cmake-3.8.2.tar.gz && \
cd cmake-3.8.2 && ./bootstrap && \
make && make install && \
cd .. && rm cmake-3.8.2.tar.gz && \
rm -rf cmake-3.8.2 && \
wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz && \
tar xzf apache-maven-3.5.0-bin.tar.gz && \
ln -s apache-maven-3.5.0 maven && \
rm apache-maven-3.5.0-bin.tar.gz
ENV M2_HOME=/opt/maven
ENV PATH=${M2_HOME}/bin:${PATH}
# Install Qt
ARG QVERSION_SHORT=5.10
ARG QTVERSION=5.10.1
# Install Qt
RUN mkdir -p /qt && cd /qt && \
wget http://download.qt.io/archive/qt/${QVERSION_SHORT}/${QTVERSION}/\
single/qt-everywhere-src-${QTVERSION}.tar.xz && \
tar xvf qt-everywhere-src-${QTVERSION}.tar.xz && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++ && \
cd /qt/qt-everywhere-src-${QTVERSION} && \
./configure -v \
-prefix /opt/qt${QTVERSION} \
-skip qtgamepad \
-platform linux-g++ \
-qt-pcre \
-qt-xcb \
-qt-xkbcommon \
-no-pch \
-xkb-config-root /usr/share/X11/xkb \
-no-use-gold-linker \
-release \
-no-compile-examples \
-confirm-license \
-opensource \
-nomake examples \
-nomake tests \
-skip sensors \
-skip webchannel \
-skip webengine \
-skip 3d \
-skip doc \
-skip multimedia \
-skip tools \
-skip connectivity \
-skip androidextras \
-skip canvas3d && \
make -j8 && \
make -j8 install && rm -Rf /qt
## set env
ENV CXX=g++ \
CC=gcc \
DEVTOOLSET=/opt/rh/devtoolset-6/root/usr/
RUN wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz && \
tar xzf Python-2.7.13.tgz && \
cd Python-2.7.13 && \
./configure && \
make altinstall
## Install llvm
ARG LLVM_VERSION=8.0.0
RUN alias python=/usr/local/bin/python2.7 && mkdir -p /llvm && cd /llvm && \
wget http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz && \
tar xf llvm-${LLVM_VERSION}.src.tar.xz && \
cd llvm-${LLVM_VERSION}.src && pwd && \
cd tools && pwd && \
wget http://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz && \
tar xf cfe-${LLVM_VERSION}.src.tar.xz && \
cd /llvm/llvm-${LLVM_VERSION}.src/projects && \
wget http://llvm.org/releases/${LLVM_VERSION}/compiler-rt-${LLVM_VERSION}.src.tar.xz && \
tar xf compiler-rt-${LLVM_VERSION}.src.tar.xz && \
. /opt/rh/devtoolset-6/enable && \
cd /llvm/llvm-${LLVM_VERSION}.src && mkdir -p build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_RTTI=ON \
&& make -j8 install && rm -Rf /llvm
#COPY scripts/install-llvm.sh /opt/
#RUN ./install-llvm.sh
## Boost
ARG BOOST_MAJOR=1
ARG BOOST_MINOR=68
ARG BOOST_PATCH=0
ENV BOOST_VERSION=${BOOST_MAJOR}.${BOOST_MINOR}.${BOOST_PATCH} \
BOOST_VERSION_UNDERSCORE=${BOOST_MAJOR}_${BOOST_MINOR}_${BOOST_PATCH}
RUN wget http://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION}/boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && \
tar -xzf boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && cd boost_${BOOST_VERSION_UNDERSCORE} && \
./bootstrap.sh --with-libraries=filesystem,program_options,system,date_time --prefix=/opt/boost && \
./b2 install cxxstd=14 --link=static --variant=release --threading=multi --runtime-link=static --cxxflags="-std=c++14 -fPIC" && \
cd .. && rm boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && rm boost_${BOOST_VERSION_UNDERSCORE} -r
## Ninja
RUN git clone https://github.com/martine/ninja.git && \
cd ninja && \
git checkout release && \
./configure.py --bootstrap && \
mv ninja /usr/bin/ && \
cd .. && rm -rf ninja
#add user
RUN useradd builder
# Make sure the above SCLs are already enabled
#ENTRYPOINT ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-6/enable"]
#CMD ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-6/enable"]
RUN GCC_VERSION=$(g++ -dumpversion) && \
ln -s /opt/rh/devtoolset-6/root/usr/include/c++/${GCC_VERSION} /usr/include/c++/${GCC_VERSION} && \
ln -s /opt/rh/devtoolset-6/root/usr/lib/gcc/i686-redhat-linux/${GCC_VERSION} \
/usr/lib/gcc/i686-redhat-linux/${GCC_VERSION} && \
echo "source /opt/rh/devtoolset-6/enable" >> /etc/bashrc
ENV CXX=/opt/rh/devtoolset-6/root/usr/bin/g++ \
CC=/opt/rh/devtoolset-6/root/usr/bin/gcc \
JAVA_HOME=/usr/lib/jvm/java-openjdk \
LLVM_DIR=/opt/llvm \
BOOST_DIR=/opt/boost \
QT_DIR=/opt/qt${QTVERSION}
WORKDIR /home/builder
USER builder
@@ -1,13 +0,0 @@
32 bit Builder for Sourcetrail
==============================
based on centos 6
* devtoolset4 (gcc)
* cmake 3.8.2
* maven 3.5.0
* qt 5.9.1
* llvm 5.0.0
* boost 1.64.0
* ninja (release branch Aug2017)
* cxxtext 4.4
@@ -1,40 +0,0 @@
FROM centos:6
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
WORKDIR /opt
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl ca-certificates;
RUN yum -y install centos-release-scl epel-release && \
yum -y install wget devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel\
libxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel \
libXi-devel libudev-devel.x86_64 openssl-devel sqlite-devel.x86_64 \
gperftools.x86_64 gperf.x86_64 libicu-devel.x86_64 boost-devel.x86_64 \
libxslt-devel.x86_64 python27.x86_64 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel re2c ccache ImageMagick vim lftp unzip && \
yum clean all
# CMake
RUN wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz && \
tar xf cmake-3.8.2-Linux-x86_64.tar.gz && \
cd cmake-3.8.2-Linux-x86_64 && cp -R * / && \
cd .. && rm -rf cmake-3.8.2-Linux-x86_64 && \
rm cmake-3.8.2-Linux-x86_64.tar.gz && \
wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz && \
tar xzf apache-maven-3.5.0-bin.tar.gz && \
ln -s apache-maven-3.5.0 maven && \
rm apache-maven-3.5.0-bin.tar.gz
ENV M2_HOME=/opt/maven \
JAVA_HOME=/usr/lib/jvm/java-openjdk \
DEVTOOLSET=/opt/rh/devtoolset-6/root/usr/
ENV PATH=${M2_HOME}/bin:${PATH}
# Make sure the above SCLs are already enabled
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "git", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "git", "--", "/bin/bash"]
@@ -1,22 +0,0 @@
FROM coatisoftware/centos6_64_qt_llvm:qt591-llvm401
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
USER root
WORKDIR /opt
RUN yum install -y yum install xorg-x11-drv-nouveau.x86_64 firefox gdb xkeyboard-config p7zip && yum clean all
ENV QT_XKB_CONFIG_ROOT="/usr/share/X11/xkb:$QT_XKB_CONFIG_ROOT"
RUN export uid=0 gid=0
RUN dbus-uuidgen > /var/lib/dbus/machine-id && \
wget http://download.qt.io/official_releases/qtcreator/4.2/4.2.0/installer_source/linux_gcc_64_rhel66/qtcreator.7z && \
7za x qtcreator.7z -o/usr/local && \
rm qtcreator.7z
WORKDIR /home/builder
USER builder
CMD /usr/bin/firefox
@@ -1,36 +1,39 @@
FROM coatisoftware/centos6_64_base
FROM coatisoftware/centos7_64_base
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
MAINTAINER "Eberhard Graether" <egraether@coati.io>
RUN make --version
RUN cmake --version
RUN mvn --version
RUN ninja --version
WORKDIR /opt
## set env
ARG QVERSION_SHORT=5.10
ARG QTVERSION=5.10.1
ARG QTVERSION_SHORT=5.12
ARG QTVERSION=5.12.6
ENV QT_DIR=/opt/qt${QTVERSION} \
LLVM_DIR=/opt/llvm \
BOOST_DIR=/opt/boost \
LD_LIBRARY_PATH=$QT_DIR/lib/
ENV Qt5_DIR=/opt/qt${QTVERSION} \
Clang_DIR=/opt/llvm \
BOOST_ROOT=/opt/boost \
LD_LIBRARY_PATH=$Qt5_DIR/lib/
# Install Qt
# Qt
RUN mkdir -p /qt && cd /qt && \
wget http://download.qt.io/archive/qt/${QVERSION_SHORT}/${QTVERSION}/\
wget http://download.qt.io/archive/qt/${QTVERSION_SHORT}/${QTVERSION}/\
single/qt-everywhere-src-${QTVERSION}.tar.xz && \
tar xvf qt-everywhere-src-${QTVERSION}.tar.xz && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++ && \
ln -sf /opt/rh/devtoolset-7/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-7/root/usr/bin/c++ /usr/bin/c++ && \
cd /qt/qt-everywhere-src-${QTVERSION} && \
./configure -v \
-prefix /opt/qt${QTVERSION} \
-skip qtgamepad \
-platform linux-g++ \
#-no-rpath \
-qt-pcre \
-qt-xcb \
-qt-xkbcommon \
-xkbcommon \
-no-pch \
-xkb-config-root /usr/share/X11/xkb \
-no-use-gold-linker \
-release \
-no-compile-examples \
@@ -51,8 +54,8 @@ cd /qt/qt-everywhere-src-${QTVERSION} && \
make -j8 && \
make -j8 install && rm -Rf /qt
## Install llvm
ARG LLVM_VERSION=8.0.0
# LLVM/Clang
ARG LLVM_VERSION=9.0.0
RUN mkdir -p /llvm && cd /llvm && \
wget http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz && \
tar xvf llvm-${LLVM_VERSION}.src.tar.xz && \
@@ -61,7 +64,7 @@ cd tools && \
wget http://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz && \
tar xvf cfe-${LLVM_VERSION}.src.tar.xz && \
. /opt/rh/python27/enable && \
. /opt/rh/devtoolset-6/enable && \
. /opt/rh/devtoolset-7/enable && \
python --version && \
cd /llvm/llvm-${LLVM_VERSION}.src && mkdir -p build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ \
@@ -71,9 +74,9 @@ cmake .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ \
WORKDIR /opt
## Boost
# Boost
ARG BOOST_MAJOR=1
ARG BOOST_MINOR=68
ARG BOOST_MINOR=67
ARG BOOST_PATCH=0
ENV BOOST_VERSION=${BOOST_MAJOR}.${BOOST_MINOR}.${BOOST_PATCH} \
BOOST_VERSION_UNDERSCORE=${BOOST_MAJOR}_${BOOST_MINOR}_${BOOST_PATCH}
@@ -84,21 +87,7 @@ tar -xzf boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && cd boost_${BOOST_VERSION_UN
./b2 install cxxstd=14 --link=static --variant=release --threading=multi --runtime-link=static --cxxflags="-std=c++14 -fPIC" && \
cd .. && rm boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && rm boost_${BOOST_VERSION_UNDERSCORE} -r
## Ninja
RUN git clone https://github.com/martine/ninja.git && \
cd ninja && \
git checkout release && \
./configure.py --bootstrap && \
mv ninja /usr/bin/ && \
cd .. && rm -rf ninja
#add user
RUN useradd -u 1000 builder
# Make sure the above SCLs are already enabled
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "--", "/bin/bash"]
WORKDIR /home/builder
USER builder
+52
View File
@@ -0,0 +1,52 @@
FROM centos:7
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
WORKDIR /opt
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl ca-certificates;
RUN yum -y install centos-release-scl epel-release && \
yum -y install make wget devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel\
libxml2-devel libstdc++-devel libXrender libXrender-devel patch xcb-util-keysyms xcb-util-keysyms-devel \
libxcb libxcb-devel xcb-util xcb-util-devel xcb-util-wm xcb-util-wm-devel xcb-util xcb-util-devel \
libxkbcommon libxkbcommon-devel libXi-devel libudev-devel.x86_64 openssl-devel sqlite-devel.x86_64 \
gperftools.x86_64 gperf.x86_64 libicu-devel.x86_64 boost-devel.x86_64 \
libxslt-devel.x86_64 python27.x86_64 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel re2c ccache ImageMagick vim lftp unzip && \
yum clean all
# CMake
RUN wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz && \
tar xf cmake-3.8.2-Linux-x86_64.tar.gz && \
cp -R cmake-3.8.2-Linux-x86_64/* /usr/local/ && cmake --version && \
rm -rf cmake-3.8.2-Linux-x86_64 && \
rm cmake-3.8.2-Linux-x86_64.tar.gz
# Maven
RUN wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz && \
tar xzf apache-maven-3.5.0-bin.tar.gz && \
ln -s apache-maven-3.5.0 maven && \
rm apache-maven-3.5.0-bin.tar.gz
# Ninja
RUN git clone https://github.com/martine/ninja.git && \
cd ninja && \
git checkout release && \
./configure.py --bootstrap && \
mv ninja /usr/local/bin/ && \
cd .. && rm -rf ninja
ENV M2_HOME=/opt/maven \
JAVA_HOME=/usr/lib/jvm/java-openjdk \
DEVTOOLSET=/opt/rh/devtoolset-7/root/usr/
ENV PATH=${M2_HOME}/bin:${PATH}
RUN make --version
RUN cmake --version
RUN mvn --version
RUN ninja --version
+2 -2
View File
@@ -13,12 +13,12 @@ then
mkdir -p build/Debug
cd build/Debug
cmake -G Ninja -DCMAKE_BUILD_TYPE="Debug" ../..
cmake -G Ninja -DCMAKE_BUILD_TYPE="Debug" -DBUILD_CXX_LANGUAGE_PACKAGE=ON -DBUILD_JAVA_LANGUAGE_PACKAGE=ON -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON -DDOCKER_BUILD=ON ../..
cd ../..
mkdir -p build/Release
cd build/Release
cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" ../..
cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" -DBUILD_CXX_LANGUAGE_PACKAGE=ON -DBUILD_JAVA_LANGUAGE_PACKAGE=ON -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON -DDOCKER_BUILD=ON ../..
cd ../..
if [ $? -ne 0 ]