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

Update requirements #3375

Merged
merged 4 commits into from
Jan 3, 2020
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,17 +93,6 @@ default:
- docker
- linux

min_boost:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you want to remove this test?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's how I understood our last es meeting:

  • we don't test boost 1.55 any more
  • boost 1.58 is already tested in cuda:9.0 and clang:6.0
  • once Ubuntu 20.04 LTS is released next April, we upgrade boost requirements to 1.65 (for cuda:9.0 which requires Ubuntu 16.04, we build boost 1.65 from sources)
  • except for building boost from sources, Dockerfile-min_boost = Dockerfile-18.04, so we can transfer it from master to a new 4.1 branch

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could think about having one container where all the library versions are pinned to the minimal required versions, so that we don't silently stop testing this when a library version is updated in the distribution. This isn't really complicated, all major package managers let you just fix a version.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cuda:9.0 will essentially fulfill that role. It uses Ubuntu 16.04 and the minimal supported versions of CUDA and CMake. The version numbers of non-graphical Python packages available in the Ubuntu 16.04 repository are used as the minimal versions in requirements.txt (fb4862e). Once Ubuntu 20.04 is out and espresso drops support for CUDA9, we can use the cuda:10.1 to fulfill that role. We could rename the CI job from cuda10:maxset to ubuntu:min-dependencies for clarity.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whatever you think is appropriate. I'm just saying that it is not as such guaranteed that the package versions in the distributions stay the same, which could lead to a situation where the minimal version of some package is no longer tested.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could come up with an extra check in the CI job that tests the docker image to make sure the versions of dependencies match the minimal requirements.

<<: *global_job_definition
stage: build
image: gitlab.icp.uni-stuttgart.de:4567/espressomd/docker/ubuntu-python3:min_boost
script:
- export with_cuda=false myconfig=maxset
- bash maintainer/CI/build_cmake.sh
tags:
- docker
- linux

maxset:
<<: *global_job_definition
stage: build
Expand Down
16 changes: 8 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

cmake_minimum_required(VERSION 3.4)
cmake_minimum_required(VERSION 3.10)
include(FeatureSummary)
include(GNUInstallDirs)
project(ESPResSo)
include(cmake/FindPythonModule.cmake)
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.12")
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.12")
cmake_policy(SET CMP0074 NEW)
endif()

Expand Down Expand Up @@ -57,7 +57,7 @@ option(WITH_TESTS "Enable tests" ON)
option(WITH_SCAFACOS "Build with Scafacos support" OFF)
option(WITH_BENCHMARKS "Enable benchmarks" OFF)
option(WITH_VALGRIND_INSTRUMENTATION "Build with valgrind instrumentation markers" OFF)
if(CMAKE_VERSION VERSION_GREATER 3.5.2 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
option(WITH_CLANG_TIDY "Run Clang-Tidy during compilation" OFF)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
Expand Down Expand Up @@ -228,10 +228,10 @@ if(WITH_CUDA)
endif()
endif(WITH_CUDA)

find_package(PythonInterp 3.3 REQUIRED)
find_package(PythonInterp 3.5 REQUIRED)

if(WITH_PYTHON)
find_package(Cython 0.23 REQUIRED)
find_package(Cython 0.26 REQUIRED)
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"import distutils.sysconfig as cg; print(cg.get_python_inc())"
Expand Down Expand Up @@ -370,11 +370,11 @@ endif()

if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(BOOST_MINIMUM_VERSION "1.65.0")
if (CUDA_FOUND AND NOT CUDA_VERSION VERSION_LESS "9.0")
if (CUDA_FOUND AND CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
set(BOOST_MINIMUM_VERSION "1.66.0")
endif()
else()
set(BOOST_MINIMUM_VERSION "1.55.0")
set(BOOST_MINIMUM_VERSION "1.58.0")
endif()

# old Boost.MPI versions contain a use-after-free bug that seems to only cause crashes on 32-bit architectures
Expand All @@ -384,7 +384,7 @@ endif()

find_package(Boost ${BOOST_MINIMUM_VERSION} REQUIRED ${BOOST_COMPONENTS})

if(Boost_VERSION VERSION_GREATER 106399 AND Boost_VERSION VERSION_LESS 106500)
if(Boost_VERSION VERSION_GREATER_EQUAL 106400 AND Boost_VERSION VERSION_LESS 106500)
# Boost 1.64 has incompatible Serialization and MPI modules, see
# https://svn.boost.org/trac10/ticket/12723 . Some distributions, like Fedora,
# have backported the patch.
Expand Down
8 changes: 1 addition & 7 deletions testsuite/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,4 @@ include(unit_test)

add_subdirectory(python)
add_subdirectory(cmake)

if(${CMAKE_VERSION} VERSION_LESS "3.7.0")
add_custom_target(check_tutorials COMMAND echo "Target 'check_tutorials' requires CMake version 3.7.0 or above, currently using ${CMAKE_VERSION}")
add_custom_target(check_samples COMMAND echo "Target 'check_samples' requires CMake version 3.7.0 or above, currently using ${CMAKE_VERSION}")
else()
add_subdirectory(scripts)
endif()
add_subdirectory(scripts)