diff --git a/qcoro-0.10.0.tar.gz b/qcoro-0.10.0.tar.gz new file mode 100644 index 0000000..2d6a79d Binary files /dev/null and b/qcoro-0.10.0.tar.gz differ diff --git a/qcoro.spec b/qcoro.spec new file mode 100644 index 0000000..4c86745 --- /dev/null +++ b/qcoro.spec @@ -0,0 +1,186 @@ +%global use_qt5 1 +%global use_qt6 1 + +%global appname QCoro +%global qt5_build_dir release-qt5 +%global qt6_build_dir release-qt6 +%global _description %{expand: +The QCoro library provides set of tools to make use of the C++20 coroutines +in connection with certain asynchronous Qt actions. + +The major benefit of using coroutines with Qt types is that it allows writing +asynchronous code as if it were synchronous and, most importantly, while the +coroutine is co_awaiting, the Qt event loop runs as usual, meaning that your +application remains responsive.} + +Name: qcoro +Version: 0.10.0 +Release: 1 + +License: MIT +Summary: C++ Coroutines for Qt +URL: https://github.com/danvratil/%{name} +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz + +%if 0%{?use_qt5} +BuildRequires: cmake(Qt5Concurrent) +BuildRequires: cmake(Qt5Core) +BuildRequires: cmake(Qt5DBus) +BuildRequires: cmake(Qt5Network) +BuildRequires: cmake(Qt5Qml) +BuildRequires: cmake(Qt5Quick) +BuildRequires: cmake(Qt5Test) +BuildRequires: cmake(Qt5WebSockets) +BuildRequires: cmake(Qt5Widgets) +BuildRequires: qt5-qtbase-private-devel +%endif + +%if 0%{?use_qt6} +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Network) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Test) +BuildRequires: cmake(Qt6WebSockets) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: qt6-qtbase-private-devel +%endif + +BuildRequires: cmake +BuildRequires: dbus-x11 +BuildRequires: gcc-c++ +BuildRequires: ninja-build + +%description %_description + +%if 0%{?use_qt5} +%package qt5 +Summary: C++ Coroutines for Qt 5 +Provides: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: %{name} < %{?epoch:%{epoch}:}%{version}-%{release} + +%package qt5-devel +Summary: Development files for %{appname} (Qt 5 version) +Requires: %{name}-qt5%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: qt5-qtbase-devel%{?_isa} +Provides: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: %{name}-devel < %{?epoch:%{epoch}:}%{version}-%{release} + +%description qt5 %_description +%description qt5-devel %_description +%endif + +%if 0%{?use_qt6} +%package qt6 +Summary: C++ Coroutines for Qt 6 + +%package qt6-devel +Summary: Development files for %{appname} (Qt 6 version) +Requires: %{name}-qt6%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: qt6-qtbase-devel%{?_isa} + +%description qt6 %_description +%description qt6-devel %_description +%endif + +%prep +%autosetup -p1 + +%build +%if 0%{?use_qt5} +mkdir %{qt5_build_dir} && pushd %{qt5_build_dir} +%cmake -G Ninja \ + -S'..' \ + -DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=%{_libdir}/qt5/mkspecs/modules \ + -DUSE_QT_VERSION:STRING=5 \ + -DBUILD_TESTING:BOOL=ON \ + -DQCORO_BUILD_EXAMPLES:BOOL=ON \ + -DQCORO_ENABLE_ASAN:BOOL=OFF \ + -DQCORO_WITH_QML:BOOL=ON \ + -DQCORO_WITH_QTDBUS:BOOL=ON \ + -DQCORO_WITH_QTNETWORK:BOOL=ON \ + -DQCORO_WITH_QTQUICK:BOOL=ON \ + -DQCORO_WITH_QTWEBSOCKETS:BOOL=ON +cmake --build . %{?_smp_mflags} --verbose +popd +%endif + +%if 0%{?use_qt6} +mkdir %{qt6_build_dir} && pushd %{qt6_build_dir} +%cmake -G Ninja \ + -S'..' \ + -DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=%{_libdir}/qt6/mkspecs/modules \ + -DUSE_QT_VERSION:STRING=6 \ + -DBUILD_TESTING:BOOL=ON \ + -DQCORO_BUILD_EXAMPLES:BOOL=ON \ + -DQCORO_ENABLE_ASAN:BOOL=OFF \ + -DQCORO_WITH_QML:BOOL=ON \ + -DQCORO_WITH_QTDBUS:BOOL=ON \ + -DQCORO_WITH_QTNETWORK:BOOL=ON \ + -DQCORO_WITH_QTQUICK:BOOL=ON \ + -DQCORO_WITH_QTWEBSOCKETS:BOOL=ON +cmake --build . %{?_smp_mflags} --verbose +popd +%endif + +%install +%if 0%{?use_qt5} +pushd %{qt5_build_dir} +DESTDIR="%{buildroot}" cmake --install . +popd +%endif + +%if 0%{?use_qt6} +pushd %{qt6_build_dir} +DESTDIR="%{buildroot}" cmake --install . +popd +%endif + +%check +%if 0%{?use_qt5} +pushd %{qt5_build_dir} +ctest --test-dir . --output-on-failure --force-new-ctest-process %{?_smp_mflags} --timeout 3600 +popd +%endif + +%if 0%{?use_qt6} +pushd %{qt6_build_dir} +ctest --test-dir . --output-on-failure --force-new-ctest-process %{?_smp_mflags} --timeout 3600 +popd +%endif + +%if 0%{?use_qt5} +%files qt5 +%doc README.md +%license LICENSES/* +%{_libdir}/lib%{appname}5*.so.0* + +%files qt5-devel +%{_includedir}/%{name}5/ +%{_libdir}/cmake/%{appname}5*/ +%{_libdir}/lib%{appname}5*.so +%{_libdir}/qt5/mkspecs/modules/qt_%{appname}*.pri +%endif + +%if 0%{?use_qt6} +%files qt6 +%doc README.md +%license LICENSES/* +%{_libdir}/lib%{appname}6*.so.0* + +%files qt6-devel +%{_includedir}/%{name}6/ +%{_libdir}/cmake/%{appname}6*/ +%{_libdir}/lib%{appname}6*.so +%{_libdir}/qt6/mkspecs/modules/qt_%{appname}*.pri +%endif + +%changelog +* Tue Feb 20 2024 peijiankang - 0.10.0-1 +- init package +