Files
desktop/python3-pyside6/python-pyside6.spec
2025-12-26 12:38:57 +08:00

196 lines
6.8 KiB
RPMSpec

# SPDX-FileCopyrightText: (C) 2025 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2025 openRuyi Project Contributors
# SPDX-FileContributor: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0
%global pypi_name pyside6
%global camel_name PySide6
%global qt6ver 6.10.1
%bcond doc 0
Name: python-%{pypi_name}
Version: 6.10.1
Release: %autorelease
Summary: Python bindings for the Qt 6 cross-platform application and UI framework
License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0
URL: https://wiki.qt.io/Qt_for_Python
#!RemoteAsset
Source0: https://download.qt.io/official_releases/QtForPython/%{pypi_name}/%{camel_name}-%{qt6ver}-src/pyside-setup-everywhere-src-%{version}.tar.xz
BuildSystem: cmake
Patch0: 0001-Revert-Modify-headers-installation-for-CMake-builds.patch
Patch1: 0002-Always-link-to-python-libraries.patch
Patch2: 0003-Fix-installation.patch
BuildOption(conf): -DCMAKE_BUILD_TYPE=Release
BuildOption(conf): -DBUILD_TESTING=OFF
BuildOption(conf): -DBUILD_DOCS=OFF
BuildOption(conf): -DNO_QT_TOOLS=yes
BuildOption(conf): -DCMAKE_SKIP_INSTALL_RPATH=ON
BuildOption(conf): -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON
BuildOption(conf): -DFORCE_LIMITED_API=no
BuildRequires: cmake
BuildRequires: ninja
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: git
BuildRequires: clang-devel
BuildRequires: llvm-devel
BuildRequires: pkgconfig(python3)
BuildRequires: python3-numpy
BuildRequires: python3-setuptools
BuildRequires: python3-wheel
BuildRequires: python3-packaging
BuildRequires: qt6-macros
BuildRequires: qt6-tools
BuildRequires: qt6-doctools
BuildRequires: pkgconfig(libffi)
BuildRequires: pkgconfig(libxslt)
BuildRequires: cmake(Qt6Core) >= %{qt6ver}
BuildRequires: cmake(Qt6Gui) >= %{qt6ver}
BuildRequires: cmake(Qt6Widgets) >= %{qt6ver}
BuildRequires: cmake(Qt6Network) >= %{qt6ver}
BuildRequires: cmake(Qt6DBus) >= %{qt6ver}
BuildRequires: cmake(Qt6Test) >= %{qt6ver}
BuildRequires: cmake(Qt6Concurrent) >= %{qt6ver}
BuildRequires: cmake(Qt6Sql) >= %{qt6ver}
BuildRequires: cmake(Qt6Xml) >= %{qt6ver}
BuildRequires: cmake(Qt6PrintSupport) >= %{qt6ver}
BuildRequires: cmake(Qt6OpenGL) >= %{qt6ver}
BuildRequires: cmake(Qt6OpenGLWidgets) >= %{qt6ver}
BuildRequires: cmake(Qt6Qml) >= %{qt6ver}
BuildRequires: cmake(Qt6Quick) >= %{qt6ver}
BuildRequires: cmake(Qt6UiPlugin) >= %{qt6ver}
BuildRequires: qt6-designer >= %{qt6ver}
%description
PySide6 is the official Python module from the Qt for Python project, which
provides access to the complete Qt 6+ framework.
%package -n python3-%{pypi_name}
Summary: %{summary}
Provides: python3-%{camel_name} = %{version}-%{release}
%description -n python3-%{pypi_name}
PySide6 Python module.
%package -n python3-%{pypi_name}-devel
Summary: Development files related to %{name}
Requires: pyside6-tools
Requires: shiboken6
%description -n python3-%{pypi_name}-devel
Development files for PySide6.
%package -n pyside6-tools
Summary: PySide6 tools for the Qt 6 framework
Requires: python3-%{pypi_name}
%description -n pyside6-tools
PySide6 tools.
%package -n shiboken6
Summary: Python / C++ bindings generator for %camel_name
%description -n shiboken6
Shiboken binding generator.
%package -n python3-shiboken6
Summary: Python / C++ bindings libraries for %camel_name
%description -n python3-shiboken6
Shiboken Python libraries.
%package -n python3-shiboken6-devel
Summary: Python / C++ bindings helper module for %camel_name
Requires: shiboken6
Requires: python3-shiboken6
%description -n python3-shiboken6-devel
Shiboken development files.
%prep -a
sed -i 's#${base}/../shiboken6/##' sources/pyside6/CMakeLists.txt
%install -a
cp -r %{_vpath_builddir}/sources/shiboken6/shibokenmodule/{*.py,*.txt} sources/shiboken6/shibokenmodule/
cp -r %{_vpath_builddir}/sources/pyside6/PySide6/*.py sources/pyside6/PySide6/
%{__python3} setup.py --qtpaths=/usr/%{_lib}/qt6/bin/qtpaths install_scripts --install-dir=%{buildroot}%{_bindir}
for name in PySide6 shiboken6 shiboken6_generator; do
mkdir -p %{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info
cp -p $name.egg-info/{PKG-INFO,top_level.txt} \
%{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info/
if [ -f $name.egg-info/entry_points.txt ]; then
cp -p $name.egg-info/entry_points.txt %{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info/
fi
done
mkdir -p %{buildroot}%{python3_sitelib}/%{camel_name}/Qt/libexec
ln -sf %{_libexecdir}/qt6/{rcc,uic} %{buildroot}%{python3_sitelib}/%{camel_name}/Qt/libexec
ln -sf %{_bindir}/{lrelease,lupdate} %{buildroot}%{python3_sitelib}/%{camel_name}
mkdir -p %{buildroot}%{python3_sitelib}/%{camel_name}/scripts
mv %{buildroot}%{_bindir}/{pyside_tool.py,project.py} %{buildroot}%{python3_sitelib}/%{camel_name}/scripts || :
mkdir -p %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts
mv %{buildroot}%{_bindir}/shiboken_tool.py %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts || :
if [ -f %{_vpath_builddir}/sources/shiboken6/generator/shiboken6 ]; then
mv %{_vpath_builddir}/sources/shiboken6/generator/shiboken6 %{buildroot}%{python3_sitelib}/shiboken6_generator
fi
sed -i 's#/typesystems#/share/PySide6/typesystems#g' %{buildroot}%{_libdir}/cmake/PySide6/*.cmake
sed -i 's#/glue#/share/PySide6/glue#g' %{buildroot}%{_libdir}/cmake/PySide6/*.cmake
%py3_shebang_fix %{buildroot}%{python3_sitelib}/%{camel_name}/scripts
%py3_shebang_fix %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts
%check
export LD_LIBRARY_PATH="%{buildroot}%{_libdir}"
%py3_check_import PySide6
%py3_check_import shiboken6
%files -n python3-%{pypi_name}
%license LICENSES/*
%{_libdir}/libpyside6*.so.6*
%{python3_sitelib}/%{camel_name}/
%{python3_sitearch}/%{camel_name}-%{version}-py%{python3_version}.egg-info/
%files -n python3-%{pypi_name}-devel
%{_datadir}/PySide6/
%{_includedir}/PySide6/
%{_libdir}/libpyside6*.so
%{_libdir}/libpyside6remoteobjects.a
%{_libdir}/cmake/PySide6*
%{_libdir}/pkgconfig/pyside6.pc
%files -n pyside6-tools
%{_bindir}/pyside*
%{_libdir}/qt6/plugins/designer/libPySidePlugin.so
%files -n shiboken6
%{_libdir}/cmake/Shiboken6Tools/*
%files -n python3-shiboken6
%{_libdir}/libshiboken6*.so.6*
%{python3_sitelib}/shiboken6/
%{python3_sitearch}/shiboken6-%{version}-py%{python3_version}.egg-info/
%files -n python3-shiboken6-devel
%{_bindir}/shiboken6*
%{_includedir}/shiboken6/
%{_libdir}/cmake/Shiboken6/
%{_libdir}/libshiboken6*.so
%{_libdir}/pkgconfig/shiboken6.pc
%{python3_sitelib}/shiboken6_generator/
%{python3_sitearch}/shiboken6_generator-%{version}-py%{python3_version}.egg-info/
%changelog
%{?autochangelog}