]> git.pld-linux.org Git - packages/openssh.git/blobdiff - openssh.spec
- added tests-reuseport (fixes regression tests failure due to missing SO_REUSEPORT...
[packages/openssh.git] / openssh.spec
index ef673d8a6681a2bbbbab12128bd681e6a96a2ee4..f7d4455ecc1ebd833fe5e58e4b80fe06e0d5bae3 100644 (file)
 %bcond_without libedit         # without libedit (editline/history support in sftp client)
 %bcond_without kerberos5       # without kerberos5 support
 %bcond_without selinux         # build without SELinux support
+%bcond_without libseccomp      # use libseccomp for seccomp privsep (requires 3.5 kernel)
 %bcond_with    hpn             # High Performance SSH/SCP - HPN-SSH including Cipher NONE (broken too often)
 %bcond_without tests
 
 # gtk2-based gnome-askpass means no gnome1-based
 %{?with_gtk:%undefine with_gnome}
 
+%ifnarch x32
+# libseccomp requires 3.5 kernel, avoid such requirement where possible (non-x32 arches)
+%undefine      with_libseccomp
+%endif
+
+%define        sandbox %{?with_libseccomp:lib}seccomp_filter
+
+%ifarch x32
+%{!?with_libseccomp:%error openssh seccomp implementation is broken! do not disable libseccomp on x32}
+%endif
+
 %if "%{pld_release}" == "ac"
 %define                pam_ver 0.79.0
 %else
-%define                pam_ver 1:1.1.5-5
+%define                pam_ver 1:1.1.8-5
 %endif
 Summary:       OpenSSH free Secure Shell (SSH) implementation
 Summary(de.UTF-8):     OpenSSH - freie Implementation der Secure Shell (SSH)
@@ -33,13 +45,13 @@ Summary(pt_BR.UTF-8):       Implementação livre do SSH
 Summary(ru.UTF-8):     OpenSSH - свободная реализация протокола Secure Shell (SSH)
 Summary(uk.UTF-8):     OpenSSH - вільна реалізація протоколу Secure Shell (SSH)
 Name:          openssh
-Version:       6.7p1
+Version:       6.9p1
 Release:       1
 Epoch:         2
 License:       BSD
 Group:         Applications/Networking
 Source0:       ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/%{name}-%{version}.tar.gz
-# Source0-md5: 3246aa79317b1d23cae783a3bf8275d6
+# Source0-md5: 0b161c44fc31fbc6b76a6f8ae639f16f
 Source1:       http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
 # Source1-md5: 66943d481cc422512b537bcc2c7400d1
 Source2:       %{name}d.init
@@ -48,12 +60,12 @@ Source4:    %{name}.sysconfig
 Source5:       ssh-agent.sh
 Source6:       ssh-agent.conf
 Source7:       %{name}-lpk.schema
-Source8:       %{name}d.upstart
 Source9:       sshd.service
 Source10:      sshd-keygen
 Source11:      sshd.socket
 Source12:      sshd@.service
 Patch0:                %{name}-no_libnsl.patch
+Patch1:                %{name}-tests-reuseport.patch
 Patch2:                %{name}-pam_misc.patch
 Patch3:                %{name}-sigpipe.patch
 # http://pkgs.fedoraproject.org/gitweb/?p=openssh.git;a=tree
@@ -67,12 +79,11 @@ Patch8:             ldap-helper-sigpipe.patch
 Patch9:                %{name}-5.2p1-hpn13v6.diff
 Patch10:       %{name}-include.patch
 Patch11:       %{name}-chroot.patch
-
 Patch14:       %{name}-bind.patch
 Patch15:       %{name}-disable_ldap.patch
+Patch16:       libseccomp-sandbox.patch
 URL:           http://www.openssh.com/portable.html
 BuildRequires: %{__perl}
-%{?with_tests:BuildRequires:   %{name}-server}
 %{?with_audit:BuildRequires:   audit-libs-devel}
 BuildRequires: autoconf >= 2.50
 BuildRequires: automake
@@ -80,6 +91,7 @@ BuildRequires:        automake
 %{?with_gtk:BuildRequires:     gtk+2-devel}
 %{?with_kerberos5:BuildRequires:       heimdal-devel >= 0.7}
 %{?with_libedit:BuildRequires: libedit-devel}
+BuildRequires: libseccomp-devel
 %{?with_selinux:BuildRequires: libselinux-devel}
 %{?with_ldap:BuildRequires:    openldap-devel}
 BuildRequires: openssl-devel >= 0.9.8f
@@ -89,6 +101,13 @@ BuildRequires:      rpm >= 4.4.9-56
 BuildRequires: rpmbuild(macros) >= 1.627
 BuildRequires: sed >= 4.0
 BuildRequires: zlib-devel >= 1.2.3
+%if %{with tests} && 0%(id -u sshd >/dev/null 2>&1; echo $?)
+BuildRequires: %{name}-server
+%endif
+%if %{with tests} && %{with libseccomp}
+# libseccomp based sandbox requires NO_NEW_PRIVS prctl flag
+BuildRequires: uname(release) >= 3.5
+%endif
 Requires:      zlib >= 1.2.3
 %if "%{pld_release}" == "ac"
 Requires:      filesystem >= 2.0-1
@@ -346,6 +365,7 @@ Requires:   %{name} = %{epoch}:%{version}-%{release}
 Requires:      pam >= %{pam_ver}
 Requires:      rc-scripts >= 0.4.3.0
 Requires:      systemd-units >= 38
+%{?with_libseccomp:Requires:   uname(release) >= 3.5}
 Requires:      util-linux
 %{?with_ldap:Suggests: %{name}-server-ldap}
 Suggests:      /bin/login
@@ -431,20 +451,6 @@ among the servers in the network.
 Backend LDAP dla OpenSSH to metoda rozprowadzania autoryzowanych
 tokenów między serwerami w sieci.
 
-%package server-upstart
-Summary:       Upstart job description for OpenSSH server
-Summary(pl.UTF-8):     Opis zadania Upstart dla serwera OpenSSH
-Group:         Daemons
-Requires:      %{name}-server = %{epoch}:%{version}-%{release}
-Requires:      upstart >= 0.6
-Conflicts:     syslog-ng < 3.2.4-1
-
-%description server-upstart
-Upstart job description for OpenSSH.
-
-%description server-upstart -l pl.UTF-8
-Opis zadania Upstart dla OpenSSH.
-
 %package gnome-askpass
 Summary:       OpenSSH GNOME passphrase dialog
 Summary(de.UTF-8):     OpenSSH GNOME Passwort-Dialog
@@ -525,6 +531,7 @@ openldap-a.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
@@ -539,6 +546,7 @@ openldap-a.
 
 %patch14 -p1
 %{!?with_ldap:%patch15 -p1}
+%{?with_libseccomp:%patch16 -p1}
 
 %if "%{pld_release}" == "ac"
 # fix for missing x11.pc
@@ -551,6 +559,9 @@ sed -i -e 's#-lssh -lopenbsd-compat#-lssh -lopenbsd-compat -lssh#g' Makefile*
 grep -rl /usr/libexec/openssh/ssh-ldap-helper . | xargs \
 %{__sed} -i -e 's,/usr/libexec/openssh/ssh-ldap-helper,%{_libexecdir}/ssh-ldap-helper,'
 
+# prevent being ovewritten by aclocal calls
+mv aclocal.m4 acinclude.m4
+
 %build
 cp /usr/share/automake/config.sub .
 %{__aclocal}
@@ -573,13 +584,12 @@ CPPFLAGS="%{rpmcppflags} -DCHROOT -std=gnu99"
        --with-pam \
        --with-pid-dir=%{_localstatedir}/run \
        --with-privsep-path=%{_privsepdir} \
-%if "%{pld_release}" != "ac"
-       --with-sandbox=seccomp_filter \
-%endif
+       --with-privsep-user=sshd \
        %{?with_selinux:--with-selinux} \
 %if "%{pld_release}" == "ac"
        --with-xauth=/usr/X11R6/bin/xauth
 %else
+       --with-sandbox=%{sandbox} \
        --with-xauth=%{_bindir}/xauth
 %endif
 
@@ -587,7 +597,7 @@ echo '#define LOGIN_PROGRAM            "/bin/login"' >>config.h
 
 %{__make}
 
-%{?with_tests:%{__make} tests}
+%{?with_tests:%{__make} -j1 tests}
 
 cd contrib
 %if %{with gnome}
@@ -601,7 +611,7 @@ cd contrib
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{init,pam.d,rc.d/init.d,sysconfig,security,env.d}} \
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{pam.d,rc.d/init.d,sysconfig,security,env.d}} \
        $RPM_BUILD_ROOT{%{_libexecdir}/ssh,%{schemadir},%{systemdunitdir}}
 install -d $RPM_BUILD_ROOT/etc/{profile.d,X11/xinit/xinitrc.d}
 
