Skip to content

Commit

Permalink
Merge pull request #193 from Stiffstream/0.7-dev-add-boost-build-to-ci
Browse files Browse the repository at this point in the history
Add boost build to ci
  • Loading branch information
eao197 authored Nov 9, 2023
2 parents ab9e5ff + 066ae95 commit 2a270d2
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 41 deletions.
121 changes: 92 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name: CI

on:
push:
branches: ["master"]
branches: ["master", "0.7-dev"]
pull_request:

jobs:
Expand Down Expand Up @@ -63,6 +63,7 @@ jobs:
cmake \
--build $RESTINIO_BUILD_DIR \
--config ${{ matrix.build_type }} \
--parallel ${NUMBER_OF_PROCESSORS} \
--verbose
- name: Test
shell: bash
Expand All @@ -77,76 +78,137 @@ jobs:
Build-Linux:
# The type of runner that the job will run on
name: Ubuntu-22.04 (${{ matrix.compiler.cname }}, ${{ matrix.build_type }}, C++${{ matrix.compiler.cppstd }})
name: Ubuntu-22.04 (${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}, ${{ matrix.build_type }}, C++${{ matrix.build_settings.cppstd }}, ${{matrix.build_settings.asio_source}} asio)
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
compiler:
- cname: gcc-9
cxxname: g++-9
ar: gcc-ar-9
build_settings:
- toolset: gcc
toolset_version: 9
cppstd: 17
asio_source: standalone

- cname: gcc-12
cxxname: g++-12
ar: gcc-ar-12
- toolset: gcc
toolset_version: 9
cppstd: 17
- cname: gcc-12
cxxname: g++-12
ar: gcc-ar-12
asio_source: boost

- toolset: gcc
toolset_version: 9
cppstd: 17
asio_source: boost-system-package

- toolset: gcc
toolset_version: 12
cppstd: 17
asio_source: standalone
- toolset: gcc
toolset_version: 12
cppstd: 20
asio_source: standalone
- toolset: gcc
toolset_version: 12
cppstd: 20
asio_source: boost

- cname: clang-13
cxxname: clang++-13
ar: llvm-ar-13
- toolset: clang
toolset_version: 13
cppstd: 17
asio_source: standalone

- cname: clang-15
cxxname: clang++-15
ar: llvm-ar-15
- toolset: clang
toolset_version: 15
cppstd: 17
- cname: clang-15
cxxname: clang++-15
ar: llvm-ar-15
asio_source: standalone
- toolset: clang
toolset_version: 15
cppstd: 20
asio_source: standalone

build_type:
- Release
- Debug
env:
CC: ${{ matrix.compiler.cname }}
CXX: ${{ matrix.compiler.cxxname }}
AR: ${{ matrix.compiler.ar }}
RESTINIO_BUILD_DIR: _build_${{ matrix.compiler.cname }}_cpp${{ matrix.compiler.cppstd }}_${{ matrix.build_type }}
RESTINIO_BUILD_TAG: ${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}_cpp${{ matrix.build_settings.cppstd }}_${{ matrix.build_type }}_${{matrix.build_settings.asio_source}}_asio
steps:
- uses: actions/checkout@v3

- name: Print env
- name: Prepare env
run: |
echo github.event.action: ${{ github.event.action }}
echo github.event_name: ${{ github.event_name }}
echo "RESTINIO_BUILD_DIR=_build_${RESTINIO_BUILD_TAG}" >> $GITHUB_ENV
echo "CC=${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV
if [ "${{ matrix.build_settings.toolset }}" == "gcc" ]; then
echo "CXX=g++-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV
echo "AR=gcc-ar-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV
else
echo "CXX=clang++-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV
echo "AR=llvm-ar-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV
fi
- name: Install dependencies
run: |
sudo gem install Mxx_ru
if [ "${{ matrix.build_settings.asio_source }}" == "boost-system-package" ]; then
sudo apt-get update && sudo apt-get install -y libboost-all-dev
fi
mxxruexternals
- name: Configure
if: ${{ matrix.build_settings.asio_source == 'standalone' }}
shell: bash
run: |
cd dev
cmake \
-B ${RESTINIO_BUILD_DIR} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]"
- name: Obtain Boost
if: ${{ matrix.build_settings.asio_source == 'boost' }}
uses: MarkusJx/[email protected]
id: install-boost
with:
boost_version: 1.83.0
boost_install_dir: ${{github.workspace}}/local_boost
toolset: ${{ matrix.build_settings.toolset }}
platform_version: 22.04

