## START: Set by rpmautospec
## (rpmautospec version 0.7.3)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
    release_number = 1;
    base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
    print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec

Summary:        C++ parallel computing and asynchronous networking engine
Name:           workflow
# Main files are available under Apache-2.0 license except
# src/util/crc32c.h available under BSD-2-Clause license
# src/util/crc32c.c available under Zlib license
# src/kernel/rbtree.c available under GPL-2.0-or-later
# src/kernel/rbtree.h available under GPL-2.0-or-later
License:        Apache-2.0 AND BSD-2-Clause AND Zlib AND GPL-2.0-or-later

Version:        0.11.8
Release:        %autorelease

URL:            https://github.com/sogou/workflow
Source0:        %{url}/archive/v%{version}/%{name}-%{version}.tar.gz

BuildRequires:  cmake
BuildRequires:  gcc-c++
BuildRequires:  ninja-build
BuildRequires:  gtest-devel
BuildRequires:  openssl-devel
%if 0%{?fedora} >= 41
BuildRequires:  openssl-devel-engine
%endif
%ifnarch %{ix86}
# Needed for redis check
BuildRequires:  redis
%endif
BuildRequires:  sed
# Needed for memory check
%ifarch %{valgrind_arches}
BuildRequires:  valgrind
%endif

%global _description %{expand:
As Sogou`s C++ server engine, Sogou C++ Workflow supports almost all back-end
C++ online services of Sogou, including all search services, cloud input
method, online advertisements, etc., handling more than 10 billion requests
every day. This is an enterprise-level programming engine in light and elegant
design which can satisfy most C++ back-end development requirements. }

%description
%_description

%package devel
Summary:        C++ parallel computing and asynchronous networking engine
Requires:       %{name}%{?_isa} = %{version}-%{release}

%description devel
%_description

%package docs
Summary:       C++ parallel computing and asynchronous networking engine
BuildArch:     noarch

%description docs
%_description

%prep
%autosetup
# Rename files to make installation of documentation easier
pushd docs
pushd en
rename .md .en.md *.md
mv *.* ..
popd
popd

%build

%cmake -GNinja
%cmake_build
# remove copies of header files to minimize
# size of debugsource package, these files are
# copied into a _include directory
rm -r _include
mkdir -p _include/workflow
ln -s src/algorithm/*.h   _include/workflow/
ln -s src/algorithm/*.inl _include/workflow/
ln -s src/client/*.h      _include/workflow/
ln -s src/kernel/*.h      _include/workflow/
ln -s src/factory/*.h     _include/workflow/
ln -s src/factory/*.inl   _include/workflow/
ln -s src/manager/*.h     _include/workflow/
ln -s src/manager/*.inl   _include/workflow/
ln -s src/nameservice/*.h _include/workflow/
ln -s src/protocol/*.h    _include/workflow/
ln -s src/protocol/*.inl  _include/workflow/
ln -s src/server/*.h      _include/workflow/
ln -s src/util/*.h        _include/workflow/

%install
%cmake_install

# Package Readmes separately
rm %{buildroot}/%{_docdir}/%{name}-%{version}/README.md
# Do not package static library
rm %{buildroot}/%{_libdir}/libworkflow.a

%check
# Run tests
make check

%files
%license LICENSE LICENSE_GPLV2
%doc README.md
%doc README_cn.md
%{_libdir}/libworkflow.so.0.*
%{_libdir}/libworkflow.so.0

%files devel
%{_libdir}/libworkflow.so
%dir %{_libdir}/cmake/%{name}
%{_libdir}/cmake/%{name}/*.cmake
%dir %{_includedir}/workflow
%{_includedir}/workflow/*.h
%{_includedir}/workflow/*.inl

%files docs
%license LICENSE
%doc docs/*.md
%doc tutorial/


%changelog
## START: Generated by rpmautospec
* Mon Mar 03 2025 Packit <hello@packit.dev> - 0.11.8-1
- Update to 0.11.8 upstream release
- Resolves: rhbz#2349543

* Wed Feb 26 2025 David Abdurachmanov <davidlt@rivosinc.com> - 0.11.7-3
- Properly check valgrind arches

* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild

* Mon Jan 06 2025 Packit <hello@packit.dev> - 0.11.7-1
- Update to 0.11.7 upstream release
- Resolves: rhbz#2335818

* Wed Oct 02 2024 Benson Muite <benson_muite@emailplus.org> - 0.11.6-1
- Update to 0.11.6

* Thu Aug 08 2024 topazus <topazus@outlook.com> - 0.11.5-1
- 0.11.5; rhbz#2301367 and rhbz#2301662

* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild

* Fri May 17 2024 Packit <hello@packit.dev> - 0.11.4-1
- Update to 0.11.4 upstream release
- Resolves: rhbz#2280963

* Wed Apr 17 2024 topazus <topazus@outlook.com> - 0.11.3-1
- 0.11.3

* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Sat Nov 11 2023 Benson Muite <benson_muite@emailplus.org> - 0.11.1-1
- Update to new release

* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

* Tue Jun  6 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.7-1
- Update to new release

* Sat Feb 25 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.6-1
- Update to new release

* Thu Feb 23 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.5-4
- Get tests to work
- Add redis and valgrind
- Use GTest with c++14

* Wed Feb 22 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.5-3
- Remove static library rather than use exclude macro
- Use tutorial instead of tests

* Fri Jan 13 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.5-2
- Ensure tests run

* Wed Jan 11 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.5-1
- Version update
- Add copy of GPL license

* Mon Jan 02 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.4-2
- Do not include static library
- Update license information

* Sun Jan 01 2023 Benson Muite <benson_muite@emailplus.org> - 0.10.4-1
- Initial packaging

## END: Generated by rpmautospec