Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Draft] Update .gitlab-ci.yml #628

Open
wants to merge 14 commits into
base: stable
Choose a base branch
from
127 changes: 58 additions & 69 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,121 +34,104 @@
variables:
BUILD_TYPE: "Release"
GENERATOR: "Ninja"
GISMO_OPTIONAL: "gsOpennurbs"
GISMO_OPTIONAL: "gsOpennurbs"
LABELS_FOR_SUBPROJECTS: "'gismo;examples;unittests;doc-snippets'"
CTEST_ARGS: ""
script:
- apt-get update -y
- apt-get install cmake ninja-build -y
- ctest -S /builds/gismo-ci/gismo/cmake/ctest_script.cmake -D CTEST_BUILD_NAME="$CI_JOB_NAME" -D CTEST_SITE="$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA [gitlab-ci]" -D CTEST_SOURCE_DIRECTORY=/builds/gismo-ci/gismo -D CTEST_CONFIGURATION_TYPE="$BUILD_TYPE" -D UPDATE_REPO=ON -D CTEST_CMAKE_GENERATOR="$GENERATOR" -D CNAME=$CNAME -D CXXNAME=$CXXNAME -D CTEST_TEST_TIMEOUT=150 -D GISMO_OPTIONAL="$GISMO_OPTIONAL" -D LABELS_FOR_SUBPROJECTS="$LABELS_FOR_SUBPROJECTS" -D CMAKE_ARGS="$CMAKE_ARGS" $CTEST_ARGS #-VV
- ctest -S /builds/gismo-ci/gismo/cmake/ctest_script.cmake -D CTEST_BUILD_NAME="$CI_JOB_NAME" -D CTEST_SITE="$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA [gitlab-ci]" -D CTEST_SOURCE_DIRECTORY=/builds/gismo-ci/gismo -D CTEST_CONFIGURATION_TYPE="$BUILD_TYPE" -D UPDATE_REPO=ON -D CTEST_CMAKE_GENERATOR="$GENERATOR" -D CNAME="$CNAME" -D CXXNAME="$CXXNAME" -D CTEST_TEST_TIMEOUT=150 -D GISMO_OPTIONAL="$GISMO_OPTIONAL" -D LABELS_FOR_SUBPROJECTS="$LABELS_FOR_SUBPROJECTS" -D CMAKE_ARGS="$CMAKE_ARGS" $CTEST_ARGS #-VV
interruptible: true
except:
- ci_test
- coverity_scan
- external_pull_requests

#-------------------------------------------------------------------------------
# Clang 8-13, C++11,14,17,20,23
# Clang 13-16, C++14,17,20,23
#-------------------------------------------------------------------------------

# Clang 8, C++11, Release
linux_x86_64_clang8_cxx11_release_double_int32t:
# Clang 13, C++14, Release
linux_x86_64_clang13_cxx14_release_float_int:
extends: .test:linux:base
variables:
IMAGE: "silkeh/clang:8"
IMAGE: "silkeh/clang:13"
CNAME: "/usr/local/bin/clang"
CXXNAME: "/usr/local/bin/clang++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=11;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=double;-DGISMO_INDEX_TYPE=int32_t'"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=14;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=float;-DGISMO_INDEX_TYPE=int'"
GISMO_OPTIONAL: "gsOpennurbs\\;"

# Clang 9, C++14, Release
linux_x86_64_clang9_cxx14_release_longdouble_int64t:
# Clang 14, C++17, Release
linux_x86_64_clang14_cxx17_release_double_int64t:
extends: .test:linux:base
variables:
IMAGE: "silkeh/clang:9"
IMAGE: "silkeh/clang:14"
CNAME: "/usr/local/bin/clang"
CXXNAME: "/usr/local/bin/clang++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=14;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=long double;-DGISMO_INDEX_TYPE=int64_t'"