@@ -610,35 +620,21 @@ install -d $RPM_BUILD_ROOT/etc/{profile.d,X11/xinit/xinitrc.d}
 
 bzip2 -dc %{SOURCE1} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
 
-cp -p %{SOURCE3} sshd.pam
-install -p %{SOURCE2} sshd.init
-
-%if "%{pld_release}" == "ac"
-# not present in ac, no point searching it
-%{__sed} -i -e '/pam_keyinit.so/d' sshd.pam
-# openssl on ac does not have OPENSSL_HAS_ECC
-%{__sed} -i -e '/ecdsa/d' sshd.init
-%endif
-
-%if %{without audit}
-# remove recording user's login uid to the process attribute
-%{__sed} -i -e '/pam_loginuid.so/d' sshd.pam
-%endif
-
-install -p sshd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd
-cp -p sshd.pam $RPM_BUILD_ROOT/etc/pam.d/sshd
+install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd
+cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/pam.d/sshd
 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/sshd
 cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/profile.d
-ln -sf /etc/profile.d/ssh-agent.sh $RPM_BUILD_ROOT/etc/X11/xinit/xinitrc.d/ssh-agent.sh
+ln -sf /etc/profile.d/ssh-agent.sh $RPM_BUILD_ROOT/etc/X11/xinit/xinitrc.d/ssh-agent.sh
 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}
 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{schemadir}
