%if 0%{?el8} || 0%{?fc34}
%ifarch s390x
# ConnectionTest fails
%bcond_with tests
%else
%bcond_without tests
%endif
%else
%bcond_without tests
%endif
%global _firewalld_dir %{_prefix}/lib/firewalld
Name: et
Version: 6.1.9
Release: %autorelease
Summary: Remote shell that survives IP roaming and disconnect
License: ASL 2.0
URL: https://mistertea.github.io/EternalTerminal/
Source0: https://github.com/MisterTea/EternalTerminal/archive/et-v%{version}.tar.gz
Source1: et.xml
# SIGSTKSZ is no longer constant in glibc > 2.33 but a function returning a long
# cast the result before taking max
# upstream patchset: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3261335
Patch0: et-6.1.9-fix-breakpad-sigstksz.patch
BuildRequires: boost-devel
BuildRequires: cmake3
BuildRequires: firewalld-filesystem
BuildRequires: gcc-c++
BuildRequires: gflags-devel
BuildRequires: libatomic
BuildRequires: libcurl-devel
BuildRequires: libsodium-devel
BuildRequires: libutempter-devel
BuildRequires: ncurses-devel
BuildRequires: openssl-devel
BuildRequires: protobuf-compiler
BuildRequires: protobuf-lite-devel
BuildRequires: systemd
# Bundled libraries
# cat .gitmodules | grep submodule | sort
# for tarball, s/external/external_imported
Provides: bundled(base64) = 0
# Catch2 is only a test framework
# external_imported/cotire/CMake/cotire.cmake
Provides: bundled(cotire) = 1.8.0
# grep User-Agent external/cpp-httlib/httplib.h
# cross-check with the git checkout for specific version
Provides: bundled(cpp-httplib) = 0.7.18
# external/cxxopts/include/cxxopts.hpp
Provides: bundled(cxxopts) = 2.2.0
# external/easylogingcpp/CMakeLists.txt
Provides: bundled(easyloggingpp) = 9.96.7
# external/msgpack-c/include/msgpack/version_master.h
Provides: bundled(msgpack) = 3.3.0
# external/json/CMakeLists.txt
Provides: bundled(nlohmann_json) = 3.9.1
# external/PlatformFolders/CMakeLists.txt
Provides: bundled(PlatformFolders) = 4.0.0
# sanitizers-cmake is only used when building
%ifnarch ppc64le s390x
Provides: bundled(sentry-native) = 0.4.7
%endif
# external/simpleini/SimpleIni.h
Provides: bundled(simpleini) = 4.17
# https://github.com/r-lyeh-archived/sole
Provides: bundled(sole) = 1.0.1
Provides: bundled(ThreadPool) = 0
Provides: bundled(UniversalStacktrace) = 0
# vcpkg is disabled
%{?systemd_requires}
%description
Eternal Terminal (ET) is a remote shell that automatically reconnects without
interrupting the session.
%prep
# %%autosetup -p1 -n EternalTerminal-et-v%{version}
%setup -q -n EternalTerminal-et-v%{version}
cd external_imported/sentry-native/external/breakpad
%patch0 -p1 -b .sigstksz
%build
%cmake . \
%ifarch ppc64le s390x
-DDISABLE_SENTRY=TRUE \
%endif
-DDISABLE_VCPKG=TRUE
%cmake_build
%install
%cmake_install
mkdir -p \
%{buildroot}%{_unitdir} \
%{buildroot}%{_sysconfdir} \
%{buildroot}%{_firewalld_dir}/services
install -m 0644 -p systemctl/et.service %{buildroot}%{_unitdir}/et.service
install -m 0644 -p etc/et.cfg %{buildroot}%{_sysconfdir}/et.cfg
install -m 0644 %{SOURCE1} %{buildroot}%{_firewalld_dir}/services/et.xml
%if %{with tests}
%check
%if 0%{?fedora}
%ctest
%else
%ctest --verbose
%endif
%endif
%post
%systemd_post et.service
%firewalld_reload
%preun
%systemd_preun et.service
%postun
%systemd_postun_with_restart et.service
%firewalld_reload
%files
%license LICENSE
%doc README.md
%{_bindir}/et
%{_bindir}/etserver
%{_bindir}/etterminal
%{_bindir}/htm
%{_bindir}/htmd
%dir %{_firewalld_dir}
%dir %{_firewalld_dir}/services
%{_firewalld_dir}/services/et.xml
%config(noreplace) %{_sysconfdir}/et.cfg
%{_unitdir}/et.service
%changelog
%autochangelog