From 34b7e55118515d0f270703c47ee98e166f983ecc Mon Sep 17 00:00:00 2001 From: Laszlo Valko Date: Sun, 24 May 2020 15:03:43 +0200 Subject: [PATCH] Added nss-pam-ldapd-0.9.11-r2 with support for Python 3.7. --- sys-auth/nss-pam-ldapd/Manifest | 10 ++ .../nss-pam-ldapd/files/nslcd-tmpfiles.conf | 1 + sys-auth/nss-pam-ldapd/files/nslcd.init | 28 +++ sys-auth/nss-pam-ldapd/files/nslcd.s6 | 3 + sys-auth/nss-pam-ldapd/files/nslcd.service | 14 ++ ...am-ldapd-0.9.11-pynslcd-module-paths.patch | 25 +++ ...ldapd-0.9.4-disable-py3-only-linters.patch | 13 ++ sys-auth/nss-pam-ldapd/files/pynslcd.init | 28 +++ sys-auth/nss-pam-ldapd/metadata.xml | 27 +++ .../nss-pam-ldapd-0.9.11-r2.ebuild | 163 ++++++++++++++++++ 10 files changed, 312 insertions(+) create mode 100644 sys-auth/nss-pam-ldapd/Manifest create mode 100644 sys-auth/nss-pam-ldapd/files/nslcd-tmpfiles.conf create mode 100644 sys-auth/nss-pam-ldapd/files/nslcd.init create mode 100644 sys-auth/nss-pam-ldapd/files/nslcd.s6 create mode 100644 sys-auth/nss-pam-ldapd/files/nslcd.service create mode 100644 sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.11-pynslcd-module-paths.patch create mode 100644 sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.4-disable-py3-only-linters.patch create mode 100644 sys-auth/nss-pam-ldapd/files/pynslcd.init create mode 100644 sys-auth/nss-pam-ldapd/metadata.xml create mode 100644 sys-auth/nss-pam-ldapd/nss-pam-ldapd-0.9.11-r2.ebuild diff --git a/sys-auth/nss-pam-ldapd/Manifest b/sys-auth/nss-pam-ldapd/Manifest new file mode 100644 index 0000000..1f23fa4 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/Manifest @@ -0,0 +1,10 @@ +AUX nslcd-tmpfiles.conf 32 BLAKE2B 082266c3fd69fe866b9698283911e166e48e416b3fd35ab8940ad8d20a40992adf2ed25fd15efc98d6c1922f081ed37ca72ebeaa2a800ce70adc7092a0aaa106 SHA512 ccffd327cfa015ec746f4e1506c02beb514763625b0e5818455491b911d9328b19f17620926c15aaf18f5cd9268ea71f5ef35ce7a427aefab950579d5629ee5d +AUX nslcd.init 513 BLAKE2B 163a960a9d42b13023064e3adebf1aa8a8d4566d4bb472a224d0cbf58ec5c3f03fabd99917931ce7d36ec24490329986f4525e1a982b3e15c1632a534f1935f8 SHA512 7637cd4751fabb9f645820a7935e71606df95d4ddfbe2f21cb447d6b3bd67d087e61ff71fa88832edecaa306ae37252eb4cef60d11fb982aee7fbc5db24ac995 +AUX nslcd.s6 44 BLAKE2B af69fd0202732721739501a65f608fb9fadfdd7e8a58052103a347bd3cfabecc84e5d5478fe689f565ee47f839c4f280d6ad8e88846339995f05fba8942dc8ac SHA512 190cd1440ab30dc32d09d7de9dee783d5d149547e491930d5f514b4bd53197e45a307906762d0e650ef802aa18ba266b40f61483569208c57709b2cbd74d3ae9 +AUX nslcd.service 320 BLAKE2B 18a675fcc821d2c5f7766c0739c3bada8550e5e55f7b589fd9806bd961e9d4149be4a145ac51b9aeabad49293d70c726c1a8dd6a78ff724114e3b34e2270c32b SHA512 f04b66e05bfaefd485a4251c46d2b172a193be77554595086241dcd66a7787cf7678c8e5f6be954192a85a69fd2426965e4ca82c00e610ead8c6dd93a9aa21b1 +AUX nss-pam-ldapd-0.9.11-pynslcd-module-paths.patch 537 BLAKE2B 40167724748124428393c2cc0d70c2fa88abd5fc9c2b12739d79f6dbd9f39e7b53351a68fb6db0e4f11bc0f40b960d1ab4ea256ab1f8aa8c75fe9601fc5674c3 SHA512 2fd21d4851f255264cd0e95f88f45fbca62ad8124c1326569c18bea769c205d4992f88a5fff7ca4bf19cd07c9123a39ecd3df2d5221a0430fb1d25d7b4668a30 +AUX nss-pam-ldapd-0.9.4-disable-py3-only-linters.patch 403 BLAKE2B 2e17a92b3650ce4e6627be7ddb2f656cd9ab53e49d7e2b11d078dac0d7a00015d88d861bfdc1378eb25c1b9750ed3811023cc95b04ccf9d028ffc5899dc01cd5 SHA512 c8cccb044a641f673f12db9717bda4c0c4d91bd1933342595d8f3f540449459c5cf14263133487195b223670d450873f608e3ce5b6f1ca775ca7fe0180a9f962 +AUX pynslcd.init 515 BLAKE2B 711ba152ea9cc52198171e451889ab42a224581bae7e4378846f480063ed9a672fdb38b153d6941364d3d06e325d9feb95f6fd17885b4e6181d99393cb54de0a SHA512 56334d86cc027e538d8a0bf9a8b87308e3ae6e91be608a4a630f21c57cc41b6cb5dc6fb3220fed1ca555dd4da6a5c7c10b2776f9e49a7b71a96ece21fc65fed7 +DIST nss-pam-ldapd-0.9.11.tar.gz 777878 BLAKE2B c2b442786dd788dcf4373939ed52b4585d1821a7168fdd342ded3c99ef9ac8f3e4af0ac360f842b61885c1f2bc2ef85a0ce9ce0c1027bc974d0ba5242505657f SHA512 2b307805667526b85c724e113fe38899eee397e5c8673e89090d4836ce6d0ffcf18dd022d6c20a5e11d4138e736451b841a0f16ba379d524de4faaaf02906645 +EBUILD nss-pam-ldapd-0.9.11-r2.ebuild 4170 BLAKE2B 77c2f2ca4a784bcc4669bf21d738083f516dcdd283142dfc702f990755a35cd1926d4c38dce90ff7aca2503db5e45b8ab88f889b9d1fac4db7d2b8277dd0f5e1 SHA512 b57ef85237ff4bfd96f289896d68dc5ecf0227b252bbf7d45d4a87edbb08b8f94e8377cc559733d488bbc024c62c77845515d82f8ae9a0307b93c4b77603f90d +MISC metadata.xml 1169 BLAKE2B 22b5c9adcafb123a6af088ddfcaa1962eaf250ed153020e65afe36a0e6473b1f8c624f770634a91c3a983c74ded1d43535bb4930f13c6470fad681f5a77fcd51 SHA512 ab658f7d791db370920a4eb57da8ead2713b1cabda6f2dccd24478855043802e7c70a07c3aeaa33829b19dc94a4317d8b5ebec07d1caebe07b4fb3bc59b27b4c diff --git a/sys-auth/nss-pam-ldapd/files/nslcd-tmpfiles.conf b/sys-auth/nss-pam-ldapd/files/nslcd-tmpfiles.conf new file mode 100644 index 0000000..ac4ee0a --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nslcd-tmpfiles.conf @@ -0,0 +1 @@ +d /run/nslcd 0755 nslcd nslcd - diff --git a/sys-auth/nss-pam-ldapd/files/nslcd.init b/sys-auth/nss-pam-ldapd/files/nslcd.init new file mode 100644 index 0000000..959fb60 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nslcd.init @@ -0,0 +1,28 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/usr/sbin/nslcd +pidfile=/run/nslcd/nslcd.pid +extra_commands="checkconfig" +cfg="/etc/nslcd.conf" + +depend() { + need net + use dns logger +} + +checkconfig() { + if [ ! -f "$cfg" ] ; then + eerror "Please create $cfg" + eerror "Example config: /usr/share/nss-ldapd/nslcd.conf" + return 1 + fi + return 0 +} + +start_pre() { + checkpath -q -d /run/nslcd -o nslcd:nslcd + checkconfig + return $? +} diff --git a/sys-auth/nss-pam-ldapd/files/nslcd.s6 b/sys-auth/nss-pam-ldapd/files/nslcd.s6 new file mode 100644 index 0000000..264da00 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nslcd.s6 @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +exec /usr/sbin/nslcd -n diff --git a/sys-auth/nss-pam-ldapd/files/nslcd.service b/sys-auth/nss-pam-ldapd/files/nslcd.service new file mode 100644 index 0000000..b6b167a --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nslcd.service @@ -0,0 +1,14 @@ +[Unit] +Description=NSS and PAM LDAP client daemon +After=network-online.target +Wants=network-online.target nss-lookup.target syslog.service +Before=nss-user-lookup.target + +[Service] +Type=forking +PIDFile=/run/nslcd/nslcd.pid +ExecStart=/usr/sbin/nslcd + +[Install] +WantedBy=multi-user.target +RequiredBy=nss-user-lookup.target diff --git a/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.11-pynslcd-module-paths.patch b/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.11-pynslcd-module-paths.patch new file mode 100644 index 0000000..75ad101 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.11-pynslcd-module-paths.patch @@ -0,0 +1,25 @@ +diff --git a/pynslcd/pynslcd.py b/pynslcd/pynslcd.py +index 0691b61..df2ca4a 100755 +--- a/pynslcd/pynslcd.py ++++ b/pynslcd/pynslcd.py +@@ -30,13 +30,13 @@ import threading + import daemon + import ldap + +-import cfg +-import common +-import constants +-import invalidator +-import mypidfile +-import search +-from tio import TIOStream ++import pynslcd.cfg ++import pynslcd.common ++import pynslcd.constants ++import pynslcd.invalidator ++import pynslcd.mypidfile ++import pynslcd.search ++from pynslcd.tio import TIOStream + + + # the name of the program diff --git a/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.4-disable-py3-only-linters.patch b/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.4-disable-py3-only-linters.patch new file mode 100644 index 0000000..06dcc25 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/nss-pam-ldapd-0.9.4-disable-py3-only-linters.patch @@ -0,0 +1,13 @@ +diff --git a/tests/pylint.rc b/tests/pylint.rc +index 7f0bc13..b66d018 100644 +--- a/tests/pylint.rc ++++ b/tests/pylint.rc +@@ -19,7 +19,7 @@ enable= + # can either give multiple identifier separated by comma (,) or put this option + # multiple time (only on the command line, not in the configuration file where + # it should appear only once). +-disable=E1101 ++disable=E1101,E1608,E1606,E1601 + + + [REPORTS] diff --git a/sys-auth/nss-pam-ldapd/files/pynslcd.init b/sys-auth/nss-pam-ldapd/files/pynslcd.init new file mode 100644 index 0000000..3165b02 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/files/pynslcd.init @@ -0,0 +1,28 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/usr/sbin/pynslcd +pidfile=/run/nslcd/nslcd.pid +extra_commands="checkconfig" +cfg="/etc/nslcd.conf" + +depend() { + need net + use dns logger +} + +checkconfig() { + if [ ! -f "$cfg" ] ; then + eerror "Please create $cfg" + eerror "Example config: /usr/share/nss-ldapd/nslcd.conf" + return 1 + fi + return 0 +} + +start_pre() { + checkpath -q -d /run/nslcd -o nslcd:nslcd + checkconfig + return $? +} diff --git a/sys-auth/nss-pam-ldapd/metadata.xml b/sys-auth/nss-pam-ldapd/metadata.xml new file mode 100644 index 0000000..ad8b010 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/metadata.xml @@ -0,0 +1,27 @@ + + + + + prometheanfire@gentoo.org + Matthew Thode + + + chutzpah@gentoo.org + Patrick McLean + + + Install the command-line utilities + Install the python implementation along with the standard implementation + + + Provides a Name Service Switch (NSS) module that allows your LDAP + server to provide user account, group, host name, alias, netgroup, and + basically any other information that you would normally get from /etc + flat files or NIS. It also provides a Pluggable Authentication Module + (PAM) to do authentication to an LDAP server. + + This is implemented using thin NSS and PAM modules which delegate to a + dedicated service (nslcd) that queries the LDAP server with persistent + connections, authentication, attribute translation, etc. + + diff --git a/sys-auth/nss-pam-ldapd/nss-pam-ldapd-0.9.11-r2.ebuild b/sys-auth/nss-pam-ldapd/nss-pam-ldapd-0.9.11-r2.ebuild new file mode 100644 index 0000000..e9b0707 --- /dev/null +++ b/sys-auth/nss-pam-ldapd/nss-pam-ldapd-0.9.11-r2.ebuild @@ -0,0 +1,163 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=(python3_{6,7}) +inherit eutils prefix user python-r1 multilib multilib-minimal systemd s6 + +DESCRIPTION="NSS module for name lookups using LDAP" +HOMEPAGE="https://arthurdejong.org/nss-pam-ldapd/" +SRC_URI="https://arthurdejong.org/${PN}/${P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE="debug kerberos +pam pynslcd sasl test +utils" +RESTRICT="!test? ( test )" + +COMMON_DEP=" + net-nds/openldap[${MULTILIB_USEDEP}] + sasl? ( dev-libs/cyrus-sasl[${MULTILIB_USEDEP}] ) + kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) + sys-libs/pam[${MULTILIB_USEDEP}] + utils? ( ${PYTHON_DEPS} ) + pynslcd? ( + dev-python/python-ldap[${PYTHON_USEDEP}] + dev-python/python-daemon[${PYTHON_USEDEP}] + ) + !sys-auth/nss_ldap + !sys-auth/pam_ldap" +RDEPEND="${COMMON_DEP}" +DEPEND="${COMMON_DEP} + test? ( + ${PYTHON_DEPS} + dev-python/pylint[${PYTHON_USEDEP}] + ) + sys-devel/automake" + +REQUIRED_USE=" + utils? ( ${PYTHON_REQUIRED_USE} ) + test? ( ${PYTHON_REQUIRED_USE} pynslcd )" + +PATCHES=( + "${FILESDIR}"/${PN}-0.9.4-disable-py3-only-linters.patch + "${FILESDIR}"/${PN}-0.9.11-pynslcd-module-paths.patch +) + +pkg_setup() { + enewgroup nslcd + enewuser nslcd -1 -1 -1 nslcd +} + +src_prepare() { + cp pynslcd/pynslcd.py "${S}" || die "Copying pynslcd failed" + + default + use utils && python_setup + touch pynslcd/__init__.py || die "Could not create __init__.py for pynslcd" +} + +multilib_src_configure() { + local -a myconf + + myconf=( + --disable-utils + --enable-warnings + --with-ldap-lib=openldap + --with-ldap-conf-file=/etc/nslcd.conf + --with-nslcd-pidfile=/run/nslcd/nslcd.pid + --with-nslcd-socket=/run/nslcd/socket + $(usex x86-fbsd '--with-nss-flavour=' '--with-nss-flavour=' 'freebsd' 'glibc') + $(use_enable pynslcd) + $(use_enable debug) + $(use_enable kerberos) + $(use_enable pam) + $(use_enable sasl) + ) + + # nss libraries always go in /lib on Gentoo + if multilib_is_native_abi ; then + myconf+=("--with-pam-seclib-dir=${EPREFIX}/$(get_libdir)/security") + myconf+=("--libdir=${EPREFIX}/$(get_libdir)") + else + myconf+=("--with-pam-seclib-dir=/$(get_libdir)/security") + myconf+=("--libdir=/$(get_libdir)") + fi + + ECONF_SOURCE="${S}" econf "${myconf[@]}" +} + +multilib_src_install_all() { + local script + + newinitd "${FILESDIR}"/nslcd.init nslcd + s6_install_service nslcd "${FILESDIR}"/nslcd.s6 + + insinto /usr/share/nss-pam-ldapd + doins "${WORKDIR}/${P}/nslcd.conf" + + fperms o-r /etc/nslcd.conf + + if use utils; then + python_moduleinto nslcd + python_foreach_impl python_domodule utils/*.py + + for script in chsh getent; do + python_foreach_impl python_newscript utils/${script}.py ${script}.ldap + done + fi + if use pynslcd; then + rm -rf "${D}"/usr/share/pynslcd + python_moduleinto pynslcd + python_foreach_impl python_domodule pynslcd/*.py + python_scriptinto /usr/sbin + python_newscript pynslcd.py pynslcd + newinitd "${FILESDIR}"/pynslcd.init pynslcd + fi + + systemd_newtmpfilesd "${FILESDIR}"/nslcd-tmpfiles.conf nslcd.conf + systemd_newunit "${FILESDIR}"/nslcd.service nslcd.service +} + +multilib_src_install() { + emake DESTDIR="${D}" install + + if use pynslcd; then + python_moduleinto pynslcd + python_foreach_impl python_domodule pynslcd/*.py + fi +} + +python_test() { + PYTHONPATH="${S}" emake check +} + +multilib_src_test() { + pushd "${BUILD_DIR}" + ln -s ../pynslcd/constants.py utils/constants.py + python_foreach_impl python_test + popd +} + +pkg_postinst() { + echo + elog "For this to work you must configure /etc/nslcd.conf" + elog "This configuration is similar to pam_ldap's /etc/ldap.conf" + echo + elog "In order to use nss-pam-ldapd, nslcd needs to be running. You can" + elog "start it like this:" + elog " # /etc/init.d/nslcd start" + echo + elog "You can add it to the default runlevel like so:" + elog " # rc-update add nslcd default" + elog + elog "If you have >=sys-apps/openrc-0.16.3, you can also use s6" + elog "to supervise this service." + elog "To do this, emerge sys-apps/s6 then add nslcd-s6" + elog "default runlevel instead of nslcd." + elog + elog "If you are upgrading, keep in mind that /etc/nss-ldapd.conf" + elog " is now named /etc/nslcd.conf" + echo +}