# Clang 10, C++17, Release
linux_x86_64_clang10_cxx17_release_mpreal_long:
extends: .test:linux:base
variables:
IMAGE: "silkeh/clang:10"
CNAME: "/usr/local/bin/clang"
CXXNAME: "/usr/local/bin/clang++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=17;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpfr::mpreal;-DGISMO_INDEX_TYPE=long'"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=17;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=double;-DGISMO_INDEX_TYPE=int64_t'"
GISMO_OPTIONAL: "gsOpennurbs\\;gsSpectra"

# Clang 11, C++20, Release
linux_x86_64_clang11_cxx20_release_mpq_long:
# Clang 15, C++20, Release
linux_x86_64_clang15_cxx20_release_mpq_int:
extends: .test:linux:base
variables:
IMAGE: "silkeh/clang:11"
IMAGE: "silkeh/clang:15"
CNAME: "/usr/local/bin/clang"
CXXNAME: "/usr/local/bin/clang++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=20;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpq_class;-DGISMO_INDEX_TYPE=long'"
CTEST_ARGS: "-D DO_TESTS=FALSE"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=20;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpq_class;-DGISMO_INDEX_TYPE=int'"
GISMO_OPTIONAL: "gsOpennurbs\\;"

# Clang 13 (latest), C++23, Release
linux_x86_64_clang13_cxx23_release_float_int:
# Clang 16, C++23, Release
linux_x86_64_clang16_cxx23_release_mpreal_int:
extends: .test:linux:base
variables:
IMAGE: "silkeh/clang:latest"
IMAGE: "silkeh/clang:16"
CNAME: "/usr/local/bin/clang"
CXXNAME: "/usr/local/bin/clang++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=23;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=float;-DGISMO_INDEX_TYPE=int'"
GISMO_OPTIONAL: "gsOpennurbs\\;"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=23;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpfr::mpreal;-DGISMO_INDEX_TYPE=int'"
GISMO_OPTIONAL: "gsOpennurbs\\;"

#-------------------------------------------------------------------------------
# GCC 8-12, C++11,14,17,20
# GCC 10-13, C++14,17,20,23
#-------------------------------------------------------------------------------
# GCC 8, C++11, Release
linux_x86_64_gcc8_cxx11_release_mpreal_long:

# GCC 10, C++14, Release
linux_x86_64_gcc10_cxx14_release_double_int64t:
extends: .test:linux:base
variables:
IMAGE: "gcc:8"
IMAGE: "gcc:10"
CNAME: "/usr/local/bin/gcc"
CXXNAME: "/usr/local/bin/g++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=11;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpfr::mpreal;-DGISMO_INDEX_TYPE=long'"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=14;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=double;-DGISMO_INDEX_TYPE=int64_t'"
GISMO_OPTIONAL: "gsOpennurbs\\;"

# GCC 9, C++14, Release
linux_x86_64_gcc9_cxx14_release_longdouble_int64t:
# GCC 11, C++17, Release
linux_x86_64_gcc11_cxx17_release_float_int:
extends: .test:linux:base
variables:
IMAGE: "gcc:9"
IMAGE: "gcc:11"
CNAME: "/usr/local/bin/gcc"
CXXNAME: "/usr/local/bin/g++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=14;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=long double;-DGISMO_INDEX_TYPE=int64_t'"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=17;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=float;-DGISMO_INDEX_TYPE=int'"
GISMO_OPTIONAL: "gsOpennurbs\\;gsSpectra"

# GCC 10, C++17, Release
linux_x86_64_gcc10_cxx17_release_double_int32t:
# GCC 12, C++20, Release
linux_x86_64_gcc12_cxx20_release_mpreal_int:
extends: .test:linux:base
variables:
IMAGE: "gcc:10"
IMAGE: "gcc:12"
CNAME: "/usr/local/bin/gcc"
CXXNAME: "/usr/local/bin/g++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=17;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=double;-DGISMO_INDEX_TYPE=int32_t'"
GISMO_OPTIONAL: "gsOpennurbs\\;"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=20;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpfr::mpreal;-DGISMO_INDEX_TYPE=int'"