- name: Configure
if: ${{ matrix.build_settings.asio_source == 'boost' }}
shell: bash
run: |
mxxruexternals
cd dev
cmake \
-B ${RESTINIO_BUILD_DIR} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.compiler.cppstd }} \
-DRESTINIO_TEST_SUFFIX=" [${{ matrix.compiler.cname }}_cpp${{ matrix.compiler.cppstd }}_${{ matrix.build_type }}]"
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \
-DRESTINIO_ASIO_SOURCE=boost \
-DBOOST_ROOT=${{ steps.install-boost.outputs.BOOST_ROOT }} \
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]"
- name: Configure
if: ${{ matrix.build_settings.asio_source == 'boost-system-package' }}
shell: bash
run: |
cd dev
cmake \
-B ${RESTINIO_BUILD_DIR} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \
-DRESTINIO_ASIO_SOURCE=boost \
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]"
- name: Build
working-directory: ./dev
shell: bash
run: |
cmake \
--build $RESTINIO_BUILD_DIR \
--parallel $(nproc) \
--verbose
- name: Test
shell: bash
Expand Down Expand Up @@ -202,6 +264,7 @@ jobs:
run: |
cmake \
--build $RESTINIO_BUILD_DIR \
--parallel $(sysctl -n hw.ncpu) \
--verbose
- name: Test
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion dev/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ if (RESTINIO_ASIO_SOURCE STREQUAL "standalone")
endif ()
else ()
if (NOT RESTINIO_USE_SYSTEM_BOOST_ASIO)
find_package(Boost REQUIRED)
find_package(Boost REQUIRED COMPONENTS headers regex)
endif ()
endif ()

Expand Down
2 changes: 2 additions & 0 deletions dev/restinio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ elseif (RESTINIO_ASIO_SOURCE STREQUAL "boost")
"Unable to identify how to depend on Boost::asio. "
"Giving up...")
endif ()

target_compile_definitions(${RESTINIO_LIBRARY_NAME} INTERFACE RESTINIO_USE_BOOST_ASIO)
else ()
message(FATAL_ERROR "Invalid value for RESTINIO_ASIO_SOURCE (${RESTINIO_ASIO_SOURCE})")
endif ()
Expand Down
25 changes: 21 additions & 4 deletions dev/test/handle_requests/async_chained_handlers_2/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

#include "../../common/test_extra_data_factory.ipp"

#include <future>

using atomic_counter_t = std::atomic< unsigned int >;

template< typename Extra_Data_Factory >
Expand Down Expand Up @@ -156,6 +158,7 @@ tc_fixed_size_chain()

std::array< so_5::mbox_t, 4u > destinations;

std::promise< void > coop_registered_promise;
so_5::wrapped_env_t sobjectizer{
[&]( so_5::environment_t & env ) {
env.introduce_coop(
Expand All @@ -170,8 +173,10 @@ tc_fixed_size_chain()
destinations[ 0u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 1u ] )->so_direct_mbox();
} );
coop_registered_promise.set_value();
}
};
coop_registered_promise.get_future().get();

http_server_t http_server{
restinio::own_io_context(),
Expand Down Expand Up @@ -255,22 +260,25 @@ tc_fixed_size_chain_accept_in_middle()

std::array< so_5::mbox_t, 4u > destinations;

std::promise< void > coop_registered_promise;
so_5::wrapped_env_t sobjectizer{
[&]( so_5::environment_t & env ) {
env.introduce_coop(
so_5::disp::active_obj::make_dispatcher( env ).binder(),
[&]( so_5::coop_t & coop ) {
destinations[ 3u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 0u ] )->so_direct_mbox();
destinations[ 2u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 3u ] )->so_direct_mbox();
destinations[ 1u ] = coop.make_agent< response_maker_t >(
stages_completed )->so_direct_mbox();
destinations[ 0u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 1u ] )->so_direct_mbox();
destinations[ 3u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 0u ] )->so_direct_mbox();
destinations[ 2u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 3u ] )->so_direct_mbox();
} );
coop_registered_promise.set_value();
}
};
coop_registered_promise.get_future().get();

