gentoo-full-overlay/sci-geosciences/grass/grass-6.4.1-r1.ebuild

322 lines
7.9 KiB
Bash

# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/grass/grass-6.4.1-r1.ebuild,v 1.4 2012/05/04 07:14:06 jdhore Exp $
EAPI=3
PYTHON_DEPEND="python? 2"
inherit eutils gnome2 multilib python versionator wxwidgets base
MY_PM=${PN}$(get_version_component_range 1-2 ${PV})
MY_PM=${MY_PM/.}
MY_P=${P/_rc/RC}
DESCRIPTION="A free GIS with raster and vector functionality, as well as 3D vizualization"
HOMEPAGE="http://grass.osgeo.org/"
SRC_URI="http://grass.osgeo.org/${MY_PM}/source/${MY_P}.tar.gz"
LICENSE="GPL-2"
SLOT="6"
KEYWORDS="amd64 ppc ~ppc64 x86"
IUSE="X cairo cxx ffmpeg fftw gmath jpeg motif mysql nls odbc opengl png postgres python readline sqlite tiff truetype wxwidgets"
TCL_DEPS="
>=dev-lang/tcl-8.5
>=dev-lang/tk-8.5"
RDEPEND="
>=app-admin/eselect-1.2
sci-libs/gdal
sci-libs/proj
sys-libs/gdbm
sys-libs/ncurses
sys-libs/zlib
cairo? ( x11-libs/cairo[X?,opengl?] )
ffmpeg? ( virtual/ffmpeg )
fftw? ( sci-libs/fftw:3.0 )
gmath? (
virtual/blas
virtual/lapack
)
jpeg? ( virtual/jpeg )
mysql? ( virtual/mysql )
odbc? ( dev-db/unixODBC )
png? ( media-libs/libpng )
postgres? ( >=dev-db/postgresql-base-8.4 )
readline? ( sys-libs/readline )
sqlite? ( dev-db/sqlite:3 )
tiff? ( media-libs/tiff )
truetype? ( media-libs/freetype:2 )
X? (
x11-libs/libICE
x11-libs/libSM
x11-libs/libX11
x11-libs/libXaw
x11-libs/libXext
x11-libs/libXmu
x11-libs/libXp
x11-libs/libXpm
x11-libs/libXt
motif? (
>=x11-libs/openmotif-2.3:0
opengl? (
|| (
media-libs/mesa[motif]
( media-libs/mesa x11-libs/libGLw ) ) )
)
opengl? (
virtual/opengl
${TCL_DEPS}
)
python? ( wxwidgets? ( >=dev-python/wxpython-2.8.10.1[cairo,opengl?] ) )
!python? ( ${TCL_DEPS} )
!wxwidgets? ( ${TCL_DEPS} )
)"
DEPEND="${RDEPEND}
virtual/pkgconfig
sys-devel/flex
sys-devel/gettext
sys-devel/bison
X? (
x11-proto/xextproto
x11-proto/xproto
python? ( wxwidgets? ( dev-lang/swig ) )
)"
S="${WORKDIR}/${MY_P}"
PATCHES=(
"${FILESDIR}"/${PN}-pkgconf.patch
"${FILESDIR}"/${P}-libpng15.patch
"${FILESDIR}"/${P}-nopycompile.patch
"${FILESDIR}"/${P}-timer_flags.patch
"${FILESDIR}"/${P}-libav-0.8.patch
)
pkg_setup() {
local myblas
# check correct gmath profiles (this must sadly die)
if use gmath; then
for d in $(eselect lapack show); do myblas=${d}; done
if [[ -z "${myblas/reference/}" ]] && [[ -z "${myblas/atlas/}" ]]; then
ewarn "You need to set lapack to atlas or reference. Do:"
ewarn " eselect lapack set <impl>"
ewarn "where <impl> is atlas, threaded-atlas or reference"
die "setup failed"
fi
for d in $(eselect blas show); do myblas=${d}; done
if [[ -z "${myblas/reference/}" ]] && [[ -z "${myblas/atlas/}" ]]; then
ewarn "You need to set blas to atlas or reference. Do:"
ewarn " eselect blas set <impl>"
ewarn "where <impl> is atlas, threaded-atlas or reference"
die "setup failed"
fi
fi
# check useflag nesting.
use motif && ! use X && ewarn "For motif support X useflag must be enabled"
use opengl && ! use X && ewarn "For opengl support X useflag must be enabled"
use wxwidgets && ! use X && ewarn "For wxwidgets support X useflag must be enabled"
use wxwidgets && ! use python && ewarn "For wxwidgets support python useflag must be enabled"
if use python; then
# only py2 is supported
python_set_active_version 2
fi
}
src_prepare() {
use opengl || epatch "${FILESDIR}"/${PN}-6.4.0-html-nonviz.patch
base_src_prepare
}
src_configure() {
local myconf TCL_LIBDIR
if use X; then
TCL_LIBDIR="/usr/$(get_libdir)/tcl8.5"
myconf+="
--with-tcltk-libs=${TCL_LIBDIR}
$(use_with motif)
$(use_with opengl)
--with-x
"
if use python && use wxwidgets; then
WX_BUILD=yes
WX_GTK_VER=2.8
need-wxwidgets unicode
myconf+="
--without-tcltk
--with-wxwidgets=${WX_CONFIG}
"
else
WX_BUILD=no
# use tcl gui if wxwidgets are disabled
myconf+="
--with-tcltk
--without-wxwidgets
"
fi
use opengl && myconf+=" --with-tcltk"
use motif && use opengl && myconf+=" --with-glw"
use motif || myconf+=" --without-glw"
else
myconf+="
--without-opengl
--without-glw
--without-tcltk
--without-wxwidgets
--without-x
"
fi
econf \
--with-gdal=$(type -P gdal-config) \
--with-curses \
--with-proj \
--with-proj-share="/usr/share/proj/" \
--without-glw \
--enable-shared \
$(use_enable amd64 64bit) \
$(use_enable ppc64 64bit) \
$(use_with cairo) \
$(use_with cxx) \
$(use_with fftw) \
$(use_with ffmpeg) \
--with-ffmpeg-includes="/usr/include/libavcodec /usr/include/libavdevice /usr/include/libavfilter /usr/include/libavformat /usr/include/libavutil /usr/include/libpostproc /usr/include/libswscale" \
$(use_with gmath blas) \
$(use_with gmath lapack) \
$(use_with jpeg) \
$(use_with mysql) \
--with-mysql-includes=/usr/include/mysql \
--with-mysql-libs=/usr/$(get_libdir)/mysql \
$(use_with nls) \
$(use_with odbc) \
$(use_with png) \
$(use_with postgres) \
$(use_with python) \
$(use_with readline) \
$(use_with sqlite) \
$(use_with tiff) \
$(use_with truetype freetype) \
--with-freetype-includes="/usr/include/freetype2/" \
--enable-largefile \
${myconf}
}
src_compile() {
# we don't want to link against embeded mysql lib
base_src_compile MYSQLDLIB=""
}
src_install() {
emake DESTDIR="${D}" \
INST_DIR="${D}"/usr/${MY_PM} \
prefix="${D}"/usr BINDIR="${D}"/usr/bin \
PREFIX="${D}"/usr/ \
install || die
pushd "${D}"/usr/${MY_PM} &> /dev/null
# fix docs
dodoc AUTHORS CHANGES || die
dohtml -r docs/html/* || die
rm -rf docs/ || die
rm -rf {AUTHORS,CHANGES,COPYING,GPL.TXT,REQUIREMENTS.html} || die
# manuals
dodir /usr/share/man/man1 || die
mv man/man1/* "${D}"/usr/share/man/man1/ || die
rm -rf man/ || die
mv -vf "${D}"/usr/share/man/man1/sql.1{,grass} || die #381599
# translations
if use nls; then
dodir /usr/share/locale/ || die
mv locale/* "${D}"/usr/share/locale/ || die
rm -rf locale/ || die
# pt_BR is broken
mv "${D}"/usr/share/locale/pt_br "${D}"/usr/share/locale/pt_BR || die
fi
popd &> /dev/null
# place libraries where they belong
mv "${D}"/usr/${MY_PM}/lib/ "${D}"/usr/$(get_libdir)/ || die
# place header files where they belong
mv "${D}"/usr/${MY_PM}/include/ "${D}"/usr/include/ || die
# make rules are not required on installed system
rm -rf "${D}"/usr/include/Make || die
# mv remaining gisbase stuff to libdir
mv "${D}"/usr/${MY_PM} "${D}"/usr/$(get_libdir) || die
# set proper default window renderer
if [[ ${WX_BUILD} == yes ]]; then
sed -i \
-e "1,\$s:^DEFAULT_GUI.*:DEFAULT_GUI=\"wxpython\":" \
"${D}"/usr/$(get_libdir)/${MY_PM}/etc/Init.sh || die
fi
# get proper folder for grass path in script
sed -i \
-e "1,\$s:^GISBASE.*:GISBASE=/usr/$(get_libdir)/${MY_PM}:" \
"${D}"usr/bin/${MY_PM} || die
# get proper fonts path for fontcap
sed -i \
-e "s|${D}/usr/${MY_PM}|/usr/$(get_libdir)/${MY_PM}|" \
"${D}"/usr/$(get_libdir)/${MY_PM}/etc/fontcap || die
if use X; then
generate_files
doicon gui/icons/${PN}-48x48.png || die
domenu ${MY_PM}-grass.desktop || die
fi
# install .pc file so other apps know where to look for grass
insinto /usr/$(get_libdir)/pkgconfig/
doins grass.pc || die
# fix weird +x on tcl scripts
find "${D}" -name "*.tcl" -exec chmod +r-x '{}' \;
}
pkg_postinst() {
if use X; then
fdo-mime_desktop_database_update
gnome2_icon_cache_update
fi
}
pkg_postrm() {
if use X; then
fdo-mime_desktop_database_update
gnome2_icon_cache_update
fi
}
generate_files() {
local GUI="-gui"
[[ ${WX_BUILD} == yes ]] && GUI="-wxpython"
cat <<-EOF > ${MY_PM}-grass.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=Grass ${PV}
Type=Application
Comment=GRASS (Geographic Resources Analysis Support System), the original GIS.
Exec=${TERM} -T Grass -e /usr/bin/${MY_PM} ${GUI}
Path=
Icon=${PN}-48x48.png
Categories=Science;Education;
Terminal=false
EOF
}