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

Build capicxx-dbus-runtime and run unit tests in Windows #26

Merged
merged 1 commit into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
170 changes: 121 additions & 49 deletions .github/workflows/makefile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,59 +2,131 @@ name: C/C++ CI

on:
push:
branches: [ "master" ]
branches: ["master"]
pull_request:
branches: [ "master" ]
branches: ["master"]

jobs:
build:
build_on_ubuntu_22_04:
runs-on: [ubuntu-22.04]

steps:
- name: "Checkout"
uses: actions/checkout@v3

- name: "Checkout capicxx-core-runtime"
uses: actions/checkout@v3
with:
repository: COVESA/capicxx-core-runtime
path: 'capicxx-core-runtime'

- name: "Install dbus and googletest"
run: |
wget http://dbus.freedesktop.org/releases/dbus/dbus-1.13.6.tar.gz
tar -xzf dbus-1.13.6.tar.gz
for patch in src/dbus-patches/*.patch
do
patch -d dbus-1.13.6 -Np1 -i "$PWD/$patch" || continue
done

cmake -B build-dbus/libdbus -D DBUS_BUILD_TESTS=N -D CMAKE_INSTALL_PREFIX=install -S dbus-1.13.6/cmake
cmake --build build-dbus/libdbus
cmake --install build-dbus/libdbus --strip

sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp lib/*.a /usr/lib
sudo ln -s /usr/lib/libgtest.a /usr/local/lib/libgtest.a
sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/libgtest_main.a

- name: "Build capicxx-core-runtime"
run: |
cmake -S capicxx-core-runtime -B build-core-runtime -D CMAKE_INSTALL_PREFIX=install
cmake --build build-core-runtime --target install

- name: "Build capicxx-dbus-runtime"
run: |
cmake -S . -B build-dbus-runtime -D GTEST_ROOT=/usr/src/googletest -D CMAKE_PREFIX_PATH=install -D CMAKE_INSTALL_PREFIX=install

steps:
- name: "Checkout"
uses: actions/checkout@v4

- name: "Checkout capicxx-core-runtime"
uses: actions/checkout@v4
with:
repository: COVESA/capicxx-core-runtime
path: "capicxx-core-runtime"

- name: "Install dbus"
run: |
wget http://dbus.freedesktop.org/releases/dbus/dbus-1.13.6.tar.gz
tar -xzf dbus-1.13.6.tar.gz
for patch in src/dbus-patches/*.patch
do
patch -d dbus-1.13.6 -Np1 -i "$PWD/$patch" || continue
done

cmake -B build-dbus/libdbus -D DBUS_BUILD_TESTS=N -D CMAKE_INSTALL_PREFIX=install -S dbus-1.13.6/cmake
cmake --build build-dbus/libdbus
cmake --install build-dbus/libdbus --strip

- name: "Checkout googletest"
uses: actions/checkout@v4
with:
repository: google/googletest
ref: v1.12.0
path: "googletest"

- name: "Build capicxx-core-runtime"
run: |
cmake -S capicxx-core-runtime -B build-core-runtime -D CMAKE_INSTALL_PREFIX=install
cmake --build build-core-runtime --target install

- name: "Build capicxx-dbus-runtime"
run: |
cmake -S . -B build-dbus-runtime -D GTEST_ROOT=${{ github.workspace }}/googletest -D CMAKE_PREFIX_PATH=install -D CMAKE_INSTALL_PREFIX=install
cmake --build build-dbus-runtime --target build_tests
cmake --install build-dbus-runtime --strip

- name: "Run tests"
run: |
ls -l ${{ github.workspace }}/install/lib
export LD_LIBRARY_PATH=${{ github.workspace }}/install/lib
export COMMONAPI_CONFIG=${{ github.workspace }}/src/test/commonapi-dbus.ini
env -C build-dbus-runtime ctest -V
- name: "Run tests"
run: |
ls -l ${{ github.workspace }}/install/lib
export LD_LIBRARY_PATH=${{ github.workspace }}/install/lib
export COMMONAPI_CONFIG=${{ github.workspace }}/src/test/commonapi-dbus.ini
env -C build-dbus-runtime ctest -V

build_on_windows_latest:
runs-on: windows-latest

steps:
- name: "Checkout"
uses: actions/checkout@v4

- name: "Checkout capicxx-core-runtime"
uses: actions/checkout@v4
with:
repository: COVESA/capicxx-core-runtime
path: "capicxx-core-runtime"

- name: "Checkout googletest"
uses: actions/checkout@v4
with:
repository: google/googletest
ref: v1.12.0
path: "googletest"

- name: "Checkout expat"
uses: actions/checkout@v4
with:
repository: libexpat/libexpat
ref: R_2_2_9
path: "libexpat"

- name: "Build expat"
run: |
cmake -A x64 -B build-expat -D CMAKE_INSTALL_PREFIX=${{ runner.workspace }}\install -S ${{ github.workspace }}\libexpat\expat
cmake --build build-expat --config Release --target install

- name: "Install dbus"
run: |
curl -L -o dbus-1.13.6.tar.gz http://dbus.freedesktop.org/releases/dbus/dbus-1.13.6.tar.gz
tar -zxvf dbus-1.13.6.tar.gz
$dbus = "${{ github.workspace }}\dbus-1.13.6"
$patches = Get-ChildItem -Path src\dbus-patches -Filter "*.patch"

foreach ($patch in $patches) {
patch -d $dbus -Np1 -i $patch.FullName
}

cmake -A x64 -B build-dbus\libdbus -D DBUS_BUILD_TESTS=N -D CMAKE_INSTALL_PREFIX=${{ runner.workspace }}\install -S ${{ github.workspace }}\dbus-1.13.6\cmake
cmake --build build-dbus\libdbus --config Release --target install

- name: "Build capicxx-core-runtime"
run: |
cmake -S capicxx-core-runtime -B build-core-runtime -DCMAKE_INSTALL_PREFIX=${{ runner.workspace }}\install
cmake --build build-core-runtime --target install

- name: "Build capicxx-dbus-runtime"
run: |
cmake -B build-dbus-runtime -D GTEST_ROOT=${{ github.workspace }}\googletest -D CMAKE_PREFIX_PATH=${{ runner.workspace }}\install -D CMAKE_INSTALL_PREFIX=${{ runner.workspace }}\install .
cmake --build build-dbus-runtime --target build_tests

- name: "Run tests"
run: |
$env:PATH += ";${{ runner.workspace }}\install\bin"
$env:PATH += ";${{ github.workspace }}\build-core-runtime\Debug"
$env:PATH += ";${{ github.workspace }}\build-dbus-runtime\Debug"
$dbus_daemon = Start-Job -ScriptBlock {
& ${{ runner.workspace }}\install\bin\dbus-daemon --config-file=${{ runner.workspace }}\install\share\dbus-1\session.conf --nofork --print-address
}
Start-Sleep -Seconds 1
$env:DBUS_SESSION_BUS_ADDRESS = Receive-Job $dbus_daemon
try {
ctest -C Debug --test-dir ${{ github.workspace }}\build-dbus-runtime -V
exit $LASTEXITCODE
} finally {
Stop-Job $dbus_daemon
}
27 changes: 5 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,31 +138,13 @@ message(STATUS "CommonAPI Version: ${CommonAPI_VERSION}")

###############################################################################
# find DBus by using the 'pkg-config' tool
if (MSVC)
#Not beautiful, but it works
if (DBus_DIR)
if (DBus_BUILD_DIR)
set(DBus_INCLUDE_DIRS "${DBus_DIR};${DBus_BUILD_DIR};")
set(DBus_LIBRARY_RELEASE "${DBus_BUILD_DIR}/bin/Release/dbus-1.lib")
set(DBus_LIBRARY_DEBUG "${DBus_BUILD_DIR}/bin/Debug/dbus-1d.lib")
endif()
endif()

if (NOT DBus_LIBRARIES)
include(SelectLibraryConfigurations)
select_library_configurations(DBus)
endif()
if (NOT DBus_INCLUDE_DIRS OR NOT DBus_LIBRARIES)
message(SEND_ERROR "Set DBus_INCLUDE_DIRS and DBus_LIBRARIES to your D-Bus installation (e.g. cmake -DDBus_INCLUDE_DIRS=C:\\D-Bus\\include -DDBus_LIBRARIES=C:\\DBus\\lib\\dbus-1.lib")
endif()
if ("${USE_INSTALLED_DBUS}" STREQUAL "ON")
FIND_PACKAGE(DBus1 1.4 REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
else()
if ("${USE_INSTALLED_DBUS}" STREQUAL "ON")
FIND_PACKAGE(DBus1 1.4 REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
else()
FIND_PACKAGE(DBus1 1.4 REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
endif()
FIND_PACKAGE(DBus1 1.4 REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
endif()

message(STATUS "DBus1_INCLUDE_DIRS: ${DBus1_INCLUDE_DIRS}")
##############################################################################

# CommonAPI-DBus build section
Expand All @@ -182,6 +164,7 @@ message(STATUS "Compiler options: ${CMAKE_CXX_FLAGS}")
include_directories(
include
${COMMONAPI_INCLUDE_DIRS}
${DBus1_INCLUDE_DIRS}
)

# DBus source files
Expand Down