blob: a9be562511094278195cff0bdd2045ad14370854 [file] [log] [blame]
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/grass/grass-6.4.0_rc5.ebuild,v 1.2 2010/02/17 16:48:21 scarabeus Exp $
EAPI="2"
inherit eutils distutils fdo-mime versionator wxwidgets
MY_PV=$(get_version_component_range 1-2 ${PV})
MY_PVM=$(delete_all_version_separators ${MY_PV})
MY_PM=${PN}${MY_PVM}
MY_P=${PN}-$(get_version_component_range 1-3 ${PV})RC5
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 ~sparc ~x86"
IUSE="X ffmpeg fftw gmath jpeg largefile motif mysql nls odbc opengl png
postgres python readline sqlite tiff truetype wxwindows"
RESTRICT="strip"
RDEPEND=">=sys-libs/zlib-1.1.4
>=sys-libs/ncurses-5.3
>=sys-libs/gdbm-1.8.0
|| (
sys-apps/man
sys-apps/man-db
)
sci-libs/gdal
>=sci-libs/proj-4.4.7
ffmpeg? ( media-video/ffmpeg )
fftw? ( sci-libs/fftw )
gmath? (
virtual/blas
virtual/lapack
)
jpeg? ( media-libs/jpeg )
mysql? ( dev-db/mysql )
odbc? ( >=dev-db/unixODBC-2.0.6 )
opengl? ( virtual/opengl )
motif? ( x11-libs/openmotif )
png? ( >=media-libs/libpng-1.2.2 )
postgres? (
|| (
>=virtual/postgresql-base-8.0
>=virtual/postgresql-server-8.0
)
)
python? ( dev-lang/python )
readline? ( sys-libs/readline )
sqlite? ( dev-db/sqlite )
tiff? ( >=media-libs/tiff-3.5.7 )
truetype? ( >=media-libs/freetype-2.0 )
wxwindows? (
>=dev-python/wxpython-2.8.1.1
>=dev-lang/python-2.4
)
X? (
x11-libs/libXmu
x11-libs/libXext
x11-libs/libXp
x11-libs/libX11
x11-libs/libXt
x11-libs/libSM
x11-libs/libICE
x11-libs/libXpm
x11-libs/libXaw
>=dev-lang/tcl-8.4
>=dev-lang/tk-8.4
)"
DEPEND="${RDEPEND}
>=sys-devel/flex-2.5.4a
>=sys-devel/bison-1.35
wxwindows? ( >=dev-lang/swig-1.3.31 )
X? (
x11-proto/xproto
x11-proto/xextproto
)"
S=${WORKDIR}/${MY_P}
pkg_setup() {
local myblas
elog ""
elog "This version enables the experimental wxpython interface, which"
elog "you may want to try. If the legacy GUI seems a little wonky in"
elog "this version, just enable the wxwindows USE flag and rebuild"
elog "grass to use it."
elog ""
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
if use opengl && ! use X; then
ewarn "GRASS OpenGL support needs X (will also pull in Tcl/Tk)."
die "Please set the X useflag."
fi
}
src_prepare() {
epatch rpm/fedora/grass-readline.patch
sed -i -e "s:buff\[12:buff\[16:g" general/g.parser/main.c \
|| die "sed failed"
if ! use opengl; then
epatch "${FILESDIR}"/${PN}-6.4.0-html-nonviz.patch
fi
# patch missing math functions (yes, this is still needed)
sed -i -e "s:\$(EXTRA_LIBS):\$(EXTRA_LIBS) \$(MATHLIB):g" include/Make/Shlib.make
echo "MATHLIB=-lm" >> include/Make/Rules.make
}
src_configure() {
local myconf
addpredict /var/cache/fontconfig
# wxwindows needs python (see bug #237495)
use wxwindows && distutils_python_version
myconf="--prefix=/usr --with-cxx --enable-shared \
--with-gdal=$(type -P gdal-config) --with-curses --with-proj \
--with-includes=/usr/include --with-libs=/usr/$(get_libdir) \
--with-proj-includes=/usr/include \
--with-proj-libs=/usr/$(get_libdir) \
--with-proj-share=/usr/share/proj \
--without-glw"
if use X; then
if has_version ">=dev-lang/tcl-8.5"; then
TCL_LIBDIR="/usr/$(get_libdir)/tcl8.5"
else
TCL_LIBDIR="/usr/$(get_libdir)/tcl8.4"
fi
myconf+=" --with-tcltk --with-x \
--with-tcltk-includes=/usr/include \
--with-tcltk-libs=${TCL_LIBDIR}"
if use wxwindows; then
WX_GTK_VER=2.8
need-wxwidgets unicode
myconf+=" --with-python --with-wxwidgets=${WX_CONFIG}"
else
# USE=python must be enabled above if wxwindows is enabled
myconf+=" $(use_with python) --without-wxwidgets"
fi
else
myconf+=" --without-tcltk --without-x"
fi
if use opengl; then
myconf+=" --with-opengl --with-opengl-libs=/usr/$(get_libdir)/opengl/xorg-x11/lib"
else
myconf+=" --without-opengl"
fi
if use truetype; then
myconf+=" --with-freetype
--with-freetype-includes=/usr/include/freetype2"
fi
if use mysql; then
myconf+=" --with-mysql --with-mysql-includes=/usr/include/mysql
--with-mysql-libs=/usr/$(get_libdir)/mysql"
else
myconf+=" --without-mysql"
fi
if use sqlite; then
myconf+=" --with-sqlite --with-sqlite-includes=/usr/include
--with-sqlite-libs=/usr/$(get_libdir)"
else
myconf+=" --without-sqlite"
fi
# Old ffmpeg is gone, but new is a pita with all those include dirs,
# thus, a rather funky configure...
if use ffmpeg; then
ffmlib_conf="--with-ffmpeg --with-ffmpeg-libs=/usr/$(get_libdir)"
else
myconf+=" --without-ffmpeg"
fi
myconf+=" --with-libs=/usr/$(get_libdir)
$(use_enable amd64 64bit)
$(use_with fftw)
$(use_with gmath blas)
$(use_with gmath lapack)
$(use_with jpeg)
$(use_enable largefile)
$(use_with motif)
$(use_with nls)
$(use_with odbc)
$(use_with png)
$(use_with postgres)
$(use_with readline)
$(use_with tiff)"
if use ffmpeg; then
"${S}"/configure ${myconf} ${ffmlib_conf} \
--with-ffmpeg-includes="/usr/include/libavcodec \
/usr/include/libavdevice /usr/include/libavfilter \
/usr/include/libavformat /usr/include/libavutil \
/usr/include/libpostproc /usr/include/libswscale" \
|| die "ffmpeg configure failed!"
else
"${S}"/configure ${myconf} || die "configure failed!"
fi
}
src_compile() {
# looks like we no longer need the vdigit symlink build hack
emake -j1 || die "make failed!"
}
src_install() {
elog "Grass Home is ${MY_PM}"
make install UNIX_BIN="${D}"usr/bin BINDIR="${D}"usr/bin \
PREFIX="${D}"usr INST_DIR="${D}"usr/${MY_PM} \
|| die "make install failed!"
# get rid of DESTDIR in script path
sed -i -e "s@${D}@/@" "${D}"usr/bin/${MY_PM}
# Grass Extension Manager conflicts with ruby gems
mv "${D}"usr/bin/gem "${D}"usr/${MY_PM}/bin/
ebegin "Adding env.d and desktop entry for Grass6..."
generate_files
doenvd 99grass-6
if use X; then
doicon "${FILESDIR}"/grass_icon.png
domenu ${MY_PM}-grass.desktop
fi
eend ${?}
}
pkg_postinst() {
use X && fdo-mime_desktop_database_update
elog "Note this version re-enables support for threads in Tcl and Tk."
elog "Enable the threads USE flag and rebuild to try it."
}
pkg_postrm() {
use X && fdo-mime_desktop_database_update
}
generate_files() {
local GUI="-gui"
use wxwindows && GUI="-wxpython"
cat <<-EOF > 99grass-6
GRASS_LD_LIBRARY_PATH="/usr/${MY_PM}/lib"
LDPATH="/usr/${MY_PM}/lib"
MANPATH="/usr/${MY_PM}/man"
GRASS_HOME="/usr/${MY_PM}"
EOF
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=grass_icon.png
Categories=Science;Education;
Terminal=false
EOF
}