| # Copyright 1999-2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="4" |
| |
| JAVA_PKG_OPT_USE="graphbrowsing" |
| inherit eutils java-pkg-opt-2 multilib versionator |
| |
| MY_PN="Isabelle" |
| MY_PV=$(replace_all_version_separators '-') |
| MY_P="${MY_PN}${MY_PV}" |
| |
| DESCRIPTION="Isabelle is a generic proof assistant" |
| HOMEPAGE="http://www.cl.cam.ac.uk/research/hvg/isabelle/index.html" |
| SRC_URI="http://www.cl.cam.ac.uk/research/hvg/isabelle/dist/${MY_P}.tar.gz" |
| |
| LICENSE="BSD" |
| SLOT="0" |
| KEYWORDS="~x86 ~amd64" |
| ALL_LOGICS="Pure FOL +HOL ZF CCL CTT Cube FOLP LCF Sequents" |
| IUSE="${ALL_LOGICS} doc graphbrowsing +proofgeneral test" |
| |
| #upstream says |
| #bash 2.x/3.x, Poly/ML 5.x, Perl 5.x, |
| #for document preparation: complete LaTeX |
| DEPEND=">=app-shells/bash-3.0 |
| >=dev-lang/polyml-5.4.1[-portable] |
| >=dev-lang/perl-5.8.8-r2" |
| |
| RDEPEND="doc? ( |
| virtual/latex-base |
| dev-tex/rail |
| ) |
| proofgeneral? ( |
| app-emacs/proofgeneral |
| ) |
| ${DEPEND}" |
| |
| S="${WORKDIR}"/Isabelle${MY_PV} |
| TARGETDIR="/usr/share/Isabelle"${MY_PV} |
| LIBDIR="/usr/"$(get_libdir)"/Isabelle"${MY_PV} |
| |
| pkg_setup() { |
| java-pkg-opt-2_pkg_setup |
| if ! use proofgeneral |
| then |
| ewarn "You have deselected the Proof General interface." |
| ewarn "Only a text terminal will be installed." |
| ewarn "Emerge Isabelle with the proofgeneral USE flag enabled" |
| ewarn "to get the common interface, that most people want." |
| fi |
| } |
| |
| src_prepare() { |
| java-pkg-opt-2_src_prepare |
| if use proofgeneral; then |
| epatch "${FILESDIR}/${PN}-2011.1-proofgeneral-gentoo-path.patch" |
| polymlver=$(poly -v | cut -d' ' -f2) |
| polymlarch=$(poly -v | cut -d' ' -f9 | cut -d'-' -f1) |
| sed -e "s@5.4.0@${polymlver}@g" \ |
| -i "${S}/etc/settings" \ |
| || die "Could not configure polyml version in etc/settings" |
| sed -e "s@x86_64@${polymlarch}@g" \ |
| -i "${S}/etc/settings" \ |
| || die "Could not configure polyml arch in etc/settings" |
| fi |
| if use graphbrowsing; then |
| epatch "${FILESDIR}/${PN}-2011.1-graphbrowser.patch" |
| fi |
| } |
| |
| src_compile() { |
| LOGICS="" |
| for l in "${ALL_LOGICS}"; do |
| if has "${l/+/}"; then |
| LOGICS="${LOGICS} ${l/+/}" |
| fi |
| done |
| einfo "Building Isabelle logics ${LOGICS}. This may take some time." |
| ./build -b -i "${LOGICS}" || die "building logics failed" |
| ./bin/isabelle makeall || die "isabelle makeall failed" |
| if use graphbrowsing |
| then |
| rm -f "${S}/lib/browser/GraphBrowser.jar" \ |
| || die "failed cleaning graph browser directory" |
| pushd "${S}/lib/browser" \ |
| || die "Could not change directory to lib/browser" |
| ./build || die "failed building the graph browser" |
| popd |
| fi |
| } |
| |
| src_test() { |
| einfo "Running tests. A test run can take up to several hours!" |
| ./build -b -t || die "tests failed" |
| } |
| |
| src_install() { |
| exeinto ${TARGETDIR}/bin |
| doexe bin/isabelle-process bin/isabelle |
| |
| exeinto ${TARGETDIR} |
| doexe build |
| |
| insinto ${TARGETDIR} |
| doins -r src |
| dodoc -r doc |
| |
| dodir /etc/isabelle |
| insinto /etc/isabelle |
| doins -r etc/* |
| |
| dosym /etc/isabelle "${TARGETDIR}/etc" |
| dosym "${LIBDIR}/heaps" "${TARGETDIR}/heaps" |
| |
| insinto ${LIBDIR} |
| doins -r heaps |
| |
| # use cp to keep file attributes |
| cp -R lib "${ED}${TARGETDIR}" || die "install lib failed" |
| |
| bin/isabelle install -d ${TARGETDIR} -p "${ED}usr/bin" \ |
| || die "isabelle install failed" |
| newicon lib/icons/isabelle.xpm "${PN}.xpm" |
| dodoc ANNOUNCE CONTRIBUTORS COPYRIGHT NEWS README |
| |
| java-pkg_regjar \ |
| "${ED}${TARGETDIR}/lib/browser/GraphBrowser.jar" \ |
| "${ED}${TARGETDIR}/lib/classes/ext/Pure.jar" \ |
| "${ED}${TARGETDIR}/lib/classes/ext/scala-library.jar" \ |
| "${ED}${TARGETDIR}/lib/classes/ext/scala-swing.jar" \ |
| "${ED}${TARGETDIR}/lib/classes/java_ext_dirs.jar" |
| } |
| |
| pkg_postinst() { |
| elog "You will need to re-emerge Isabelle after emerging polyml." |
| elog "Please configure your preferred pdf viewer by editing" |
| elog "the PDF_VIEWER variable in the system settings file" |
| elog "/etc/isabelle/settings and/or the user settings file" |
| elog "\$HOME/.isabelle/${MY_P}/etc/settings" |
| } |