Gentoo での最近の覚え書き

  • tmpwatch (app-admin/tmpwatch) をインストールしないと,/tmp 以下にファイルが蓄積する一方だった.
  • このページを参考にして,Portage のログを残すようにした.
  • 私用ライブラリを消失したのをきっかけに,既存のライブラリを積極的に活用しようかと画策中.とりあえず IT++ (sci-libs/itpp), ACML, ATLAS (sci-libs/blas-atlas, sci-libs/lapack-atlas) をインストールしてみた.ACML を取得するためには登録が必要 (但し無料).まだ使ってはいない.ATLAS (特に blas-atlas) はコンパイル時間がやたら長い….まぁ名称が示すようにそれが当然なんだけども.
  • ATLAS の安定版である 3.6.0 をインストールするためには,GCC 4.x ではなく 3.x を使う必要があった.FORTRAN のコンパイラが GCC 4.x では gfortran, 3.x では g77 であるのが関係している様子.
  • xdvi(k) 俺は app-text/ptex-3.1.8.1_p20050418 に含まれているのを使っている. が DVI ファイルを表示しきる前に落ちるようになった.いつの間に ? と思って調べてたら,どうやら FreeType のバージョンが上がったのが関係しているらしい.2.3.3 から 2.1.10-r3 に downdate (?) したら回避できた.

2007/05/27 追記.

ACML のインストールのために作成した ebuild ファイルを晒しておく.このページを参考にした.


# /usr/local/portage/sci-libs/acml/acml-3.6.0.ebuild
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# (上 3 行はきちんと書き直すべきなんだろうけど 放置...)

inherit eutils toolchain-funcs

DESCRIPTION="AMD Core Math Library (ACML) for x86 and amd64 CPUs"
HOMEPAGE="http://developer.amd.com/acml.aspx"

MY_PV=${PV//\./\-}
S=${WORKDIR}
if [ "$(tc-getF77)" == "f77" ] ; then
    export FORTRAN="gfortran"
else
    export FORTRAN="gnu"
fi

SRC_URI="amd64? ( acml-${MY_PV}-${FORTRAN}-64bit.tgz )
    x86? ( acml-${MY_PV}-${FORTRAN}-32bit.tgz )"
RESTRICT="fetch nostrip"
#IUSE="sse sse2"
LICENSE="ACML"
KEYWORDS="~amd64"
SLOT="0"
RDEPEND="virtual/libc
    app-admin/eselect-blas
    app-admin/eselect-cblas
    app-admin/eselect-lapack"
PROVIDE="virtual/blas
    virtual/lapack"

set_arch() {
    if [ "${ARCH}" == "amd64" ] ; then
        export BITS="64"
    elif [ "${ARCH}" == "x86" ] ; then
        export BITS="32"
    fi
}

src_unpack() {
    unpack ${A}
    set_arch
    (DISTDIR="${S}" unpack contents-acml-${MY_PV}-${FORTRAN}-${BITS}bit.tgz)
}

src_compile() {
    return
}

src_install() {
    set_arch

    # Documentation
    cd ${S}/Doc
    dodoc acml.*
    dohtml html/*

    # Headers
    mkdir -p ${D}/usr/include/acml/
    cp ${S}/${FORTRAN}${BITS}/include/* ${D}/usr/include/acml/ \
        || die "Could not copy header file"
    cd ${D}/usr/include
    ln -s acml/acml.h acml.h

    # Libraries
    mkdir -p ${D}/usr/$(get_libdir)/
    cp ${S}/${FORTRAN}${BITS}/lib/* ${D}/usr/$(get_libdir)/ \
        || die "Could not copy library files"
    unset SUFFIX

    # eselect configfiles
    eselect blas add $(get_libdir) ${FILESDIR}/eselect.blas acml
    eselect cblas add $(get_libdir) ${FILESDIR}/eselect.cblas acml
    eselect lapack add $(get_libdir) ${FILESDIR}/eselect.lapack acml
}

pkg_postinst() {
    einfo "To use ACML's BLAS features, you have to issue (as root):"
    einfo "\t/usr/bin/eselect blas set ACML"
    einfo "To use ACML's CBLAS features, you have to issue (as root):"
    einfo "\t/usr/bin/eselect cblas set ACML"
    einfo "To use ACML's LAPACK features, you have to issue (as root):"
    einfo "\t/usr/bin/eselect lapack set ACML"
}