+# TODO: is $(pkgdatadir)/cracklib.magic used for anything?
+# it's already in file database, so maybe just drop it?
+#
+# Conditional build:
+%bcond_with words # bigger words database
+#
Summary: Password checking library
-Summary(fr): Bibliothèque de vérification de mots de passe
-Summary(pl): Biblioteka sprawdzania hase³
-Summary(tr): Parola denetim kitaplýðý
+Summary(es.UTF-8): Biblioteca de chequeo de contraseñas
+Summary(fr.UTF-8): Bibliothèque de vérification de mots de passe
+Summary(pl.UTF-8): Biblioteka sprawdzania haseł
+Summary(pt_BR.UTF-8): Biblioteca de checagem de senhas
+Summary(ru.UTF-8): Библиотека проверки паролей
+Summary(tr.UTF-8): Parola denetim kitaplığı
+Summary(uk.UTF-8): Бібліотека перевірки паролів
Name: cracklib
-Version: 2.7
-Release: 9
-License: Artistic
+Version: 2.8.13
+%define words_v 20080507
+Release: 3
+License: GPL v2
Group: Libraries
-Group(de): Libraries
-Group(fr): Librairies
-Group(pl): Biblioteki
-Source0: ftp://coast.cs.purdue.edu/pub/tools/unix/cracklib/%{name}_%{version}.tgz
-Patch0: %{name}.patch
-Patch1: %{name}-pld.patch
+Source0: http://downloads.sourceforge.net/cracklib/%{name}-%{version}.tar.gz
+# Source0-md5: 5beb4c6b3c31c83fc98c4c225b25cd94
+Source1: http://downloads.sourceforge.net/cracklib/%{name}-words-%{words_v}.gz
+# Source1-md5: 7fa6ba0cd50e7f9ccaf4707c810b14f1
+URL: http://sourceforge.net/projects/cracklib/
+BuildRequires: python-devel
BuildRequires: words
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
-Checks passwords for security related characteristics - length,
-uniqueness, whether they are in a word database, etc.
+CrackLib tests passwords to determine whether they match certain
+security-oriented characteristics. You can use CrackLib to stop users
+from choosing passwords which would be easy to guess. CrackLib
+performs certain tests:
-%description -l de
-Überprüft Paßwörter auf Sicherheitsmerkmale - Länge, Eindeutigkeit,
-Anwesenheit in einer Wörter-Datenbank usw.
+- It tries to generate words from a username and gecos entry and
+ checks those words against the password;
+- It checks for simplistic patterns in passwords;
+- It checks for the password in a dictionary.
-%description -l fr
-Vérifie les caractéristiques liées à la sécurité des mots de passe -
-longueur, unicité, s'ils sont dans une base de mots, etc.
+CrackLib is actually a library containing a particular C function
+which is used to check the password, as well as other C functions.
+CrackLib is not a replacement for a passwd program; it must be used in
+conjunction with an existing passwd program.
-%description -l pl
-Sprawdza has³a pod k±tem bezpieczeñstwa - d³ugo¶æ, unikalno¶æ, czy
-wystêpuj± w s³owniu itp.
+Install the cracklib package if you need a program to check users'
+passwords to see if they are at least minimally secure. If you install
+CrackLib, you'll also want to install the cracklib-dicts package.
-%description -l tr
-Parolalarýn uzunluklarý, sistemde tek olmalarý, sözcük veri tabanýnda
-bulunmamalarý gibi güvenlikle ilgili özelliklerini kontrol eder.
+%description -l de.UTF-8
+Überprüft Paßwörter auf Sicherheitsmerkmale - Länge, Eindeutigkeit,
+Anwesenheit in einer Wörter-Datenbank usw.
+
+%description -l fr.UTF-8
+Vérifie les caractéristiques liées à la sécurité des mots de passe -
+longueur, unicité, s'ils sont dans une base de mots, etc.
+
+%description -l pl.UTF-8
+CrackLib sprawdza hasła pod kątem bezpieczeństwa. Można użyć tej
+biblioteki do powstrzymywania użytkowników przed wybieraniem haseł
+łatwych do odgadnięcia. CrackLib przeprowadza następujące testy:
+
+- próbuje wygenerować słowa z nazwy użytkownika i wpisu gecos, a
+ następnie porównuje je z hasłem
+- szuka prostych wzorców w haśle
+- szuka hasła w słowniku
+
+CrackLib to biblioteka zawierająca funkcję C służącą do sprawdzania
+hasła oraz inne funkcje C. Nie jest to zamiennik programu passwd -
+musi być użyty w połączeniu z istniejącym programem passwd.
+
+%description -l pt_BR.UTF-8
+Inclui os dicionários cracklib para o padrão /usr/dict/words, assim
+como os utilitários necessários para criar dicionários.
+
+%description -l ru.UTF-8
+CrackLib проверяет пароли на предмет соответствия некоторым критериям
+безопасности. Она может быть использована для предотвращения выбора
+пользователями легкоугадываемых паролей. CrackLib производит такие
+тесты:
+
+- Генерирует слова из имени пользователя и поля gecos и сравнивает их
+ с паролем;
+- Ищет в паролях простые шаблоны;
+- Проверяет пароль на наличие его в словаре.
+
+CrackLib - это, собственно, библиотека, содержащая специфическую
+функцию C для угадывания паролей и некоторые другие функции. Это не
+замена программы passwd, ее надо использовать совместно с существующей
+программой passwd.
+
+%description -l tr.UTF-8
+Parolaların uzunlukları, sistemde tek olmaları, sözcük veri tabanında
+bulunmamaları gibi güvenlikle ilgili özelliklerini kontrol eder.
+
+%description -l uk.UTF-8
+CrackLib перевіряє паролі на відповідність деяким критеріям безпеки.
+Вона може бути використана для запобігання вибору користувачами
+паролів, які легко відгадати. Вона виконує такі тести:
+
+- Генерує слова з імені користувача та поля gecos і порівнює їх з
+ паролем;
+- Шукає в паролях прості шаблони;
+- Перевіряє паролі на наявність їх у словнику.
+
+CrackLib - це, власне, бібліотека, що містить специфічну функцію C для
+відгадування паролів та деякі інші функції. Це не заміна програми
+passwd, її треба використовувати спільно з існуючою програмою passwd.
%package devel
Summary: Header files and documentation for cracklib
-Summary(pl): Pliki nag³ówkowe i dokumentacja dla cracklib
+Summary(es.UTF-8): Archivos de inclusión y bibliotecas para cracklib
+Summary(pl.UTF-8): Pliki nagłówkowe i dokumentacja dla cracklib
+Summary(pt_BR.UTF-8): Arquivos de inclusão e bibliotecas para a cracklib
Group: Development/Libraries
-Group(de): Entwicklung/Libraries
-Group(fr): Development/Librairies
-Group(pl): Programowanie/Biblioteki
-Requires: %{name} = %{version}
+Requires: %{name} = %{version}-%{release}
%description devel
Header files and documentation for cracklib.
-%description -l pl
-Pliki nag³ówkowe i dokumentacja dla cracklib.
+%description devel -l es.UTF-8
+Este paquete contiene los archivos de inclusión y bibliotecas que se
+necesitan para desarrollar programas que usan cracklib.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe i dokumentacja dla cracklib.
+
+%description devel -l pt_BR.UTF-8
+Este pacote contém os arquivos de inclusão e bibliotecas que são
+necessários para desenvolver programas que usam a cracklib.
+
+%package static
+Summary: Static cracklib library
+Summary(pl.UTF-8): Statyczna biblioteka cracklib
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description static
+Static cracklib library.
+
+%description static -l pl.UTF-8
+Statyczna biblioteka cracklib.
%package dicts
Summary: Standard dictionaries (/usr/share/dict/words)
-Summary(de): Standard-Wörterbücher (/usr/share/dict/words)
-Summary(fr): Dictionnaires standards (/usr/share/dict/words)
-Summary(pl): Standardowe s³owniki (/usr/share/dict/words)
-Summary(tr): Standart sözlükler (/usr/share/dict/words)
+Summary(de.UTF-8): Standard-Wörterbücher (/usr/share/dict/words)
+Summary(es.UTF-8): Diccionarios para chequeo de contraseñas
+Summary(fr.UTF-8): Dictionnaires standards (/usr/share/dict/words)
+Summary(pl.UTF-8): Standardowe słowniki (/usr/share/dict/words)
+Summary(pt_BR.UTF-8): Dicionários para checagem de senhas
+Summary(ru.UTF-8): Стандартные словари CrackLib
+Summary(tr.UTF-8): Standart sözlükler (/usr/share/dict/words)
+Summary(uk.UTF-8): Стандартні словники CrackLib
Group: Applications/System
-Group(de): Applikationen/System
-Group(pl): Aplikacje/System
%description dicts
-Includes the cracklib dictionaries for the standard /usr/dict/words,
-as well as utilities needed to create new dictionaries.
+The cracklib-dicts package includes the CrackLib dictionaries.
+CrackLib will need to use the dictionary appropriate to your system,
+which is normally put in /usr/share/dict/words. Cracklib-dicts also
+contains the utilities necessary for the creation of new dictionaries.
+
+%description dicts -l de.UTF-8
+Enthält die Cracklib-Wörterbücher für die
+Standard-/usr/share/dict/Wörter sowie Utilities zum Erstellen neuer
+Wörterbücher"
-%description -l de dicts
-Enthält die Cracklib-Wörterbücher für die
-Standard-/usr/share/dict/Wörter sowie Utilities zum Erstellen neuer
-Wörterbücher"
+%description dicts -l es.UTF-8
+Incluye el diccionario cracklib para el padrón /usr/share/dict/words,
+y utilitarios necesarios a creación de nuevos diccionarios.
-%description -l fr dicts
+%description dicts -l fr.UTF-8
Contient les dictionnaires cracklib pour le /usr/share/dict/words
-standard, ainsi que les utilitaires nécessaires à la création de
+standard, ainsi que les utilitaires nécessaires à la création de
nouveaux dictionnaires.
-%description -l pl
-Pakiet zawiera s³owniki cracklib'a dla standardowego
-/usr/share/dict/words oraz narzêdzia do tworzenia nowych s³owników.
+%description dicts -l pl.UTF-8
+Pakiet zawiera słowniki crackliba dla standardowego
+/usr/share/dict/words oraz narzędzia do tworzenia nowych słowników.
+
+%description dicts -l pt_BR.UTF-8
+Inclui o dicionário cracklib para o padrão /usr/dict/words, bem como
+utilitários necessários a criação de novos dicionários.
+
+%description dicts -l ru.UTF-8
+Пакет cracklib-dicts включает словари CrackLib. CrackLib будут нужны
+словари, соответствующие вашей системе, которые обычно находятся в
+/usr/share/dict/words. Cracklib-dicts также содержит утилиты,
+необходимые для создания новых словарей.
+
+%description dicts -l tr.UTF-8
+/usr/share/dict/words dosyası için 'cracklib' kitaplıklarını ve yeni
+sözlükler yaratılması için gerekli yardımcı programları içerir.
+
+%description dicts -l uk.UTF-8
+Пакет cracklib-dicts містить словники CrackLib. CrackLib будуть
+потрібні словники, що відповідають вашій системі, котрі зазвичай
+знаходяться в /usr/share/dict/words. Cracklib-dicts також містить
+утиліти, необхідні для створення нових словників.
+
+%package -n python-cracklib
+Summary: Python binding for cracklib
+Summary(pl.UTF-8): Wiązanie Pythona do crackliba
+Group: Libraries/Python
+Requires: %{name} = %{version}-%{release}
+%pyrequires_eq python-libs
+
+%description -n python-cracklib
+Python binding for cracklib.
-%description -l tr dicts
-/usr/share/dict/words dosyasý için 'cracklib' kitaplýklarýný ve yeni
-sözlükler yaratýlmasý için gerekli yardýmcý programlarý içerir.
+%description -n python-cracklib -l pl.UTF-8
+Wiązanie Pythona do crackliba.
%prep
-%setup -q -n %{name},%{version}
-%patch0 -p1
-%patch1 -p1
+%setup -q
+%if %{with words}
+install %{SOURCE1} dicts/
+%endif
%build
-%{__make} all
+%configure \
+ --with-default-dict=%{_datadir}/dict/cracklib_dict
+%{__make}
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_sbindir},%{_libdir},%{_includedir},%{_datadir}/dict}
%{__make} install \
- ROOT=$RPM_BUILD_ROOT
+ DESTDIR=$RPM_BUILD_ROOT
-gzip -9nf README MANIFEST LICENCE POSTER HISTORY
+chmod 755 util/cracklib-format
+util/cracklib-format dicts/cracklib* | util/cracklib-packer $RPM_BUILD_ROOT%{_datadir}/dict/cracklib_dict
+
+rm -f $RPM_BUILD_ROOT%{py_sitedir}/*.{la,a}
+
+mv -f $RPM_BUILD_ROOT%{_datadir}/locale/{sl_SI,sl}
+
+%find_lang %{name}
%clean
rm -rf $RPM_BUILD_ROOT
-%post -p /sbin/ldconfig
+%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
-%files
+%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc {README,MANIFEST,LICENCE,POSTER}.gz
-
-%attr(755,root,root) %{_libdir}/lib*so.*
+%doc ChangeLog NEWS README
+%attr(755,root,root) %{_libdir}/libcrack.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcrack.so.2
+%{_datadir}/%{name}
%files devel
%defattr(644,root,root,755)
-%doc HISTORY.gz
-%attr(755,root,root) %{_libdir}/lib*.so
-%{_includedir}/*
+%attr(755,root,root) %{_libdir}/libcrack.so
+%{_libdir}/libcrack.la
+%{_includedir}/crack.h
+%{_includedir}/packer.h
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libcrack.a
%files dicts
%defattr(644,root,root,755)
-%attr(755,root,root) %{_sbindir}/*
-%{_datadir}/dict/cracklib_dict*
+%attr(755,root,root) %{_sbindir}/cracklib-*
+%attr(755,root,root) %{_sbindir}/create-cracklib-dict
+%{_datadir}/dict/cracklib_dict.*
+
+%files -n python-cracklib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py_sitedir}/_cracklibmodule.so
+%{python_sitelib}/%{name}.*