Skip to content

Commit 7e60624

Browse files
authored
iwyu.yml: use Qt6 for include-what-you-use (#6292)
- updated all package dependencies for Qt6 - switched to clang as compiler as it is installed as a dependency anyways - fixed Qt mappings generation for Debian and ArchLinux
1 parent f79424b commit 7e60624

1 file changed

Lines changed: 22 additions & 16 deletions

File tree

.github/workflows/iwyu.yml

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515

1616
strategy:
1717
matrix:
18-
image: ["opensuse/tumbleweed:latest"] # "fedora:latest" / "debian:unstable" / "archlinux:latest"
18+
image: ["opensuse/tumbleweed:latest"] # "opensuse/tumbleweed:latest" / "fedora:latest" / "debian:unstable" / "archlinux:latest"
1919

2020
runs-on: ubuntu-22.04
2121
if: ${{ github.repository_owner == 'danmar' }}
@@ -26,22 +26,24 @@ jobs:
2626
steps:
2727
- uses: actions/checkout@v3
2828

29-
# TODO: the necessary packages are excessive - mostly because of Qt - use a pre-built image
3029
- name: Install missing software on debian/ubuntu
3130
if: contains(matrix.image, 'debian')
3231
run: |
3332
apt-get update
34-
apt-get install -y cmake g++ make libpcre3-dev
35-
apt-get install -y qtbase5-dev qttools5-dev libqt5charts5-dev
33+
apt-get install -y cmake clang make libpcre3-dev
34+
apt-get install -y qt6-base-dev qt6-tools-dev qt6-charts-dev
3635
apt-get install -y wget iwyu
37-
ln -s ../x86_64-linux-gnu/qt5 /usr/include/qt
36+
ln -s x86_64-linux-gnu/qt6 /usr/include/qt
3837
38+
# TODO: fails with /usr/lib/qt6/bin/lupdate: symbol lookup error: /usr/lib/libproxy/libpxbackend-1.0.so: undefined symbol: g_once_init_leave_pointer
3939
- name: Install missing software on archlinux
4040
if: contains(matrix.image, 'archlinux')
4141
run: |
4242
set -x
4343
pacman -Sy
44-
pacman -S cmake make gcc qt5-base qt5-tools qt5-charts pcre wget --noconfirm
44+
pacman -S cmake make clang pcre --noconfirm
45+
pacman -S qt6-base qt6-tools qt6-charts --noconfirm
46+
pacman -S wget --noconfirm
4547
pacman-key --init
4648
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
4749
pacman-key --lsign-key 3056513887B78AEB
@@ -51,28 +53,32 @@ jobs:
5153
pacman -Sy
5254
pacman -S include-what-you-use --noconfirm
5355
ln -s iwyu-tool /usr/sbin/iwyu_tool
56+
ln -s qt6 /usr/include/qt
5457
55-
# TODO: the necessary packages are excessive - mostly because of Qt - use a pre-built image
5658
- name: Install missing software on Fedora
5759
if: contains(matrix.image, 'fedora')
5860
run: |
59-
dnf install -y cmake gcc-c++ qt5-qtbase-devel qt5-linguist qt5-qttools-devel qt5-qtcharts-devel pcre-devel
61+
dnf install -y cmake clang pcre-devel
62+
dnf install -y qt6-qtbase-devel qt6-qttools-devel qt6-qtcharts-devel
6063
dnf install -y wget iwyu
6164
ln -s iwyu_tool.py /usr/bin/iwyu_tool
62-
ln -s qt5 /usr/include/qt
65+
ln -s qt6 /usr/include/qt
6366
6467
- name: Install missing software on OpenSUSE
6568
if: contains(matrix.image, 'opensuse')
6669
run: |
67-
zypper install -y cmake gcc-c++ pcre-devel libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel libQt5PrintSupport-devel libqt5-linguist-devel libqt5-qttools-devel libQt5Network-devel libQt5Charts5-devel libQt5Test-devel
70+
zypper install -y cmake clang pcre-devel
71+
zypper install -y qt6-base-common-devel qt6-core-devel qt6-gui-devel qt6-widgets-devel qt6-printsupport-devel qt6-linguist-devel qt6-help-devel qt6-charts-devel qt6-test-devel
6872
zypper install -y wget include-what-you-use-tools
6973
ln -s iwyu_tool.py /usr/bin/iwyu_tool
70-
ln -s qt5 /usr/include/qt
74+
ln -s qt6 /usr/include/qt
7175
72-
# TODO: switch to Qt 6 after we enabled the Qt mappings again
7376
- name: Prepare CMake
7477
run: |
75-
cmake -S . -B cmake.output -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DWITH_QCHART=On -DENABLE_CHECK_INTERNAL=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCPPCHK_GLIBCXX_DEBUG=Off -DUSE_MATCHCOMPILER=Off -DEXTERNALS_AS_SYSTEM=On
78+
cmake -S . -B cmake.output -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DENABLE_CHECK_INTERNAL=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCPPCHK_GLIBCXX_DEBUG=Off -DUSE_MATCHCOMPILER=Off -DEXTERNALS_AS_SYSTEM=On
79+
env:
80+
CC: clang
81+
CXX: clang++
7682

7783
- name: Prepare CMake dependencies
7884
run: |
@@ -90,13 +96,13 @@ jobs:
9096
- name: Build Qt mappings
9197
run: |
9298
wget https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/master/mapgen/iwyu-mapgen-qt.py
93-
python3 iwyu-mapgen-qt.py /usr/include/qt/ > qt5.imp
99+
python3 iwyu-mapgen-qt.py /usr/include/qt/ > qt.imp
94100
95101
- name: iwyu_tool
96102
run: |
97103
PWD=$(pwd)
98104
# -isystem/usr/lib/clang/17/include
99-
iwyu_tool -p cmake.output -j $(nproc) -- -w -Xiwyu --max_line_length=1024 -Xiwyu --comment_style=long -Xiwyu --quoted_includes_first -Xiwyu --update_comments -Xiwyu --mapping_file=$PWD/qt5.imp > iwyu.log
105+
iwyu_tool -p cmake.output -j $(nproc) -- -w -Xiwyu --max_line_length=1024 -Xiwyu --comment_style=long -Xiwyu --quoted_includes_first -Xiwyu --update_comments -Xiwyu --mapping_file=$PWD/qt.imp > iwyu.log
100106
101107
- uses: actions/upload-artifact@v3
102108
if: success() || failure()
@@ -108,7 +114,7 @@ jobs:
108114
if: success() || failure()
109115
with:
110116
name: Qt Mappings
111-
path: ./qt5.imp
117+
path: ./qt.imp
112118

113119
- uses: actions/upload-artifact@v3
114120
if: success() || failure()

0 commit comments

Comments
 (0)