From 27b7d30f1513c8aa741f0118ebd8af45984ea6c6 Mon Sep 17 00:00:00 2001 From: Sam James Date: Fri, 17 Mar 2023 02:24:43 +0000 Subject: sys-libs/cracklib: fix Python bindings - Fix Python bindings build and clean it up to be more idiomatic - Use PEP517 for Python build too Closes: https://bugs.gentoo.org/901719 Signed-off-by: Sam James --- sys-libs/cracklib/cracklib-2.9.10-r1.ebuild | 134 +++++++++++++++++++++ sys-libs/cracklib/cracklib-2.9.10.ebuild | 123 ------------------- .../files/cracklib-2.9.10-python-inc.patch | 20 +++ 3 files changed, 154 insertions(+), 123 deletions(-) create mode 100644 sys-libs/cracklib/cracklib-2.9.10-r1.ebuild delete mode 100644 sys-libs/cracklib/cracklib-2.9.10.ebuild create mode 100644 sys-libs/cracklib/files/cracklib-2.9.10-python-inc.patch (limited to 'sys-libs/cracklib') diff --git a/sys-libs/cracklib/cracklib-2.9.10-r1.ebuild b/sys-libs/cracklib/cracklib-2.9.10-r1.ebuild new file mode 100644 index 000000000000..0553dfd808a8 --- /dev/null +++ b/sys-libs/cracklib/cracklib-2.9.10-r1.ebuild @@ -0,0 +1,134 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Note: ideally bump with sys-apps/cracklib-words + +DISTUTILS_OPTIONAL=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{9..11} ) +inherit distutils-r1 libtool multilib-minimal usr-ldscript + +MY_P=${P/_} +DESCRIPTION="Password Checking Library" +HOMEPAGE="https://github.com/cracklib/cracklib/" +SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.bz2" +S="${WORKDIR}"/${MY_P} + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="nls python static-libs zlib" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RDEPEND=" + python? ( ${PYTHON_DEPS} ) + zlib? ( >=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] ) +" +DEPEND=" + ${RDEPEND} + nls? ( virtual/libintl ) +" +BDEPEND=" + nls? ( sys-devel/gettext ) + python? ( ${DISTUTILS_DEPS} ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-2.9.10-python-inc.patch +) + +distutils_enable_tests unittest + +pkg_setup() { + # Workaround bug #195017 + if has unmerge-orphans ${FEATURES} && has_version "<${CATEGORY}/${PN}-2.8.10" ; then + eerror "Upgrade path is broken with FEATURES=unmerge-orphans" + eerror "Please run: FEATURES=-unmerge-orphans emerge cracklib" + die "Please run: FEATURES=-unmerge-orphans emerge cracklib" + fi +} + +src_prepare() { + default + + # bug #269003 + elibtoolize + + if use python ; then + distutils-r1_src_prepare + fi +} + +multilib_src_configure() { + local myeconfargs=( + # use /usr/lib so that the dictionary is shared between ABIs + --with-default-dict="/usr/lib/cracklib_dict" + --without-python + $(use_enable nls) + $(use_enable static-libs static) + ) + + export ac_cv_header_zlib_h=$(usex zlib) + export ac_cv_search_gzopen=$(usex zlib -lz no) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_compile() { + default + + if multilib_is_native_abi && use python ; then + local -x CFLAGS="${CFLAGS} -DLOCALEDIR='\"${EPREFIX}/usr/share/locale\"' -DDEFAULT_CRACKLIB_DICT=\'${EPREFIX}/usr/lib/cracklib_dict\'" + cd python || die + distutils-r1_src_compile + fi +} + +multilib_src_test() { + default + + if multilib_is_native_abi && use python ; then + distutils-r1_src_test + fi +} + +python_test() { + cd "${S}"/python || die + + # Make sure we load the freshly built library + local -x LD_LIBRARY_PATH="${BUILD_DIR/-${EPYTHON/./_}}/lib/.libs:${BUILD_DIR}/lib:${LD_LIBRARY_PATH}" + + eunittest +} + +multilib_src_install() { + default + + # Move shared libs to / + gen_usr_ldscript -a crack + + if multilib_is_native_abi && use python ; then + cd python || die + distutils-r1_src_install + fi +} + +multilib_src_install_all() { + einstalldocs + + find "${ED}" -type f -name "*.la" -delete || die + rm -r "${ED}"/usr/share/cracklib || die + + insinto /usr/share/dict + doins dicts/cracklib-small +} + +pkg_postinst() { + if [[ -z ${ROOT} ]] ; then + ebegin "Regenerating cracklib dictionary" + create-cracklib-dict "${EPREFIX}"/usr/share/dict/* > /dev/null + eend $? + fi +} diff --git a/sys-libs/cracklib/cracklib-2.9.10.ebuild b/sys-libs/cracklib/cracklib-2.9.10.ebuild deleted file mode 100644 index 71fddeb64779..000000000000 --- a/sys-libs/cracklib/cracklib-2.9.10.ebuild +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Note: ideally bump with sys-apps/cracklib-words - -DISTUTILS_OPTIONAL=1 -PYTHON_COMPAT=( python3_{9..11} ) -inherit distutils-r1 libtool multilib-minimal usr-ldscript - -MY_P=${P/_} -DESCRIPTION="Password Checking Library" -HOMEPAGE="https://github.com/cracklib/cracklib/" -SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.bz2" -S="${WORKDIR}"/${MY_P} - -LICENSE="LGPL-2.1" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" -IUSE="nls python static-libs zlib" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" - -RDEPEND=" - python? ( ${PYTHON_DEPS} ) - zlib? ( >=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] ) -" -DEPEND=" - ${RDEPEND} - nls? ( virtual/libintl ) -" -BDEPEND=" - nls? ( sys-devel/gettext ) - python? ( - dev-python/setuptools[${PYTHON_USEDEP}] - ) -" - -do_python() { - multilib_is_native_abi || return 0 - use python || return 0 - - pushd python > /dev/null || die - distutils-r1_src_${EBUILD_PHASE} - popd > /dev/null || die -} - -pkg_setup() { - # Workaround bug #195017 - if has unmerge-orphans ${FEATURES} && has_version "<${CATEGORY}/${PN}-2.8.10" ; then - eerror "Upgrade path is broken with FEATURES=unmerge-orphans" - eerror "Please run: FEATURES=-unmerge-orphans emerge cracklib" - die "Please run: FEATURES=-unmerge-orphans emerge cracklib" - fi -} - -src_prepare() { - default - - # bug ##269003 - elibtoolize - - do_python -} - -multilib_src_configure() { - local myeconfargs=( - # use /usr/lib so that the dictionary is shared between ABIs - --with-default-dict="/usr/lib/cracklib_dict" - --without-python - $(use_enable nls) - $(use_enable static-libs static) - ) - - export ac_cv_header_zlib_h=$(usex zlib) - export ac_cv_search_gzopen=$(usex zlib -lz no) - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_compile() { - default - - do_python -} - -multilib_src_test() { - default - - # Make sure we load the freshly built library - LD_LIBRARY_PATH="${BUILD_DIR}/lib/.libs:${LD_LIBRARY_PATH}" do_python -} - -python_test() { - ${EPYTHON} -m unittest test_cracklib || die "Tests fail with ${EPYTHON}" -} - -multilib_src_install() { - default - - # Move shared libs to / - gen_usr_ldscript -a crack - - do_python -} - -multilib_src_install_all() { - einstalldocs - - find "${ED}" -type f -name "*.la" -delete || die - rm -r "${ED}"/usr/share/cracklib || die - - insinto /usr/share/dict - doins dicts/cracklib-small -} - -pkg_postinst() { - if [[ -z ${ROOT} ]] ; then - ebegin "Regenerating cracklib dictionary" - create-cracklib-dict "${EPREFIX}"/usr/share/dict/* > /dev/null - eend $? - fi -} diff --git a/sys-libs/cracklib/files/cracklib-2.9.10-python-inc.patch b/sys-libs/cracklib/files/cracklib-2.9.10-python-inc.patch new file mode 100644 index 000000000000..fd9960df0e8f --- /dev/null +++ b/sys-libs/cracklib/files/cracklib-2.9.10-python-inc.patch @@ -0,0 +1,20 @@ +https://github.com/cracklib/cracklib/pull/61 + +From 802cbc426779489d44d7fc19e695e7d962c65665 Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Fri, 17 Mar 2023 02:20:19 +0000 +Subject: [PATCH] python: adjust include path for builddir + +We need this for config.h added by 2e0f854bada720ff4fbd13aed4f87087d466274d. +--- a/python/setup.py.in ++++ b/python/setup.py.in +@@ -22,7 +22,7 @@ from setuptools import setup, Extension + extensions = [ + Extension("_cracklib", + ["@srcdir@/_cracklib.c"], +- include_dirs = ["@top_srcdir@/lib"], ++ include_dirs = ["@top_builddir@", "@top_srcdir@/lib"], + libraries = ["crack"], + library_dirs = ["@top_builddir@/lib/.libs"]), + ] + -- cgit v1.2.3-65-gdbad