%{!?python2_sitelib: %define python2_sitelib %(python2 -c "from distutils.sysconfig import get_python_lib;print(get_python_lib())")} %{!?python3_sitelib: %define python3_sitelib %(python3 -c "from distutils.sysconfig import get_python_lib;print(get_python_lib())")} # Got this spec from http://downloads.sourceforge.net/cracklib/cracklib-2.9.6.tar.gz Summary: A password strength-checking library. Name: cracklib Version: 2.9.6 Release: 8%{?dist} Group: System Environment/Libraries Source: cracklib-%{version}.tar.gz %define sha1 cracklib-%{version}=9199e7b8830717565a844430653f5a90a04fcd65 Source1: cracklib-words-%{version}.gz %define sha1 cracklib-words-%{version}=b0739c990431a0971545dff347b50f922604c1cd Patch0: CVE-2016-6318.patch URL: http://sourceforge.net/projects/cracklib/ License: GPL Vendor: VMware, Inc. Distribution: Photon Requires: /bin/ln Requires(post): /bin/ln Requires(postun): /bin/rm %description 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: * 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. 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. 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. %package dicts Summary: The standard CrackLib dictionaries. Group: System Environment/Utilities Requires: cracklib %description dicts 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. If you are installing CrackLib, you should also install cracklib-dicts. %package devel Summary: Cracklib link library & header file Group: Development/Libraries Requires: cracklib %description devel The cracklib devel package include the needed library link and header files for development. %package python Summary: The cracklib python module Group: Development/Languages/Python BuildRequires: python2 BuildRequires: python2-libs BuildRequires: python2-devel BuildRequires: python-setuptools Requires: cracklib Requires: python2 Requires: python2-libs %description python The cracklib python module %package -n python3-cracklib Summary: The cracklib python module Group: Development/Languages/Python BuildRequires: python3 BuildRequires: python3-libs BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-xml Requires: cracklib Requires: python3 Requires: python3-libs %description -n python3-cracklib The cracklib python3 module %package lang Summary: The CrackLib language pack. Group: System Environment/Libraries %description lang The CrackLib language pack. %prep %setup -q -n cracklib-%{version} %patch0 -p1 chmod -R og+rX . mkdir -p dicts install %{SOURCE1} dicts/ %build CFLAGS="$RPM_OPT_FLAGS" ./configure \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --libdir=%{_libdir} \ --libexecdir=%{_libdir} \ --datadir=%{_datadir} \ --disable-static \ --without-python make pushd python python2 setup.py build python3 setup.py build popd %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT/ chmod 755 ./util/cracklib-format chmod 755 ./util/cracklib-packer util/cracklib-format dicts/cracklib* | util/cracklib-packer $RPM_BUILD_ROOT/%{_datadir}/cracklib/words echo password | util/cracklib-packer $RPM_BUILD_ROOT/%{_datadir}/cracklib/empty rm -f $RPM_BUILD_ROOT/%{_datadir}/cracklib/cracklib-small ln -s cracklib-format $RPM_BUILD_ROOT/%{_sbindir}/mkdict ln -s cracklib-packer $RPM_BUILD_ROOT/%{_sbindir}/packer pushd python python2 setup.py install --skip-build --root %{buildroot} python3 setup.py install --skip-build --root %{buildroot} popd %check mkdir -p /usr/share/cracklib cp $RPM_BUILD_ROOT%{_datadir}/cracklib/* /usr/share/cracklib/ make %{?_smp_mflags} test %clean rm -rf $RPM_BUILD_ROOT %post /sbin/ldconfig [ $1 = 1 ] || exit 0 echo "using empty dict to provide pw_dict" >&2 ln -sf empty.hwm %{_datadir}/cracklib/pw_dict.hwm ln -sf empty.pwd %{_datadir}/cracklib/pw_dict.pwd ln -sf empty.pwi %{_datadir}/cracklib/pw_dict.pwi %triggerin -- cracklib-dicts [ $2 = 1 ] || exit 0 echo "switching pw_dict to cracklib-dicts" >&2 ln -sf words.hwm %{_datadir}/cracklib/pw_dict.hwm ln -sf words.pwd %{_datadir}/cracklib/pw_dict.pwd ln -sf words.pwi %{_datadir}/cracklib/pw_dict.pwi %triggerun -- cracklib-dicts [ $2 = 0 ] || exit 0 echo "switching pw_dict to empty dict" >&2 ln -sf empty.hwm %{_datadir}/cracklib/pw_dict.hwm ln -sf empty.pwd %{_datadir}/cracklib/pw_dict.pwd ln -sf empty.pwi %{_datadir}/cracklib/pw_dict.pwi %postun /sbin/ldconfig [ $1 = 0 ] || exit 0 rm -f %{_datadir}/cracklib/pw_dict.hwm rm -f %{_datadir}/cracklib/pw_dict.pwd rm -f %{_datadir}/cracklib/pw_dict.pwi %files %defattr(-,root,root) %{_datadir}/cracklib/cracklib.magic %{_datadir}/cracklib/empty* %{_libdir}/libcrack.so.* %files devel %defattr(-,root,root) %doc README README-DAWG doc %{_includedir}/* %{_libdir}/libcrack.so %{_libdir}/libcrack.la %files python %defattr(-,root,root) %{python2_sitelib}/* %files -n python3-cracklib %defattr(-,root,root) %{python3_sitelib}/* %files dicts %defattr(-,root,root) %{_sbindir}/* %{_datadir}/cracklib/words* %files lang %defattr(-,root,root) %{_datadir}/locale/* %changelog * Wed Jun 07 2017 Xiaolin Li <xiaolinl@vmware.com> 2.9.6-8 - Add python3-setuptools and python3-xml to python3 sub package Buildrequires. * Sun Jun 04 2017 Bo Gan <ganb@vmware.com> 2.9.6-7 - Fix script dependency * Thu May 18 2017 Xiaolin Li <xiaolinl@vmware.com> 2.9.6-6 - Move python2 requires to python subpackage and added python3. * Thu Apr 13 2017 Bo Gan <ganb@vmware.com> 2.9.6-5 - Fix CVE-2016-6318, trigger for cracklib-dicts - Trigger for dynamic symlink for dict * Sun Nov 20 2016 Alexey Makhalov <amakhalov@vmware.com> 2.9.6-4 - Revert compressing pw_dict.pwd back. Python code cracklib.VeryFascistCheck does not handle it. * Tue Nov 15 2016 Alexey Makhalov <amakhalov@vmware.com> 2.9.6-3 - Remove any dicts from cracklib main package - Compress pw_dict.pwd file - Move doc folder to devel package * Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 2.9.6-2 - GA - Bump release of all rpms * Thu Jan 14 2016 Xiaolin Li <xiaolinl@vmware.com> 2.9.6-1 - Updated to version 2.9.6 * Wed May 20 2015 Touseef Liaqat <tliaqat@vmware.com> 2.9.2-2 - Updated group.