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
+}

Reply via email to