From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id EA80D138247 for ; Mon, 13 Oct 2014 10:22:13 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9A8AEE081E; Mon, 13 Oct 2014 10:22:12 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B4CD1E0999 for ; Mon, 13 Oct 2014 10:22:11 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 870C23403DD for ; Mon, 13 Oct 2014 10:22:09 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 4404F7B98 for ; Mon, 13 Oct 2014 10:22:08 +0000 (UTC) From: "Mark Wright" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mark Wright" Message-ID: <1413195244.374cd76846cd1bfcaa3821ce56d747b0d671e00e.gienah@gentoo> Subject: [gentoo-commits] proj/sci:int64-build-eclass commit in: sci-libs/lapack-reference/ X-VCS-Repository: proj/sci X-VCS-Files: sci-libs/lapack-reference/ChangeLog sci-libs/lapack-reference/lapack-reference-9999.ebuild X-VCS-Directories: sci-libs/lapack-reference/ X-VCS-Committer: gienah X-VCS-Committer-Name: Mark Wright X-VCS-Revision: 374cd76846cd1bfcaa3821ce56d747b0d671e00e X-VCS-Branch: int64-build-eclass Date: Mon, 13 Oct 2014 10:22:08 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: a0cc692f-b72d-437f-ad05-e39a94bec579 X-Archives-Hash: a5e2babb0619c36af428fa0039bde347 commit: 374cd76846cd1bfcaa3821ce56d747b0d671e00e Author: gienah gentoo org> AuthorDate: Mon Oct 13 10:14:04 2014 +0000 Commit: Mark Wright gentoo org> CommitDate: Mon Oct 13 10:14:04 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=374cd768 Refactor to lapack-reference use the fortran-int64.eclass. Add the virtual to PDEPEND. Call fortran-int64_ensure_blas to check the blas pkg-config file is available, and the blas-int64 pkg-config file if the int64 USE flag is specified. Remove the sed -e /export/s:lapack::g line for CMakeLists.txt, as I do not wish to change this line: "export(TARGETS ${ALL_TARGETS} FILE lapack-targets.cmake)". Change the addition of the xblas library to the Requires of the pkg-config file to allow for using an int64 build of xblas, by renaming BLAS_PROFNAME to BLAS_REQUIRES then including xblas in the -DBLAS_REQUIRES in src_configure. Try to fix https://github.com/gentoo-science/sci/issues/275 and Bug 524830 - sci-libs/arpack - configure: ld: cannot find -llapack_rs6k by calculating the blas pkg-config file to add to the Requires - needs testing. --- sci-libs/lapack-reference/ChangeLog | 14 ++ .../lapack-reference/lapack-reference-9999.ebuild | 161 +++++---------------- 2 files changed, 50 insertions(+), 125 deletions(-) diff --git a/sci-libs/lapack-reference/ChangeLog b/sci-libs/lapack-reference/ChangeLog index d50e3cc..4fcbb7b 100644 --- a/sci-libs/lapack-reference/ChangeLog +++ b/sci-libs/lapack-reference/ChangeLog @@ -2,6 +2,20 @@ # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 # $Header: /var/cvsroot/gentoo-x86/sci-libs/lapack-reference/ChangeLog,v 1.51 2010/10/02 20:49:51 grobian Exp $ + 13 Oct 2014; Mark Wright lapack-reference-9999.ebuild: + Refactor to lapack-reference use the fortran-int64.eclass. Add the virtual to + PDEPEND. Call fortran-int64_ensure_blas to check the blas pkg-config file is + available, and the blas-int64 pkg-config file if the int64 USE flag is + specified. Remove the sed -e /export/s:lapack::g line for CMakeLists.txt, as + I do not wish to change this line: "export(TARGETS ${ALL_TARGETS} FILE + lapack-targets.cmake)". Change the addition of the xblas library to the + Requires of the pkg-config file to allow for using an int64 build of xblas, + by renaming BLAS_PROFNAME to BLAS_REQUIRES then including xblas in the + -DBLAS_REQUIRES in src_configure. Try to fix + https://github.com/gentoo-science/sci/issues/275 and Bug 524830 - + sci-libs/arpack - configure: ld: cannot find -llapack_rs6k by calculating the + blas pkg-config file to add to the Requires - needs testing. + 08 Oct 2014; Honza Macháček lapack-reference-9999.ebuild: The circular dependency on virtual/lapack removed. diff --git a/sci-libs/lapack-reference/lapack-reference-9999.ebuild b/sci-libs/lapack-reference/lapack-reference-9999.ebuild index 02e8871..75000dd 100644 --- a/sci-libs/lapack-reference/lapack-reference-9999.ebuild +++ b/sci-libs/lapack-reference/lapack-reference-9999.ebuild @@ -3,7 +3,9 @@ # $Header: $ EAPI=5 -inherit fortran-2 cmake-utils multibuild alternatives-2 multilib-build toolchain-funcs +EBASE_PROFNAME="reflapack" +ESTATIC_MULTIBUILD=1 +inherit fortran-2 cmake-utils multibuild alternatives-2 multilib-build toolchain-funcs fortran-int64 if [[ ${PV} == "9999" ]] ; then # The master ESVN_REPO_URI is difficult to access, the git mirror is easier @@ -33,101 +35,22 @@ IUSE="int64 static-libs test xblas" RDEPEND=" >=virtual/blas-2.1-r1[int64?] xblas? ( sci-libs/xblas[fortran] )" - DEPEND="${RDEPEND} virtual/pkgconfig" +PDEPEND=" + >=virtual/lapack-3.5-r2[int64?]" S="${WORKDIR}/${MYP}" -INT64_SUFFIX="int64" -STATIC_SUFFIX="static" -BASE_PROFNAME="reflapack" - -get_profname() { - local profname="${1:-${BASE_PROFNAME}}" - if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then - profname+="-${INT64_SUFFIX}" - fi - echo "${profname}" -} - -get_variant_suffix() { - local profname="${1:-$(get_profname)}" - local variant_suffix="${profname//${BASE_PROFNAME}/}" - echo "${variant_suffix}" -} - -get_blas_module() { - local module_name="blas" - if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then - module_name+="-${INT64_SUFFIX}" - fi - echo "${module_name}" -} - -get_blas_profname() { - local profname="${1:-$(get_profname)}" - local variant_suffix=$(get_variant_suffix "${profname}") - local blas_profile=$(eselect $(get_blas_module) show) - local selected_blas_profile="${blas_profile}" - local blas_no_int64="${selected_blas_profile/-int64/}" - local blas_base="${blas_no_int64%-*}" - local blas_name="${blas_no_int64/${blas_base}/${blas_base}${variant_suffix}}" - echo "${blas_name}" -} - -get_lapack_module() { - local module_name="lapack" - if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then - module_name+="-${INT64_SUFFIX}" - fi - echo "${module_name}" -} - -int64_multilib_get_enabled_abis() { - local MULTILIB_VARIANTS=( $(multilib_get_enabled_abis) ) - local MULTILIB_INT64_VARIANTS=() - local i - for i in "${MULTILIB_VARIANTS[@]}"; do - if use int64 && [[ "${i}" =~ 64$ ]]; then - MULTILIB_INT64_VARIANTS+=( "${i}_${INT64_SUFFIX}" ) - fi - MULTILIB_INT64_VARIANTS+=( "${i}" ) - done - local MULTIBUILD_VARIANTS=() - local j - for j in "${MULTILIB_INT64_VARIANTS[@]}"; do - use static-libs && MULTIBUILD_VARIANTS+=( "${j}_${STATIC_SUFFIX}" ) - MULTIBUILD_VARIANTS+=( "${j}" ) - done - echo "${MULTIBUILD_VARIANTS[@]}" -} - -# @FUNCTION: _int64_multilib_multibuild_wrapper -# @USAGE: ... -# @INTERNAL -# @DESCRIPTION: -# Initialize the environment for ABI selected for multibuild. -_int64_multilib_multibuild_wrapper() { - debug-print-function ${FUNCNAME} "${@}" - local v="${MULTIBUILD_VARIANT/_${INT64_SUFFIX}/}" - local ABI="${v/_${STATIC_SUFFIX}/}" - multilib_toolchain_setup "${ABI}" - "${@}" -} - src_prepare() { - local MULTIBUILD_VARIANTS=( $(int64_multilib_get_enabled_abis) ) - if use int64; then - local blas_int64_profname=$(get_blas_profname "${BASE_PROFNAME}-${INT64_SUFFIX}") - $(tc-getPKG_CONFIG) --exists "${blas_int64_profname}" || die "Use int64 requires ${blas_int64_profname}" - fi + fortran-int64_ensure_blas # rename library to avoid collision with other lapack implementations - local LIBNAME="${PROFNAME//-/_}" + # ${PROFNAME}, ${LIBNAME} and ${BLAS_REQUIRES} are not defined here, they + # are in single quotes in the following seds. They are set later by + # defining a cmake variables with -DPROFNAME etc in src_configure. sed -i \ -e 's:BINARY_DIR}/lapack.pc:BINARY_DIR}/${PROFNAME}.pc:' \ - -e '/export/s:lapack:${LIBNAME}:g' \ -e '/ALL_TARGETS/s:lapack):${LIBNAME}):' \ -e '/LAPACK_LIBRARIES/s:lapack:${LIBNAME}:g' \ CMakeLists.txt || die @@ -135,8 +58,9 @@ src_prepare() { -e 's:(lapack:(${LIBNAME}:g' \ SRC/CMakeLists.txt || die sed -i \ + -e '/Name: /s:lapack:${PROFNAME}:' \ -e 's:-llapack:-l${LIBNAME}:g' \ - -e 's/Requires: blas/Requires: ${BLAS_PROFNAME}\nFflags=${LAPACK_PKGCONFIG_FFLAGS}/' \ + -e '/Requires: /s:blas:${BLAS_REQUIRES}\nFflags=${LAPACK_PKGCONFIG_FFLAGS}:' \ lapack.pc.in || die # some string does not get passed properly sed -i \ @@ -146,42 +70,32 @@ src_prepare() { sed -i \ -e '/lapack_install_library(tmglib)/d' \ TESTING/MATGEN/CMakeLists.txt || die - # if xblas is used add it in the .pc file - if use xblas ; then - sed -i \ - -e '/Requires/s:blas:blas xblas:' \ - lapack.pc.in || die - fi } src_configure() { - local MULTIBUILD_VARIANTS=( $(int64_multilib_get_enabled_abis) ) + local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) ) my_src_configure() { - local profname=$(get_profname) + local profname=$(fortran-int64_get_profname) local libname="${profname//-/_}" - local blas_profname=$(get_blas_profname) + local blas_profname=$(fortran-int64_get_blas_profname) + local xblas_profname=$(fortran-int64_get_xblas_profname) + local blas_requires="${blas_profname}" + use xblas && \ + blas_requires+=" ${xblas_profname}" local mycmakeargs=( -DPROFNAME="${profname}" - -DBLAS_PROFNAME="${blas_profname}" + -DBLAS_REQUIRES="${blas_requires}" -DLIBNAME="${libname}" -DUSE_OPTIMIZED_BLAS=ON -DBLAS_LIBRARIES="$($(tc-getPKG_CONFIG) --libs ${blas_profname})" $(cmake-utils_use_build test TESTING) $(cmake-utils_use_use xblas XBLAS) - $@ + -DCMAKE_C_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CFLAGS}" + -DCMAKE_CXX_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CXXFLAGS}" + -DCMAKE_Fortran_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) $(get_abi_CFLAGS) $(fortran-int64_get_fortran_int64_abi_fflags) ${FCFLAGS}" + -DLAPACK_PKGCONFIG_FFLAGS="$(fortran-int64_get_fortran_int64_abi_fflags)" ) - if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then - mycmakeargs+=( - -DCMAKE_Fortran_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) $(get_abi_CFLAGS) -fdefault-integer-8 ${FCFLAGS}" - -DLAPACK_PKGCONFIG_FFLAGS="-fdefault-integer-8" - ) - else - mycmakeargs+=( - -DCMAKE_Fortran_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) $(get_abi_CFLAGS) ${FCFLAGS}" - -DLAPACK_PKGCONFIG_FFLAGS="" - ) - fi - if [[ "${MULTIBUILD_ID}" =~ "_${STATIC_SUFFIX}" ]]; then + if $(fortran-int64_is_static_build); then mycmakeargs+=( -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON @@ -192,34 +106,31 @@ src_configure() { -DBUILD_STATIC_LIBS=OFF ) fi - mycmakeargs+=( - -DCMAKE_C_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CFLAGS}" - -DCMAKE_CXX_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CXXFLAGS}" - ) cmake-utils_src_configure } - multibuild_foreach_variant _int64_multilib_multibuild_wrapper my_src_configure + multibuild_foreach_variant fortran-int64_multilib_multibuild_wrapper my_src_configure } src_compile() { - local MULTIBUILD_VARIANTS=( $(int64_multilib_get_enabled_abis) ) - multibuild_foreach_variant _int64_multilib_multibuild_wrapper cmake-utils_src_compile + local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) ) + multibuild_foreach_variant fortran-int64_multilib_multibuild_wrapper cmake-utils_src_compile } src_test() { - local MULTIBUILD_VARIANTS=( $(int64_multilib_get_enabled_abis) ) - multibuild_foreach_variant _int64_multilib_multibuild_wrapper cmake-utils_src_test + local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) ) + multibuild_foreach_variant fortran-int64_multilib_multibuild_wrapper cmake-utils_src_test } src_install() { - local MULTIBUILD_VARIANTS=( $(int64_multilib_get_enabled_abis) ) + local MULTIBUILD_VARIANTS=( $(fortran-int64_multilib_get_enabled_abis) ) my_src_install() { cmake-utils_src_install - if [[ ! "${MULTIBUILD_ID}" =~ "_${STATIC_SUFFIX}" ]]; then - local profname=$(get_profname) - alternatives_for $(get_lapack_module) $(get_profname "reference") 0 \ - /usr/$(get_libdir)/pkgconfig/$(get_lapack_module).pc ${profname}.pc + if ! $(fortran-int64_is_static_build); then + local profname=$(fortran-int64_get_profname) + local provider=$(fortran-int64_get_lapack_provider) + alternatives_for ${provider} $(fortran-int64_get_profname "reference") 0 \ + /usr/$(get_libdir)/pkgconfig/${provider}.pc ${profname}.pc fi } - multibuild_foreach_variant _int64_multilib_multibuild_wrapper my_src_install + multibuild_foreach_variant fortran-int64_multilib_multibuild_wrapper my_src_install }