diff options
author | Sam James <sam@gentoo.org> | 2022-09-07 05:44:38 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-09-07 05:44:51 +0100 |
commit | 949eefbfce316c692cf4c367a533e34e163d4de6 (patch) | |
tree | 4cd29221f53a7a7838f20d728fbc578de67820a9 /dev-libs/libpwquality | |
parent | dev-python/phonenumbers: Remove old (diff) | |
download | gentoo-949eefbfce316c692cf4c367a533e34e163d4de6.tar.gz gentoo-949eefbfce316c692cf4c367a533e34e163d4de6.tar.bz2 gentoo-949eefbfce316c692cf4c367a533e34e163d4de6.zip |
dev-libs/libpwquality: fix fgetpwent_r usage on musl
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs/libpwquality')
3 files changed, 168 insertions, 0 deletions
diff --git a/dev-libs/libpwquality/files/libpwquality-1.4.4-musl-fgetpwent_r.patch b/dev-libs/libpwquality/files/libpwquality-1.4.4-musl-fgetpwent_r.patch new file mode 100644 index 000000000000..6cfb538103ae --- /dev/null +++ b/dev-libs/libpwquality/files/libpwquality-1.4.4-musl-fgetpwent_r.patch @@ -0,0 +1,42 @@ +https://github.com/libpwquality/libpwquality/commit/9084c1b032161cdb53d5f66132a91bdc207faecf + +From: Noel Kuntze <noel.kuntze@thermi.consulting> +Date: Mon, 24 May 2021 14:15:34 +0200 +Subject: [PATCH] pam_pwquality.c: Use pam_modutil_check_user_in_passwd instead + of fgetpwent_r (not available on musl) + +--- a/configure.ac ++++ b/configure.ac +@@ -97,6 +97,11 @@ if test "$enable_pam" != "no"; then + test $fail = 1 && + AC_MSG_ERROR([You must install the PAM development package in order to compile libpwquality]) + fi ++ AC_CHECK_FUNC( ++ [pam_modutil_check_user_in_passwd], ++ [AC_DEFINE([HAVE_PAM_CHECK_USER_IN_PASSWD], [], [have pam_modutil_check_user_in_passwd])], ++ [] ++ ) + fi + + if test "$enable_pam" = "yes"; then +--- a/src/pam_pwquality.c ++++ b/src/pam_pwquality.c +@@ -98,6 +98,9 @@ static int + check_local_user (pam_handle_t *pamh, + const char *user) + { ++#ifdef HAVE_PAM_CHECK_USER_IN_PASSWD ++ return pam_modutil_check_user_in_passwd(pamh, user, NULL) == PAM_SUCCESS; ++#else + struct passwd pw, *pwp; + char buf[4096]; + int found = 0; +@@ -136,6 +139,7 @@ check_local_user (pam_handle_t *pamh, + } else { + return found; + } ++#endif + } + + PAM_EXTERN int + diff --git a/dev-libs/libpwquality/files/libpwquality-1.4.4-pam_pwquality-include.patch b/dev-libs/libpwquality/files/libpwquality-1.4.4-pam_pwquality-include.patch new file mode 100644 index 000000000000..2ed638c1e34a --- /dev/null +++ b/dev-libs/libpwquality/files/libpwquality-1.4.4-pam_pwquality-include.patch @@ -0,0 +1,35 @@ +https://github.com/libpwquality/libpwquality/pull/62 + +From 27057c6cbf528108c35df934280c7dd83e8d5ce9 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Wed, 7 Sep 2022 05:42:17 +0100 +Subject: [PATCH] pam_pwquality: add include for + pam_modutil_check_user_in_passwd + +After 9084c1b032161cdb53d5f66132a91bdc207faecf, one gets: +``` +pam_pwquality.c: In function 'check_local_user': +pam_pwquality.c:102:16: error: implicit declaration of function 'pam_modutil_check_user_in_passwd' [-Werror=implicit-function-declaration] + 102 | return pam_modutil_check_user_in_passwd(pamh, user, NULL) == PAM_SUCCESS; + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cc1: some warnings being treated as errors +make[2]: *** [Makefile:634: pam_pwquality.lo] Error 1 +make[2]: *** Waiting for unfinished jobs.... +``` + +We need to include security/pam_modutil.h when appropriate. + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/src/pam_pwquality.c ++++ b/src/pam_pwquality.c +@@ -34,6 +34,10 @@ + #include <security/_pam_macros.h> + #include <security/pam_ext.h> + ++#ifdef HAVE_PAM_CHECK_USER_IN_PASSWD ++#include <security/pam_modutil.h> ++#endif ++ + /* argument parsing */ + #define PAM_DEBUG_ARG 0x0001 + diff --git a/dev-libs/libpwquality/libpwquality-1.4.4-r2.ebuild b/dev-libs/libpwquality/libpwquality-1.4.4-r2.ebuild new file mode 100644 index 000000000000..460d78a4c2b0 --- /dev/null +++ b/dev-libs/libpwquality/libpwquality-1.4.4-r2.ebuild @@ -0,0 +1,91 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..10} ) +inherit autotools pam python-r1 usr-ldscript + +DESCRIPTION="Library for password quality checking and generating random passwords" +HOMEPAGE="https://github.com/libpwquality/libpwquality" +SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.tar.bz2" + +LICENSE="|| ( BSD GPL-2 )" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="pam python static-libs" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +BDEPEND=" + >=sys-devel/gettext-0.18.2 + virtual/pkgconfig +" +RDEPEND=" + >=sys-libs/cracklib-2.8:=[static-libs(+)?] + pam? ( sys-libs/pam ) + python? ( ${PYTHON_DEPS} ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-musl-fgetpwent_r.patch + "${FILESDIR}"/${PN}-1.4.4-pam_pwquality-include.patch +) + +src_prepare() { + default + # ensure pkgconfig files go in /usr + sed -e "s:\(pkgconfigdir *=\).*:\1 ${EPREFIX}/usr/$(get_libdir)/pkgconfig:" \ + -i src/Makefile.{am,in} || die "sed failed" + + # Needed for musl patch, drop on next release + eautoreconf + + if use python ; then + # bug #830397 + export SETUPTOOLS_USE_DISTUTILS=stdlib + python_copy_sources + fi +} + +src_configure() { + # Install library in /lib for pam + configuring() { + local sitedir + econf \ + --libdir="${EPREFIX}/$(get_libdir)" \ + $(use_enable pam) \ + --with-securedir="${EPREFIX}/$(getpam_mod_dir)" \ + $(use_enable python python-bindings) \ + $(usex python "--with-pythonsitedir=$(use python && python_get_sitedir)" "") \ + $(use_enable static-libs static) + } + if_use_python_python_foreach_impl configuring +} + +src_compile() { + if_use_python_python_foreach_impl default +} + +src_test() { + if_use_python_python_foreach_impl default +} + +src_install() { + if_use_python_python_foreach_impl default + if use static-libs; then + # Do not install static libs in /lib + mkdir -p "${ED}/usr/$(get_libdir)" + mv "${ED}/$(get_libdir)/libpwquality.a" "${ED}/usr/$(get_libdir)/" || die + gen_usr_ldscript libpwquality.so + fi + find "${ED}" -name '*.la' -delete || die +} + +if_use_python_python_foreach_impl() { + if use python; then + python_foreach_impl run_in_build_dir "$@" + else + "$@" + fi +} |