%if 0%{!?mkrel:1} %define mkrel(c) %{1}%{?dist} %endif %if 0%{!?_userunitdir:1} %define _userunitdir %{_prefix}/lib/systemd/user %endif %if 0%{!?pyproject_wheel:1} %define pyproject_wheel pyproject-build -nwx %endif %if 0%{!?pyproject_install:1} %define pyproject_install pip install --disable-pip-version-check --ignore-installed --no-deps --prefix=%{buildroot}%{_prefix} . %endif Name: imapmirror Version: 8.0.4 Release: %mkrel 1.1 Summary: IMAP email synchronisation tool, fork and drop-in replacement for offlineimap3 License: GPLv2+ URL: https://github.com/IMAPMirror/imapmirror Source0: https://github.com/IMAPMirror/imapmirror/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz %global min_python_version 3.8 %global oname offlineimap # Unmerged patches from offlineimap Patch5: offlineimap-find-cacerts.diff Patch6: imapmirror-remove-distro.diff Patch7: offlineimap-doc.diff # For some reason, imapmirror requires gssapi[kerberos], portalocker, and # portalocker[cygwin] when not patched but offlineimap doesn't. Patch9: imapmirror-loosen-requirements.diff BuildArch: noarch BuildRequires: pkgconfig(python3) >= %{min_python_version} BuildRequires: python3dist(imaplib2) >= 3.5 BuildRequires: python3dist(pip) BuildRequires: python3dist(setuptools) >= 51 BuildRequires: python3dist(wheel) BuildRequires: python3dist(rfc6555) # Documentation support: BuildRequires: (a2x or asciidoc or %{_bindir}/a2x) BuildRequires: make BuildRequires: gzip BuildRequires: python3dist(sphinx) BuildRequires: (rpm_macro(pyproject_wheel) or python3dist(build)) Requires: python3 >= %{min_python_version} Requires: python3dist(imaplib2) >= 3.5 Requires: python3dist(urllib3) Requires: python3dist(rfc6555) Recommends: python3dist(gssapi) Recommends: python3dist(portalocker) Recommends: python3dist(keyring) Provides: offlineimap = %{version}-%{release} Provides: offlineimap3 = %{version}-%{release} Conflicts: offlineimap3 < %{version} %if 0%{?pyproject_buildrequires:1} %generate_buildrequires %pyproject_buildrequires %endif %description IMAPMirror is software that downloads your email mailbox(es) as local Maildirs. IMAPMirror will synchronize both sides via IMAP. It is a fork of OfflineIMAP3. %prep %autosetup -p1 %build %pyproject_wheel # 'make docs' builds the man pages and the api documentation. make -C docs SPHINXBUILD='%{__python3} -msphinx' %install %pyproject_install pushd %{buildroot}%{_bindir} mv %{oname}.py %{oname} %if 0%{?py3_shebang_fix:1} # Fix python shebang in the offlineimap program. %py3_shebang_fix %{buildroot}/%{_bindir}/%{oname} %endif ln -s %{oname} %{name} popd mkdir -p %{buildroot}/%{_mandir}/man1 mkdir -p %{buildroot}/%{_mandir}/man7 install -m644 -p docs/%{oname}.1 %{buildroot}/%{_mandir}/man1/ install -m644 -p docs/%{oname}ui.7 %{buildroot}/%{_mandir}/man7/ mkdir -p %{buildroot}/%{_userunitdir} install -m644 -p contrib/systemd/*.service contrib/systemd/*.timer %{buildroot}/%{_userunitdir} %check ./%{oname}.py -V %clean rm -f %{_builddir}/%{name}-%{version}*pyproject* rm -rf %{_buildir}/.pyproject-builddir rm -rf %{buildroot} %files %license COPYING %doc %{oname}.conf* docs/html/*.html %{_bindir}/%{name} %{_bindir}/%{oname} %exclude %{_bindir}/__pycache__ %{python3_sitelib}/%{oname}/ %{python3_sitelib}/%{name}-*.*-info %{_mandir}/man1/%{oname}.1* %{_mandir}/man7/%{oname}ui.7* %{_userunitdir}/