Changeset - 3dad46db74d4
[Not reviewed]
0 0 2
Chel Sea (chain) - 12 years ago 2013-02-01 16:03:49
chain@rpgfiction.net
added ebuild for lapack-atlas
2 files changed with 188 insertions and 0 deletions:
0 comments (0 inline, 0 general)
sci-libs/lapack-atlas/Manifest
Show inline comments
 
new file 100644
 
DIST atlas-3.7.39-shared-libs.patch.bz2 6612 SHA256 c4f1c572a4506931c937d71f5b72709b36066e3c33b856a8a19444f72d2f9528 SHA512 476eecfba13e087b3342d4e10edd36e630be20ab36af456d1718360eeb3486a87b34d00762845f1588782c03ff56e83e71dc5381da16a14922511b3f81f93a05 WHIRLPOOL bfbd5517b53d3638767df224e31e52f573049ce4a9441c407b7172fc0accb5d2f9e53256e673379f992c5cd447bfd90bc22e7a0cb48e592fd64884ec67f8ff54
 
DIST atlas3.8.0.tar.bz2 2463051 SHA256 e9131d8ffd2dfdd12312676e38183ca45a52547fad5498e46f90c95954bf121c SHA512 bcc1b2197fd52ff1eceb58eef5a618a4f5b5117264289d5311350f315be237cddc4f42ad08447049107b542d4fa9cf12ff35634684097df254a4366eda977a2a WHIRLPOOL 68ed783af74f9af1ae621bffa2a2a136876f6e663872f95abf6c028d2ae0fb87fc3c9359a7d669cd02a87b1ee22effed63f687852d580114c4116a28070b2899
 
DIST lapack-lite-3.1.1.tgz 5332509 SHA256 505a13272d0d71c45ea52be2de74b0562b234ea3ccf5160665c7a2ee74a58437 SHA512 492b932ef313339ce6b4e63ac8f778489e6870b0eb85f7b086f3c844e75f98e7f85382c7556dfa368ab8320b6f02d1df8ccfcb40b5c0b7c2d74518b7c309e75c WHIRLPOOL 11145043d16b8c2972229e17a24e92e62987c08e84d91b81a7f4767b80f13844faffb2a2798b321a78c7127d849a0fd60cbb1605f03e150b4eaa6c230f0e7fdd
 
DIST lapack-reference-3.1.1-autotools.patch.bz2 7233 SHA256 63e2c0b64118ca20aed3ca52dbc553ba924c242d3a0b07e6236dee99ede16802 SHA512 3ae61a9d569bdbe3d416652feedf1ae26fe85b23d919fb9d493e1474e616eeb23e87738ecb4970dde5f320812d3bb71c0f3c432548ab8e978941d90afe4cb418 WHIRLPOOL 449d9bf9c7f58c019804708b10f902919e55a722af6fe31904cd7b941074c66c68ef809e56fcce99e6f946da8e69be383b838a6a866ede6ee925268d6b24d423
 
EBUILD lapack-atlas-3.8.0.ebuild 5891 SHA256 cc84077dbc8782262ef22e1c73cf76746d969504590e09c965886969db88532b SHA512 4a12f8ce68910bbddb3b197d59081c258352ec200a96299d8f1ed81878f7df6a9dae1cc2a309a6de4242e72ab00b680e8e12f94e69277b6b0463744a84094a6d WHIRLPOOL 8115e3a518af19d434602de8bd7da571ac08000a1400f9769fa2f284d5431d494c4d2cc9a1a7ab20fd2157c051df396776fb06d61389a016b475c497f8360dc0
sci-libs/lapack-atlas/lapack-atlas-3.8.0.ebuild
Show inline comments
 
new file 100644
 
# Copyright 1999-2010 Gentoo Foundation
 
# Distributed under the terms of the GNU General Public License v2
 
# $Header: /var/cvsroot/gentoo-x86/sci-libs/lapack-atlas/lapack-atlas-3.8.0.ebuild,v 1.17 2010/12/17 08:10:35 jlec Exp $
 

	
 
inherit eutils flag-o-matic toolchain-funcs autotools versionator
 

	
 
MY_PN="${PN/lapack-/}"
 
PATCH_V="3.7.39"
 
L_PN="lapack"
 
L_PV="3.1.1"
 
BlasRelease=$(get_version_component_range 1-3)
 

	
 
DESCRIPTION="F77 and C LAPACK implementations using available ATLAS routines"
 
LICENSE="BSD"
 
HOMEPAGE="http://math-atlas.sourceforge.net/"
 