# GCC 11, C++20, Release
linux_x86_64_gcc11_cxx20_release_float_int:
extends: .test:linux:base
variables:
IMAGE: "gcc:11"
CNAME: "/usr/local/bin/gcc"
CXXNAME: "/usr/local/bin/g++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=20;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=float;-DGISMO_INDEX_TYPE=int'"

# GCC 12 (latest), C++23, Release
linux_x86_64_gcc12_cxx23_release_float_int:
# GCC 13, C++23, Release
linux_x86_64_gcc12_cxx23_release_mpq_int:
extends: .test:linux:base
variables:
IMAGE: "gcc:latest"
IMAGE: "gcc:13"
CNAME: "/usr/local/bin/gcc"
CXXNAME: "/usr/local/bin/g++"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=20;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=float;-DGISMO_INDEX_TYPE=int'"
CTEST_ARGS: "-D DO_TESTS=FALSE"
GISMO_OPTIONAL: "gsOpennurbs\\;gsSpectra"
CMAKE_ARGS: "'-DCMAKE_CXX_STANDARD=23;-DGISMO_BUILD_UNITTESTS=ON;-DGISMO_COEFF_TYPE=mpq_class;-DGISMO_INDEX_TYPE=int'"

################################################################################
# 2. Building and testing of external pull requests (PRs)
Expand Down Expand Up @@ -236,24 +219,30 @@ install_and_deploy_linux:
################################################################################

.docker:linux:base:
stage: test # make build
image: docker:git
stage: test
image: docker:19.03.12
services:
- docker:dind
- docker:19.03.12-dind
variables:
DOCKER_DRIVER: overlay
DOCKER_DRIVER: overlay2
DOCKER_TAG: ""
script:
- apk update
- apk add bash
- docker login --username=$DOCKERHUB_USERNAME --password=$DOCKERHUB_PASSWORD
- cd /builds/gismo-ci/gismo/docker && bash run_build_docker.sh $DOCKERHUB_USERNAME/gismo:$DOCKER_TAG
- docker push $DOCKERHUB_USERNAME/gismo:$DOCKER_TAG
# only:
# - stable
only:
- stable

# GCC 11, C++14, Release
docker:ubuntu20.04-gcc11-cxx14-release-generic-double-int:
extends: .docker:linux:base
variables:
DOCKER_TAG: "ubuntu20.04-gcc11-cxx14-release-generic-double-int"

# GCC 11, C++11, Release
docker:ubuntu20.04-gcc11-cxx11-release-generic-double-int:
# GCC 11, C++14, Debug
docker:ubuntu20.04-gcc11-cxx14-debug-generic-double-int:
extends: .docker:linux:base
variables:
DOCKER_TAG: "ubuntu20.04-gcc11-cxx11-release-generic-double-int"
DOCKER_TAG: "ubuntu20.04-gcc11-cxx14-debug-generic-double-int"
72 changes: 66 additions & 6 deletions docker/ubuntu20.04/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ ENV VERSION "$VERSION"

# This file accepts the following build-time arguments:

# C compiler : {clang-6.0,clang-7,clang-8,clang-9,clang-10,gcc-7,gcc-8,gcc-9,gcc-10,gcc-11}
# C compiler : {clang-6.0,clang-7,clang-8,clang-9,clang-10,gcc-7,gcc-8,gcc-9,gcc-10,gcc-11,gcc-12,gcc-13}
ARG CC=gcc-10
# C++ compiler : {clang++-6.0,clang++-7,clang++-8,clang++-9,clang++-10,g++-7,g++-8,g++-9,g++-10,g++-11}
# C++ compiler : {clang++-6.0,clang++-7,clang++-8,clang++-9,clang++-10,g++-7,g++-8,g++-9,g++-10,g++-11,g++-12,g++-13}
ARG CXX=g++-10

# Fortran compiler : {gfortran-7,gfortran-8,gfortran-9,gfortran-10,gfortran-11}
# Fortran compiler : {gfortran-7,gfortran-8,gfortran-9,gfortran-10,gfortran-11,gfortran-12,gfortran-13}
ARG FC=na

