Skip to content

enable pedantic warnings as errors #102

enable pedantic warnings as errors

enable pedantic warnings as errors #102

Workflow file for this run

name: ROS Qt Creator plugin build and archive release
on: [push, pull_request]
jobs:
build:
name: build (${{ matrix.config.name }})
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config:
- { name: "Linux", os: ubuntu-20.04 }
- { name: "Windows", os: windows-latest }
- { name: "macOS", os: macos-latest }
outputs:
archive_name: ${{ steps.find_plugin_archive.outputs.archive_name }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- uses: conda-incubator/setup-miniconda@v2
if: runner.os == 'Windows'
- name: install Microsoft Visual C++ (Windows)
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
- name: install Linux system dependencies
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install libgl1-mesa-dev ninja-build libqtermwidget5-0-dev libutf8proc-dev
- name: install Windows system dependencies
if: runner.os == 'Windows'
run: |
choco install ninja
- name: install macOS system dependencies
if: runner.os == 'macOS'
run: brew install ninja qt5
- name: install yaml-cpp
shell: bash
run: |
git clone --depth 1 https://github.com/jbeder/yaml-cpp.git extern/yaml-cpp --branch yaml-cpp-0.7.0
cd extern/yaml-cpp
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DYAML_CPP_BUILD_TESTS=OFF
$(which sudo) cmake --build build --target install
- name: set build environment variables (Windows)
if: runner.os == 'Windows'
shell: bash
run: |
echo "YAML_DIR='C:/Program Files (x86)/YAML_CPP/share/cmake/yaml-cpp/'" >> $GITHUB_ENV
- name: install Qt and Qt Creator
shell: bash
run: |
pip install pyyaml requests py7zr
python setup.py --export_variables
cat env >> $GITHUB_ENV
- name: install qtermwidget
if: runner.os == 'macOS'
shell: bash
run: |
git clone https://github.com/lxqt/lxqt-build-tools.git extern/lxqt-build-tools
cd extern/lxqt-build-tools
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DQt5Core_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Core
cmake --build build --target install
cd ../..
git clone https://github.com/lxqt/qtermwidget.git extern/qtermwidget
cd extern/qtermwidget
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DQt5Core_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Core -DQt5Widgets_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Widgets -DQt5LinguistTools_DIR=$(brew --prefix qt5)/lib/cmake/Qt5LinguistTools
cmake --build build --target install
- name: build plugin
run: |
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="${{ env.QTC_PATH }};${{ env.QT_PATH }}" -Dyaml-cpp_DIR=${{ env.YAML_DIR }} -DBUILD_ROSTERMINAL=OFF
cmake --build build --target package
- name: find plugin archive
id: find_plugin_archive
shell: bash
run: |
find build/ -maxdepth 1 -name 'ROSProjectManager-*-*-*.zip' -print0 | xargs -0 basename -a > ./archive_name
echo "QTC_PLUGIN_ARCHIVE=`cat ./archive_name`" >> $GITHUB_ENV
- name: upload artifact
uses: actions/upload-artifact@v3
with:
name: plugin_archive_artifact_${{ matrix.config.name }}
if-no-files-found: error
path: |
./build/${{ env.QTC_PLUGIN_ARCHIVE }}
./archive_name
release:
name: create release
if: contains(github.ref, '/tags/')
runs-on: ubuntu-latest
needs: build
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: create release
uses: actions/create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
publish:
name: publish plugin archive (${{ matrix.name }})
if: contains(github.ref, '/tags/')
runs-on: ubuntu-latest
needs: [build, release]
strategy:
matrix:
name:
- Linux
- Windows
- macOS
steps:
- name: download artifact
uses: actions/download-artifact@v3
with:
name: plugin_archive_artifact_${{ matrix.name }}
path: ./
- name: set archive name
shell: bash
run: echo "QTC_PLUGIN_ARCHIVE=`cat ./archive_name`" >> $GITHUB_ENV
- name: upload archive release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{needs.release.outputs.upload_url}}
asset_path: ./build/${{ env.QTC_PLUGIN_ARCHIVE }}
asset_name: ${{ env.QTC_PLUGIN_ARCHIVE }}
asset_content_type: application/zip