openSUSE:打包 PyQt 和 SIP
PyQt 是一组用于 Qt 框架的 Python 绑定。它使用 SIP 作为构建后端。SIP 是一种工具,可以轻松创建 C 和 C++ 库的 Python 绑定。
构建要求
使用 SIP v5 或 SIP v6 构建的软件包需要 python-sip-devel 包。
BuildRequires: %{python_module sip-devel}
如果您的软件包依赖于已弃用的 SIP4,请使用 python-sip4-devel 包
BuildRequires: %{python_module sip4-devel}
PyQt5 和 PyQt6 系列有一个专门的软件包,可以增强 SIP 构建系统
BuildRequires: %{python_module pyqt-builder}
运行时要求
使用 SIP v4 的软件包历史上导入了已弃用的 Python 顶级模块 sip。为了确保二进制兼容性,sip4-devel 包提供了一个指定正确版本的宏
Requires: python-sip(api) = %{python_sip_api_ver}
较新的软件包使用 Python 模块 PyQt5.sip 或 PyQt6.sip。它们作为单独的软件包提供,并且未固定到 PyQt ABI。
Requires: python-qt5-sip
或
Requires: python-PyQt6-sip
宏
我们使用一组辅助宏来构建使用 SIP 的 PyQt 软件包。这些主要用于核心 PyQt 软件包,但对于其他基于 SIP 的软件也可能有用。
BuildRequires: python-pyqt-rpm-macros
%define use_sip4 1
为需要 SIP v4 的发行版或软件包定义此项
%define pyqt_build_for_qt6 1
为针对 Qt6 构建定义此项。需要 SIP v6。
%sip4_only() 和 %sip5_only()
如果仅为构建的子集定义了 %use_sip4,则仅对 SIP v4 或 SIP v5 构建应用参数。
%pyqt<N>_sipdir 用于 <N> 在 {4, 5, 6} 中
包含 .sip 绑定文件的目录的路径。
构建和安装
以下宏负责不同 Python 风格的构建目录调整。
%pyqt_build()
使用 SIP v4 或 SIP v5/v6(由 %use_sip4 定义)构建软件包的说明
选项
-c %{quote:--configure-parameters}:SIP v4 构建中用于configure.py的其他参数。-v:对于“非标准”configure.py 是必需的:调用configure.py --verbose而不是标准的configure -w。-s %{quote:--sip-build-parameters}:SIP v5 和 v6sip-build的其他参数。-m %{quote:make_flags}:make的其他参数。
%pyqt_install
安装软件包的说明。对于 SIP v4,该宏还将 QScintilla API 文件和 SIP 绑定文件移动到特定于风格的路径名。PyQt[56] 插件也重命名为包含构建它们的 Python 风格,以避免文件冲突。
%pyqt_install_examples suffix
将示例子目录安装到 %_docdir/%python_prefix-suffix,并调整脚本解释器行(shebang)以使用正确的 Python 风格。