http_server_t http_server{
restinio::own_io_context(),
Expand Down Expand Up @@ -354,6 +362,7 @@ tc_fixed_size_chain_response_with_pause()

std::array< so_5::mbox_t, 2u > destinations;

std::promise< void > coop_registered_promise;
so_5::wrapped_env_t sobjectizer{
[&]( so_5::environment_t & env ) {
env.introduce_coop(
Expand All @@ -364,8 +373,10 @@ tc_fixed_size_chain_response_with_pause()
destinations[ 0u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 1u ] )->so_direct_mbox();
} );
coop_registered_promise.set_value();
}
};
coop_registered_promise.get_future().get();

http_server_t http_server{
restinio::own_io_context(),
Expand Down Expand Up @@ -444,6 +455,7 @@ tc_growable_size_chain()

std::array< so_5::mbox_t, 4u > destinations;

std::promise< void > coop_registered_promise;
so_5::wrapped_env_t sobjectizer{
[&]( so_5::environment_t & env ) {
env.introduce_coop(
Expand All @@ -458,8 +470,10 @@ tc_growable_size_chain()
destinations[ 0u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 1u ] )->so_direct_mbox();
} );
coop_registered_promise.set_value();
}
};
coop_registered_promise.get_future().get();

typename request_handler_t::builder_t handler_builder;

Expand Down Expand Up @@ -552,6 +566,7 @@ tc_growable_size_chain_accept_in_middle()

std::array< so_5::mbox_t, 4u > destinations;

std::promise< void > coop_registered_promise;
so_5::wrapped_env_t sobjectizer{
[&]( so_5::environment_t & env ) {
env.introduce_coop(
Expand All @@ -566,8 +581,10 @@ tc_growable_size_chain_accept_in_middle()
destinations[ 0u ] = coop.make_agent< dummy_stage_t >(
stages_completed, destinations[ 1u ] )->so_direct_mbox();
} );
coop_registered_promise.set_value();
}
};
coop_registered_promise.get_future().get();

typename request_handler_t::builder_t handler_builder;

Expand Down
3 changes: 1 addition & 2 deletions dev/test/router/express_boost_regex/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ set(UNITTEST_SRCFILES
main.cpp )
include(${CMAKE_SOURCE_DIR}/cmake/unittest.cmake)

TARGET_INCLUDE_DIRECTORIES(${UNITTEST} PRIVATE ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${UNITTEST} PRIVATE ${Boost_REGEX_LIBRARY})
TARGET_LINK_LIBRARIES(${UNITTEST} PRIVATE Boost::regex)
4 changes: 2 additions & 2 deletions dev/test/router/express_router_boost_regex/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(UNITTEST _unit.test.router.express_router_boost_regex)
include(${CMAKE_SOURCE_DIR}/cmake/unittest.cmake)

TARGET_INCLUDE_DIRECTORIES(${UNITTEST} PRIVATE ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${UNITTEST} PRIVATE ${Boost_REGEX_LIBRARY})
TARGET_LINK_LIBRARIES(${UNITTEST} PRIVATE Boost::regex)

Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
set(TEST_BENCH _test.router.express_router_boost_regex_bench)
include(${CMAKE_SOURCE_DIR}/cmake/testbench.cmake)

TARGET_INCLUDE_DIRECTORIES(${TEST_BENCH} PRIVATE ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${TEST_BENCH} PRIVATE ${Boost_REGEX_LIBRARY})
TARGET_LINK_LIBRARIES(${TEST_BENCH} PRIVATE Boost::regex)
2 changes: 1 addition & 1 deletion externals.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MxxRu::arch_externals :so5 do |e|
e.url 'https://github.com/Stiffstream/sobjectizer/archive/v.5.8.1.tar.gz'
e.url 'https://github.com/Stiffstream/sobjectizer/archive/v.5.8.1.1.tar.gz'

e.map_dir 'dev/so_5' => 'dev'
end
Expand Down

0 comments on commit 2a270d2

Please sign in to comment.