summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-09-07 05:44:38 +0100
committerSam James <sam@gentoo.org>2022-09-07 05:44:51 +0100
commit949eefbfce316c692cf4c367a533e34e163d4de6 (patch)
tree4cd29221f53a7a7838f20d728fbc578de67820a9 /dev-libs/libpwquality
parentdev-python/phonenumbers: Remove old (diff)
downloadgentoo-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')
-rw-r--r--dev-libs/libpwquality/files/libpwquality-1.4.4-musl-fgetpwent_r.patch42
-rw-r--r--dev-libs/libpwquality/files/libpwquality-1.4.4-pam_pwquality-include.patch35
-rw-r--r--dev-libs/libpwquality/libpwquality-1.4.4-r2.ebuild91
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
+}