+#
+# Conditional build:
+%bcond_without fifo # force using fifos even if sockets detected
+
+# TODO
+# - from changelog: 'maxwin' can now be used to increase the number of maximum windows.
Summary: Screen - Manages multiple sessions on one tty
-Summary(de): Screen - Verwaltet mehrere Sitzungen an einem tty
-Summary(fr): screen - gère plusieurs sessions sur un seul terminal
-Summary(pl): Screen - Program zarz±dzaj±cy sesjami na jednym terminalu
-Summary(tr): Bir uçbirimde birden fazla oturumu düzenler
+Summary(de.UTF-8): Screen - Verwaltet mehrere Sitzungen an einem tty
+Summary(es.UTF-8): Screen - Administra múltiples sesiones en un tty
+Summary(fr.UTF-8): screen - gère plusieurs sessions sur un seul terminal
+Summary(pl.UTF-8): Screen - Program zarządzający sesjami na jednym terminalu
+Summary(pt_BR.UTF-8): Screen - Gerencia múltiplas sessões em um tty
+Summary(ru.UTF-8): Менеджер экрана, поддерживающий несколько логинов с одного терминала
+Summary(tr.UTF-8): Bir uçbirimde birden fazla oturumu düzenler
+Summary(uk.UTF-8): Менеджер екрану, що підтримує кілька логінів з одного терміналу
Name: screen
-Version: 3.9.4
+# 4.0 stable is on SCREEN_4_0 brach
+Version: 4.1.0
Release: 4
-Copyright: GPL
-Group: Utilities/Terminal
-Group(pl): Narzêdzia/Terminal
-Source: ftp://ftp.gnu.org/pub/gnu/screen/%{name}-%{version}.tar.gz
-Patch0: screen-info.patch
-Patch1: screen-tty.patch
-Patch2: screen-pty.patch
-Patch3: screen-notmp.patch
-Patch4: screen-compat21.patch
-Patch5: screen-DESTDIR.patch
-Patch6: screen-doc_fixes.patch
-Patch7: screen-texinfo_doc_fixes.patch
-Patch8: screen-ncurses.patch
+License: GPL v3+
+Group: Applications/Terminal
+Source0: http://git.savannah.gnu.org/cgit/screen.git/snapshot/%{name}-c2cd05962664c80f8ae063d6bf7a21084e0c2f37.tar.gz
+# Source0-md5: 61195697c98359ae3a86c8e1ea5f538d
+Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
+# Source1-md5: 236166e774cee788cf594b05dd1dd70d
+Source2: %{name}.pamd
+Source3: %{name}rc
+Patch1: %{name}-compat21.patch
+Patch2: %{name}-manual.patch
+Patch3: %{name}-ia64.patch
+Patch4: %{name}-info.patch
+Patch5: %{name}-debian_fixed.patch
+Patch6: %{name}-nolibtermcap.patch
+Patch7: %{name}-no_hardcoded_term_sequences.patch
+Patch8: %{name}-home_etc.patch
+Patch9: %{name}-no-libs.patch
+Patch10: %{name}-varargs.patch
+Patch11: %{name}-inputline-size.patch
+Patch12: %{name}-screenrc.patch
+Patch13: %{name}-osc.patch
+Patch15: %{name}-statusline-encoding.patch
+Patch16: screen-ipv6.patch
+Patch17: screen-E3.patch
+Patch18: screen-4.1.0-suppress_remap.patch
+Patch19: 49long-usernames.patch
+Patch20: 50increase-max-TERM-length.patch
+Patch21: 51fix-utf8-status-padding-bug.patch
+Patch22: 52fix_screen_utf8_nfd.patch
+Patch23: 53fix-startup-race-condition.patch
+Patch24: 60-644788-screen-4.1.0-4.0.3-interoperability.patch
+URL: http://www.gnu.org/software/screen/
+BuildRequires: autoconf
+BuildRequires: automake
BuildRequires: ncurses-devel >= 5.0
+BuildRequires: pam-devel
+BuildRequires: texinfo
BuildRequires: utempter-devel
-Prereq: /usr/sbin/fix-info-dir
-BuildRoot: /tmp/%{name}-%{version}-root
-
-%define _sysconfdir /etc
+Requires: pam >= 0.77.3
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
-Screen is a program that allows you to have multiple logins on one terminal.
-It is useful in situations where you are telnetted into a machine or
-connected via a dumb terminal and want more than just one login.
+Screen is a program that allows you to have multiple logins on one
+terminal. It is useful in situations where you are telnetted into a
+machine or connected via a dumb terminal and want more than just one
+login.
-%description -l de
+%description -l de.UTF-8
Screens ist ein Programm, das Ihnen erlaubt, sich auf einem Terminal
-mehrfach einzuloggen - was nützlich sein kann, wenn Sie über ein dummes
-Terminal eine Telnetverbindung zu einem Rechner haben und mehr als ein Login
-benötigen.
-
-%description -l fr
-Screen est un programme permettant plusieurs connexions sur un terminal. Il
-est utile pour ouvrir plusieurs sessions à la fois, si vous voulez ouvrir
-une session telnet sur une autre machine et voulez plus d'une connexion.
-
-%description -l pl
-Screen jest programem, który umo¿liwia otworzenie wielu sesji na jednym
-terminalu. Jest to bardzo przydatne, przy po³±czeniach z terminali nie
-umo¿liwiaj±cych otwarcia kilku sesji w systemie. Screen umo¿liwia ponadto
-powrót do otwartych sesji w przypadku przerwania po³±czenia z terminalem.
-
-%description -l tr
-Screen, ayný uçbirimde birden fazla oturum olanaðý saðlayan bir programdýr.
-Bir makinaya telnet programý ile ya da programlanamaz bir uçbirim üzerinden
-baðlantý kurduðunuz durumlarda kullanýþlýdýr.
+mehrfach einzuloggen - was nützlich sein kann, wenn Sie über ein
+dummes Terminal eine Telnetverbindung zu einem Rechner haben und mehr
+als ein Login benötigen.
+
+%description -l es.UTF-8
+Screen es un programa que permite que tengas múltiples logins en un
+terminal. Es útil en situaciones donde estás usando telnet en una
+máquina o conectado vía un terminal dumb y quiera más que apenas un
+login.
+
+%description -l fr.UTF-8
+Screen est un programme permettant plusieurs connexions sur un
+terminal. Il est utile pour ouvrir plusieurs sessions à la fois, si
+vous voulez ouvrir une session telnet sur une autre machine et voulez
+plus d'une connexion.
+
+%description -l pl.UTF-8
+Screen jest programem, który umożliwia otworzenie wielu sesji na
+jednym terminalu. Jest to bardzo przydatne, przy połączeniach z
+terminali nie umożliwiających otwarcia kilku sesji w systemie. Screen
+umożliwia ponadto powrót do otwartych sesji w przypadku przerwania
+połączenia z terminalem.
+
+%description -l pt_BR.UTF-8
+Screen é um programa que permite que você tenha múltiplos logins em um
+terminal. Ele é útil em situações onde você está usando telnet em uma
+máquina ou conectado via um terminal dumb e quer mais do que apenas um
+login.
+
+%description -l ru.UTF-8
+Утилита screen позволяет иметь несколько сессий на одном терминале.
+Screen полезен пользователям, которые заходят на машину по сети или
+через dumb-терминал, но хотят иметь более одной сессии с этой машиной.
+
+%description -l tr.UTF-8
+Screen, aynı uçbirimde birden fazla oturum olanağı sağlayan bir
+programdır. Bir makinaya telnet programı ile ya da programlanamaz bir
+uçbirim üzerinden bağlantı kurduğunuz durumlarda kullanışlıdır.
+
+%description -l uk.UTF-8
+Утиліта screen дозволяє мати декілька сесій на одному терміналі.
+Screen корисний користувачам, які заходять на машину по мережі або
+через dumb-термінал, але хочуть мати більше одної сесії з цією
+машиною.
%prep
-%setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
+%setup -qc
+mv screen-*/src/* .
+
+%patch1 -p0
+%patch2 -p0
+%patch3 -p0
%patch4 -p1
%patch5 -p1
%patch6 -p1
-%patch7 -p1
-%patch8 -p1
+# DON'T ENABLE IT UNLESS YOU REALLY FIX IT
+# (it's heavily broken - note that some sequences should be get for
+# $TERM before running screen instance, and others for TERM=screen!)
+###%patch7 -p1
+#%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+#%patch13 -p1 # my brain farted here, see if you have better luck
+%patch15 -p0
+%patch16 -p2
+%patch17 -p2
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
+%patch24 -p1
%build
-LDFLAGS="-s"; export LDFLAGS
-%configure
-
-make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"
-(cd doc; rm -f screen.info*; makeinfo screen.texinfo)
+%{__aclocal}
+%{__autoheader}
+%{__autoconf}
+# --enable-locale vs --enable-use-locale - https://savannah.gnu.org/bugs/index.php?37528
+CFLAGS="%{rpmcflags} -DMAXWIN=256"
+%{?with_fifo:nore=1} \
+%configure \
+ --enable-pam \
+ --enable-colors256 \
+ --enable-rxvt_osc \
+ --enable-telnet \
+ --enable-use-locale \
+ --with-sys-screenrc=/etc/screenrc \
+ --with-pty-mode=0620 \
+ --with-pty-group=5 \
+ --disable-socket-dir
+
+%if %{with fifo}
+if ! grep -q "define.*NAMEDPIPE.*1" config.h; then
+ echo "bcond with fifo but fifos not enabled!"
+ exit 1
+fi
+%endif
+
+%{__make} -j1
+
+cd doc
+rm -f screen.info*
+makeinfo screen.texinfo
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/{etc/skel,%{_bindir},%{_mandir}/man1,%{_infodir}}
+install -d $RPM_BUILD_ROOT{%{_bindir},%{_datadir}/screen/utf8encodings} \
+ $RPM_BUILD_ROOT{/etc/{skel,pam.d},%{_mandir}/{,pl}/man1,%{_infodir}}
-install -s screen $RPM_BUILD_ROOT%{_bindir}
-install doc/screen.1 $RPM_BUILD_ROOT%{_mandir}/man1
-install doc/screen.info* $RPM_BUILD_ROOT%{_infodir}
-install etc/etcscreenrc $RPM_BUILD_ROOT/etc/screenrc
-install etc/screenrc $RPM_BUILD_ROOT/etc/skel/.screenrc
+install -p screen $RPM_BUILD_ROOT%{_bindir}
+cp -a doc/screen.1 $RPM_BUILD_ROOT%{_mandir}/man1
+cp -a doc/screen.info* $RPM_BUILD_ROOT%{_infodir}
-gzip -9nf $RPM_BUILD_ROOT/{%{_infodir}/screen.info*,%{_mandir}/man1/*} \
- NEWS README FAQ ChangeLog
+install etc/etcscreenrc $RPM_BUILD_ROOT%{_sysconfdir}/screenrc
+echo -e "\n\n" >> $RPM_BUILD_ROOT%{_sysconfdir}/screenrc
+cat %{SOURCE3} > $RPM_BUILD_ROOT%{_sysconfdir}/screenrc
-%post
-/usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+cp -a utf8encodings/* $RPM_BUILD_ROOT%{_datadir}/screen/utf8encodings
+cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/screen
-%postun
-/usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+bzip2 -dc %{SOURCE1} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
+rm -f $RPM_BUILD_ROOT%{_mandir}/README.screen-non-english-man-pages
%clean
rm -rf $RPM_BUILD_ROOT
+%post -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
+%postun -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
%files
%defattr(644,root,root,755)
-%doc *.gz
-%config(noreplace) %verify(not md5 mtime size) /etc/screenrc
+%doc NEWS README ChangeLog doc/{FAQ,README.DOTSCREEN} etc/screenrc
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/screenrc
+%config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
%attr(755,root,root) %{_bindir}/screen
+%{_datadir}/screen
%{_mandir}/man1/*
+%lang(ja) %{_mandir}/ja/man1/*
+%lang(pl) %{_mandir}/pl/man1/*
%{_infodir}/screen.info*