commit: 7042abcbbdc55281a5334cbeddb922b22d1acab6 Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org> AuthorDate: Fri Feb 7 03:30:14 2020 +0000 Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org> CommitDate: Fri Feb 7 03:40:44 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7042abcb
profiles/base: fix libxcrypt USE mask date, add split-usr to mask Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org> Signed-off-by: Patrick McLean <patrick.mclean <AT> sony.com> profiles/base/package.use.mask | 4 +- sys-libs/libxcrypt/libxcrypt-4.4.12-r1.ebuild | 165 ++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 2 deletions(-) diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask index 63e97021e23..4dbdb7a19e5 100644 --- a/profiles/base/package.use.mask +++ b/profiles/base/package.use.mask @@ -104,9 +104,9 @@ sci-visualization/veusz fits # eMovix is being removed. kde-apps/k3b emovix -# Patrick McLean <chutz...@gentoo.org> (2910-11-07) +# Patrick McLean <chutz...@gentoo.org> (2019-11-07) # Collides with sys-libc/glibc[crypt] -sys-libs/libxcrypt system +sys-libs/libxcrypt split-usr system # Michał Górny <mgo...@gentoo.org> (2019-10-05) # net-libs/openslp is being removed. diff --git a/sys-libs/libxcrypt/libxcrypt-4.4.12-r1.ebuild b/sys-libs/libxcrypt/libxcrypt-4.4.12-r1.ebuild new file mode 100644 index 00000000000..45264f51d4a --- /dev/null +++ b/sys-libs/libxcrypt/libxcrypt-4.4.12-r1.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_{6,7,8} ) +inherit autotools multibuild python-any-r1 usr-ldscript multilib-minimal + +DESCRIPTION="Extended crypt library for descrypt, md5crypt, bcrypt, and others " +SRC_URI="https://github.com/besser82/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" +HOMEPAGE="https://github.com/besser82/libxcrypt" + +LICENSE="LGPL-2.1+ public-domain BSD BSD-2" +SLOT="0/1" +KEYWORDS="~amd64 ~x86" +IUSE="+compat split-usr +static-libs system test" + +DEPEND="system? ( + elibc_glibc? ( sys-libs/glibc[-crypt(+)] ) + !sys-libs/musl + )" +RDEPEND="${DEPEND}" +BDEPEND="sys-apps/findutils + test? ( + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/passlib[${PYTHON_USEDEP}]') + )" + +RESTRICT="!test? ( test )" + +REQUIRED_USE="split-usr? ( system )" + +PATCHES=( + "${FILESDIR}/libxcrypt-4.4.12-pythonver.patch" + "${FILESDIR}/libxcrypt-4.4.12-multibuild.patch" +) + +pkg_setup() { + MULTIBUILD_VARIANTS=( + $(usex compat 'xcrypt_compat' '') + xcrypt_nocompat + ) + + use test && python-any-r1_pkg_setup +} + +src_prepare() { + default + eautoreconf +} + +src_configure() { + multibuild_foreach_variant multilib-minimal_src_configure +} + +get_xclibdir() { + printf -- "%s/%s/%s\n" \ + "$(usex split-usr '' '/usr')" \ + "$(get_libdir)" \ + "$(usex system '' 'xcrypt')" +} + +multilib_src_configure() { + local -a myconf=( + --libdir=$(get_xclibdir) + --with-pkgconfigdir=/usr/$(get_libdir)/pkgconfig + --includedir="${EPREFIX}/usr/include/$(usex system '' 'xcrypt')" + ) + + case "${MULTIBUILD_ID}" in + xcrypt_compat-*) + myconf+=( + --disable-static + --disable-xcrypt-compat-files + --enable-obsolete-api=yes + ) + ;; + xcrypt_nocompat-*) + myconf+=( + --enable-obsolete-api=no + $(use_enable static-libs static) + ) + ;; + *) die "Unexpected MULTIBUILD_ID: ${MULTIBUILD_ID}";; + esac + + ECONF_SOURCE="${S}" econf "${myconf[@]}" +} + +src_compile() { + multibuild_foreach_variant multilib-minimal_src_compile +} + +multilib_src_test() { + emake check +} + +src_test() { + multibuild_foreach_variant multilib-minimal_src_test +} + +src_install() { + multibuild_foreach_variant multilib-minimal_src_install + + ( + shopt -s failglob || die "failglob failed" + + # make sure out man pages don't collide with glibc or man-pages + for manpage in "${ED}"/usr/share/man/man3/crypt{,_r}.?*; do + mv -n "${manpage}" "$(dirname "${manpage}")/xcrypt_$(basename "${manpage}")" \ + || die "mv failed" + done + ) || die "failglob error" + + # remove useless stuff from installation + find "${D}"/usr/share/doc/${PF} -type l -delete || die + find "${D}" -name '*.la' -delete || die +} + +multilib_src_install() { + emake DESTDIR="${D}" install + + # don't install the libcrypt.so symlink for the "compat" version + case "${MULTIBUILD_ID}" in + xcrypt_compat-*) + rm "${D}"$(get_xclibdir)/libcrypt$(get_libname) \ + || die "failed to remove extra compat libraries" + ;; + xcrypt_nocompat-*) + if use static-libs; then + ( + # .a files are installed to /$(get_libdir) by default + # move static libraries to /usr prefix or portage will abort + shopt -s nullglob || die "failglob failed" + static_libs=( "${ED}"/$(get_xclibdir)/*.a ) + + if [[ -n ${static_libs[*]} ]]; then + dodir "/usr/$(get_xclibdir)" + mv "${static_libs[@]}" "${D}/usr/$(get_xclibdir)" \ + || die "moving static libs failed" + fi + ) + fi + + if use split-usr && use system; then + ( + # now try to find libraries and make sure to generate + # ldscripts for them + shopt -s failglob || die "failglob failed" + + for lib_file in "${ED}"$(get_xclibdir)/*$(get_libname); do + libname="$(basename "${lib_file}")" + + cp -L "${lib_file}" \ + "${ED}/usr/$(get_xclibdir)/${libname}" \ + || die "copying ${libname} failed" + + gen_usr_ldscript ${libname} + dosym ${libname} /usr/$(get_xclibdir)/${libname}.2 + done + ) + fi + ;; + *) die "Unexpected MULTIBUILD_ID: ${MULTIBUILD_ID}";; + esac +}