+# TODO
+# - new files:
+# /etc/pam.d/chgpasswd
+# /etc/pam.d/chpasswd
+# /etc/pam.d/newusers
+# /usr/sbin/chgpasswd
+# /usr/sbin/nologin
+# /usr/share/man/man5/gshadow.5.gz
+# /usr/share/man/man8/chgpasswd.8.gz
+# /usr/share/man/man8/nologin.8.gz
+# - check polish part in -typo.patch
+# - update shadow-po-update.patch
+# - package or remove:
+# /etc/pam.d/chgpasswd
+# /etc/pam.d/chpasswd
+# /etc/pam.d/groupmems
+# /etc/pam.d/newusers
+# /usr/sbin/chgpasswd
+# /usr/sbin/groupmems
+# /usr/sbin/nologin
+# /usr/share/man/cs/man5/gshadow.5.gz
+# /usr/share/man/cs/man8/nologin.8.gz
+# /usr/share/man/fr/man3/shadow.3.gz
+# /usr/share/man/fr/man5/gshadow.5.gz
+# /usr/share/man/man1/su.1.gz
+# /usr/share/man/man3/shadow.3.gz
+# /usr/share/man/man5/gshadow.5.gz
+# /usr/share/man/man5/limits.5.gz
+# /usr/share/man/man5/login.access.5.gz
+# /usr/share/man/man5/porttime.5.gz
+# /usr/share/man/man8/chgpasswd.8.gz
+# /usr/share/man/man8/groupmems.8.gz
+# /usr/share/man/man8/nologin.8.gz
+# /usr/share/man/ru/man5/gshadow.5.gz
+# /usr/share/man/ru/man5/limits.5.gz
+# /usr/share/man/ru/man5/login.access.5.gz
+# /usr/share/man/ru/man5/porttime.5.gz
+# /usr/share/man/ru/man8/chgpasswd.8.gz
+# /usr/share/man/ru/man8/nologin.8.gz
+# /usr/share/man/sv/man1/chage.1.gz
+# /usr/share/man/sv/man1/chfn.1.gz
+# /usr/share/man/sv/man1/chsh.1.gz
+# /usr/share/man/sv/man1/expiry.1.gz
+# /usr/share/man/sv/man1/gpasswd.1.gz
+# /usr/share/man/sv/man1/groups.1.gz
+# /usr/share/man/sv/man1/login.1.gz
+# /usr/share/man/sv/man1/newgrp.1.gz
+# /usr/share/man/sv/man1/passwd.1.gz
+# /usr/share/man/sv/man1/sg.1.gz
+# /usr/share/man/sv/man1/su.1.gz
+# /usr/share/man/sv/man3/getspnam.3
+# /usr/share/man/sv/man3/shadow.3.gz
+# /usr/share/man/sv/man5/faillog.5.gz
+# /usr/share/man/sv/man5/gshadow.5.gz
+# /usr/share/man/sv/man5/login.defs.5.gz
+# /usr/share/man/sv/man5/passwd.5.gz
+# /usr/share/man/sv/man5/shadow.5.gz
+# /usr/share/man/sv/man5/suauth.5.gz
+# /usr/share/man/sv/man8/chgpasswd.8.gz
+# /usr/share/man/sv/man8/chpasswd.8.gz
+# /usr/share/man/sv/man8/faillog.8.gz
+# /usr/share/man/sv/man8/groupadd.8.gz
+# /usr/share/man/sv/man8/groupdel.8.gz
+# /usr/share/man/sv/man8/groupmems.8.gz
+# /usr/share/man/sv/man8/groupmod.8.gz
+# /usr/share/man/sv/man8/grpck.8.gz
+# /usr/share/man/sv/man8/grpconv.8
+# /usr/share/man/sv/man8/grpunconv.8
+# /usr/share/man/sv/man8/lastlog.8.gz
+# /usr/share/man/sv/man8/logoutd.8.gz
+# /usr/share/man/sv/man8/newusers.8.gz
+# /usr/share/man/sv/man8/nologin.8.gz
+# /usr/share/man/sv/man8/pwck.8.gz
+# /usr/share/man/sv/man8/pwconv.8.gz
+# /usr/share/man/sv/man8/pwunconv.8
+# /usr/share/man/sv/man8/useradd.8.gz
+# /usr/share/man/sv/man8/userdel.8.gz
+# /usr/share/man/sv/man8/usermod.8.gz
+# /usr/share/man/sv/man8/vigr.8
+# /usr/share/man/sv/man8/vipw.8.gz
#
# Conditional build:
%bcond_without selinux # build without SE-Linux support
-%bcond_with shared # build with shared libshadow
+%bcond_with shared # build with shared libshadow (linking with selinux is broken)
#
Summary: Shadow password file utilities for Linux
Summary(de): Shadow-Paßwortdatei-Dienstprogramme für Linux
Summary(es): Utilitarios para el archivo de contraseñas Shadow
Summary(fr): Fichiers utilitaires pour Shadow password pour Linux
Summary(pl): Narzêdzia do obs³ugi mechanizmu ukrytych hase³
-Summary(tr): Gölge parola dosyasý araçlarý
Summary(pt_BR): Utilitários para o arquivo de senhas Shadow
+Summary(tr): Gölge parola dosyasý araçlarý
Name: shadow
-Version: 4.0.7
-Release: 0.1
+Version: 4.0.18.1
+Release: 0.12
Epoch: 1
License: BSD
Group: Applications/System
Source0: ftp://ftp.pld.org.pl/software/shadow/%{name}-%{version}.tar.bz2
-# Source0-md5: 89ebec0d1c0d861a5bd5c4c63e5cb0cc
+# Source0-md5: e7751d46ecf219c07ae0b028ab3335c6
Source1: %{name}-login.defs
Source2: %{name}.useradd
Source3: chage.pamd
Source6: chfn.pamd
Source7: passwd.pamd
Source8: useradd.pamd
-Patch0: %{name}-utmpx.patch
-Patch1: %{name}-man_and_po.patch
-Patch2: %{name}-pld.patch
-Patch3: %{name}-chage_expdays.patch
-Patch4: %{name}-typo.patch
+Patch0: %{name}-pld.patch
+Patch1: %{name}-chage_expdays.patch
+Patch2: %{name}-po-update.patch
+Patch3: %{name}-removed-programs.patch
+Patch4: %{name}-shared.patch
+Patch5: %{name}-typo.patch
BuildRequires: autoconf
BuildRequires: automake >= 1.0
BuildRequires: gettext-devel >= 0.12.1
-BuildRequires: pam-devel
-BuildRequires: libtool
%{?with_selinux:BuildRequires: libselinux-devel}
+BuildRequires: libtool
+BuildRequires: pam-devel
Requires: pam >= 0.77.3
# to force proper coreutils version, so "groups" command exists
Requires: /usr/bin/groups
%setup -q
%patch0 -p1
%patch1 -p1
-%patch2 -p1
+#%patch2 -p1
%patch3 -p1
-%patch4 -p1
+%{?with_shared:%patch4 -p1}
+#%patch5 -p1
+
+# ugh, too populated to patch
+%{__sed} -i -e 's/instead DES/instead of DES/' src/chpasswd.c po/*.po
+
+rm -f po/stamp-po
%build
%{__autoheader}
install %{SOURCE6} $RPM_BUILD_ROOT/etc/pam.d/chfn
install %{SOURCE7} $RPM_BUILD_ROOT/etc/pam.d/passwd
install %{SOURCE8} $RPM_BUILD_ROOT/etc/pam.d/useradd
-install etc/pam.d/usermod $RPM_BUILD_ROOT/etc/pam.d/userdel
+sed -e 's/usermod/userdel/' etc/pam.d/usermod > $RPM_BUILD_ROOT/etc/pam.d/userdel
install etc/pam.d/usermod $RPM_BUILD_ROOT/etc/pam.d/usermod
install etc/pam.d/groupadd $RPM_BUILD_ROOT/etc/pam.d/groupadd
install etc/pam.d/groupmod $RPM_BUILD_ROOT/etc/pam.d/groupmod
install etc/pam.d/groupdel $RPM_BUILD_ROOT/etc/pam.d/groupdel
-
> $RPM_BUILD_ROOT%{_sysconfdir}/shadow
> $RPM_BUILD_ROOT/etc/security/chfn.allow
> $RPM_BUILD_ROOT/etc/security/chsh.allow
# vigr symlink is created by make install, but in wrong dir
ln -sf vipw $RPM_BUILD_ROOT%{_sbindir}/vigr
-echo '.so newgrp.1' > $RPM_BUILD_ROOT%{_mandir}/fr/man1/sg.1
+# what's this for?
echo '.so newgrp.1' > $RPM_BUILD_ROOT%{_mandir}/it/man1/sg.1
-echo '.so newgrp.1' > $RPM_BUILD_ROOT%{_mandir}/ko/man1/sg.1
%if !%{with shared}
# invalid static library
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
%endif
-# /bin/login already in login (from util-linux.spec)
-rm -f $RPM_BUILD_ROOT{%{_bindir}/login,%{_sbindir}/logoutd,%{_mandir}/{,*/}man1/login.1*,%{_mandir}/{,*/}man5/porttime.5,%{_mandir}/{,*/}man8/logoutd.8}
-# /bin/su already in coreutils
-rm -f $RPM_BUILD_ROOT{%{_bindir}/su,%{_mandir}/{,*/}man1/su.1}
-# /usr/bin/groups already in coreutils
-rm -f $RPM_BUILD_ROOT{%{_bindir}/groups,%{_mandir}/{,*/}man1/groups.1}
-# /etc/limits not used with pam
-rm -f $RPM_BUILD_ROOT%{_mandir}/{,*/}man5/limits.5
+# no -devel, be gone
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
%find_lang %{name}
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc ChangeLog NEWS TODO doc/{HOWTO,README,README.linux,README.pam,WISHLIST}
+%doc ChangeLog NEWS TODO doc/{HOWTO,WISHLIST}
%attr(750,root,root) %dir %{_sysconfdir}/default
%attr(640,root,root) %config %verify(not md5 mtime size) %{_sysconfdir}/default/*
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/chage
%attr(4755,root,root) %{_bindir}/passwd
%{_mandir}/man1/passwd.1*
%{_mandir}/man5/faillog.5*
-%{_mandir}/man5/login.access.5*
%{_mandir}/man5/login.defs.5*
%{_mandir}/man5/passwd.5*
%{_mandir}/man5/shadow.5*
%lang(cs) %{_mandir}/cs/man5/passwd.5*
%lang(cs) %{_mandir}/cs/man5/shadow.5*
+%lang(cs) %{_mandir}/cs/man5/faillog.5*
+%lang(cs) %{_mandir}/cs/man8/faillog.8*
+%lang(cs) %{_mandir}/cs/man8/groupadd.8*
+%lang(cs) %{_mandir}/cs/man8/groupdel.8*
+%lang(cs) %{_mandir}/cs/man8/groupmod.8*
+%lang(cs) %{_mandir}/cs/man8/grpck.8*
+%lang(cs) %{_mandir}/cs/man8/lastlog.8*
+%lang(cs) %{_mandir}/cs/man8/vipw.8*
%lang(de) %{_mandir}/de/man1/passwd.1*
+%lang(de) %{_mandir}/de/man8/vigr.8*
+%lang(de) %{_mandir}/de/man8/vipw.8*
+%lang(de) %{_mandir}/de/man5/passwd.5*
%lang(es) %{_mandir}/es/man1/passwd.1*
+%lang(es) %{_mandir}/es/man5/passwd.5*
+%lang(es) %{_mandir}/es/man8/vigr.8*
+%lang(es) %{_mandir}/es/man8/vipw.8*
+
+%lang(fi) %{_mandir}/fi/man1/passwd.1*
%lang(fr) %{_mandir}/fr/man1/passwd.1*
%lang(fr) %{_mandir}/fr/man5/faillog.5*
+%lang(fr) %{_mandir}/fr/man5/login.defs.5*
%lang(fr) %{_mandir}/fr/man5/passwd.5*
%lang(fr) %{_mandir}/fr/man5/shadow.5*
+%lang(fr) %{_mandir}/fr/man5/suauth.5*
%lang(fr) %{_mandir}/fr/man8/chpasswd.8*
+%lang(fr) %{_mandir}/fr/man8/faillog.8*
+%lang(fr) %{_mandir}/fr/man8/groupadd.8*
+%lang(fr) %{_mandir}/fr/man8/groupdel.8*
+%lang(fr) %{_mandir}/fr/man8/groupmod.8*
+%lang(fr) %{_mandir}/fr/man8/grpck.8*
+%lang(fr) %{_mandir}/fr/man8/grpconv.8*
+%lang(fr) %{_mandir}/fr/man8/grpunconv.8*
+%lang(fr) %{_mandir}/fr/man8/lastlog.8*
+%lang(fr) %{_mandir}/fr/man8/pwck.8*
+%lang(fr) %{_mandir}/fr/man8/pwconv.8*
+%lang(fr) %{_mandir}/fr/man8/pwunconv.8*
%lang(fr) %{_mandir}/fr/man8/useradd.8*
%lang(fr) %{_mandir}/fr/man8/userdel.8*
%lang(fr) %{_mandir}/fr/man8/usermod.8*
+%lang(fr) %{_mandir}/fr/man8/vigr.8*
+%lang(fr) %{_mandir}/fr/man8/vipw.8*
%lang(hu) %{_mandir}/hu/man1/passwd.1*
%lang(ja) %{_mandir}/ja/man1/passwd.1*
%lang(ja) %{_mandir}/ja/man5/faillog.5*
-%lang(ja) %{_mandir}/ja/man5/login.access.5*
%lang(ja) %{_mandir}/ja/man5/login.defs.5*
%lang(ja) %{_mandir}/ja/man5/passwd.5*
%lang(ja) %{_mandir}/ja/man5/shadow.5*
%lang(ja) %{_mandir}/ja/man8/useradd.8*
%lang(ja) %{_mandir}/ja/man8/userdel.8*
%lang(ja) %{_mandir}/ja/man8/usermod.8*
-%lang(ja) %{_mandir}/ja/man8/vipw.8*
%lang(ja) %{_mandir}/ja/man8/vigr.8*
+%lang(ja) %{_mandir}/ja/man8/vipw.8*
%lang(ko) %{_mandir}/ko/man5/passwd.5*
+%lang(ko) %{_mandir}/ko/man8/vigr.8*
+%lang(ko) %{_mandir}/ko/man8/vipw.8*
%lang(pl) %{_mandir}/pl/man1/passwd.1*
%lang(pl) %{_mandir}/pl/man5/faillog.5*
-%lang(pl) %{_mandir}/pl/man5/login.access.5*
%lang(pl) %{_mandir}/pl/man5/login.defs.5*
%lang(pl) %{_mandir}/pl/man5/passwd.5*
%lang(pl) %{_mandir}/pl/man5/shadow.5*
%lang(pl) %{_mandir}/pl/man8/vigr.8*
%lang(pl) %{_mandir}/pl/man8/vipw.8*
+# FIXME change to -> pt?
+%lang(pt_BR) %{_mandir}/pt_BR/man5/passwd.5*
%lang(pt_BR) %{_mandir}/pt_BR/man5/shadow.5*
%lang(pt_BR) %{_mandir}/pt_BR/man8/groupadd.8*
%lang(pt_BR) %{_mandir}/pt_BR/man8/groupdel.8*
%lang(pt_BR) %{_mandir}/pt_BR/man8/groupmod.8*
+%lang(ru) %{_mandir}/ru/man1/passwd.1*
+%lang(ru) %{_mandir}/ru/man5/faillog.5*
+%lang(ru) %{_mandir}/ru/man5/login.defs.5*
%lang(ru) %{_mandir}/ru/man5/passwd.5*
+%lang(ru) %{_mandir}/ru/man5/shadow.5*
+%lang(ru) %{_mandir}/ru/man5/suauth.5*
+%lang(ru) %{_mandir}/ru/man8/chpasswd.8*
+%lang(ru) %{_mandir}/ru/man8/faillog.8*
+%lang(ru) %{_mandir}/ru/man8/groupadd.8*
+%lang(ru) %{_mandir}/ru/man8/groupdel.8*
+%lang(ru) %{_mandir}/ru/man8/groupmems.8*
+%lang(ru) %{_mandir}/ru/man8/groupmod.8*
+%lang(ru) %{_mandir}/ru/man8/grpck.8*
+%lang(ru) %{_mandir}/ru/man8/grpconv.8*
+%lang(ru) %{_mandir}/ru/man8/grpunconv.8*
+%lang(ru) %{_mandir}/ru/man8/lastlog.8*
+%lang(ru) %{_mandir}/ru/man8/pwck.8*
+%lang(ru) %{_mandir}/ru/man8/pwconv.8*
+%lang(ru) %{_mandir}/ru/man8/pwunconv.8*
+%lang(ru) %{_mandir}/ru/man8/useradd.8*
+%lang(ru) %{_mandir}/ru/man8/userdel.8*
+%lang(ru) %{_mandir}/ru/man8/usermod.8*
+%lang(ru) %{_mandir}/ru/man8/vigr.8*
+%lang(ru) %{_mandir}/ru/man8/vipw.8*
+
+%lang(tr) %{_mandir}/tr/man1/passwd.1*
+%lang(tr) %{_mandir}/tr/man5/passwd.5*
+%lang(tr) %{_mandir}/tr/man5/shadow.5*
+%lang(tr) %{_mandir}/tr/man8/groupadd.8*
+%lang(tr) %{_mandir}/tr/man8/groupdel.8*
+%lang(tr) %{_mandir}/tr/man8/groupmod.8*
+%lang(tr) %{_mandir}/tr/man8/useradd.8*
+%lang(tr) %{_mandir}/tr/man8/userdel.8*
+%lang(tr) %{_mandir}/tr/man8/usermod.8*
%lang(zh_CN) %{_mandir}/zh_CN/man8/chpasswd.8*
%lang(zh_CN) %{_mandir}/zh_CN/man8/groupadd.8*
%attr(4755,root,root) %{_bindir}/gpasswd
%attr(755,root,root) %{_bindir}/newgrp
%attr(755,root,root) %{_bindir}/sg
-%attr(755,root,root) %{_sbindir}/mkpasswd
%attr(755,root,root) %{_sbindir}/newusers
%{_mandir}/man1/chage.1*
%{_mandir}/man1/gpasswd.1*
%{_mandir}/man1/newgrp.1*
%{_mandir}/man1/sg.1*
-%{_mandir}/man8/mkpasswd.8*
%{_mandir}/man8/newusers.8*
+%lang(cs) %{_mandir}/cs/man1/expiry.1*
+%lang(cs) %{_mandir}/cs/man1/gpasswd.1*
+
%lang(de) %{_mandir}/de/man1/chfn.1*
%lang(de) %{_mandir}/de/man1/chsh.1*
+%lang(de) %{_mandir}/de/man1/newgrp.1*
+
+%lang(es) %{_mandir}/es/man1/newgrp.1*
+
+%lang(fi) %{_mandir}/fi/man1/chfn.1*
+%lang(fi) %{_mandir}/fi/man1/chsh.1*
%lang(fr) %{_mandir}/fr/man1/chage.1*
+%lang(fr) %{_mandir}/fr/man1/chfn.1*
%lang(fr) %{_mandir}/fr/man1/chsh.1*
+%lang(fr) %{_mandir}/fr/man1/expiry.1*
%lang(fr) %{_mandir}/fr/man1/gpasswd.1*
%lang(fr) %{_mandir}/fr/man1/newgrp.1*
%lang(fr) %{_mandir}/fr/man1/sg.1*
+%lang(fr) %{_mandir}/fr/man8/newusers.8*
%lang(hu) %{_mandir}/hu/man1/chsh.1*
%lang(hu) %{_mandir}/hu/man1/gpasswd.1*
%lang(hu) %{_mandir}/hu/man1/newgrp.1*
%lang(hu) %{_mandir}/hu/man1/sg.1*
+%lang(hu) %{_mandir}/hu/man5/passwd.5*
+%lang(hu) %{_mandir}/hu/man8/lastlog.8*
%lang(id) %{_mandir}/id/man1/chsh.1*
+%lang(it) %{_mandir}/it/man1/chage.1*
%lang(it) %{_mandir}/it/man1/chfn.1*
%lang(it) %{_mandir}/it/man1/chsh.1*
+%lang(it) %{_mandir}/it/man1/expiry.1*
%lang(it) %{_mandir}/it/man1/gpasswd.1*
%lang(it) %{_mandir}/it/man1/newgrp.1*
%lang(it) %{_mandir}/it/man1/sg.1*
+%lang(it) %{_mandir}/it/man5/faillog.5*
+%lang(it) %{_mandir}/it/man8/chpasswd.8*
+%lang(it) %{_mandir}/it/man8/faillog.8*
+%lang(it) %{_mandir}/it/man8/newusers.8*
+%lang(it) %{_mandir}/it/man8/pwck.8*
%lang(ja) %{_mandir}/ja/man1/chage.1*
%lang(ja) %{_mandir}/ja/man1/chfn.1*
%lang(ja) %{_mandir}/ja/man1/newgrp.1*
%lang(ja) %{_mandir}/ja/man1/sg.1*
%lang(ja) %{_mandir}/ja/man8/chpasswd.8*
-%lang(ja) %{_mandir}/ja/man8/mkpasswd.8*
%lang(ja) %{_mandir}/ja/man8/newusers.8*
%lang(ko) %{_mandir}/ko/man1/chfn.1*
%lang(ko) %{_mandir}/ko/man1/chsh.1*
-%lang(ko) %{_mandir}/ko/man1/newgrp.1*
-%lang(ko) %{_mandir}/ko/man1/sg.1*
+# missing in tarball
+#%lang(ko) %{_mandir}/ko/man1/newgrp.1*
+
+%lang(ru) %{_mandir}/ru/man1/chage.1*
+%lang(ru) %{_mandir}/ru/man1/chfn.1*
+%lang(ru) %{_mandir}/ru/man1/chsh.1*
+%lang(ru) %{_mandir}/ru/man1/expiry.1*
+%lang(ru) %{_mandir}/ru/man1/gpasswd.1*
+%lang(ru) %{_mandir}/ru/man1/newgrp.1*
+%lang(ru) %{_mandir}/ru/man1/sg.1*
+%lang(ru) %{_mandir}/ru/man8/newusers.8*
%lang(pl) %{_mandir}/pl/man1/chage.1*
%lang(pl) %{_mandir}/pl/man1/chfn.1*
%lang(pl) %{_mandir}/pl/man1/newgrp.1*
%lang(pl) %{_mandir}/pl/man1/sg.1*
%lang(pl) %{_mandir}/pl/man8/chpasswd.8*
-%lang(pl) %{_mandir}/pl/man8/mkpasswd.8*
%lang(pl) %{_mandir}/pl/man8/newusers.8*
%lang(pt_BR) %{_mandir}/pt_BR/man1/gpasswd.1*
+%lang(tr) %{_mandir}/tr/man1/chage.1*
+%lang(tr) %{_mandir}/tr/man1/chfn.1*
+
%lang(zh_CN) %{_mandir}/zh_CN/man1/chfn.1*
%lang(zh_CN) %{_mandir}/zh_CN/man1/chsh.1*
+%lang(zh_CN) %{_mandir}/zh_CN/man1/newgrp.1*
+%lang(zh_CN) %{_mandir}/zh_CN/man5/passwd.5*
%lang(zh_TW) %{_mandir}/zh_TW/man1/chfn.1*
%lang(zh_TW) %{_mandir}/zh_TW/man1/chsh.1*
+%lang(zh_TW) %{_mandir}/zh_TW/man1/newgrp.1*
+%lang(zh_TW) %{_mandir}/zh_TW/man5/passwd.5*
+%lang(zh_TW) %{_mandir}/zh_TW/man8/chpasswd.8*