#!/bin/bash -e

REPO_PATH=$(pwd)
# run build
mkdir "$REPO_PATH/debug"
mkdir "$REPO_PATH/build" && cd "$REPO_PATH/build"
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_MPI=0 -DHAVE_SSE4_1=1 -DBUILD_SHARED_LIBS=OFF -DCMAKE_EXE_LINKER_FLAGS="-static -static-libgcc -static-libstdc++" -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" ..
make -j $(nproc --all) VERBOSE=1
objcopy src/mmseqs --compress-debug-sections
strip --only-keep-debug src/mmseqs -o $REPO_PATH/debug/mmseqs_debug_symbols_sse41
strip --strip-debug src/mmseqs

mkdir "$REPO_PATH/build_avx2" && cd "$REPO_PATH/build_avx2"
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_MPI=0 -DHAVE_AVX2=1 -DBUILD_SHARED_LIBS=OFF -DCMAKE_EXE_LINKER_FLAGS="-static -static-libgcc -static-libstdc++" -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" ..
make -j $(nproc --all) VERBOSE=1
objcopy src/mmseqs --compress-debug-sections
strip --only-keep-debug src/mmseqs -o $REPO_PATH/debug/mmseqs_debug_symbols_avx2
strip --strip-debug src/mmseqs

mkdir "$REPO_PATH/build_mpi" && cd "$REPO_PATH/build_mpi"
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_MPI=1 -DHAVE_AVX2=1 ..
make -j $(nproc --all) VERBOSE=1

# run regression
mkdir "$REPO_PATH/regression" && cd "$REPO_PATH/regression"
git clone https://bitbucket.org/martin_steinegger/mmseqs-benchmark.git
export TTY=0
export MMSEQS_NUM_THREADS=8
export PATH="$(pwd)/mmseqs-benchmark/":$PATH
./mmseqs-benchmark/run_regression.sh $REPO_PATH/build/src/mmseqs $REPO_PATH/regression/results/sse
./mmseqs-benchmark/run_regression.sh $REPO_PATH/build_avx2/src/mmseqs $REPO_PATH/regression/results/avx
./mmseqs-benchmark/run_regression.sh $REPO_PATH/build_mpi/src/mmseqs $REPO_PATH/regression/results/mpi

# upload
cd $REPO_PATH
ssh codeship@uniclust.mmseqs.com "mkdir -p \"/home/mirdita/repositories/mmseqs-webserver/archive/${QUINCI_COMMIT_SHA}\""
mkdir -p wiki/mmseqs2.wiki
cd wiki/mmseqs2.wiki
git clone https://github.com/soedinglab/MMseqs2.wiki.git .
.pandoc/make-pdf.sh
scp userguide.pdf codeship@uniclust.mmseqs.com:"/home/mirdita/repositories/mmseqs-webserver/archive/${QUINCI_COMMIT_SHA}"
cd $REPO_PATH/build
CURR_BUILD="mmseqs2"
mkdir -p ${CURR_BUILD}/bin
mkdir -p ${CURR_BUILD}/util
mkdir -p ${CURR_BUILD}
cp src/mmseqs ${CURR_BUILD}/bin
chmod +x ${CURR_BUILD}/bin/mmseqs
cp $REPO_PATH/util/bash-completion.sh ${CURR_BUILD}/util
chmod +x ${CURR_BUILD}/util/bash-completion.sh
cp -r $REPO_PATH/LICENCE.md $REPO_PATH/README.md $REPO_PATH/mmseqs2.wiki/userguide.pdf $REPO_PATH/examples ${CURR_BUILD}
chmod -R g-w,o-w ${CURR_BUILD}
tar czvf mmseqs-static_sse41.tar.gz  ${CURR_BUILD}
cp $REPO_PATH/build_avx2/src/mmseqs ${CURR_BUILD}/bin
chmod +x ${CURR_BUILD}/bin/mmseqs
tar czvf mmseqs-static_avx2.tar.gz ${CURR_BUILD}
tar -C $REPO_PATH/debug -czvf mmseqs-debug-symbols.tar.gz mmseqs_debug_symbols_sse41 mmseqs_debug_symbols_avx2
scp mmseqs-static_sse41.tar.gz codeship@uniclust.mmseqs.com:"/home/mirdita/repositories/mmseqs-webserver/archive/${QUINCI_COMMIT_SHA}"
scp mmseqs-static_avx2.tar.gz codeship@uniclust.mmseqs.com:"/home/mirdita/repositories/mmseqs-webserver/archive/${QUINCI_COMMIT_SHA}"
scp mmseqs-debug-symbols.tar.gz codeship@uniclust.mmseqs.com:"/home/mirdita/repositories/mmseqs-webserver/archive/${QUINCI_COMMIT_SHA}"
ssh codeship@uniclust.mmseqs.com "update-latest-mmseqs.sh \"${QUINCI_COMMIT_SHA}\""
