%global forgeurl https://github.com/PurpleI2P/i2pd
%global version 2.56.0
%global commit 46f530bfcd6b32ecb6557870ec5922a230503903
%global date 20250319
%global _vpath_srcdir build
%global source_date_epoch_from_changelog 0
%forgemeta

Name: i2pd
Version: %{forgeversion}
Release: %{autorelease}
Summary: I2P anonymous network
License: BSD-3-Clause
URL: https://i2pd.website/
Source0: %{forgesource}
Source1: %{name}.sysusers
Source2: %{name}.howto
BuildRequires: cmake
BuildRequires: gcc-g++
BuildRequires: chrpath
BuildRequires: zlib-devel
BuildRequires: boost-devel
BuildRequires: openssl-devel
BuildRequires: systemd-rpm-macros
Requires: logrotate

%description
I2P is an anonymous overlay network.
This software implementation is written in C++.

%prep
%forgesetup
%__sed -i -e 's/^#//' contrib/tunnels.d/*.conf
%__sed -i -e '9i CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE' \
contrib/%{name}.service
%__sed -i -e '8i cmake_policy(VERSION ${CMAKE_VERSION})' \
%{_vpath_srcdir}/CMakeLists.txt

%build
%cmake \
-DWITH_HARDENING=ON \
-DWITH_LIBRARY=OFF \
-DWITH_UPNP=OFF \
-DBUILD_SHARED_LIBS:BOOL=OFF
%cmake_build
chrpath -d redhat-linux-build/%{name}

%install
%__install -p -d -m 755 %{buildroot}%{_sysconfdir}/%{name}/tunnels.conf.d
%__install -p -d -m 755 %{buildroot}%{_datadir}/%{name}
%__install -p -d -m 700 %{buildroot}%{_sharedstatedir}/%{name}
%__install -p -d -m 700 %{buildroot}%{_localstatedir}/log/%{name}
%__install -p -D -m 755 -t %{buildroot}%{_bindir} redhat-linux-build/%{name}
%__install -p -D -m 644 -t %{buildroot}%{_mandir}/man1 debian/%{name}.1
%__install -p -D -m 644 -t %{buildroot}%{_unitdir} contrib/%{name}.service
%__install -p -D -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib/*.conf
%__install -p -D -m 644 -t %{buildroot}%{_pkgdocdir} %{SOURCE2} README.md \
contrib/subscriptions.txt contrib/tunnels.d/*.conf
%__install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}.conf
%__install -p -D -m 644 contrib/%{name}.logrotate \
%{buildroot}%{_sysconfdir}/logrotate.d/%{name}
%__cp -f -r contrib/certificates %{buildroot}%{_datadir}/%{name}
%__ln_s -f -T ../../..%{_datadir}/%{name}/certificates \
%{buildroot}%{_sharedstatedir}/%{name}/certificates

%pre
%sysusers_create_compat %{SOURCE1}

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%postun
%systemd_postun_with_restart %{name}.service

%files
%license LICENSE
%doc %{_pkgdocdir}
%dir %attr(-,%{name},%{name}) %{_sharedstatedir}/*
%dir %attr(-,%{name},%{name}) %{_localstatedir}/log/*
%config(noreplace) %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/logrotate.d/*
%{_datadir}/%{name}
%{_sharedstatedir}/%{name}/*
%{_sysusersdir}/*
%{_unitdir}/*
%{_bindir}/*
%{_mandir}/man1/*