File hpn-ssh.spec of Package hpn-ssh
#
# spec file for package hpn-ssh
#
# Copyright (c) 2024, 2025 Boian Berberov
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if 0%{?rhel_version} < 800 || 0%{?centos_version} < 800
%bcond_with libfido2_cond
%else
%bcond_without libfido2_cond
%endif
%if 0%{?rhel_version} < 700 || 0%{?centos_version} < 700
%bcond_with krb5_cond
%bcond_with libsystemd_cond
%else
%bcond_without krb5_cond
%bcond_without libsystemd_cond
%endif
Name: hpn-ssh
Version: 18.7.1
Release: 0%{?dist}
Group: Productivity/Networking/SSH
Summary: OpenSSH modified for Long Fat Networks
License: BSD-2-Clause AND MIT
URL: https://www.psc.edu/hpn-ssh-home/
Source0: https://github.com/rapier1/%{name}/archive/refs/tags/hpn-%{version}.tar.gz
BuildRequires: automake
# BEGIN multibuild BuildRequires: GCC all
%if 0%{?is_opensuse}
%if 0%{?sle_version} <= 150600
%if 0%{?sle_version} == 150600
BuildRequires: gcc13
BuildRequires: gcc13-c++
%global multi_gcc gcc-13
%global multi_gpp gcc-13 -E
%global multi_gxx g++-13
%else
%if 0%{?sle_version} == 150500
BuildRequires: gcc12
BuildRequires: gcc12-c++
%global multi_gcc gcc-12
%global multi_gpp gcc-12 -E
%global multi_gxx g++-12
%else
BuildRequires: gcc >= 10
BuildRequires: gcc-c++ >= 10
%global multi_gcc gcc
%global multi_gpp gcc -E
%global multi_gxx g++
%endif
%endif
%else
BuildRequires: gcc
BuildRequires: gcc-c++
%global multi_gcc gcc
%global multi_gpp gcc -E
%global multi_gxx g++
%endif
%else
BuildRequires: gcc
BuildRequires: gcc-c++
%global multi_gcc gcc
%global multi_gpp gcc -E
%global multi_gxx g++
%endif
# END multibuild BuildRequires: GCC all
BuildRequires: pkgconfig
%if 0%{with krb5_cond}
BuildRequires: pkgconfig(krb5)
%endif
%if 0%{with libfido2_cond}
BuildRequires: pkgconfig(libfido2) >= 1.2.0
%endif
%if 0%{with libsystemd_cond}
BuildRequires: pkgconfig(libsystemd)
%endif
BuildRequires: pkgconfig(openssl) >= 1.1.1
BuildRequires: pkgconfig(zlib)
BuildRequires: libedit-devel
BuildRequires: pam-devel
Requires: %{name}-clients = %{version}-%{release}
Requires: %{name}-server = %{version}-%{release}
%description
HPN-SSH is a series of modifications to OpenSSH, the predominant implementation of the ssh protocol. It was originally
developed to address performance issues when using ssh on high speed long distance networks (also known as Long Fat
Networks: LFNs). By taking advantage of automatically optimized receive buffers HPN-SSH could improve performance
dramatically on these paths. Later advances include; disabling encryption after authentication to transport
non-sensitive bulk data, modifying the AES-CTR cipher to use multiple CPU cores, more detailed connection logging, and
peak throughput values in the scp progress bar.
This is a dummy package that pulls in both the client and server components.
%package common
Summary: HPN-SSH common files
Group: Productivity/Networking/SSH
%description common
HPN-SSH is a series of modifications to OpenSSH, the predominant implementation of the ssh protocol. It was originally
developed to address performance issues when using ssh on high speed long distance networks (also known as Long Fat
Networks: LFNs). By taking advantage of automatically optimized receive buffers HPN-SSH could improve performance
dramatically on these paths. Later advances include; disabling encryption after authentication to transport
non-sensitive bulk data, modifying the AES-CTR cipher to use multiple CPU cores, more detailed connection logging, and
peak throughput values in the scp progress bar.
This package contains common files for both client and server components.
%package clients
Summary: HPN-SSH client applications
Group: Productivity/Networking/SSH
Requires: %{name}-common = %{version}-%{release}
%description clients
HPN-SSH is a series of modifications to OpenSSH, the predominant implementation of the ssh protocol. It was originally
developed to address performance issues when using ssh on high speed long distance networks (also known as Long Fat
Networks: LFNs). By taking advantage of automatically optimized receive buffers HPN-SSH could improve performance
dramatically on these paths. Later advances include; disabling encryption after authentication to transport
non-sensitive bulk data, modifying the AES-CTR cipher to use multiple CPU cores, more detailed connection logging, and
peak throughput values in the scp progress bar.
This package contains the clients applications.
%package server
Summary: HPN-SSH server
Group: Productivity/Networking/SSH
Requires: %{name}-common = %{version}-%{release}
%description server
HPN-SSH is a series of modifications to OpenSSH, the predominant implementation of the ssh protocol. It was originally
developed to address performance issues when using ssh on high speed long distance networks (also known as Long Fat
Networks: LFNs). By taking advantage of automatically optimized receive buffers HPN-SSH could improve performance
dramatically on these paths. Later advances include; disabling encryption after authentication to transport
non-sensitive bulk data, modifying the AES-CTR cipher to use multiple CPU cores, more detailed connection logging, and
peak throughput values in the scp progress bar.
This package contains the server.
%prep
%setup -q -n %{name}-hpn-%{version}
# Check rundir and empty
ls -ld %{_rundir}
%if 0%{?is_opensuse} || 0%{?sle_version}
ls -ld %{_localstatedir}/lib/empty
%else
ls -ld %{_localstatedir}/empty
%endif
%build
# Set proper GCC
export CC=%{multi_gcc}
export CXX=%{multi_gxx}
autoreconf -fiv
%configure \
--disable-strip \
\
--libexecdir=%{_libexecdir}/%{name} \
--with-pid-dir=%{_rundir} \
%if 0%{?is_opensuse} || 0%{?sle_version}
--with-privsep-path=%{_localstatedir}/lib/empty \
%endif
\
%if 0%{with krb5_cond}
--with-kerberos5 \
%else
--without-kerberos5 \
%endif
\
--with-libedit \
--with-mantype=doc \
--with-pam \
\
%if 0%{with libfido2_cond}
--with-security-key-builtin \
%else
--without-security-key-builtin \
%endif
\
%if 0%{with libsystemd_cond}
--with-systemd
%else
--without-systemd
%endif
%make_build
%install
%make_install
%files
# hpn-ssh is split into -client and -server
%files common
# %%license add-license-file-here
# %%doc add-docs-here
%dir %{_sysconfdir}/hpnssh
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/hpnssh/moduli
%attr(0755,root,root) %{_bindir}/hpnssh-keygen
%dir %{_libexecdir}/%{name}
%attr(0444,root,root) %{_mandir}/man1/hpnssh-keygen.1*
%attr(0444,root,root) %{_mandir}/man5/hpnmoduli.5*
%files clients
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/hpnssh/ssh_config
%attr(0755,root,root) %{_bindir}/hpnscp
%attr(0755,root,root) %{_bindir}/hpnsftp
%attr(0755,root,root) %{_bindir}/hpnssh
%attr(0755,root,root) %{_bindir}/hpnssh-add
%attr(0755,root,root) %{_bindir}/hpnssh-agent
%attr(0755,root,root) %{_bindir}/hpnssh-keyscan
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnssh-keysign
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnssh-pkcs11-helper
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnssh-sk-helper
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnsshd-session
%attr(0444,root,root) %{_mandir}/man1/hpnscp.1*
%attr(0444,root,root) %{_mandir}/man1/hpnsftp.1*
%attr(0444,root,root) %{_mandir}/man1/hpnssh-add.1*
%attr(0444,root,root) %{_mandir}/man1/hpnssh-agent.1*
%attr(0444,root,root) %{_mandir}/man1/hpnssh-keyscan.1*
%attr(0444,root,root) %{_mandir}/man1/hpnssh.1*
%attr(0444,root,root) %{_mandir}/man5/hpnssh_config.5*
%attr(0444,root,root) %{_mandir}/man8/hpnssh-keysign.8*
%attr(0444,root,root) %{_mandir}/man8/hpnssh-pkcs11-helper.8*
%attr(0444,root,root) %{_mandir}/man8/hpnssh-sk-helper.8*
%files server
%attr(0640,root,root) %config(noreplace) %{_sysconfdir}/hpnssh/sshd_config
%attr(0755,root,root) %{_sbindir}/hpnsshd
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnsftp-server
%attr(0755,root,root) %{_libexecdir}/%{name}/hpnsshd-auth
%attr(0444,root,root) %{_mandir}/man5/hpnsshd_config.5*
%attr(0444,root,root) %{_mandir}/man8/hpnsftp-server.8*
%attr(0444,root,root) %{_mandir}/man8/hpnsshd.8*
%changelog
* Tue Jul 15 2025 Boian Berberov
- Added changelog for openSUSE Leap 16