aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-physics/geant/geant-4.9.1_p01.ebuild')
-rw-r--r--sci-physics/geant/geant-4.9.1_p01.ebuild198
1 files changed, 198 insertions, 0 deletions
diff --git a/sci-physics/geant/geant-4.9.1_p01.ebuild b/sci-physics/geant/geant-4.9.1_p01.ebuild
new file mode 100644
index 000000000..c8caa4ced
--- /dev/null
+++ b/sci-physics/geant/geant-4.9.1_p01.ebuild
@@ -0,0 +1,198 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v3
+# $Header: $
+
+EAPI=1
+
+inherit eutils fortran multilib versionator
+
+MY_P=${PN}$(replace_version_separator 3 .)
+
+DESCRIPTION="CERN's detector description and simulation Tool"
+HOMEPAGE="http://geant4.cern.ch/"
+
+SRC_COM="http://geant4.web.cern.ch/geant4/support/source/"
+SRC_URI="${SRC_COM}/${MY_P}.tar.gz"
+GEANT4_DATA="G4NDL.3.12
+ G4EMLOW.5.1
+ G4RadioactiveDecay.3.2
+ PhotonEvaporation.2.0
+ G4ABLA.3.0"
+for d in ${GEANT4_DATA}; do
+ SRC_URI="${SRC_URI} data? ( ${SRC_COM}/${d}.tar.gz )"
+done
+
+LICENSE="geant4"
+SLOT="4"
+KEYWORDS="~amd64 ~x86"
+IUSE="athena +data dawn debug examples gdml geant3 minimal +motif
+ +opengl openinventor +raytracerx +vrml zlib"
+
+DEPEND="sci-physics/clhep
+ motif? ( virtual/motif )
+ athena? ( x11-libs/libXaw )
+ openinventor? ( media-libs/openinventor )
+ raytracerx? ( x11-libs/libX11 x11-libs/libXmu )
+ opengl? ( virtual/opengl
+ athena? ( x11-libs/Xaw3d ) )
+ gdml? ( dev-libs/xerces-c )
+ geant3? ( sci-physics/geant:3 )
+ dawn? ( media-gfx/dawn )"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ FORTRAN="gfortran g77 ifc"
+ use geant3 && fortran_pkg_setup
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # this patch sanitize the Configure script
+ epatch "${FILESDIR}"/${P}-configure.patch
+ epatch "${FILESDIR}"/${P}-no-source.patch
+
+ # propagate user's make options
+ sed -i \
+ -e "s/g4make=gmake/g4make=\"gmake ${MAKEOPTS}\"/" \
+ Configure || die "sed Configure failed"
+
+ # propagate user's flags.
+ sed -i \
+ -e "s:\(CXXFLAGS*+=\)*-O2:\1 ${CXXFLAGS:--O2}:g" \
+ -e "s:\(FCFLAGS*+=\)*-O2:\1 ${FFLAGS:--O2}:g" \
+ -e "s:\(CCFLAGS*+=\)*-O2:\1 ${CFLAGS:--O2}:g" \
+ config/sys/Linux* || die "flag substitution failed"
+
+ # libdir stuff
+ sed -i \
+ -e "s:lib/geant4:$(get_libdir)/geant:g" \
+ Configure config/scripts/move.sh.SH \
+ || die "multilib substitution failed"
+}
+
+g4ui_use() {
+ local answer=$(use $1 && echo y || echo n)
+ echo "-D g4ui_build_${2:-$1}_session=${answer}
+ -D g4ui_use_${2:-$1}=${answer}"
+}
+
+g4vis_use() {
+ local answer=$(use $1 && echo y || echo n)
+ echo "-D g4vis_build_${2:-$1}_driver=${answer}
+ -D g4vis_use_${2:-$1}=${answer}"
+}
+
+g4w_use() {
+ local answer=$(use $1 && echo y || echo n)
+ echo "-D g4w_use_${2:-$1}=${answer}
+ -D g4wlib_use_${2:-$1}=${answer}"
+}
+
+src_compile() {
+ GEANT4_DATA_DIR=/usr/share/${PN}
+ # The Configure shell script saves its options
+ # in .config/bin/*/config.sh
+
+ local myconf="$(g4vis_use opengl openglx)"
+ use opengl && myconf="${glconf} $(g4vis_use motif openglxm)"
+ use data && myconf="${myconf} -D g4data=${GEANT_DATA_DIR}"
+
+ # switch to see compiling flags
+ export CPPVERBOSE=y
+ use debug && export G4DEBUG=y || export G4OPTIMIZE=y
+
+ # to check what they are doing and working
+ # -D d_portable \
+ # -D g4global=n \
+ # -D g4granular=y
+ # -D g4_use_granular=y
+ # -D g4make=make \
+
+ ./Configure \
+ -deE -build \
+ -D g4analysis_use=n \
+ -D g4includes_flag=y \
+ -D g4include="${D}/usr/include/geant4" \
+ -D g4final_install="${D}/usr" \
+ $(g4ui_use minimal none) \
+ $(g4ui_use athena xaw) \
+ $(g4ui_use motif xm) \
+ $(g4vis_use minimal none) \
+ $(g4vis_use dawn) \
+ $(g4vis_use raytracerx) \
+ $(g4vis_use openinventor oix) \
+ $(g4vis_use vrml) \
+ $(g4vis_use vrml vrmlfile) \
+ $(g4w_use geant3 g3tog4) \
+ $(g4w_use zlib) \
+ ${myconf} \
+ ${EXTRA_ECONF} \
+ || die "Configure failed"
+
+ # if shared libs are built, the script will also build static libs
+ # with pic flags
+ # avoid that by building it twice and removing temporary objects
+
+ ./Configure \
+ -deO -build \
+ -D g4lib_build_shared=y \
+ -D g4lib_build_static=n \
+ || die "Building shared geant failed"
+
+ rm -rf tmp
+
+ ./Configure \
+ -deO -build \
+ -D g4lib_build_shared=n \
+ -D g4lib_build_static=y \
+ || die "Building shared geant failed"
+}
+
+src_install() {
+ ./Configure \
+ -install \
+ || die "Install failed"
+
+ ./Configure \
+ || die "Final install failed"
+
+ insinto ${GEANT4_DATA_DIR}
+ sed -i \
+ -e "s:${S}:${GEANT4_DATA_DIR}:g" \
+ -e "s:${D}:/:g" \
+ env.*sh
+ doins env.*sh || die "failed installing shell scripts"
+ doins -r config
+ if use data; then
+ cd "${WORKDIR}"
+ for d in ${GEANT4_DATA}; do
+ local p=${d/.}
+ doins -r *${d/G4} || die "installing data ${d} failed"
+ done
+ fi
+
+ # doc and examples
+ insinto /usr/share/doc/${PF}
+ local mypv="4.$(get_version_component_range 2 ${PV})"
+ mypv="${mypv}.$(get_version_component_range 3 ${PV})"
+ doins ReleaseNotes/ReleaseNotes${mypv}.html
+ [[ -e ReleaseNotes/Patch${mypv}-1.txt ]] && \
+ dodoc ReleaseNotes/Patch${mypv}-*.txt
+
+ use examples && doins -r examples
+ # todo: g4py with python flag
+ # todo: momo with momo or java flag, and check java stuff
+}
+
+pkg_postinst() {
+ elog "You can set the Geant4 environment variables"
+ elog "from ${ROOT}${GEANT4_DATA_DIR} shell scripts."
+ elog "Ex: for bash"
+ elog " source ${ROOT}${GEANT4_DATA_DIR}/env.sh"
+ elog
+ elog "Help us to improve the ebuild and dependencies in"
+ elog "http://bugs.gentoo.org/show_bug.cgi?id=212221"
+}