# CMAKE_CXX_STANDARD : {11,14,17,20,23}
Expand Down Expand Up @@ -217,14 +217,34 @@ RUN if [ "$CC" = "gcc-10" ] ; then \

# Install GCC C compiler version 11 (if required)
RUN if [ "$CC" = "gcc-11" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gcc-11 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC C compiler version 12 (if required)
RUN if [ "$CC" = "gcc-12" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gcc-12 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC C compiler version 13 (if required)
RUN if [ "$CC" = "gcc-13" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gcc-13 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC C++ compiler version 7 (if required)
RUN if [ "$CXX" = "g++-7" ] ; then \
apt-get update -q && \
Expand Down Expand Up @@ -263,14 +283,34 @@ RUN if [ "$CXX" = "g++-10" ] ; then \

# Install GCC C++ compiler version 11 (if required)
RUN if [ "$CXX" = "g++-11" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
g++-11 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC C++ compiler version 12 (if required)
RUN if [ "$CXX" = "g++-12" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
g++-12 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC C++ compiler version 13 (if required)
RUN if [ "$CXX" = "g++-13" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
g++-13 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC Fortran compiler version 7 (if required)
RUN if [ "$FC" = "gfortran-7" ] ; then \
apt-get update -q && \
Expand Down Expand Up @@ -312,14 +352,34 @@ RUN if [ "$FC" = "gfortran-10" ] ; then \

# Install GCC Fortran compiler version 11 (if required)
RUN if [ "$FC" = "gfortran-11" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gfortran-11 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC Fortran compiler version 12 (if required)
RUN if [ "$FC" = "gfortran-12" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gfortran-12 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install GCC Fortran compiler version 13 (if required)
RUN if [ "$FC" = "gfortran-13" ] ; then \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -q && \
apt-get install --no-install-recommends -yq \
gfortran-13 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \
fi

# Install MPI
RUN if [ "$GISMO_WITH_MPI" = "ON" ] ; then \
apt-get update -q && \
Expand Down
3 changes: 2 additions & 1 deletion examples/fileIo_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,8 @@ int main(int argc, char *argv[])
gsInfo<< " "<<*o ;

if ( gsSurface<> * srf = dynamic_cast<gsSurface<>*>(o.get()) )
{
{
GISMO_UNUSED(srf);
#ifdef gsOpennurbs_ENABLED
//gsInfo<< " Write back to geo.3dm\n";
//extensions::writeON_NurbsSurface(*srf,"geo");
Expand Down
2 changes: 1 addition & 1 deletion examples/ieti2_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ int main(int argc, char *argv[])
index_t refinements = 1;
index_t degree = 2;
std::string boundaryConditions("d");
real_t tolerance = 1.e-8;
real_t tolerance = (std::is_same<real_t, double>::value ? 1.e-8 : 1.e-5);
index_t maxIterations = 100;
std::string out;
bool plot = false;
Expand Down
2 changes: 1 addition & 1 deletion examples/linearSolvers_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ int main(int argc, char *argv[])

index_t N = 100;
//Tolerance
real_t tol = std::pow(10.0, - REAL_DIG * 0.75);
real_t tol = std::pow(10.0, - REAL_DIG * (std::is_same<real_t, double>::value ? 0.75 : 0.5));

gsCmdLine cmd("Solves a 1D PDE with a Courant discretization with several solvers.");
cmd.addInt ("n", "number", "Number of unknowns", N );
Expand Down
2 changes: 1 addition & 1 deletion examples/sparseSolvers_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ using namespace gismo;
void report( const gsVector<>& computedSolution, const gsVector<>& exactSolution, bool& succeeded )
{
gsInfo << " Computed solution: " << computedSolution.transpose() << "\n";
if ( (computedSolution-exactSolution).norm() <= 1.e-10 )
if ( (computedSolution-exactSolution).norm() <= (std::is_same<real_t, double>::value ? 1.e-10 : 1.e-5) )
{
gsInfo << " Test passed.\n";
}
Expand Down