SRC_URI1="mirror://sourceforge/math-atlas/${MY_PN}${PV}.tar.bz2"
 
SRC_URI2="http://www.netlib.org/${L_PN}/${L_PN}-lite-${L_PV}.tgz"
 
SRC_URI="${SRC_URI1} ${SRC_URI2}
 
	mirror://gentoo/${MY_PN}-${PATCH_V}-shared-libs.patch.bz2
 
	mirror://gentoo/${L_PN}-reference-${L_PV}-autotools.patch.bz2"
 

	
 
SLOT="0"
 
IUSE="doc"
 
KEYWORDS="alpha amd64 ppc ppc64 sparc x86"
 

	
 
CDEPEND="virtual/blas
 
	virtual/cblas
 
	app-admin/eselect-lapack
 
	~sci-libs/blas-atlas-${BlasRelease}"
 
DEPEND="${CDEPEND}
 
	dev-util/pkgconfig
 
	>=sys-devel/libtool-1.5"
 
RDEPEND="${CDEPEND}
 
	doc? ( app-doc/lapack-docs )"
 

	
 
S="${WORKDIR}/ATLAS"
 
S_LAPACK="${WORKDIR}/${L_PN}-lite-${L_PV}"
 
BLD_DIR="${S}/gentoo-build"
 
RPATH="${DESTTREE}/$(get_libdir)/${L_PN}/${MY_PN}"
 

	
 
src_unpack() {
 
	unpack ${A}
 

	
 
	cd "${S}"
 
	epatch "${DISTDIR}"/${MY_PN}-${PATCH_V}-shared-libs.patch.bz2
 
	epatch "${FILESDIR}"/${MY_PN}-asm-gentoo.patch
 

	
 
	# make sure the compile picks up the proper includes
 
	sed -i \
 
		-e "s|INCLUDES.*=|INCLUDES = -I/usr/include/atlas/|"  \
 
		"${S}"/CONFIG/src/SpewMakeInc.c \
 
		|| die "failed to append proper includes"
 

	
 
	BLD_DIR="${S}"/gentoo-build
 
	mkdir "${BLD_DIR}"  || die "failed to generate build directory"
 
	cd "${BLD_DIR}"
 
	cp "${FILESDIR}"/war . && chmod a+x war || die "failed to install war"
 

	
 
	# force proper 32/64bit libs
 
	local archselect
 
	if use amd64 || use ppc64; then
 
		archselect="-b 64"
 
	elif use alpha; then
 
		archselect=""
 
	else
 
		archselect="-b 32"
 
	fi
 

	
 
	# Remove -m64 on alpha, since the compiler doesn't support it
 
	use alpha && sed -i -e 's/-m64//g' "${S}"/CONFIG/src/probe_comp.c
 

	
 
	../configure \
 
		--cc="$(tc-getCC)" \
 
		--cflags="${CFLAGS}" \
 
		--prefix="${D}/${DESTTREE}" \
 
		--libdir="${D}/${DESTTREE}"/$(get_libdir)/atlas \
 
		--incdir="${D}/${DESTTREE}"/include \
 
		-C ac "$(tc-getCC)" -F ac "${CFLAGS}" \
 
		-C if $(tc-getFC) -F if "${FFLAGS:--O2}" \
 
		-Ss pmake "\$(MAKE) ${MAKEOPTS}" \
 
		-Si cputhrchk 0 ${archselect} \
 
		|| die "configure failed"
 

	
 
	cd "${S_LAPACK}"
 
	epatch "${WORKDIR}"/${L_PN}-reference-${L_PV}-autotools.patch
 
	epatch "${FILESDIR}"/${L_PN}-reference-${L_PV}-test-fix.patch
 
	eautoreconf
 

	
 
	# set up the testing routines
 
	sed -e "s:g77:$(tc-getFC):" \
 
		-e "s:-funroll-all-loops -O3:${FFLAGS} $(pkg-config --cflags blas cblas):" \
 
		-e "s:LOADOPTS =:LOADOPTS = ${LDFLAGS} $(pkg-config --cflags blas cblas):" \
 
		-e "s:../../blas\$(PLAT).a:$(pkg-config --libs blas cblas):" \
 
		-e "s:lapack\$(PLAT).a:SRC/.libs/liblapack.so -Wl,-rpath,${S_LAPACK}/SRC/.libs:" \
 
		-e "s:EXT_ETIME$:INT_CPU_TIME:" \
 
		make.inc.example > make.inc \
 
		|| die "Failed to set up make.inc"
 
}
 

	
 
