1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# Copyright 2021-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {15..18} ) # see .cmake.conf for minimum
LLVM_OPTIONAL=1
# behaves very badly when qttools is not already installed, also
# other issues to handle (clang tests flaky depending on version,
# and 3rdparty/ tries to FetchContent gtest)
QT6_RESTRICT_TESTS=1
inherit desktop llvm-r1 optfeature qt6-build
DESCRIPTION="Qt Tools Collection"
if [[ ${QT6_BUILD_TYPE} == release ]]; then
KEYWORDS="amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc x86"
fi
IUSE="
+assistant clang designer distancefieldgenerator gles2-only
+linguist opengl pixeltool +qdbus qdoc qml qtattributionsscanner
qtdiag qtplugininfo vulkan +widgets zstd
"
# note that some tools do not *require* widgets but will skip a sub-tool
# if not enabled (e.g. linguist gives lrelease but not the GUI linguist6)
REQUIRED_USE="
assistant? ( widgets )
clang? ( ${LLVM_REQUIRED_USE} )
designer? ( qml widgets )
distancefieldgenerator? ( qml widgets )
pixeltool? ( widgets )
qdoc? ( clang qml )
"
RDEPEND="
~dev-qt/qtbase-${PV}:6[widgets?]
assistant? ( ~dev-qt/qtbase-${PV}:6[network,sql,sqlite] )
clang? (
$(llvm_gen_dep '
sys-devel/clang:${LLVM_SLOT}=
sys-devel/llvm:${LLVM_SLOT}=
')
)
designer? (
~dev-qt/qtbase-${PV}:6[network,xml,zstd=]
zstd? ( app-arch/zstd:= )
)
qdbus? ( ~dev-qt/qtbase-${PV}:6[dbus,xml] )
qml? ( ~dev-qt/qtdeclarative-${PV}:6[widgets?] )
qtdiag? ( ~dev-qt/qtbase-${PV}:6[network,gles2-only=,vulkan=] )
widgets? ( ~dev-qt/qtbase-${PV}:6[opengl=] )
"
DEPEND="
${RDEPEND}
qtdiag? (
vulkan? ( dev-util/vulkan-headers )
)
"
pkg_setup() {
use clang && llvm-r1_pkg_setup
}
src_configure() {
local mycmakeargs=(
# prevent the clang test as it can abort due to bug #916098
$(cmake_use_find_package clang WrapLibClang)
$(cmake_use_find_package qml Qt6Qml)
$(cmake_use_find_package widgets Qt6Widgets)
$(qt_feature assistant)
$(qt_feature clang)
$(qt_feature designer)
$(qt_feature distancefieldgenerator)
$(qt_feature linguist)
$(qt_feature pixeltool)
$(qt_feature qdbus)
$(qt_feature qdoc)
$(qt_feature qtattributionsscanner)
$(qt_feature qtdiag)
$(qt_feature qtplugininfo)
# TODO?: package litehtml, but support for latest releases seem
# to lag behind and bundled may work out better for now
# https://github.com/litehtml/litehtml/issues/266
$(usev assistant -DCMAKE_DISABLE_FIND_PACKAGE_litehtml=ON)
$(usev designer -DQT_UNITY_BUILD=OFF) # fails to build (QTBUG-122634)
)
qt6-build_src_configure
}
src_install() {
qt6-build_src_install
if use widgets; then #914766
use designer || use distancefieldgenerator || use pixeltool &&
newicon src/designer/src/designer/images/designer.png designer6.png
if use assistant; then
make_desktop_entry assistant6 'Qt 6 Assistant' assistant6 \
'Qt;Development;Documentation' \
'Comment=Tool for viewing online documentation in Qt help file format'
newicon src/assistant/assistant/images/assistant-128.png assistant6.png
fi
if use designer; then
make_desktop_entry designer6 'Qt 6 Designer' designer6 \
'Qt;Development;GUIDesigner' \
'Comment=WYSIWYG tool for designing and building graphical user interfaces with QtWidgets'
fi
if use distancefieldgenerator; then
# no icon, sharing with designer which fits letter-wise
make_desktop_entry qdistancefieldgenerator6 'Qt 6 Distance Field Generator' designer6 \
'Qt;Development' \
'Comment=Tool for pregenerating the font cache of Qt applications'
fi
if use linguist; then
make_desktop_entry linguist6 'Qt 6 Linguist' linguist6 \
'Qt;Development;Translation' \
'Comment=Tool for translating Qt applications'
newicon src/linguist/linguist/images/icons/linguist-128-32.png linguist6.png
fi
if use pixeltool; then
# no icon, not fitting but share with designer for now
make_desktop_entry pixeltool6 'Qt 6 Pixel Tool' designer6 \
'Qt;Development' \
'Comment=Tool for zooming in the desktop area pointed by the cursor'
fi
if use qdbus; then
make_desktop_entry qdbusviewer6 'Qt 6 QDBusViewer' qdbusviewer6 \
'Qt;Development' \
'Comment=Tool that lets introspect D-Bus objects and messages'
newicon src/qdbus/qdbusviewer/images/qdbusviewer-128.png qdbusviewer6.png
fi
# hack: make_destop_entry does not support overriding DESCRIPTION
find "${ED}" -type f -name "*.desktop" \
-exec sed -i "/^Comment=${DESCRIPTION}/d" -- {} + || die
fi
}
pkg_postinst() {
use assistant &&
optfeature "Qt documentation viewable in assistant" \
'dev-qt/qt-docs:6[qch]' #602296
}
|