File libpwquality.spec of Package libpwquality

#
# spec file for package libpwquality
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%define _secconfdir %{_sysconfdir}/security
%define libname libpwquality1
%bcond_without python2

Name:           libpwquality
Version:        1.4.5
Release:        0
Summary:        Library for password quality checking and generating random passwords
License:        BSD-3-Clause OR GPL-2.0-or-later
Group:          Development/Libraries/C and C++
URL:            https://github.com/libpwquality/libpwquality
Source:         %{url}/releases/download/%{name}-%{version}/%{name}-%{version}.tar.bz2
Source1:        baselibs.conf

BuildRequires:  cracklib-devel
BuildRequires:  gettext-devel
BuildRequires:  pam-devel
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(python3)
%if %{with python2}
BuildRequires:  pkgconfig(python2)
%endif
BuildRequires:  python-rpm-macros

%description
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

%lang_package

%package -n %{libname}
Summary:        Library for password quality checking and generating random passwords
Group:          System/Libraries
Requires:       cracklib-dict >= 2.8
Recommends:     cracklib-dict-full >= 2.8
# To make lang package installable
Provides:       %{name}

%description -n %{libname}
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

%package tools
Summary:        Tools from libpequality, a library for password quality checking
Group:          Productivity/Security

%description tools
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

This package contains simple tools that use libpwquality.

%package devel
Summary:        Development files for libpwquality, a library for password quality checking
Group:          Development/Libraries/C and C++
Requires:       %{libname} = %{version}
Requires:       pkgconfig

%description devel
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

This package provides files needed for development of applications
using the libpwquality library.

%package -n pam_pwquality
Summary:        PAM module to disallow weak new passwords
Group:          System/Libraries
Requires:       pam
Requires(post): pam-config
Requires(postun):pam-config

%description -n pam_pwquality
The pam_pwquality PAM module can be used instead of pam_cracklib to
disallow weak new passwords when user's login password is changed.

%package -n python2-pwquality
Summary:        Python bindings for libpwquality
Group:          Development/Libraries/Python
Provides:       python-pwquality = %{version}-%{release}
Obsoletes:      python-pwquality < %{version}-%{release}

%description -n python2-pwquality
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

This package provides Python bindings for the libpwquality library.

%package -n python3-pwquality
Summary:        Python 3 bindings for libpwquality
Group:          Development/Libraries/Python
Provides:       python-pwquality = %{version}-%{release}
Obsoletes:      python-pwquality < %{version}-%{release}

%description -n python3-pwquality
libpwquality is a library for password quality checks and generation
of random passwords that pass the checks.

This package provides Python 3 bindings for the libpwquality library.

%prep
%autosetup -p1

%build
%configure \
	--disable-static \
	--with-securedir=%{_pam_moduledir} \
	--with-python-binary=%{_bindir}/python3 \
	--with-pythonsitedir=%{python3_sitearch} \
	%{nil}
%if 0%{?suse_version} < 1500
make -O %{?_smp_mflags}
%else
%make_build
%endif
%if %{with python2}
pushd python
%python_build
popd
%endif

%install
%make_install
%if %{with python2}
pushd python
%python_install
popd
%endif

find %{buildroot} -type f -name "*.la" -delete -print
%find_lang %{name} %{?no_lang_C}

%post -n %{libname} -p /sbin/ldconfig
%postun -n %{libname} -p /sbin/ldconfig

%post -n pam_pwquality
# Due to boo#728586 it is necessary to duplicate this in the 32bit variant.
# So you need to edit baselibs.conf if you change this.
%{_sbindir}/pam-config -a --pwquality || :

%postun -n pam_pwquality
if [ "$1" = "0" ]; then
  %{_sbindir}/pam-config -d --pwquality || :
fi

%files -n %{libname}
%license COPYING
%doc AUTHORS NEWS README
%{_libdir}/libpwquality.so.*
%config(noreplace) %{_secconfdir}/pwquality.conf
%{_mandir}/man3/pwquality.3%{?ext_man}
%{_mandir}/man5/pwquality.conf.5%{?ext_man}

%files tools
%{_bindir}/pwmake
%{_bindir}/pwscore
%{_mandir}/man1/pwmake.1%{?ext_man}
%{_mandir}/man1/pwscore.1%{?ext_man}

%files devel
%{_includedir}/pwquality.h
%{_libdir}/libpwquality.so
%{_libdir}/pkgconfig/pwquality.pc

%files -n pam_pwquality
%{_pam_moduledir}/pam_pwquality.so
%{_mandir}/man8/pam_pwquality.8%{?ext_man}

%if %{with python2}
%files -n python2-pwquality
%{python2_sitearch}/*
%endif

%files -n python3-pwquality
%{python3_sitearch}/*

%files lang -f libpwquality.lang

%changelog
openSUSE Build Service is sponsored by