src_compile() {
 
	# build atlas' part of lapack
 
	cd "${BLD_DIR}"
 
	for d in src/lapack interfaces/lapack/C/src interfaces/lapack/F77/src; do
 
		cd "${BLD_DIR}"/${d}
 
		make lib || die "Failed to make lib in ${d}"
 
	done
 

	
 
	# build rest of lapack
 
	S_LAPACK="${WORKDIR}"/${L_PN}-lite-${L_PV}
 
	cd "${S_LAPACK}"
 
	econf || die "Failed to configure reference lapack lib"
 
	emake || die "Failed to make reference lapack lib"
 

	
 
	cd "${S_LAPACK}"/SRC
 
	einfo "Copying liblapack.a/*.o to ${S_LAPACK}/SRC"
 
	cp -sf "${BLD_DIR}"/gentoo/liblapack.a/*.o .
 
	einfo "Copying liblapack.a/*.lo to ${S_LAPACK}/SRC"
 
	cp -sf "${BLD_DIR}"/gentoo/liblapack.a/*.lo .
 
	einfo "Copying liblapack.a/.libs/*.o to ${S_LAPACK}/SRC"
 
	cp -sf "${BLD_DIR}"/gentoo/liblapack.a/.libs/*.o .libs/
 

	
 
	RPATH="${DESTTREE}"/$(get_libdir)/${L_PN}/${MY_PN}
 
	local flibs
 
	[[ $(tc-getFC) =~ gfortran ]] && flibs=-lgfortran
 
	[[ $(tc-getFC) =~ g77 ]] && flibs=-lg2c
 
	../libtool --mode=link --tag=F77 $(tc-getFC) \
 
		$(pkg-config --libs blas cblas) -latlas ${flibs} \
 
		-o liblapack.la *.lo -rpath "${RPATH}" \
 
		|| die "Failed to create liblapack.la"
 

	
 
	# making pkg-config file
 
	sed -e "s:@LIBDIR@:$(get_libdir):" \
 
		-e "s:@PV@:${PV}:" \
 
		-e "s:@EXTLIBS@:-lm ${flibs}:g" \
 
		"${FILESDIR}"/lapack.pc.in > "${S}"/lapack.pc \
 
		|| die "sed lapack.pc failed"
 
}
 

	
 
src_install () {
 
	dodir "${RPATH}"
 

	
 
	cd "${S_LAPACK}"/SRC
 
	../libtool --mode=install cp liblapack.la "${D}/${RPATH}" \
 
		|| die "Failed to install lapack-atlas library"
 

	
 
	ESELECT_PROF=atlas
 
	eselect lapack add $(get_libdir) "${FILESDIR}"/eselect.lapack.atlas ${ESELECT_PROF}
 

	
 
	insinto /usr/include/atlas
 
	doins "${S}"/include/clapack.h || die "Failed to install clapack.h"
 
	dosym atlas/clapack.h /usr/include/clapack.h
 

	
 
	cd "${S}"
 
	dodoc README doc/AtlasCredits.txt doc/ChangeLog \
 
		|| die "Failed to install docs"
 

	
 
	insinto /usr/$(get_libdir)/lapack/atlas
 
	doins "${S}"/lapack.pc || die "Failed to install lapack.pc"
 
}
 

	
 
src_test() {
 
	cd "${S_LAPACK}"/TESTING/MATGEN
 
	emake || die "Failed to create tmglib.a"
 
	cd ..
 
	emake || die "lapack-reference tests failed"
 
}
 

	
 
pkg_postinst() {
 
	local current_lib=$(eselect lapack show | cut -d' ' -f2)
 
	# this snippet works around the eselect bug #189942 and makes
 
	# sure that users upgrading from a previous lapack-atlas
 
	# version pick up the new pkg-config files
 
	if [[ ${current_lib} == ${ESELECT_PROF} || -z ${current_lib} ]]; then
 
		local configfile="${ROOT}"/etc/env.d/lapack/$(get_libdir)/config
 
		[[ -e ${configfile} ]] && rm -f ${configfile}
 
		eselect lapack set ${ESELECT_PROF}
 
		elog "lapack has been eselected to ${ESELECT_PROF}"
 
	else
 
		elog "Current eselected lapack is ${current_lib}"
 
		elog "To use blas ${ESELECT_PROF} implementation, you have to issue (as root):"
 
		elog "\t eselect lapack set ${ESELECT_PROF}"
 
	fi
 
}
0 comments (0 inline, 0 general)