%global _default_patch_fuzz 2 %global _sonum 2 %global _libname libCutelyst2Qt5 %global _pluginAuth libCutelyst2Qt5Authentication %global _pluginSession libCutelyst2Qt5Session %global _pluginStaticsimple libCutelyst2Qt5StaticSimple %global _pluginStaticCompressed libCutelyst2Qt5StaticCompressed %global _pluginJsonview libCutelyst2Qt5ViewJson %global _pluginEmailView libCutelyst2Qt5ViewEmail %global _pluginUtilsSql libCutelyst2Qt5UtilsSql %global _pluginUtilsPagination libCutelyst2Qt5UtilsPagination %global _pluginUtilsLangSelect libCutelyst2Qt5UtilsLangSelect %global _pluginStatusMessage libCutelyst2Qt5StatusMessage %global _pluginValidator libCutelyst2Qt5UtilsValidator %global _pluginMemcached libCutelyst2Qt5Memcached %global _pluginMemcachedSession libCutelyst2Qt5MemcachedSessionStore %global _pluginCsrfProtection libCutelyst2Qt5CSRFProtection %global _pluginUa libCutelyst2Qt5UserAgent %global _viewClearsilver libCutelyst2Qt5ViewClearSilver %global _viewGrantlee libCutelyst2Qt5ViewGrantlee %global _wsgi libCutelyst2Qt5Wsgi %global _eventloop libCutelyst2Qt5EventLoopEpoll Name: cutelyst Version: 2.9.0 Release: 1%{?dist} Summary: C++ Qt-based Web Framework License: LGPLv2+ URL: http://www.cutelyst.org Source0: https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz Patch0: 0001-Use-main-zopfli-header.patch Patch1: cutelyst-1.6.0-feature-fedora-use-available-documentation.patch Patch2: 0001-Change-install-paths-to-standard-conventions.patch BuildRequires: cmake >= 3.1 BuildRequires: xz pkgconfig BuildRequires: clearsilver-devel BuildRequires: cmake(Grantlee5) BuildRequires: qt5-rpm-macros BuildRequires: cmake(Qt5Core) >= 5.6.0 BuildRequires: cmake(Qt5Network) >= 5.6.0 BuildRequires: cmake(Qt5Sql) >= 5.6.0 BuildRequires: cmake(Qt5Test) >= 5.6.0 BuildRequires: cmake(simplemailqt5) BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(pwquality) BuildRequires: qt5-linguist # used for unit tests BuildRequires: cracklib BuildRequires: jemalloc-devel BuildRequires: pkgconfig(libmemcached) # for test run BuildRequires: memcached # for wsgi plugin BuildRequires: uwsgi BuildRequires: pkgconfig(uuid) BuildRequires: libcap-devel # For libcutelyst_qt5_plugin_staticcompressed BuildRequires: cmake(Zopfli) BuildRequires: pkgconfig(libbrotlienc) # For creating documentation BuildRequires: doxygen graphviz graphviz-gd BuildRequires: font(freesans) BuildRequires: qt5-qtdoc BuildRequires: qt5-doctools BuildRequires: qt5-qtbase-doc %description Cutelyst CLI tool providing support for developing cutelyst applications. %package -n %{name}-lang Summary: Translations for package %{name} Requires: %{name} = %{version}-%{release} Provides: %{name}-lang-all = %{version}-%{release} Supplements: %{name} BuildArch: noarch %description -n %{name}-lang Provides translations for the \"%{name}\" package. %package devel Summary: Cutelyst Web Framework - Development Files Requires: %{name} Requires: cutelyst-wsgi2 Requires: %{name}-plugins = %{version}-%{release} Requires: %{_libname}-%{_sonum} = %{version}-%{release} Requires: %{_pluginAuth}%{_sonum} = %{version}-%{release} Requires: %{_pluginSession}%{_sonum} = %{version}-%{release} Requires: %{_pluginStaticsimple}%{_sonum} = %{version}-%{release} Requires: %{_pluginStaticCompressed}%{_sonum} = %{version}-%{release} Requires: %{_pluginJsonview}%{_sonum} = %{version}-%{release} Requires: %{_pluginEmailView}%{_sonum} = %{version}-%{release} Requires: %{_pluginUtilsSql}%{_sonum} = %{version}-%{release} Requires: %{_pluginUtilsPagination}%{_sonum} = %{version}-%{release} Requires: %{_pluginUtilsLangSelect}%{_sonum} = %{version}-%{release} Requires: %{_pluginStatusMessage}%{_sonum} = %{version}-%{release} Requires: %{_pluginValidator}%{_sonum} = %{version}-%{release} Requires: %{_pluginMemcached}%{_sonum} = %{version}-%{release} Requires: %{_pluginMemcachedSession}%{_sonum} = %{version}-%{release} Requires: %{_pluginCsrfProtection}%{_sonum} = %{version}-%{release} Requires: %{_pluginUa}%{_sonum} = %{version}-%{release} Requires: %{_viewClearsilver}%{_sonum} = %{version}-%{release} Requires: %{_viewGrantlee}%{_sonum} = %{version}-%{release} Requires: %{_wsgi}%{_sonum} = %{version}-%{release} Requires: %{_eventloop}%{_sonum} = %{version}-%{release} Recommends: %{name}-devel-doc %description devel Development and header files for the Cutelyst web framework and core plugins. %package -n cutelyst-wsgi2 Summary: Cutelyst Web Service Gateway Interface %description -n cutelyst-wsgi2 Fast WSGI engine (HTTP 1.1 and FastCGI both with Pipelining and Keep-Alive support) for Cutelyst applications. %package -n cutelyst-wsgi2-lang Summary: Translations for package cutelyst-wsgi2 Requires: cutelyst-wsgi2 = %{version}-%{release} Provides: cutelyst-wsgi2-lang-all = %{version}-%{release} Supplements: cutelyst-wsgi2 BuildArch: noarch %description -n cutelyst-wsgi2-lang Provides translations for the \"cutelyst-wsgi2\" package. %package -n %{_libname}-%{_sonum} Summary: Cutelyst Web Framework Core Library Recommends: %{name}-doc %description -n %{_libname}-%{_sonum} The Cutelyst web framework core library. %package -n %{_libname}-%{_sonum}-lang Summary: Translations for package %{_libname}-%{_sonum} Requires: %{_libname}-%{_sonum} = %{version}-%{release} Provides: %{_libname}-%{_sonum}-lang-all = %{version}-%{release} Supplements: %{_libname}-%{_sonum} BuildArch: noarch %description -n %{_libname}-%{_sonum}-lang Provides translations for the \"%{_libname}-%{_sonum}\" package. %package -n %{_pluginAuth}%{_sonum} Summary: Authentication Plugin for Cutelyst %description -n %{_pluginAuth}%{_sonum} Authentication plugin for the Cutelyst web framework. %package -n %{_pluginSession}%{_sonum} Summary: Session Plugin for Cutelyst %description -n %{_pluginSession}%{_sonum} Session plugin for the Cutelyst web framework. %package -n %{_pluginStaticsimple}%{_sonum} Summary: Simple Static Plugin for Cutelyst %description -n %{_pluginStaticsimple}%{_sonum} Simple static plugin for the Cutelyst web framework. %package -n %{_pluginStaticCompressed}%{_sonum} Summary: Compressed Static Plugin for Cutelyst %description -n %{_pluginStaticCompressed}%{_sonum} This plugin for the Cutelyst web framework can deliver static files compressed and cached on the fly. %package -n %{_pluginJsonview}%{_sonum} Summary: JSON View Plugin for Cutelyst %description -n %{_pluginJsonview}%{_sonum} JSON view plugin for the Cutelyst web framework. %package -n %{_pluginEmailView}%{_sonum} Summary: Email View Plugin for Cutelyst %description -n %{_pluginEmailView}%{_sonum} Email view plugin for the Cutelyst web framework. %package -n %{_pluginUtilsSql}%{_sonum} Summary: SQL Utils Plugin for Cutelyst %description -n %{_pluginUtilsSql}%{_sonum} SQL utils plugin for the Cutelyst web framework. Provides helper methods for database access and to provide SQL queries into something userful for templates. %package -n %{_pluginUtilsPagination}%{_sonum} Summary: Pagination Plugin for Cutelyst %description -n %{_pluginUtilsPagination}%{_sonum} Pagination plugin for the Cutelyst web framework. %package -n %{_pluginUtilsLangSelect}%{_sonum} Summary: User Language Selection Plugin for Cutelyst %description -n %{_pluginUtilsLangSelect}%{_sonum} The LangSelect plugin for the Cutelyst web framework can automatically select a supported language that best fits the user's language settings, either set somewhere in your application or by analyzing the Accept-Language HTTP header. %package -n %{_pluginStatusMessage}%{_sonum} Summary: Status Message Plugin for Cutelyst %description -n %{_pluginStatusMessage}%{_sonum} Status message plugin for the Cutelyst web framework. %package -n %{_pluginValidator}%{_sonum} Summary: Validator Plugin for Cutelyst %description -n %{_pluginValidator}%{_sonum} Input validation plugin for the Cutelyst web framework. %package -n %{_pluginValidator}%{_sonum}-lang Summary: Translations for package %{_pluginValidator}%{_sonum} Requires: %{_pluginValidator}%{_sonum} = %{version}-%{release} Provides: %{_pluginValidator}%{_sonum}-lang-all = %{version}-%{release} Supplements: %{_pluginValidator}%{_sonum} BuildArch: noarch %description -n %{_pluginValidator}%{_sonum}-lang Provides translations for the \"%{_pluginValidator}%{_sonum}\" package. %package -n %{_pluginMemcached}%{_sonum} Summary: Memcached Plugin for Cutelyst %description -n %{_pluginMemcached}%{_sonum} Memcached plugin for the Cutelyst web framework. %package -n %{_pluginMemcached}%{_sonum}-lang Summary: Translations for package %{_pluginMemcached}%{_sonum} Requires: %{_pluginMemcached}%{_sonum} = %{version}-%{release} Provides: %{_pluginMemcached}%{_sonum}-lang-all = %{version}-%{release} Supplements: %{_pluginMemcached}%{_sonum} BuildArch: noarch %description -n %{_pluginMemcached}%{_sonum}-lang Provides translations for the \"%{_pluginMemcached}%{_sonum}\" package. %package -n %{_pluginMemcachedSession}%{_sonum} Summary: Memcached Session Store Plugin for Cutelyst %description -n %{_pluginMemcachedSession}%{_sonum} Memcached session store plugin for the Cutelyst web framework. %package -n %{_pluginCsrfProtection}%{_sonum} Summary: CSRF Protection Plugin for Cutelyst %description -n %{_pluginCsrfProtection}%{_sonum} Cutelyst plugin to protect input forms against Cross Site Request Forgery (CSRF) attacks. %package -n %{_pluginCsrfProtection}%{_sonum}-lang Summary: Translations for package %{_pluginCsrfProtection}%{_sonum} Requires: %{_pluginCsrfProtection}%{_sonum} = %{version}-%{release} Provides: %{_pluginCsrfProtection}%{_sonum}-lang-all = %{version}-%{release} Supplements: %{_pluginCsrfProtection}%{_sonum} BuildArch: noarch %description -n %{_pluginCsrfProtection}%{_sonum}-lang Provides translations for the \"%{_pluginCsrfProtection}%{_sonum}\" package. %package -n %{_pluginUa}%{_sonum} Summary: User Agent Plugin for Cutelyst %description -n %{_pluginUa}%{_sonum} The UserAgent plugin provides a helper singleton so that you have a thread_local QNetworkAccessManager with static methods to do more common REST tasks like sending a QJsonObject. %package -n %{_viewClearsilver}%{_sonum} Summary: Clearsilver View for Cutelyst Provides: cutelyst-clearsilver = %{version}-%{release} %description -n %{_viewClearsilver}%{_sonum} Clearsilver HTML template engine plugin for the Cutelyst web framework. %package -n %{_viewGrantlee}%{_sonum} Summary: Grantlee View for Cutelyst Provides: cutelyst-grantlee = %{version}-%{release} %description -n %{_viewGrantlee}%{_sonum} Grantlee Qt string template library plugin for Cutelyst web framework. %package -n %{_viewGrantlee}%{_sonum}-lang Summary: Translations for package %{_viewGrantlee}%{_sonum} Requires: %{_viewGrantlee}%{_sonum} = %{version}-%{release} Provides: %{_viewGrantlee}%{_sonum}-lang-all = %{version}-%{release} Supplements: %{_viewGrantlee}%{_sonum} BuildArch: noarch %description -n %{_viewGrantlee}%{_sonum}-lang Provides translations for the \"%{_viewGrantlee}%{_sonum}\" package. %package -n %{_wsgi}%{_sonum} Summary: Cutelyst WSGI Library %description -n %{_wsgi}%{_sonum} WSGI library for the Cutelyst web framework. %package -n uwsgi-%{name} Summary: Cutelyst uWSGI Plugin Requires: uwsgi %description -n uwsgi-%{name} Cutelyst plugin for the uWSGI application server container. %package -n %{_eventloop}%{_sonum} Summary: Cutelyst Epoll Event Loop %description -n %{_eventloop}%{_sonum} Cutelyst event loop based on epoll for linux systems. %package devel-doc Summary: Cutelyst Web Framework - API Documentation Requires: qt5-qtdoc %description devel-doc API documentation files for the Cutelyst web framework. This includes HTML files as well as QtHelp system files. %package doc Summary: Cutelyst Web Framework - Man Pages %description doc Man pages for the Cutelyst Web Framework - mostly describing configuration options for plugins. %package plugins Summary: Cutelyst Action Plugins Provides: cutelyst-common = %{version}-%{release} %description plugins Cutelyst web framework plugins for the following actions: REST, RenderView, RoleACL %package qtcreator Summary: Cutelyst QtCreator templates Requires: qt-creator %description qtcreator Cutelyst template files for QtCreator %prep %autosetup -p1 %build mkdir -p %{_target_platform} pushd %{_target_platform} %cmake .. \ -DCMAKE_MODULES_INSTALL_DIR=%{_datadir}/cmake/Modules \ -DBUILD_TESTS:BOOL=ON \ -DPLUGIN_VIEW_EMAIL:BOOL=ON \ -DPLUGIN_VIEW_GRANTLEE:BOOL=ON \ -DPLUGIN_VIEW_CLEARSILVER:BOOL=ON \ -DPLUGIN_VALIDATOR_PWQUALITY:BOOL=ON \ -DPLUGIN_UWSGI:BOOL=ON \ -DUWSGI_PLUGINS_DIR:PATH=%{_libdir}/uwsgi \ -DUWSGI_EXEC_PATH:FILEPATH=%{_sbindir}/uwsgi \ -DCUTELYST_PLUGINS_DIR:PATH=%{_libdir}/%{name} \ -USE_JEMALLOC=ON \ -DDOXYGEN_TIMESTAMP:STRING="NO" \ -DQHG_LOCATION:FILEPATH=%{_bindir}/qhelpgenerator-qt5 \ -DPLUGIN_MEMCACHED:BOOL=ON \ -DPLUGIN_STATICCOMPRESSED:BOOL=ON \ -DPLUGIN_STATICCOMPRESSED_ZOPFLI:BOOL=ON \ -DPLUGIN_STATICCOMPRESSED_BROTLI:BOOL=ON \ -DPLUGIN_CSRFPROTECTION:BOOL=ON popd %make_build -C %{_target_platform} %make_build docs -C %{_target_platform} %install %make_install -C %{_target_platform} mkdir -p %{buildroot}%{_libdir}/%{name}-apps mkdir -p %{buildroot}%{_qt5_docdir}/%{name} cp -r %{_target_platform}/dox/* %{buildroot}%{_qt5_docdir}/%{name} cp %{_target_platform}/%{name}2.tags %{buildroot}%{_qt5_docdir}/%{name} cp %{_target_platform}/%{name}2.qch %{buildroot}%{_qt5_docdir} mkdir -p %{buildroot}%{_datadir}/qtcreator/templates/wizards/projects/%{name} cp -r qtcreator/cutelyst/projects/* %{buildroot}%{_datadir}/qtcreator/templates/wizards/projects/%{name} mkdir -p %{buildroot}%{_datadir}/qtcreator/templates/wizards/classes/%{name}-controller cp -r qtcreator/cutelyst/classes/* %{buildroot}%{_datadir}/qtcreator/templates/wizards/classes/%{name}-controller %files %license COPYING %doc README.md AUTHORS %{_bindir}/%{name}2 %{_mandir}/man1/%{name}2.1* %files -n %{name}-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/cutelystcmd.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/cutelystcmd.en.qm %files -n %{name}-wsgi2 %{_bindir}/%{name}-wsgi2 %dir %{_libdir}/%{name}-apps %{_mandir}/man1/%{name}-wsgi2.1* %files -n %{name}-wsgi2-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/cutelystwsgi.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/cutelystwsgi.en.qm %files -n %{_libname}-%{_sonum} %license COPYING %doc AUTHORS README.md %{_libdir}/%{_libname}.so.* %files -n %{_libname}-%{_sonum}-lang %dir %{_datadir}/cutelyst%{_sonum} %dir %{_datadir}/cutelyst%{_sonum}/translations %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/cutelystcore.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/cutelystcore.en.qm %files -n %{_pluginAuth}%{_sonum} %{_libdir}/%{_pluginAuth}.so.* %files -n %{_pluginSession}%{_sonum} %{_libdir}/%{_pluginSession}.so.* %files -n %{_pluginStaticsimple}%{_sonum} %{_libdir}/%{_pluginStaticsimple}.so.* %files -n %{_pluginStaticCompressed}%{_sonum} %{_libdir}/%{_pluginStaticCompressed}.so.* %files -n %{_pluginJsonview}%{_sonum} %{_libdir}/%{_pluginJsonview}.so.* %files -n %{_pluginEmailView}%{_sonum} %{_libdir}/%{_pluginEmailView}.so.* %files -n %{_pluginUtilsSql}%{_sonum} %{_libdir}/%{_pluginUtilsSql}.so.* %files -n %{_pluginUtilsPagination}%{_sonum} %{_libdir}/%{_pluginUtilsPagination}.so.* %files -n %{_pluginUtilsLangSelect}%{_sonum} %{_libdir}/%{_pluginUtilsLangSelect}.so.* %files -n %{_pluginStatusMessage}%{_sonum} %{_libdir}/%{_pluginStatusMessage}.so.* %files -n %{_pluginValidator}%{_sonum} %{_libdir}/%{_pluginValidator}.so.* %files -n %{_pluginValidator}%{_sonum}-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/plugin_utils_validator.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/plugin_utils_validator.en.qm %files -n %{_pluginMemcached}%{_sonum} %{_libdir}/%{_pluginMemcached}.so.* %files -n %{_pluginMemcached}%{_sonum}-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/plugin_memcached.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/plugin_memcached.en.qm %files -n %{_pluginMemcachedSession}%{_sonum} %{_libdir}/%{_pluginMemcachedSession}.so.* %files -n %{_pluginCsrfProtection}%{_sonum} %{_libdir}/%{_pluginCsrfProtection}.so.* %files -n %{_pluginCsrfProtection}%{_sonum}-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/plugin_csrfprotection.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/plugin_csrfprotection.en.qm %files -n %{_pluginUa}%{_sonum} %{_libdir}/%{_pluginUa}.so.* %files -n %{_viewClearsilver}%{_sonum} %{_libdir}/%{_viewClearsilver}.so.* %files -n %{_viewGrantlee}%{_sonum} %{_libdir}/%{_viewGrantlee}.so.* %files -n %{_viewGrantlee}%{_sonum}-lang %lang(de) %{_datadir}/cutelyst%{_sonum}/translations/plugin_view_grantlee.de.qm %lang(en) %{_datadir}/cutelyst%{_sonum}/translations/plugin_view_grantlee.en.qm %files -n %{_wsgi}%{_sonum} %{_libdir}/%{_wsgi}.so.* %files -n %{_eventloop}%{_sonum} %{_libdir}/%{_eventloop}.so.* %files devel-doc %{_qt5_docdir}/%{name}2.qch %{_qt5_docdir}/%{name} %files doc %{_mandir}/man5/Cutelyst2Qt5Session.5* %{_mandir}/man5/Cutelyst2Qt5Memcached.5* %{_mandir}/man5/Cutelyst2Qt5MemcachedSessionStore.5* %{_mandir}/man5/Cutelyst2Qt5CSRFProtection.5* %files plugins %{_libdir}/%{name} %files devel %{_includedir}/%{name}2-qt5 %{_libdir}/*.so %{_libdir}/pkgconfig/Cutelyst2Qt5*.pc %{_libdir}/cmake/Cutelyst2Qt5 %files -n uwsgi-%{name} %{_libdir}/uwsgi/%{name}2_plugin.so %files qtcreator %{_datadir}/qtcreator/templates/wizards/projects/%{name} %{_datadir}/qtcreator/templates/wizards/classes/%{name}-controller %changelog * Sat Dec 7 2019 Dakota Williams - Initial packaging