Build and test in parallel

This speeds up builds when more CPUs are available. Also removed redundant
docker installation: mdbci already installs it.
This commit is contained in:
Markus Mäkelä 2019-11-08 14:11:28 +02:00
parent 638d1bf354
commit 9e931918e2
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19
3 changed files with 23 additions and 26 deletions

View File

@ -5,25 +5,26 @@
set -x
cd ./MaxScale
cpus=$(grep -c processor /proc/cpuinfo)
cd ./MaxScale
mkdir _build
cd _build
cmake .. $cmake_flags
export LD_LIBRARY_PATH=$PWD/log_manager:$PWD/query_classifier
make || exit 1
make -j $cpus || exit 1
if [[ "$cmake_flags" =~ "BUILD_TESTS=Y" ]]
then
# We don't care about memory leaks in the tests (e.g. servers are never freed)
export ASAN_OPTIONS=detect_leaks=0
# All tests must pass otherwise the build is considered a failure
ctest --output-on-failure || exit 1
ctest --output-on-failure -j 100 || exit 1
fi
export LD_LIBRARY_PATH=$(for i in `find $PWD/ -name '*.so*'`; do echo $(dirname $i); done|sort|uniq|xargs|sed -e 's/[[:space:]]/:/g')
make package
make package -j $cpus
res=$?
if [ $res != 0 ] ; then
echo "Make package failed"
@ -35,7 +36,7 @@ sudo rm CMakeCache.txt
echo "Building tarball..."
cmake .. $cmake_flags -DTARBALL=Y
sudo make package
sudo make package -j $cpus
cp _CPack_Packages/Linux/DEB/*.deb ../
@ -57,7 +58,7 @@ then
export LD_LIBRARY_PATH=""
cmake .. $cmake_flags -DTARGET_COMPONENT=$component
export LD_LIBRARY_PATH=$(for i in `find $PWD/ -name '*.so*'`; do echo $(dirname $i); done|sort|uniq|xargs|sed -e 's/[[:space:]]/:/g')
make package
make package -j $cpus
cp _CPack_Packages/Linux/DEB/*.deb ../
cd ..
cp _build/*.deb .
@ -68,7 +69,7 @@ fi
if [ "$BUILD_RABBITMQ" == "yes" ] ; then
cmake ../rabbitmq_consumer/ $cmake_flags
sudo make package
sudo make package -j $cpus
res=$?
if [ $res != 0 ] ; then
exit $res

View File

@ -5,19 +5,21 @@
set -x
cpus=$(grep -c processor /proc/cpuinfo)
cd ./MaxScale
mkdir _build
cd _build
cmake .. $cmake_flags
make || exit 1
make -j $cpus || exit 1
if [[ "$cmake_flags" =~ "BUILD_TESTS=Y" ]]
then
# We don't care about memory leaks in the tests (e.g. servers are never freed)
export ASAN_OPTIONS=detect_leaks=0
# All tests must pass otherwise the build is considered a failure
ctest --output-on-failure || exit 1
ctest --output-on-failure -j 100 || exit 1
# See if docker is installed and run REST API and MaxCtrl tests if it is
command -v docker
@ -41,7 +43,7 @@ sudo rm -rf /usr/bin/strip
sudo touch /usr/bin/strip
sudo chmod a+x /usr/bin/strip
sudo make package
sudo make package -j $cpus
res=$?
if [ $res != 0 ] ; then
echo "Make package failed"
@ -53,7 +55,7 @@ sudo rm CMakeCache.txt
echo "Building tarball..."
cmake .. $cmake_flags -DTARBALL=Y
sudo make package
sudo make package -j $cpus
cd ..
cp _build/*.rpm .
@ -66,7 +68,7 @@ then
cd _build
rm CMakeCache.txt
cmake .. $cmake_flags -DTARGET_COMPONENT=$component
sudo make package
sudo make package -j $cpus
cd ..
cp _build/*.rpm .
cp _build/*.gz .
@ -75,7 +77,7 @@ fi
if [ "$BUILD_RABBITMQ" == "yes" ] ; then
cmake ../rabbitmq_consumer/ $cmake_flags
sudo make package
sudo make package -j $cpus
res=$?
if [ $res != 0 ] ; then
exit $res

View File

@ -6,6 +6,8 @@
# Build in a temp directory so we don't pollute cwd
tmpdir=$(mktemp -d)
cpus=$(grep -c processor /proc/cpuinfo)
cd $tmpdir
command -v apt-get
@ -102,14 +104,6 @@ else
# Enable it by default
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
else
# Installed for REST API and MaxCtrl unit tests
sudo yum -y install docker epel-release
sudo yum -y install docker-compose
sudo groupadd docker
sudo usermod -a -G docker `whoami`
sudo sed -i 's/--selinux-enabled/--selinux-enabled=false/' /etc/sysconfig/docker
sudo systemctl start docker
fi
fi
@ -131,7 +125,7 @@ if [ "`echo -e "3.7.1\n$cmake_version"|sort -V|head -n 1`" != "3.7.1" ] ; then
cd cmake-3.7.1
./bootstrap
gmake
make -j $cpus
sudo make install
cd ..
fi
@ -151,7 +145,7 @@ fi
cd rabbitmq-c
git checkout v0.7.1
cmake . -DCMAKE_C_FLAGS=-fPIC -DBUILD_SHARED_LIBS=N -DCMAKE_INSTALL_PREFIX=/usr
sudo make install
sudo make install -j $cpus
cd ../../
# TCL
@ -180,7 +174,7 @@ then
tar xzf tcl8.6.5-src.tar.gz
cd tcl8.6.5/unix
./configure
sudo make install
sudo make install -j $cpus
cd ../../..
fi
@ -198,7 +192,7 @@ git checkout v2.9
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_FLAGS=-fPIC -DJANSSON_INSTALL_LIB_DIR=$install_libdir
make
make -j $cpus
sudo make install
cd ../../
@ -218,7 +212,7 @@ pushd $avro_dir/build
# Make sure the library isn't linked against snappy
sed -i 's/find_package(Snappy)//' ../lang/c/CMakeLists.txt
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC
make
make -j $cpus
sudo make install
popd