Skip to content

Provide workflows 4 other arcs, os, compilers #6

Provide workflows 4 other arcs, os, compilers

Provide workflows 4 other arcs, os, compilers #6

name: ubuntu22-clang14
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install compiler and stdlib
run: |
sudo apt-get install --no-install-recommends -y clang-14 libc++-14-dev libc++abi-14-dev lld-14 \
libgtk2.0-dev python3-dev
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-14 800
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-14 800
sudo update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld-14 800
#
# The following xorg/system dependencies are required when opencv has to be built from source
# and cannot be loaded from conan-center in a pre-built version (non-std-compiler/config).
# Most likly they are required for highgui features. You can install them manually or
# set tools.system.package_manager:mode=install and tools.system.package_manager:sudo=True
# in conan config to get them installed via conan install as shown further below in "Setup conan" step.
# But the conan config breaks with dependency caching mechanism from github actions so
# we prefer an explicit installation here.
#
sudo apt-get install --no-install-recommends -y \
libx11-xcb-dev libfontenc-dev libxaw7-dev libxmu-dev libxmuu-dev libxpm-dev libxres-dev \
libxss-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev libxcb-render-util0-dev \
libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \
libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-dri3-dev libxcb-cursor-dev \
libxcb-util-dev libxcb-util0-dev libxcb-glx0-dev libxcb-dri2-0-dev libxcb-present-dev libxcb-composite0-dev \
libxcb-ewmh-dev libxcb-res0-dev libxkbfile-dev
#
# numpy is required to get boost.python compiled via conan recipe
#
pip3 install numpy
- name: Install conan
uses: turtlebrowser/get-conan@main
with:
version: 1.64.0
- name: Setup conan
run: |
conan profile new ticket-decoder --detect
conan profile update settings.compiler=clang ticket-decoder
conan profile update settings.compiler.version=14 ticket-decoder
conan profile update settings.compiler.libcxx=libc++ ticket-decoder
# Unfortunately, this breaks with github-action caching machanism, so we prefer direct installation
# for xorg/system dependencies in pipeline (see comment in step "Install compiler and stdlib")
#
# conan profile update conf.tools.system.package_manager:mode=install ticket-decoder
# conan profile update conf.tools.system.package_manager:sudo_askpass=True ticket-decoder
- name: Cache conan dependencies
uses: actions/cache@v4
with:
path: ~/.conan
key: ${{ runner.os }}-conanfile-${{ hashFiles('conanfile.py') }}
- name: Build
run: |
./setup.Release.sh -j
- name: Unit-Test C++
run: |
wget 'https://railpublickey.uic.org/download.php' -O cert/UIC_PublicKeys.xml
build/Release/bin/ticket-decoder-test
- name: Unit-Test Python3
run: |
export PYTHONPATH=`pwd`/build/Release/bin
python3 -m unittest discover -s source/test/python/
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: ticket-decoder
path: |
build/Release/etc/*
build/Release/lib/*
build/Release/bin/*