-cp -p %{SOURCE8} $RPM_BUILD_ROOT/etc/init/sshd.conf
 
-%{__sed} -e 's|@@LIBEXECDIR@@|%{_libexecdir}|g' %{SOURCE9} >$RPM_BUILD_ROOT%{systemdunitdir}/sshd.service
-cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_libexecdir}/sshd-keygen
+cp -p %{SOURCE9} %{SOURCE11} %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}
+install -p %{SOURCE10} $RPM_BUILD_ROOT%{_libexecdir}/sshd-keygen
 
-cp -p %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}
-cp -p %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}
+%{__sed} -i -e 's|@@LIBEXECDIR@@|%{_libexecdir}|g' \
+       $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd \
+       $RPM_BUILD_ROOT%{systemdunitdir}/sshd.service \
+       $RPM_BUILD_ROOT%{_libexecdir}/sshd-keygen
 
 %if %{with gnome}
 install -p contrib/gnome-ssh-askpass1 $RPM_BUILD_ROOT%{_libexecdir}/ssh/ssh-askpass
@@ -668,6 +664,18 @@ cat << 'EOF' > $RPM_BUILD_ROOT/etc/env.d/SSH_ASKPASS
 #SSH_ASKPASS="%{_libexecdir}/ssh-askpass"
 EOF
 
+%if "%{pld_release}" == "ac"
+# not present in ac, no point searching it
+%{__sed} -i -e '/pam_keyinit.so/d' $RPM_BUILD_ROOT/etc/pam.d/sshd
+# openssl on ac does not have OPENSSL_HAS_ECC
+%{__sed} -i -e '/ecdsa/d' $RPM_BUILD_ROOT%{_libexecdir}/sshd-keygen
+%endif
+
+%if %{without audit}
+# remove recording user's login uid to the process attribute
+%{__sed} -i -e '/pam_loginuid.so/d' $RPM_BUILD_ROOT/etc/pam.d/sshd
+%endif
+
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/README.openssh-non-english-man-pages
 %{?with_ldap:%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/ldap.conf}
 
@@ -742,12 +750,6 @@ if [ -x /bin/systemd_booted ] && /bin/systemd_booted; then
 EOF
 fi
 
-%post server-upstart
-%upstart_post sshd
-
-%postun server-upstart
-%upstart_postun sshd
-
 %post -n openldap-schema-openssh-lpk
 %openldap_schema_register %{schemadir}/openssh-lpk.schema
 %service -q ldap restart
@@ -852,9 +854,3 @@ fi
 %defattr(644,root,root,755)
 %{schemadir}/openssh-lpk.schema
 %endif
-
-%if "%{pld_release}" != "ti"
-%files server-upstart
-%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) /etc/init/sshd.conf
-%endif
This page took 0.100266 seconds and 4 git commands to generate.