diff --git a/.github/workflows/config/default_ci.meta b/.github/workflows/config/default_ci.meta index d5771096e88..26a40a08ab9 100644 --- a/.github/workflows/config/default_ci.meta +++ b/.github/workflows/config/default_ci.meta @@ -5,7 +5,6 @@ names: - "-DBUILD_SHARED_LIBS=ON" - "-DCOMPILE_EXAMPLES=ON" - "-DEPROSIMA_BUILD_TESTS=ON" - - "-DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS=/MP /WX" - "-DFASTDDS_ENFORCE_LOG_INFO=ON" - "-DFASTDDS_PIM_API_TESTS=ON" - "-DFASTDDS_STATISTICS=ON" @@ -21,10 +20,6 @@ names: - "-DSHM_TRANSPORT_DEFAULT=ON" - "-DSTRICT_REALTIME=OFF" - "-DSYSTEM_TESTS=ON" - - "-DTHIRDPARTY_Asio=FORCE" - - "-DTHIRDPARTY_fastcdr=OFF" - - "-DTHIRDPARTY_TinyXML2=FORCE" - - "-DTHIRDPARTY_UPDATE=ON" - "-DMEMORYCHECK_COMMAND_OPTIONS=-q --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=2 --error-exitcode=1" - "-DMEMORYCHECK_SUPPRESSIONS_FILE=../../src/fastrtps/valgrind.supp" googletest-distribution: diff --git a/.github/workflows/config/nightly.meta b/.github/workflows/config/nightly.meta index 2213a955b3e..657982f1d8a 100644 --- a/.github/workflows/config/nightly.meta +++ b/.github/workflows/config/nightly.meta @@ -5,7 +5,6 @@ names: - "-DBUILD_SHARED_LIBS=ON" - "-DCOMPILE_EXAMPLES=ON" - "-DEPROSIMA_BUILD_TESTS=ON" - - "-DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS=/MP /WX" - "-DFASTDDS_ENFORCE_LOG_INFO=ON" - "-DFASTDDS_PIM_API_TESTS=ON" - "-DFASTDDS_STATISTICS=ON" @@ -20,10 +19,6 @@ names: - "-DSHM_TRANSPORT_DEFAULT=ON" - "-DSTRICT_REALTIME=OFF" - "-DSYSTEM_TESTS=ON" - - "-DTHIRDPARTY_Asio=FORCE" - - "-DTHIRDPARTY_fastcdr=OFF" - - "-DTHIRDPARTY_TinyXML2=FORCE" - - "-DTHIRDPARTY_UPDATE=ON" - "-DMEMORYCHECK_COMMAND_OPTIONS=-q --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=2 --error-exitcode=1" - "-DMEMORYCHECK_SUPPRESSIONS_FILE=../../src/fastrtps/valgrind.supp" googletest-distribution: diff --git a/.github/workflows/mac-ci.yml b/.github/workflows/mac-ci.yml new file mode 100644 index 00000000000..8f691df1ba6 --- /dev/null +++ b/.github/workflows/mac-ci.yml @@ -0,0 +1,56 @@ +name: Fast-DDS MacOS CI + +on: + workflow_dispatch: + inputs: + label: + description: 'ID associated to the workflow' + required: true + type: string + colcon-args: + description: 'Extra arguments for colcon cli' + required: false + type: string + cmake-args: + description: 'Extra arguments for cmake cli' + required: false + type: string + ctest-args: + description: 'Extra arguments for ctest cli' + required: false + type: string + fastdds_branch: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + type: string + required: true + + push: + branches: + - 'master' + - '2.12.x' + - '2.10.x' + - '2.6.x' + paths-ignore: + - '**.md' + - '**.txt' + - '!**/CMakeLists.txt' + pull_request: + paths-ignore: + - '**.md' + - '**.txt' + - '!**/CMakeLists.txt' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + mac-ci: + uses: ./.github/workflows/reusable-mac-ci.yml + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} + with: + label: ${{ inputs.label || 'mac-ci' }} + colcon-args: ${{ inputs.colcon-args }} + cmake-args: ${{ inputs.cmake-args }} + ctest-args: ${{ inputs.ctest-args }} + fastdds-branch: ${{ inputs.fastdds_branch || github.ref || 'master' }} diff --git a/.github/workflows/nightly-mac-ci.yml b/.github/workflows/nightly-mac-ci.yml new file mode 100644 index 00000000000..adb0e0e0c8b --- /dev/null +++ b/.github/workflows/nightly-mac-ci.yml @@ -0,0 +1,23 @@ +name: Fast-DDS MacOS CI (nightly) + +on: + workflow_dispatch: + schedule: + - cron: '0 1 * * *' + +jobs: + nightly-sec-mac-ci: + uses: ./.github/workflows/reusable-mac-ci.yml + with: + label: 'nightly-sec-mac-ci' + cmake-args: "-DSECURITY=ON" + ctest-args: "-LE xfail" + fastdds-branch: 'master' + + nightly-nosec-mac-ci: + uses: ./.github/workflows/reusable-mac-ci.yml + with: + label: 'nightly-nosec-mac-ci' + cmake-args: "-DSECURITY=OFF" + ctest-args: "-LE xfail" + fastdds-branch: 'master' diff --git a/.github/workflows/reusable-mac-ci.yml b/.github/workflows/reusable-mac-ci.yml new file mode 100644 index 00000000000..2094fd78679 --- /dev/null +++ b/.github/workflows/reusable-mac-ci.yml @@ -0,0 +1,154 @@ +name: Fast-DDS MacOS CI reusable workflow + +on: + workflow_call: + inputs: + label: + description: 'ID associated to the workflow' + required: true + type: string + colcon-args: + description: 'Extra arguments for colcon cli' + required: false + type: string + cmake-args: + description: 'Extra arguments for cmake cli' + required: false + type: string + ctest-args: + description: 'Extra arguments for ctest cli' + required: false + type: string + fastdds-branch: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + required: true + type: string + +defaults: + run: + shell: bash + +jobs: + reusable-mac-ci: + # As explained in https://github.com/actions/runner-images/tree/main?tab=readme-ov-file#available-images, + # *-latest images are not always the latest available versions. The minimum version of the macOS image + # with clang 15 is macos-13 (see + # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#language-and-runtime), + # so we'll use that one for now, as clang 15 is the supported compiler for Fast DDS in macOS. + # (see https://github.com/eProsima/Fast-DDS/blob/master/PLATFORM_SUPPORT.md#compilers) + runs-on: macos-13 + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} + strategy: + fail-fast: false + matrix: + cmake-build-type: + - 'RelWithDebInfo' + steps: + - name: Sync eProsima/Fast-DDS repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastrtps + ref: ${{ inputs.fastdds-branch }} + + - uses: eProsima/eProsima-CI/external/setup-python@v0 + with: + python-version: '3.11' + + - name: Get minimum supported version of CMake + uses: lukka/get-cmake@latest + with: + cmakeVersion: '3.22.6' + + - name: Install brew dependencies + uses: eProsima/eProsima-CI/macos/install_brew_packages@v0 + with: + packages: llvm asio tinyxml2 openssl@3.0 + update: false + upgrade: false + + - name: Install colcon + uses: eProsima/eProsima-CI/multiplatform/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 + with: + packages: vcstool xmlschema + upgrade: false + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + # TODO(eduponz): Update known hosts file for DNS resolver testing. NOTE: The runner cannot modify /etc/hosts. + # TODO(eduponz): Set up libp11 and SoftHSM. NOTE: using SoftHSM requires adding the runner to a group, + # which entails logout/login or rebooting the machine. This is not feasible in a CI environment. + + - name: Prepare colcon workspace + id: colcon_ws_setup + run: | + # Nightly job + if [[ "${{ inputs.label }}" == *"nightly"* ]] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_${{ inputs.fastdds-branch }}.repos" + if [ ! -f ${DEPENDS_REPOS_PATH} ] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_master.repos" + fi + META_PATH="./src/fastrtps/.github/workflows/config/nightly.meta" + + # Either PR or manual + else + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_${{ inputs.fastdds-branch }}.repos" + if [ ! -f ${DEPENDS_REPOS_PATH} ] + then + DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_master.repos" + fi + META_PATH="./src/fastrtps/.github/workflows/config/default_ci.meta" + fi + + echo "Selected repos files: ${DEPENDS_REPOS_PATH}" + cat ${DEPENDS_REPOS_PATH} + + echo "Selected metas files: ${META_PATH}" + cp ${META_PATH} ci.meta + cat ci.meta + + # Create source dir and download the sources + vcs import src --input ${DEPENDS_REPOS_PATH} --skip-existing + + # TODO(eduponz): There is a warning in clang >= 16 regarding enum-constexpr-conversion: + # - Issue: https://github.com/boostorg/mpl/issues/69. + # We are disabling the warning for now, as the proposed solution does not fix the issue: + # - Not working solution: https://github.com/macports/macports-ports/pull/21839/files + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/ci.meta + colcon_build_args: ${{ inputs.colcon-args }} + cmake_args: ${{ inputs.cmake-args }} + cmake_args_default: -DCMAKE_CXX_FLAGS="-Werror -Wall -Wno-enum-constexpr-conversion" + cmake_build_type: ${{ matrix.cmake-build-type }} + workspace: ${{ github.workspace }} + + - name: Colcon test + id: test + if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }} + uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 + with: + colcon_test_args: ${{ inputs.colcon-args }} + colcon_test_args_default: --event-handlers=console_direct+ + ctest_args: ${{ inputs.ctest-args }} + ctest_args_default: --repeat until-pass:3 --timeout 300 --label-exclude "xfail" + packages_names: fastrtps + workspace: ${{ github.workspace }} + test_report_artifact: ${{ format('test_report_{0}_{1}_{2}', inputs.label, github.job, join(matrix.*, '_')) }} + + - name: Test summary + uses: eProsima/eProsima-CI/multiplatform/junit_summary@v0 + if: ${{ !cancelled() && !contains(github.event.pull_request.labels.*.name, 'no-test') }} + with: + junit_reports_dir: "${{ steps.test.outputs.ctest_results_path }}" + print_summary: 'True' + show_failed: 'True' + show_disabled: 'False' + show_skipped: 'False' diff --git a/.github/workflows/reusable-windows-ci.yml b/.github/workflows/reusable-windows-ci.yml index 13039a37e54..b978214f452 100644 --- a/.github/workflows/reusable-windows-ci.yml +++ b/.github/workflows/reusable-windows-ci.yml @@ -46,6 +46,7 @@ jobs: with: path: src/fastrtps submodules: true + ref: ${{ inputs.fastdds-branch }} - name: Get minimum supported version of CMake uses: lukka/get-cmake@latest @@ -160,7 +161,9 @@ jobs: with: colcon_meta_file: ${{ github.workspace }}/ci.meta colcon_build_args: ${{ inputs.colcon-args }} - cmake_args_default: ${{ inputs.cmake-args }} + # The following Fast DDS CMake options need to be specified here instead of in the ci.meta file + # because they vary from platform to platform + cmake_args_default: ${{ inputs.cmake-args }} -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=OFF -DTHIRDPARTY_UPDATE=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX" cmake_build_type: ${{ matrix.cmake-config }} workspace: ${{ github.workspace }} diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 2212147b8ea..19695dc2612 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -52,4 +52,8 @@ jobs: colcon-args: ${{ inputs.colcon-args }} cmake-args: ${{ inputs.cmake-args }} ctest-args: ${{ inputs.ctest-args }} +<<<<<<< HEAD fastdds_branch: ${{ inputs.fastdds_branch || github.base_ref || github.ref || '2.11.x' }} +======= + fastdds_branch: ${{ inputs.fastdds_branch || github.ref || 'master' }} +>>>>>>> 8cff0ca30 (Add macOS Github CI (#4100)) diff --git a/test/blackbox/CMakeLists.txt b/test/blackbox/CMakeLists.txt index aa8e8afbc9b..99ba3181aae 100644 --- a/test/blackbox/CMakeLists.txt +++ b/test/blackbox/CMakeLists.txt @@ -237,7 +237,7 @@ if(NOT LibP11_FOUND) endif() # LibP11_FOUND if(EPROSIMA_TEST_DNS_NOT_SET_UP) - set(dns_filter "-Discovery.ServerClientEnvironmentSetUpDNS") + set(dns_filter "-*ServerClientEnvironmentSetUpDNS*") endif() file(GLOB RTPS_BLACKBOXTESTS_TEST_SOURCE "common/RTPSBlackboxTests*.cpp") diff --git a/thirdparty/boost/include/boost/mpl/aux_/integral_wrapper.hpp b/thirdparty/boost/include/boost/mpl/aux_/integral_wrapper.hpp index 6bc05f7e96e..8840958594b 100644 --- a/thirdparty/boost/include/boost/mpl/aux_/integral_wrapper.hpp +++ b/thirdparty/boost/include/boost/mpl/aux_/integral_wrapper.hpp @@ -1,8 +1,8 @@ // Copyright Aleksey Gurtovoy 2000-2006 // -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/mpl for documentation. @@ -32,7 +32,7 @@ #if !defined(AUX_WRAPPER_INST) # if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) # define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value > -# else +# else # define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value > # endif #endif @@ -43,7 +43,7 @@ template< AUX_WRAPPER_PARAMS(N) > struct AUX_WRAPPER_NAME { BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N); -// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some +// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some // other compilers (e.g. MSVC) are not particulary happy about it #if BOOST_WORKAROUND(__EDG_VERSION__, <= 238) typedef struct AUX_WRAPPER_NAME type; @@ -73,11 +73,11 @@ struct AUX_WRAPPER_NAME typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior; #endif - // enables uniform function call syntax for families of overloaded + // enables uniform function call syntax for families of overloaded // functions that return objects of both arithmetic ('int', 'long', - // 'double', etc.) and wrapped integral types (for an example, see + // 'double', etc.) and wrapped integral types (for an example, see // "mpl/example/power.cpp") - BOOST_CONSTEXPR operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast(this->value); } + BOOST_CONSTEXPR operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast(this->value); } }; #if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)