Skip to content

Commit 8a796ab

Browse files
authored
[Build] Added ubuntu-24 workflow. (#1770)
1 parent b3e63fc commit 8a796ab

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

.github/workflows/build-ubuntu-24.yml

+143
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: Build Ubuntu 24.04
2+
3+
on:
4+
push:
5+
pull_request:
6+
branches:
7+
- master
8+
9+
jobs:
10+
build-ubuntu:
11+
runs-on: ubuntu-24.04
12+
13+
env:
14+
# enable starting Qt GUI Applications
15+
QT_QPA_PLATFORM: offscreen
16+
17+
steps:
18+
- name: Install Dependencies
19+
run: |
20+
sudo apt update
21+
sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev
22+
23+
24+
- name: Install Cap'n Proto
25+
run: |
26+
mkdir "${{ runner.workspace }}/capnp"
27+
cd "${{ runner.workspace }}/capnp"
28+
curl -O https://capnproto.org/capnproto-c++-0.9.0.tar.gz
29+
tar zxf capnproto-c++-0.9.0.tar.gz
30+
cd capnproto-c++-0.9.0
31+
./configure
32+
make -j
33+
sudo make install
34+
35+
- name: Checkout
36+
uses: actions/checkout@v3
37+
with:
38+
submodules: 'true'
39+
fetch-depth: 0
40+
41+
- name: Install Python requirements
42+
shell: bash
43+
run: |
44+
sudo apt-get -y install python3-dev python3-venv
45+
mkdir ".venv_build"
46+
python3 -m venv ".venv_build"
47+
source ".venv_build/bin/activate"
48+
pip install --upgrade pip
49+
pip install wheel setuptools
50+
pip install -r "$GITHUB_WORKSPACE/doc/requirements.txt"
51+
52+
- name: CMake
53+
run: |
54+
source ".venv_build/bin/activate"
55+
56+
export CC=/usr/bin/gcc-13
57+
export CXX=/usr/bin/g++-13
58+
mkdir "${{ runner.workspace }}/_build"
59+
cd "${{ runner.workspace }}/_build"
60+
cmake $GITHUB_WORKSPACE -G "Ninja" \
61+
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
62+
-DHAS_HDF5=ON \
63+
-DHAS_QT=ON \
64+
-DHAS_CURL=ON \
65+
-DHAS_CAPNPROTO=ON \
66+
-DHAS_FTXUI=ON \
67+
-DBUILD_DOCS=ON \
68+
-DBUILD_APPS=ON \
69+
-DBUILD_SAMPLES=ON \
70+
-DBUILD_TIME=ON \
71+
-DBUILD_PY_BINDING=ON \
72+
-DBUILD_STANDALONE_PY_WHEEL=ON \
73+
-DBUILD_CSHARP_BINDING=OFF \
74+
-DBUILD_ECAL_TESTS=ON \
75+
-DECAL_INCLUDE_PY_SAMPLES=OFF \
76+
-DECAL_INSTALL_SAMPLE_SOURCES=ON \
77+
-DECAL_JOIN_MULTICAST_TWICE=OFF \
78+
-DECAL_NPCAP_SUPPORT=OFF \
79+
-DECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS=ON \
80+
-DECAL_THIRDPARTY_BUILD_PROTOBUF=OFF \
81+
-DECAL_THIRDPARTY_BUILD_SPDLOG=ON \
82+
-DECAL_THIRDPARTY_BUILD_TINYXML2=ON \
83+
-DECAL_THIRDPARTY_BUILD_FINEFTP=ON \
84+
-DECAL_THIRDPARTY_BUILD_CURL=OFF \
85+
-DECAL_THIRDPARTY_BUILD_GTEST=ON \
86+
-DECAL_THIRDPARTY_BUILD_HDF5=OFF \
87+
-DECAL_THIRDPARTY_BUILD_RECYCLE=ON \
88+
-DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=ON \
89+
-DECAL_THIRDPARTY_BUILD_QWT=ON \
90+
-DECAL_THIRDPARTY_BUILD_YAML-CPP=OFF \
91+
-DCMAKE_BUILD_TYPE=Release \
92+
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
93+
-DCMAKE_INSTALL_PREFIX=/usr \
94+
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
95+
-DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \
96+
-DPython_FIND_VIRTUALENV=ONLY
97+
98+
sudo mkdir /etc/ecal
99+
sudo cp "$GITHUB_WORKSPACE/ecal/core/cfg/ecal.ini" /etc/ecal
100+
shell: bash
101+
102+
- name: Build Release
103+
run: cmake --build . --config Release -- -k 0
104+
working-directory: ${{ runner.workspace }}/_build
105+
106+
# Create Python Wheels
107+
# The strang-looking double-cmake is an ugly workaround to force CMake to
108+
# re-find Python, after we have changed the venv from the outside. The
109+
# alternative would be to clean everything, which would cause an unnecessary
110+
# rebuild of eCAL for each python Version.
111+
- name: Build Python 3.12 Wheel
112+
run: |
113+
sudo apt-get -y install python3.12-dev python3.12-venv
114+
mkdir ".venv_312"
115+
python3.12 -m venv ".venv_312"
116+
source ".venv_312/bin/activate"
117+
pip install --upgrade pip
118+
pip install wheel setuptools
119+
cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=FIRST
120+
cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=ONLY
121+
cmake --build . --target create_python_wheel --config Release
122+
shell: bash
123+
working-directory: ${{ runner.workspace }}/_build
124+
125+
- name: Run Tests
126+
run: ctest -V
127+
working-directory: ${{ runner.workspace }}/_build
128+
129+
- name: Pack
130+
run: cpack -G DEB
131+
working-directory: ${{ runner.workspace }}/_build
132+
133+
- name: Upload Debian
134+
uses: actions/upload-artifact@v4
135+
with:
136+
name: ubuntu-debian
137+
path: ${{ runner.workspace }}/_build/_deploy/*.deb
138+
139+
- name: Upload Python Wheel
140+
uses: actions/upload-artifact@v4
141+
with:
142+
name: ubuntu-python-wheel
143+
path: ${{ runner.workspace }}/_build/_deploy/*.whl

0 commit comments

Comments
 (0)