diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1810aab8f44f034623e306cb93c8fd690fc99fbb..abc4566db55971a66cf461f922e546bab02c7d28 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ stages: - build - test -release_build: +gcc-release: stage: build script: - export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 @@ -26,7 +26,7 @@ release_build: .. - make -j$(nproc) install -debug_build: +gcc-debug: stage: build script: - export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 @@ -34,7 +34,7 @@ debug_build: - mkdir -p build - cd build - cmake - -DCMAKE_BUILD_TYPE:STRING=ASan + -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_PREFIX_PATH:STRING=/usr/local -DCMAKE_INSTALL_PREFIX:STRING=${CI_PROJECT_DIR}/compiled -DSCORD_BUILD_EXAMPLES:BOOL=ON @@ -46,6 +46,7 @@ debug_build: .. - make -j$(nproc) install artifacts: + expire_in: 2 days paths: - compiled/bin/ - compiled/etc/ @@ -54,18 +55,35 @@ debug_build: - build/tests/ - build/src/scord/scord - build/src/scord-ctl/scord-ctl - # depending on your build setup it's most likely a good idea to cache outputs to reduce the build time - cache: - key: $CI_COMMIT_REF_SLUG - paths: - - build/ - - compiled/bin - - compiled/etc + +clang: + stage: build + parallel: + matrix: + - CMAKE_BUILD_TYPE: [ Debug, Release ] + script: + - export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 + - export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig + - mkdir -p build + - cd build + - cmake + -DCMAKE_CXX_COMPILER=/usr/bin/clang++ + -DCMAKE_C_COMPILER=/usr/bin/clang + -DCMAKE_PREFIX_PATH:STRING=/usr/local + -DCMAKE_INSTALL_PREFIX:STRING=${CI_PROJECT_DIR}/compiled + -DSCORD_BUILD_EXAMPLES:BOOL=ON + -DSCORD_BUILD_TESTS:BOOL=ON + -DSCORD_TRANSPORT_LIBRARY=libfabric + -DSCORD_TRANSPORT_PROTOCOL=ofi+tcp + -DSCORD_BIND_ADDRESS=127.0.0.1 + -DSCORD_BIND_PORT=52000 + .. + - make -j$(nproc) install # run RPC tests using the binary built before rpc: stage: test - needs: [debug_build] + needs: [ gcc-debug ] script: - export ASAN_OPTIONS=detect_odr_violation=0:detect_leaks=0 - export LSAN_OPTIONS=verbosity=1:log_threads=1:suppressions=${CI_PROJECT_DIR}/tests/LSanSuppress.supp @@ -82,7 +100,7 @@ rpc: # run unit tests unit: stage: test - needs: [debug_build] + needs: [ gcc-debug ] script: - export ASAN_OPTIONS=detect_odr_violation=0 - export LSAN_OPTIONS=verbosity=1:log_threads=1:suppressions=${CI_PROJECT_DIR}/tests/LSanSuppress.supp diff --git a/CMakeLists.txt b/CMakeLists.txt index 48cfdfb822979c2e01e0031af33171fc280dd4b3..e29bd5cafd682d52588fdc864e64b540c721b87a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -253,7 +253,7 @@ set(EXPECTED_BUILD_TESTS OFF) FetchContent_Declare( expected GIT_REPOSITORY https://github.com/TartanLlama/expected - GIT_TAG 9d812f5e3b5bc68023f6e31d29489cdcaacef606 # latest + GIT_TAG 3e304a4bdd00feef8d41f5b388c37bd9d6108025 # latest GIT_SHALLOW ON GIT_PROGRESS ON ) @@ -303,11 +303,6 @@ find_package(RedisPlusPlus 1.3.3 REQUIRED) add_compile_options("-Wall" "-Wextra" "-Werror" "$<$:-O3>") add_compile_definitions("$<$:SCORD_DEBUG_BUILD>") add_compile_definitions("$<$:__LOGGER_ENABLE_DEBUG__>") -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_compile_options("-stdlib=libc++") -else () - # nothing special for gcc at the moment -endif () add_subdirectory(etc) add_subdirectory(src) diff --git a/docker/0.2.0-wip/Dockerfile b/docker/0.2.0-wip/Dockerfile index 2250ffce2f0d322ea4e37d8a3475dd8c7705f95f..1335f0af66253348e9a73838ba251c16f95eb2b8 100644 --- a/docker/0.2.0-wip/Dockerfile +++ b/docker/0.2.0-wip/Dockerfile @@ -15,6 +15,8 @@ RUN apt-get update && \ automake \ gcc \ g++ \ + clang \ + libc++-dev \ procps \ # AGIOS dependencies libconfig-dev \ diff --git a/src/common/abt_cxx/shared_mutex.hpp b/src/common/abt_cxx/shared_mutex.hpp index 1ec4b23041d8fb52a0ee647f87fcc7186a2fda09..402cfed19d4a0ffd008e560310b9c6615aff7748 100644 --- a/src/common/abt_cxx/shared_mutex.hpp +++ b/src/common/abt_cxx/shared_mutex.hpp @@ -25,7 +25,6 @@ #include #include #include -#include #ifndef SCORD_ABT_SHARED_MUTEX_HPP #define SCORD_ABT_SHARED_MUTEX_HPP @@ -124,7 +123,7 @@ public: unique_lock() noexcept : m_device(0), m_owns(false) {} explicit unique_lock(mutex_type& m) - : m_device(std::__addressof(m)), m_owns(false) { + : m_device(std::addressof(m)), m_owns(false) { lock(); m_owns = true; } @@ -235,7 +234,7 @@ public: shared_lock() noexcept : m_device(nullptr), m_owns(false) {} explicit shared_lock(mutex_type& m) - : m_device(std::__addressof(m)), m_owns(true) { + : m_device(std::addressof(m)), m_owns(true) { m.lock_shared(); } @@ -288,7 +287,7 @@ public: mutex_type* release() noexcept { m_owns = false; - return std::__exchange(m_device, nullptr); + return std::exchange(m_device, nullptr); } // Getters diff --git a/src/common/logger/macros.h b/src/common/logger/macros.h index 8369ec5f4282bfbdad7afaf144f4bcf01caddbd7..f4ee6ac614134544cb432fc9d6393dc94b2a62bf 100644 --- a/src/common/logger/macros.h +++ b/src/common/logger/macros.h @@ -133,17 +133,15 @@ #define LOGGER_LOG16 LOGGER_LOGN #define LOGGER_LOGN(level, fmt, ...) logger_log(level, fmt, __VA_ARGS__) -#define LOGGER_INFO(fmt, ...) LOGGER_LOG(info, fmt __VA_OPT__(, ) __VA_ARGS__); +#define LOGGER_INFO(fmt, ...) LOGGER_LOG(info, fmt, ##__VA_ARGS__); #ifdef __LOGGER_ENABLE_DEBUG__ -#define LOGGER_DEBUG(fmt, ...) \ - LOGGER_LOG(debug, fmt __VA_OPT__(, ) __VA_ARGS__); +#define LOGGER_DEBUG(fmt, ...) LOGGER_LOG(debug, fmt, ##__VA_ARGS__); #endif -#define LOGGER_WARN(fmt, ...) LOGGER_LOG(warn, fmt __VA_OPT__(, ) __VA_ARGS__); +#define LOGGER_WARN(fmt, ...) LOGGER_LOG(warn, fmt, ##__VA_ARGS__); -#define LOGGER_ERROR(fmt, ...) \ - LOGGER_LOG(error, fmt __VA_OPT__(, ) __VA_ARGS__); +#define LOGGER_ERROR(fmt, ...) LOGGER_LOG(error, fmt, ##__VA_ARGS__); #endif diff --git a/src/lib/c_wrapper.cpp b/src/lib/c_wrapper.cpp index f4be02628c1ec4520a46e0dffd009d87db74d40f..1074843a97d52ad4cab2aedd280ac8bfe6819cb5 100644 --- a/src/lib/c_wrapper.cpp +++ b/src/lib/c_wrapper.cpp @@ -309,7 +309,7 @@ ADM_define_data_operation(ADM_server_t server, ADM_job_t job, const char* path, ADM_return_t ADM_connect_data_operation(ADM_server_t server, ADM_job_t job, ADM_dataset_t input, ADM_dataset_t output, - bool should_stream, ...) { + int should_stream, ...) { const scord::server srv{server}; @@ -336,7 +336,7 @@ ADM_finalize_data_operation(ADM_server_t server, ADM_job_t job, ADM_return_t ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_t job, ADM_data_operation_t op, - ADM_transfer_t transfer, bool should_stream, + ADM_transfer_t transfer, int should_stream, ...) { const scord::server srv{server}; diff --git a/src/lib/scord/scord.h b/src/lib/scord/scord.h index fa481557a2a08c4f932cb163dab77f108c483c06..1693a3ba5a2c20112add750d5d1728812cca3e61 100644 --- a/src/lib/scord/scord.h +++ b/src/lib/scord/scord.h @@ -401,7 +401,7 @@ ADM_define_data_operation(ADM_server_t server, ADM_job_t job, const char* path, ADM_return_t ADM_connect_data_operation(ADM_server_t server, ADM_job_t job, ADM_dataset_t input, ADM_dataset_t output, - bool should_stream, ...); + int should_stream, ...); /** @@ -441,7 +441,7 @@ ADM_finalize_data_operation(ADM_server_t server, ADM_job_t job, ADM_return_t ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_t job, ADM_data_operation_t op, - ADM_transfer_t transfer, bool should_stream, + ADM_transfer_t transfer, int should_stream, ...); diff --git a/src/lib/scord/types.h b/src/lib/scord/types.h index 487b80ecb93074c6b318668ebf470c3f57d48b15..ed5bc8e01bd8f22862f3c31fbc804db6180f4d80 100644 --- a/src/lib/scord/types.h +++ b/src/lib/scord/types.h @@ -87,6 +87,7 @@ typedef struct adm_job_resources* ADM_job_resources_t; /** I/O stats from a job */ typedef struct { // TODO: empty for now + uint32_t placeholder; } ADM_job_stats_t; /** The I/O requirements for a job */ @@ -212,6 +213,7 @@ typedef struct adm_data_operation* ADM_data_operation_t; /** A data operation status */ typedef struct { // TODO: empty for now + uint32_t placeholder; } ADM_data_operation_status_t;