qt6-tools/qt6-tools.spec

489 lines
16 KiB
RPMSpec

#
# spec file for package qt6-tools
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define real_version 6.8.1
%define short_version 6.8
%define tar_name qttools-everywhere-src
%define tar_suffix %{nil}
#
%global qt6_flavor @BUILD_FLAVOR@%{nil}
%if "%{qt6_flavor}" == "docs"
%define pkg_suffix -docs
%endif
#
Name: qt6-tools%{?pkg_suffix}
Version: 6.8.1
Release: 0
Summary: Qt 6 Tools libraries and tools
# TODO Check if it's still valid
# Legal:
# most src/ subfolders are GPL-3.0-only WITH Qt-GPL-exception-1.0, except:
# qdoc is GPL-3.0-only WITH Qt-GPL-exception-1.0 + (LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)) == GPL-3.0-only
# src/shared contains BSD-3-Clause and LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) files. The
# 'GPL-3.0-only WITH Qt-GPL-exception-1.0' files in this folder are only used on Windows.
License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) AND GPL-3.0-only WITH Qt-GPL-exception-1.0
URL: https://www.qt.io
Source0: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
Source10: org.qt.designer6.desktop
Source11: org.qt.linguist6.desktop
Source12: org.qt.qdbusviewer6.desktop
Source13: org.qt.assistant6.desktop
# The 48x48 icon was removed from qttools
Source14: linguist6.png
Source99: qt6-tools-rpmlintrc
# clang-devel in Leap 15 points to clang7...
%if 0%{?suse_version} == 1500
BuildRequires: clang17-devel
%else
BuildRequires: clang-devel >= 17
%endif
BuildRequires: hicolor-icon-theme
BuildRequires: pkgconfig
BuildRequires: qt6-core-private-devel
BuildRequires: qt6-dbus-private-devel
BuildRequires: qt6-gui-private-devel
BuildRequires: qt6-qml-private-devel
BuildRequires: qt6-quick-private-devel
BuildRequires: qt6-widgets-private-devel
BuildRequires: update-desktop-files
BuildRequires: cmake(Qt6Concurrent) = %{real_version}
BuildRequires: cmake(Qt6Core) = %{real_version}
BuildRequires: cmake(Qt6DBus) = %{real_version}
BuildRequires: cmake(Qt6Gui) = %{real_version}
BuildRequires: cmake(Qt6Network) = %{real_version}
BuildRequires: cmake(Qt6OpenGL) = %{real_version}
BuildRequires: cmake(Qt6OpenGLWidgets) = %{real_version}
BuildRequires: cmake(Qt6PrintSupport) = %{real_version}
BuildRequires: cmake(Qt6QmlLSPrivate) = %{real_version}
BuildRequires: cmake(Qt6Quick) = %{real_version}
BuildRequires: cmake(Qt6QuickWidgets) = %{real_version}
BuildRequires: cmake(Qt6Sql) = %{real_version}
BuildRequires: cmake(Qt6Widgets) = %{real_version}
BuildRequires: cmake(Qt6Xml) = %{real_version}
BuildRequires: pkgconfig(libzstd) >= 1.3
# These packages are required to generate documentation for the Qt packages
Requires: qt6-tools-helpgenerators
Requires: qt6-tools-qdoc
Recommends: qt6-tools-assistant
Recommends: qt6-tools-designer
Recommends: qt6-tools-linguist
Recommends: qt6-tools-qdbus
%if "%{qt6_flavor}" == "docs"
BuildRequires: qt6-tools
%{qt6_doc_packages}
%endif
%description
The QtTools modules contains some tools mostly useful for application
development.
Included are Qt Designer (GUI design), QDbusViewer and more.
%if !%{qt6_docs_flavor}
%package devel
Summary: Qt 6 Tools libraries - Development files
Requires: qt6-tools = %{version}
Requires: qt6-tools-helpgenerators = %{version}
Requires: qt6-tools-qdoc = %{version}
%description devel
Development files for the Qt6 tools libraries.
%package private-devel
Summary: Non-ABI stable API for the Qt 6 tools libraries
%description private-devel
This package provides private headers of qt6-tools that do not have any
ABI or API guarantees.
%package -n libQt6Designer6
Summary: Qt 6 Designer library
License: GPL-3.0-only WITH Qt-GPL-exception-1.0
%description -n libQt6Designer6
This package contains the Qt 6 Designer Library.
%package -n qt6-designer-devel
Summary: Qt 6 Designer libraries - Development files
Requires: libQt6Designer6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6OpenGL) = %{real_version}
Requires: cmake(Qt6OpenGLWidgets) = %{real_version}
Requires: cmake(Qt6Widgets) = %{real_version}
Requires: cmake(Qt6Xml) = %{real_version}
%description -n qt6-designer-devel
Development files for the Qt6 Designer libraries.
%package -n qt6-designer-private-devel
Summary: Non-ABI stable API for the Qt 6 Designer libraries
Requires: cmake(Qt6Designer) = %{real_version}
%requires_eq qt6-core-private-devel
%requires_eq qt6-gui-private-devel
%requires_eq qt6-widgets-private-devel
%description -n qt6-designer-private-devel
This package provides private headers of libQt6Designer that do not have any
ABI or API guarantees.
%package -n libQt6Help6
Summary: Qt 6 Help library
%description -n libQt6Help6
This package contains the Qt 6 Help library.
%package -n qt6-help-devel
Summary: Qt 6 Help library - Development files
Requires: libQt6Help6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Network) = %{real_version}
Requires: cmake(Qt6Sql) = %{real_version}
Requires: cmake(Qt6Widgets) = %{real_version}
%description -n qt6-help-devel
Development files for the Qt6 Help library.
%package -n qt6-help-private-devel
Summary: Non-ABI stable API for the Qt 6 Help library
Requires: cmake(Qt6Help) = %{real_version}
%requires_eq qt6-core-private-devel
%description -n qt6-help-private-devel
This package provides private headers of libQt6Help that do not have any
ABI or API guarantees.
%package -n libQt6UiTools6
Summary: Qt 6 UiTools library
%description -n libQt6UiTools6
This package contains the Qt 6 UiTools library.
%package -n qt6-uitools-devel
Summary: Qt 6 UiTools library - Development files
Requires: libQt6UiTools6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6OpenGL) = %{real_version}
Requires: cmake(Qt6OpenGLWidgets) = %{real_version}
Requires: cmake(Qt6UiPlugin) = %{real_version}
Requires: cmake(Qt6Widgets) = %{real_version}
# qt6uitools_*_metatypes.json location fixed
Conflicts: qt6-designer-devel < 6.2.2
%description -n qt6-uitools-devel
Development files for the Qt6 UiTools library.
%package -n qt6-uitools-private-devel
Summary: Non-ABI stable API for the Qt 6 UiTools library
Requires: cmake(Qt6UiTools) = %{real_version}
%description -n qt6-uitools-private-devel
This package provides private headers of libQt6UiTools that do not have any
ABI or API guarantees.
%package assistant
Summary: Documentation browser
%description assistant
Qt Assistant is a tool for viewing documentation in Qt help file format.
%package designer
Summary: Qt graphical interface creation tool
%description designer
Qt Designer is a tool for designing and building graphical user interface
with Qt Widgets.
%package helpgenerators
Summary: Qt Help files generator
Requires: qt6-docs-common
# help files are SQLite databases, so qhelpgenerator needs the SQLite plugin
Requires: qt6-sql-sqlite
%description helpgenerators
Qt 6 tool for generating .qch help catalogs.
%package linguist
Summary: Translation tool for Qt applications
%description linguist
Qt Linguist can be used by translator to translate text in Qt applications.
%package -n qt6-linguist-devel
Summary: Qt 6 linguist tools - Development files
# Executables are required
Requires: qt6-tools-linguist = %{version}
%description -n qt6-linguist-devel
Development files for the Qt 6 linguist tools.
%package qdbus
Summary: Command line client for communication over D-Bus
License: GPL-3.0-only WITH Qt-GPL-exception-1.0
%description qdbus
Command line client for communication over D-Bus.
%package qdoc
Summary: Qt 6 Tool used by Qt to generate documentation
License: GPL-3.0-only
# qdoc hardcodes clang include paths: boo#1109367, QTBUG-70687
%requires_eq libclang%{_libclang_sonum}
# Both qdoc and libclang link against libclang-cpp, so make sure it's compatible.
%requires_eq libclang-cpp%{_llvm_sonum}
%description qdoc
Qt 6 Tool used by Qt to generate documentation.
### Private only library ###
%package -n libQt6DesignerComponents6
Summary: Qt 6 DesignerComponents library
License: GPL-3.0-only WITH Qt-GPL-exception-1.0
%description -n libQt6DesignerComponents6
The Qt 6 DesignerComponents library.
This library does not have any ABI or API guarantees.
%package -n qt6-designercomponents-private-devel
Summary: Development files for the Qt 6 DesignerComponents library
Requires: libQt6DesignerComponents6 = %{version}
Requires: qt6-designer-private-devel = %{version}
Requires: cmake(Qt6Core) = %{real_version}
Requires: cmake(Qt6Xml) = %{real_version}
%requires_eq qt6-gui-private-devel
%requires_eq qt6-widgets-private-devel
%description -n qt6-designercomponents-private-devel
Development files for the Qt 6 DesignerComponents library.
This library does not have any ABI or API guarantees.
%{qt6_examples_package}
%endif
%prep
%autosetup -p1 -n %{tar_name}-%{real_version}%{tar_suffix}
%build
%cmake_qt6 \
-DQT_GENERATE_SBOM:BOOL=FALSE \
-DBUILD_TESTING:BOOL=FALSE
%{qt6_build}
%install
%{qt6_install}
%if !%{qt6_docs_flavor}
%{qt6_link_executables}
# CMake files are not needed for plugins (except for Qt6UiPlugin)
rm %{buildroot}%{_qt6_cmakedir}/Qt6Designer/*Plugin{Config,Targets}*.cmake
rm %{buildroot}%{_qt6_cmakedir}/Qt6Help/*Plugin{Config,Targets}*.cmake
# This doesn't look useful
rm -r %{buildroot}%{_qt6_includedir}/QtQDocCatch*
rm -r %{buildroot}%{_qt6_cmakedir}/Qt6QDocCatch*
rm %{buildroot}%{_qt6_mkspecsdir}/modules/qt_lib_qdoccatch*.pri
rm %{buildroot}%{_qt6_descriptionsdir}/QDocCatch*.json
# Desktop files for applications
%suse_update_desktop_file -i org.qt.assistant6
%suse_update_desktop_file -i org.qt.designer6
%suse_update_desktop_file -i org.qt.linguist6
rm %{buildroot}%{_datadir}/pixmaps/linguist6.png
%suse_update_desktop_file -i org.qt.qdbusviewer6
# Icons for the desktop files
install -D -m644 src/designer/src/designer/images/designer.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/designer6.png
install -D -m644 %{SOURCE14} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/linguist6.png
install -D -m644 src/linguist/linguist/images/icons/linguist-128-32.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/linguist6.png
install -D -m644 src/qdbus/qdbusviewer/images/qdbusviewer.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/qdbusviewer6.png
install -D -m644 src/qdbus/qdbusviewer/images/qdbusviewer-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qdbusviewer6.png
install -D -m644 src/assistant/assistant/images/assistant.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/assistant6.png
install -D -m644 src/assistant/assistant/images/assistant-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/assistant6.png
%ldconfig_scriptlets -n libQt6Designer6
%ldconfig_scriptlets -n libQt6DesignerComponents6
%ldconfig_scriptlets -n libQt6Help6
%ldconfig_scriptlets -n libQt6UiTools6
%files
%license LICENSES/*
%{_bindir}/pixeltool6
%{_bindir}/qdistancefieldgenerator6
%{_bindir}/qtdiag6
%{_bindir}/qtplugininfo6
%{_qt6_bindir}/pixeltool
%{_qt6_bindir}/qdistancefieldgenerator
%{_qt6_bindir}/qtdiag
%{_qt6_bindir}/qtplugininfo
%{_qt6_libexecdir}/qtattributionsscanner
%files devel
%{_qt6_cmakedir}/Qt6/FindWrapLibClang.cmake
%{_qt6_cmakedir}/Qt6BuildInternals/StandaloneTests/QtToolsTestsConfig.cmake
%{_qt6_cmakedir}/Qt6Tools/
%{_qt6_cmakedir}/Qt6ToolsTools/
%{_qt6_descriptionsdir}/Tools.json
%{_qt6_includedir}/QtTools/
%exclude %{_qt6_includedir}/QtTools/%{real_version}
%files private-devel
%{_qt6_includedir}/QtTools/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_tools_private.pri
%files -n libQt6Designer6
%{_qt6_libdir}/libQt6Designer.so.*
%files -n qt6-designer-devel
%{_qt6_cmakedir}/Qt6Designer/
%{_qt6_cmakedir}/Qt6UiPlugin/
%{_qt6_descriptionsdir}/Designer.json
%{_qt6_descriptionsdir}/UiPlugin.json
%{_qt6_includedir}/QtDesigner/
%{_qt6_includedir}/QtUiPlugin/
%{_qt6_libdir}/libQt6Designer.prl
%{_qt6_libdir}/libQt6Designer.so
%{_qt6_metatypesdir}/qt6designer_*_metatypes.json
%{_qt6_mkspecsdir}/modules/qt_lib_designer.pri
%{_qt6_mkspecsdir}/modules/qt_lib_uiplugin.pri
%{_qt6_pkgconfigdir}/Qt6Designer.pc
%{_qt6_pkgconfigdir}/Qt6UiPlugin.pc
%exclude %{_qt6_includedir}/QtDesigner/%{real_version}
%files -n qt6-designer-private-devel
%{_qt6_includedir}/QtDesigner/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_designer_private.pri
%files -n libQt6Help6
%{_qt6_libdir}/libQt6Help.so.*
%files -n qt6-help-devel
%{_qt6_cmakedir}/Qt6Help/
%{_qt6_descriptionsdir}/Help.json
%{_qt6_includedir}/QtHelp/
%{_qt6_libdir}/libQt6Help.prl
%{_qt6_libdir}/libQt6Help.so
%{_qt6_metatypesdir}/qt6help_*_metatypes.json
%{_qt6_mkspecsdir}/modules/qt_lib_help.pri
%{_qt6_pkgconfigdir}/Qt6Help.pc
%exclude %{_qt6_includedir}/QtHelp/%{real_version}
%files -n qt6-help-private-devel
%{_qt6_includedir}/QtHelp/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_help_private.pri
%files -n libQt6UiTools6
%{_qt6_libdir}/libQt6UiTools.so.*
%files -n qt6-uitools-devel
%{_qt6_cmakedir}/Qt6UiTools/
%{_qt6_descriptionsdir}/UiTools.json
%{_qt6_includedir}/QtUiTools/
%{_qt6_libdir}/libQt6UiTools.prl
%{_qt6_libdir}/libQt6UiTools.so
%{_qt6_metatypesdir}/qt6uitools_*_metatypes.json
%{_qt6_mkspecsdir}/modules/qt_lib_uitools.pri
%{_qt6_pkgconfigdir}/Qt6UiTools.pc
%exclude %{_qt6_includedir}/QtUiTools/%{real_version}
%files -n qt6-uitools-private-devel
%{_qt6_includedir}/QtUiTools/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_uitools_private.pri
%files assistant
%{_bindir}/assistant6
%{_datadir}/applications/org.qt.assistant6.desktop
%{_datadir}/icons/hicolor/128x128/apps/assistant6.png
%{_datadir}/icons/hicolor/32x32/apps/assistant6.png
%{_qt6_bindir}/assistant
%dir %{_qt6_pluginsdir}/help
%{_qt6_pluginsdir}/help/libhelpplugin.so
%files designer
%dir %{_qt6_pluginsdir}/designer
%{_bindir}/designer6
%{_datadir}/applications/org.qt.designer6.desktop
%{_datadir}/icons/hicolor/128x128/apps/designer6.png
%{_qt6_bindir}/designer
%{_qt6_pluginsdir}/designer/libcontainerextension.so
%{_qt6_pluginsdir}/designer/libcustomwidgetplugin.so
%{_qt6_pluginsdir}/designer/libqquickwidget.so
%{_qt6_pluginsdir}/designer/libtaskmenuextension.so
%files helpgenerators
%{_qt6_libexecdir}/qhelpgenerator
%files linguist
%dir %{_qt6_datadir}/phrasebooks
%{_bindir}/lconvert6
%{_bindir}/linguist6
%{_bindir}/lrelease6
%{_bindir}/lupdate6
%{_datadir}/applications/org.qt.linguist6.desktop
%{_datadir}/icons/hicolor/48x48/apps/linguist6.png
%{_datadir}/icons/hicolor/128x128/apps/linguist6.png
%{_qt6_bindir}/lconvert
%{_qt6_bindir}/linguist
%{_qt6_bindir}/lrelease
%{_qt6_bindir}/lupdate
%{_qt6_datadir}/phrasebooks/*.qph
%{_qt6_libexecdir}/lprodump
%{_qt6_libexecdir}/lrelease-pro
%{_qt6_libexecdir}/lupdate-pro
%files -n qt6-linguist-devel
%{_qt6_descriptionsdir}/Linguist.json
%{_qt6_cmakedir}/Qt6Linguist/
%{_qt6_cmakedir}/Qt6LinguistTools/
%{_qt6_mkspecsdir}/modules/qt_lib_linguist.pri
%{_qt6_pkgconfigdir}/Qt6Linguist.pc
%files qdbus
%{_bindir}/qdbus6
%{_bindir}/qdbusviewer6
%{_datadir}/applications/org.qt.qdbusviewer6.desktop
%{_datadir}/icons/hicolor/128x128/apps/qdbusviewer6.png
%{_datadir}/icons/hicolor/32x32/apps/qdbusviewer6.png
%{_qt6_bindir}/qdbus
%{_qt6_bindir}/qdbusviewer
%files qdoc
%{_bindir}/qdoc6
%{_qt6_bindir}/qdoc
### Private only library ###
%files -n libQt6DesignerComponents6
%{_qt6_libdir}/libQt6DesignerComponents.so.*
%files -n qt6-designercomponents-private-devel
%{_qt6_cmakedir}/Qt6DesignerComponentsPrivate/
%{_qt6_descriptionsdir}/DesignerComponentsPrivate.json
%{_qt6_includedir}/QtDesignerComponents/
%{_qt6_libdir}/libQt6DesignerComponents.prl
%{_qt6_libdir}/libQt6DesignerComponents.so
%{_qt6_metatypesdir}/qt6designercomponentsprivate_*_metatypes.json
%{_qt6_mkspecsdir}/modules/qt_lib_designercomponents_private.pri
%endif
%changelog