source: x/lib/qt5-alternate.xml@ 1fc53421

12.1 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18
Last change on this file since 1fc53421 was e440af5, checked in by Pierre Labastie <pierre.labastie@…>, 9 months ago

Remove trailing spaces and a few typos

  • Property mode set to 100644
File size: 21.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY qt5-major "5.15">
8 <!ENTITY qt5-url "https://download.qt.io/archive/qt/&qt5-major;/&qt5-version;/single">
9
10 <!ENTITY qt5-download-http "&qt5-url;/qt-everywhere-opensource-src-&qt5-version;.tar.xz">
11 <!ENTITY qt5-download-ftp " ">
12 <!ENTITY qt5-md5sum "fb41d86bea6bc4886030a5092c910b09">
13 <!ENTITY qt5-size "629 MB">
14 <!ENTITY qt5-buildsize "8.7 GB (153 MB installed)">
15 <!ENTITY qt5-time "5.7 SBU (using parallelism=8)">
16]>
17
18<sect1 id="qt5-alternate" xreflabel="qt-alternate-&qt5-version;">
19 <?dbhtml filename="qt5-alternate.html" ?>
20
21 <title>qt-alternate-&qt5-version;</title>
22
23 <indexterm zone="qt5">
24 <primary sortas="a-Qt">Qt</primary>
25 </indexterm>
26
27 <sect2 role="package">
28 <title>Introduction to qt5 (alternate)</title>
29
30 <para>
31 <application>Qt5</application> is a cross-platform application framework
32 that is widely used for developing application software with a graphical
33 user interface (GUI) (in which cases <application>qt5</application> is
34 classified as a widget toolkit), and also used for developing non-GUI
35 programs such as command-line tools and consoles for servers. Two of the
36 major users of <application>qt</application> are <application>KDE
37 Frameworks 5 (KF5)</application> and <application>LXQt</application>.
38 </para>
39
40 <important>
41 <para>
42 The full <application>qt5</application> package consists of 43 separate
43 components. These instructions use a small subset of the full
44 <application>qt5</application> installation instructions above.
45 They cover most, but not all, of the components needed to build
46 packages in BLFS. This page, and the next, are provided to
47 reduce the amount of time, space, and dependencies needed
48 to build these packages. They are not recommended if you will build
49 the <xref linkend="kf5-frameworks"/> based <xref linkend="plasma5-build"/> desktop
50 environment.
51 </para>
52 </important>
53
54 &lfs120_checked;
55
56 <bridgehead renderas="sect3">Package Information</bridgehead>
57 <itemizedlist spacing="compact">
58 <listitem>
59 <para>
60 Download (HTTP): <ulink url="&qt5-download-http;"/>
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Download (FTP): <ulink url="&qt5-download-ftp;"/>
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 Download MD5 sum: &qt5-md5sum;
71 </para>
72 </listitem>
73 <listitem>
74 <para>
75 Download size: &qt5-size;
76 </para>
77 </listitem>
78 <listitem>
79 <para>
80 Estimated disk space required: &qt5-buildsize;
81 </para>
82 </listitem>
83 <listitem>
84 <para>
85 Estimated build time: &qt5-time;
86 </para>
87 </listitem>
88 </itemizedlist>
89
90 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
91 <itemizedlist spacing="compact">
92 <listitem>
93 <para>
94 Now that <application>qt5</application> updates are restricted to
95 commercial customers, upstream patches for the various modules are
96 being curated at kde.
97 Patches for the modules required by packages in BLFS have been
98 aggregated for the non-modular qt5 build we use.
99 </para>
100 <para>
101 Required patch:
102 <ulink url="&patch-root;/qt-everywhere-opensource-src-&qt5-version;-kf5-1.patch"/>
103 </para>
104 <para>
105 Details of the kde curation can be found at
106 <ulink url="https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection"/>
107 and <ulink url="https://community.kde.org/Qt5PatchCollection"/>.
108 </para>
109 </listitem>
110 </itemizedlist>
111
112 <bridgehead renderas="sect3">qt5 Dependencies</bridgehead>
113
114 <bridgehead renderas="sect4">Required</bridgehead>
115 <para role="required">
116 <xref linkend="xorg7-lib"/>
117 </para>
118
119 <bridgehead renderas="sect4">Recommended</bridgehead>
120 <para role="recommended">
121 <xref linkend="alsa-lib"/>,
122 <xref linkend="cups"/>,
123 <phrase revision='sysv'><xref linkend="dbus"/>,</phrase>
124 <xref linkend="double-conversion"/>,
125 <xref linkend="glib2"/>,
126 <xref linkend="harfbuzz"/>,
127 <xref linkend="icu"/>,
128 <xref linkend="hicolor-icon-theme"/>,
129 <xref linkend="mesa"/>,
130 <xref linkend="libjpeg"/>,
131 <xref linkend="libxkbcommon"/>,
132 <xref linkend="sqlite"/>,
133 <xref linkend="wayland"/> (<application>Mesa</application>
134 must be built with <application>Wayland</application> EGL
135 backend),
136 <xref linkend="xcb-util-image"/>,
137 <xref linkend="xcb-util-keysyms"/>,
138 <xref linkend="xcb-util-renderutil"/>, and
139 <xref linkend="xcb-util-wm"/>
140 </para>
141
142 <bridgehead renderas="sect4">Optional</bridgehead>
143 <para role="optional">
144 <xref linkend="gtk3"/>,
145 <xref linkend="libinput"/>
146 <xref linkend="mariadb"/>
147 or <ulink url="https://www.mysql.com/">MySQL</ulink>,
148 <xref linkend="mitkrb"/>,
149 <xref linkend="mtdev"/>
150 <xref linkend="postgresql"/>, and
151 <xref linkend="unixodbc"/>
152 </para>
153
154 <para condition="html" role="usernotes">
155 Editor Notes: <ulink url="&blfs-wiki;/qt5"/>
156 </para>
157
158 </sect2>
159
160 <sect2 role="qt5-prefix">
161 <title>Setting the installation prefix</title>
162
163 <bridgehead renderas="sect3">Installing in /opt/qt5</bridgehead>
164
165 <para>
166 The BLFS editors recommend installing <application>qt5</application> in a
167 directory other than <filename class="directory">/usr</filename>, i.e.
168 <filename class="directory">/opt/qt5</filename>. To do this, set the
169 following environment variable:
170 </para>
171
172<screen><userinput>export QT5PREFIX=/opt/qt5</userinput></screen>
173
174 <tip>
175 <para>
176 Sometimes, the installation paths are hardcoded into installed files.
177 This is the reason why <filename class="directory">/opt/qt5</filename>
178 is used as installation prefix instead of <filename
179 class="directory">/opt/qt-&qt5-version;</filename>. To create a
180 versioned <application>qt5</application> directory after the
181 installation is complete, you may rename the directory and create a symlink:
182 </para>
183
184<screen role="root"><userinput>mkdir -pv /opt/qt-&qt5-version;
185ln -sfnv qt-&qt5-version; /opt/qt5</userinput></screen>
186
187 <para>
188 Later on, you may want to install other versions of
189 <application>qt5</application>. To do that, just remove the symlink
190 and use <filename class="directory">/opt/qt5</filename> as the
191 prefix again. Which version of <application>qt5</application> you
192 use depends only on where the symlink points.
193 </para>
194 </tip>
195
196 </sect2>
197
198 <sect2 role="installation">
199 <title>Installation of qt5</title>
200
201 <warning>
202 <para>
203 If <application>qt5</application> is being reinstalled into the
204 same directory as an existing instance, run the commands done by
205 <systemitem class="username">root</systemitem>, such as
206 <command>make install</command>, from a console or non-qt5 based
207 window manager. It overwrites <application>qt5</application>
208 libraries that should not be in use during the install process.
209 </para>
210 </warning>
211
212 <caution>
213 <para>
214 If you did not install some of the recommended dependencies, examine
215 <command>./configure --help</command> output to check how to disable
216 them or use internal versions bundled in the source tarball.
217 </para>
218 </caution>
219
220 <note>
221 <para>
222 The BLFS editors do not recommend installing <application>qt5</application>
223 into the /usr hierarchy because it becomes difficult to find
224 components and to update to a new version. If you do want to install
225 <application>qt5</application> in /usr, the directories need to
226 be specified explicitly. In this case, set QT5PREFIX=/usr and add
227 the following to the configure arguments below:
228 </para>
229
230<screen role="nodump"><userinput> -archdatadir /usr/lib/qt5 \
231 -bindir /usr/bin \
232 -plugindir /usr/lib/qt5/plugins \
233 -importdir /usr/lib/qt5/imports \
234 -headerdir /usr/include/qt5 \
235 -datadir /usr/share/qt5 \
236 -docdir /usr/share/doc/qt5 \
237 -translationdir /usr/share/qt5/translations \
238 -examplesdir /usr/share/doc/qt5/examples</userinput></screen>
239 </note>
240
241 <para>
242 First, apply a patch to pull in the fixes curated by kde for those
243 modules which are required by packages mentioned in this book:
244 </para>
245
246<screen><userinput remap="pre">patch -Np1 -i ../qt-everywhere-opensource-src-&qt5-version;-kf5-1.patch</userinput></screen>
247
248 <para>
249 The patch is supposed to be used in a git repository, because the
250 behavior of the <command>configure</command> command below is changed
251 in this case. It is enough to create a
252 <filename class="directory">.git</filename> directory in the
253 <filename class="directory">qmake</filename> directory, where the
254 <command>configure</command> script is run:
255 </para>
256
257 <screen><userinput remap="pre">mkdir -pv qtbase/.git</userinput></screen>
258
259 <para>
260 At this point we want to set up skipping most components. Do that with:
261 </para>
262
263<screen><userinput>ls -Fd qt* | grep / | sed 's/^/-skip /;s@/@@' > tempconf &amp;&amp;
264sed -i -r '/base|tools|x11extras|svg|declarative|wayland/d' tempconf</userinput></screen>
265
266 <para>
267 Now, install <application>qt5</application> by running the following commands:
268 </para>
269
270<screen revision="sysv"><userinput>./configure -prefix $QT5PREFIX \
271 -sysconfdir /etc/xdg \
272 -confirm-license \
273 -opensource \
274 -dbus-linked \
275 -openssl-linked \
276 -system-harfbuzz \
277 -system-sqlite \
278 -nomake examples \
279 -no-rpath \
280 -syslog \
281 $(cat tempconf) \
282 &amp;&amp;
283make</userinput></screen>
284
285<screen revision="systemd"><userinput>./configure -prefix $QT5PREFIX \
286 -sysconfdir /etc/xdg \
287 -confirm-license \
288 -opensource \
289 -dbus-linked \
290 -openssl-linked \
291 -system-harfbuzz \
292 -system-sqlite \
293 -nomake examples \
294 -no-rpath \
295 -journald \
296 $(cat tempconf) \
297 &amp;&amp;
298make</userinput></screen>
299
300 <para>
301 This package does not come with a test suite.
302 </para>
303
304 <para>
305 Now, as the <systemitem class="username">root</systemitem> user:
306 </para>
307
308<screen role="root"><userinput>make install</userinput></screen>
309
310 <!-- EDITORS NOTE: This package uses INSTALL_ROOT= instead of DESTDIR= for
311 installing in a temporary directory. -->
312
313 <para>
314 Remove references to the build directory from installed library
315 dependency (prl) <!--and profile include (pri)--> files by running the following
316 command as the <systemitem class="username">root</systemitem> user:
317 </para>
318
319<screen role="root"><userinput>find $QT5PREFIX/ -name \*.prl \
320 -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;</userinput></screen>
321
322 <para>
323 Install images and create the menu entries for installed applications.
324 The <envar>QT5BINDIR</envar> variable is used here to point to the
325 directory for the executable programs. If you have changed the bindir
326 above, <envar>QT5BINDIR</envar> will need to be adjusted below. Be sure
327 that the <envar>QT5BINDIR</envar> variable is defined in root's
328 environment and as the <systemitem class="username">root</systemitem>
329 user:
330 </para>
331
332<screen role="root"><userinput>QT5BINDIR=$QT5PREFIX/bin
333
334install -v -dm755 /usr/share/pixmaps/ &amp;&amp;
335
336install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \
337 /usr/share/pixmaps/assistant-qt5.png &amp;&amp;
338
339install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \
340 /usr/share/pixmaps/designer-qt5.png &amp;&amp;
341
342install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \
343 /usr/share/pixmaps/linguist-qt5.png &amp;&amp;
344
345install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \
346 /usr/share/pixmaps/qdbusviewer-qt5.png &amp;&amp;
347
348install -dm755 /usr/share/applications &amp;&amp;
349
350cat &gt; /usr/share/applications/assistant-qt5.desktop &lt;&lt; EOF
351<literal>[Desktop Entry]
352Name=Qt5 Assistant
353Comment=Shows Qt5 documentation and examples
354Exec=$QT5BINDIR/assistant
355Icon=assistant-qt5.png
356Terminal=false
357Encoding=UTF-8
358Type=Application
359Categories=Qt;Development;Documentation;</literal>
360EOF
361
362cat &gt; /usr/share/applications/designer-qt5.desktop &lt;&lt; EOF
363<literal>[Desktop Entry]
364Name=Qt5 Designer
365GenericName=Interface Designer
366Comment=Design GUIs for Qt5 applications
367Exec=$QT5BINDIR/designer
368Icon=designer-qt5.png
369MimeType=application/x-designer;
370Terminal=false
371Encoding=UTF-8
372Type=Application
373Categories=Qt;Development;</literal>
374EOF
375
376cat &gt; /usr/share/applications/linguist-qt5.desktop &lt;&lt; EOF
377<literal>[Desktop Entry]
378Name=Qt5 Linguist
379Comment=Add translations to Qt5 applications
380Exec=$QT5BINDIR/linguist
381Icon=linguist-qt5.png
382MimeType=text/vnd.trolltech.linguist;application/x-linguist;
383Terminal=false
384Encoding=UTF-8
385Type=Application
386Categories=Qt;Development;</literal>
387EOF
388
389cat &gt; /usr/share/applications/qdbusviewer-qt5.desktop &lt;&lt; EOF
390<literal>[Desktop Entry]
391Name=Qt5 QDbusViewer
392GenericName=D-Bus Debugger
393Comment=Debug D-Bus applications
394Exec=$QT5BINDIR/qdbusviewer
395Icon=qdbusviewer-qt5.png
396Terminal=false
397Encoding=UTF-8
398Type=Application
399Categories=Qt;Development;Debugger;</literal>
400EOF</userinput></screen>
401
402 <para>
403 Some packages such as <xref linkend='vlc'/> look for certain
404 executables with a -qt5 suffix. Run the following command as the
405 <systemitem class="username">root</systemitem> user
406 to create the necessary symlinks:
407 </para>
408
409<screen role="root"><userinput>for file in moc uic rcc qmake lconvert lrelease lupdate; do
410 ln -sfrvn $QT5BINDIR/$file /usr/bin/$file-qt5
411done</userinput></screen>
412
413 </sect2>
414
415 <sect2 role="commands">
416 <title>Command Explanations</title>
417
418 <para>
419 <parameter>-confirm-license</parameter>: Accept license
420 without prompting user during configuration.
421 </para>
422
423 <para>
424 <parameter>-opensource</parameter>: Install the opensource
425 version of <application>qt</application>.
426 </para>
427
428 <para>
429 <parameter>-nomake examples</parameter>: This switch
430 disables building of the example programs included
431 in the source tarball. Remove it if you want to build
432 them.
433 </para>
434
435 <para>
436 <parameter>-system-sqlite</parameter>: This switch enables use
437 of the system version of <application>SQLite</application>.
438 </para>
439
440 <para>
441 <parameter>-system-harfbuzz</parameter>: This switch enables use
442 of the system version of <application>Harfbuzz</application>.
443 </para>
444
445 <para>
446 <parameter>-dbus-linked -openssl-linked</parameter>: These
447 switches enable explicit linking of the
448 <application>D-Bus</application> and
449 <application>OpenSSL</application> libraries into
450 <application>qt5</application> libraries instead of
451 <command>dlopen()</command>-ing them.
452 </para>
453
454 <para revision="sysv">
455 <parameter>-syslog</parameter>: This switch allows to send qt messages
456 to the <command>syslog</command> logging system.
457 </para>
458
459 <para revision="systemd">
460 <parameter>-journald</parameter>: This switch allows to send qt messages
461 to the <command>journald</command> logging system.
462 </para>
463
464 <para>
465 <command>$(cat tempconf)</command>: This command provides a list of
466 components that should not be built. These entries are in the form of
467 "-skip &lt;component&gt;".
468 </para>
469
470 </sect2>
471
472 <sect2 role="configuration">
473 <title>Configuring qt5</title>
474
475 <sect3 id="qt5-alt-config">
476 <title>Configuration Information</title>
477
478 <para>
479 If <xref linkend="sudo"/> is installed, QT5DIR should be available to
480 the super user as well. Execute the following commands as the
481 <systemitem class="username">root</systemitem> user:
482 </para>
483
484<screen role="root"><userinput>cat &gt; /etc/sudoers.d/qt &lt;&lt; "EOF"
485<literal>Defaults env_keep += QT5DIR</literal>
486EOF</userinput></screen>
487
488 <bridgehead renderas="sect4">If you installed qt5 in /usr</bridgehead>
489
490 <para>
491 If you installed <application>qt5</application> in
492 <filename class="directory">/usr</filename>, create an
493 environment variable needed by certain packages.
494 As the <systemitem class="username">root</systemitem> user:
495 </para>
496
497<screen role="nodump"><userinput>cat &gt; /etc/profile.d/qt5.sh &lt;&lt; "EOF"
498<literal># Begin /etc/profile.d/qt5.sh
499
500QT5DIR=/usr
501export QT5DIR
502
503# End /etc/profile.d/qt5.sh</literal>
504EOF</userinput></screen>
505
506 <bridgehead renderas="sect4">If you did not install qt5 in /usr</bridgehead>
507
508 <para>
509 If you installed <application>qt5</application> in a location other
510 than <filename class="directory">/usr</filename>, you need to update the
511 following configuration files so that <application>qt5</application> is
512 correctly found by other packages and system processes.
513 </para>
514
515 <para>
516 As the <systemitem class="username">root</systemitem> user, update
517 the <filename>/etc/ld.so.conf</filename> file and the dynamic linker's
518 run-time cache file:
519 </para>
520
521<screen role="root"><userinput>cat &gt;&gt; /etc/ld.so.conf &lt;&lt; EOF
522<literal># Begin Qt addition
523
524/opt/qt5/lib
525
526# End Qt addition</literal>
527EOF
528
529ldconfig</userinput></screen>
530
531 <indexterm zone="qt5 qt5-config">
532 <primary sortas="e-etc-ld.so.conf">/etc/ld.so.conf</primary>
533 </indexterm>
534
535 <para>
536 As the <systemitem class="username">root</systemitem> user, create
537 the <filename>/etc/profile.d/qt5.sh</filename> file:
538 </para>
539
540<screen role="root"><userinput>cat &gt; /etc/profile.d/qt5.sh &lt;&lt; "EOF"
541<literal># Begin /etc/profile.d/qt5.sh
542
543QT5DIR=/opt/qt5
544
545pathappend $QT5DIR/bin PATH
546pathappend $QT5DIR/lib/pkgconfig PKG_CONFIG_PATH
547
548export QT5DIR
549
550# End /etc/profile.d/qt5.sh</literal>
551EOF</userinput></screen>
552
553 </sect3>
554
555 </sect2>
556
557 <sect2 role="content">
558 <title>Contents</title>
559
560 <segmentedlist>
561 <segtitle>Installed Programs</segtitle>
562 <segtitle>Installed Libraries</segtitle>
563 <segtitle>Installed Directories</segtitle>
564
565 <seglistitem>
566 <seg>
567 assistant, designer, fixqt4headers.pl, lconvert,
568 linguist, lprodump, lrelease, lrelease-pro, lupdate, lupdate-pro,
569 moc, pixeltool, qcollectiongenerator, qdbus, qdbuscpp2xml,
570 qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc,
571 qhelpgenerator, qlalr, qmake, qml, qmlcachegen, qmleasing,
572 qmlformat, qmlimportscanner, qmllint, qmlmin, qmlplugindump,
573 qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qmltime,
574 qmltyperegistrar,
575 qtattributionscanner, qtdiag, qtpaths, qtplugininfo,
576 qtwaylandscanner, qvkgen, rcc, syncqt.pl, tracegen, and
577 uic
578 </seg>
579 <seg>
580 libQt5Concurrent.so,
581 libQt5Core.so,
582 libQt5DBus.so,
583 libQt5Designer.so,
584 libQt5DesignerComponents.so,
585 libQt5EglFSDeviceIntegration.so,
586 libQt5EglFsKmsSupport.so,
587 libQt5Gui.so,
588 libQt5Help.so,
589 libQt5Network.so,
590 libQt5OpenGL.so,
591 libQt5PrintSupport.so,
592 libQt5Qml.so,
593 libQt5QmlModels.so,
594 libQt5QmlWorkerScript.so,
595 libQt5Quick.so,
596 libQt5QuickParticles.so,
597 libQt5QuickShapes.so,
598 libQt5QuickTest.so,
599 libQt5WaylandClient.so,
600 libQt5WaylandCompositor.so,
601 libQt5Widgets.so,
602 libQt5X11Extras.so,
603 libQt5XcbQpa.so,
604 libQt5Xml.so,
605 several static libraries,
606 and several plugins under /opt/qt5/{plugins,qml}
607 </seg>
608 <seg>
609 /usr/include/qt5,
610 /usr/lib/qt5,
611 /usr/share/doc/qt5, and
612 /usr/share/qt5
613 OR
614 /opt/qt5 and
615 /opt/qt-&qt5-version;
616 </seg>
617 </seglistitem>
618 </segmentedlist>
619
620 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
621 <para>See <xref linkend="qt5-descriptions"/></para>
622
623 </sect2>
624
625</sect1>
Note: See TracBrowser for help on using the repository browser.