1 # Copyright 1999-2015 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
7 inherit eutils java-pkg-2 multilib versionator
10 MY_PV=$(replace_all_version_separators '-')
11 MY_P="${MY_PN}${MY_PV}"
14 JEDIT_PN="jedit_build"
15 JEDIT_P="${JEDIT_PN}-${JEDIT_PV}"
16 JEDIT_IC_PN="${JEDIT_PN}-isabelle-component"
17 JEDIT_IC_P="${JEDIT_IC_PN}-${JEDIT_PV}"
19 JFREECHART_PV="1.0.14-1"
20 JFREECHART_PN="jfreechart"
21 JFREECHART_P="${JFREECHART_PN}-${JFREECHART_PV}"
22 JFREECHART_IC_PN="${JFREECHART_PN}-isabelle-component"
23 JFREECHART_IC_P="${JFREECHART_IC_PN}-${JFREECHART_PV}"
27 POLYML_P="${POLYML_PN}-${POLYML_PV}"
28 POLYML_IC_PN="${POLYML_PN}-isabelle-component"
29 POLYML_IC_P="${POLYML_IC_PN}-${POLYML_PV}"
33 DESCRIPTION="Isabelle is a generic proof assistant"
34 HOMEPAGE="http://www.cl.cam.ac.uk/research/hvg/Isabelle/index.html"
35 SRC_URI="http://www.cl.cam.ac.uk/users/lcp/archive/${MY_P}.tar.gz
36 http://isabelle.in.tum.de/components/${JEDIT_P}.tar.gz -> ${JEDIT_IC_P}.tar.gz
37 http://isabelle.in.tum.de/dist/contrib/${JFREECHART_P}.tar.gz -> ${JFREECHART_IC_P}.tar.gz
38 https://dev.gentoo.org/~gienah/snapshots/${POLYML_IC_P}.tar.gz"
42 KEYWORDS="~amd64 ~x86"
43 IUSE="doc graphbrowsing ledit readline proofgeneral"
46 #bash 2.x/3.x, Poly/ML 5.x, Perl 5.x,
47 #for document preparation: complete LaTeX
48 DEPEND=">=app-shells/bash-3.0:*
50 >=dev-java/jcommon-1.0.18:1.0
51 >=dev-java/jfreechart-1.0.14:1.0
52 >=dev-java/itext-2.1.5:0
53 dev-java/xml-xmlbeans:1
56 >=dev-lang/polyml-5.5.1:=[-portable]
57 >=dev-lang/perl-5.8.8-r2
64 >=dev-lang/scala-2.11.1:${SS}
72 RDEPEND="dev-perl/libwww-perl
73 sci-mathematics/sha1-polyml
76 >=app-emacs/proofgeneral-4.1
80 S="${WORKDIR}"/Isabelle${MY_PV}
81 JEDIT_S="${WORKDIR}/${JEDIT_P}"
82 JFREECHART_S="${WORKDIR}/${JFREECHART_P}"
83 TARGETDIR="/usr/share/Isabelle"${MY_PV}
84 LIBDIR="/usr/"$(get_libdir)"/Isabelle"${MY_PV}
86 # Notes on QA warnings: * Class files not found via DEPEND in package.env
87 # Stuff with $ in the name appear to be spurious:
88 # isabelle/Markup_Tree$$anonfun$results$1$1.class
89 # scala/tools/nsc/backend/jvm/GenJVM$BytecodeGenerator$$anonfun$computeLocalVarsIndex$1.class
90 # It wants javafx, I am unsure how to fix this. I test isabelle with the Sun JDK:
91 # javafx/application/Platform.class javafx
92 # Presumably the user can provide the jEdit plugins if they are necessary:
93 # marker/MarkerSetsPlugin.class http://plugins.jedit.org/plugins/?MarkerSets
94 # projectviewer/gui/OptionPaneBase.class http://plugins.jedit.org/plugins/?ProjectViewer
96 LIBRARY_PKGS="ant-core,itext,jcommon-1.0,jfreechart-1.0,scala-${SS},xml-xmlbeans-1,xz-java"
99 unpack "${MY_P}.tar.gz"
100 pushd "${S}/contrib" || die
101 unpack ${JEDIT_IC_P}.tar.gz
102 unpack ${JFREECHART_IC_P}.tar.gz
103 unpack ${POLYML_IC_P}.tar.gz
111 java-pkg-2_src_prepare
112 java-pkg_getjars ${LIBRARY_PKGS}
113 epatch "${FILESDIR}/${PN}-2013-gentoo-settings.patch"
114 epatch "${FILESDIR}/${PN}-2013.2-classpath.patch"
115 polymlver=$(poly -v | cut -d' ' -f2)
116 polymlarch=$(poly -v | cut -d' ' -f9 | cut -d'-' -f1)
117 sed -e "s@5.5.0@${polymlver}@g" \
118 -i "${S}/etc/settings" \
119 || die "Could not configure polyml version in etc/settings"
120 sed -e "s@ML_HOME=\"/@ML_HOME=\"${ROOT}@" \
121 -i "${S}/etc/settings" \
122 || die "Could not configure polyml ML_HOME in etc/settings"
123 sed -e "s@x86_64@${polymlarch}@g" \
124 -i "${S}/etc/settings" \
125 || die "Could not configure polyml arch in etc/settings"
126 sed -e "s@PROOFGENERAL_HOME=\"/@PROOFGENERAL_HOME=\"${ROOT}@" \
127 -i "${S}/etc/settings" \
128 || die "Could not configure PROOFGENERAL_HOME in etc/settings"
129 sed -e "s@/usr/lib64/Isabelle${MY_PV}@${LIBDIR}@g" \
130 -i "${S}/etc/settings" \
131 || die "Could not configure Isabelle lib directory in etc/settings"
132 epatch "${FILESDIR}/${PN}-2012-graphbrowser.patch"
133 epatch "${FILESDIR}/${PN}-2012-libsha1.patch"
134 # this example fails to compile with swi-prolog 6.5.2, so patch it so that
135 # Isabelle will build, then reverse the patch so that the user can see the
137 epatch "${FILESDIR}/${PN}-2013.2-HOL-Predicate_Compile_Examples.patch"
138 cat <<- EOF >> "${S}/etc/settings"
140 ISABELLE_GHC="${ROOT}usr/bin/ghc"
141 ISABELLE_OCAML="${ROOT}usr/bin/ocaml"
142 ISABELLE_SWIPL="${ROOT}usr/bin/swipl"
143 ISABELLE_JDK_HOME="\$(java-config --jdk-home)"
144 SCALA_HOME="${ROOT}usr/share/scala-${SS}"
145 SHA1_HOME="/usr/$(get_libdir)/sha1-polyml"
147 cat <<- EOF >> "${S}/etc/components"
150 contrib/${JFREECHART_P}
153 if use ledit && ! use readline; then
154 epatch "${FILESDIR}/${PN}-2012-reverse-line-editor-order.patch"
156 rm -f "${S}/contrib/jfreechart-1.0.14-1/lib/iText-2.1.5.jar" \
157 "${S}/contrib/jfreechart-1.0.14-1/lib/jfreechart-1.0.14.jar" \
158 "${S}/contrib/jfreechart-1.0.14-1/lib/jcommon-1.0.18.jar" \
159 "${S}/lib/classes/ext/scala-actors.jar" \
160 "${S}/lib/classes/ext/scala-compiler.jar" \
161 "${S}/lib/classes/ext/scala-library.jar" \
162 "${S}/lib/classes/ext/scala-reflect.jar" \
163 "${S}/lib/classes/ext/scala-swing.jar" \
164 || die "Could not rm bundled jar files supplied by Gentoo"
168 einfo "Building Isabelle. This may take some time."
169 ./bin/isabelle build -a -b -s -v || die "isabelle build failed"
170 epatch --reverse "${FILESDIR}/${PN}-2013.2-HOL-Predicate_Compile_Examples.patch"
173 rm -f "${S}/lib/browser/GraphBrowser.jar" \
174 || die "failed cleaning graph browser directory"
175 pushd "${S}/lib/browser" \
176 || die "Could not change directory to lib/browser"
177 ./build || die "failed building the graph browser"
180 ./bin/isabelle jedit -b -f || die "pide build failed"
190 docompress -x /usr/share/doc/${PF}
193 dosym /usr/share/doc/${PF}/doc "${TARGETDIR}/doc"
194 # The build of sci-mathematics/haskabelle with use doc requires
195 # sci-mathematics/isabelle[doc?]. The haskabelle doc build requires
196 # the src/Doc directory stuff in the isabelle package.
198 for i in "./src/Doc/Classes/document/build" \
199 "./src/Doc/Codegen/document/build" \
200 "./src/Doc/Datatypes/document/build" \
201 "./src/Doc/fixbookmarks" \
202 "./src/Doc/Functions/document/build" \
203 "./src/Doc/Intro/document/build" \
204 "./src/Doc/IsarImplementation/document/build" \
205 "./src/Doc/IsarRef/document/build" \
206 "./src/Doc/IsarRef/document/showsymbols" \
207 "./src/Doc/JEdit/document/build" \
208 "./src/Doc/LaTeXsugar/document/build" \
209 "./src/Doc/Locales/document/build" \
210 "./src/Doc/Logics/document/build" \
211 "./src/Doc/Main/document/build" \
212 "./src/Doc/Nitpick/document/build" \
213 "./src/Doc/prepare_document" \
214 "./src/Doc/ProgProve/document/build" \
215 "./src/Doc/sedindex" \
216 "./src/Doc/Sledgehammer/document/build" \
217 "./src/Doc/System/document/build" \
218 "./src/Doc/Tutorial/document/build" \
219 "./src/Doc/Tutorial/document/isa-index" \
220 "./src/Doc/ZF/document/build"
222 exeinto $(dirname "${TARGETDIR}/${i}")
227 for i in "./bin/isabelle" \
228 "./bin/isabelle-process" \
229 "./bin/isabelle_scala_script" \
230 "./lib/browser/build" \
231 "./lib/scripts/feeder" \
232 "./lib/scripts/getsettings" \
233 "./lib/scripts/polyml-version" \
234 "./lib/scripts/process" \
235 "./lib/scripts/run-polyml" \
236 "./lib/scripts/run-polyml-5.5.1" \
237 "./lib/scripts/run-smlnj" \
238 "./lib/scripts/unsymbolize" \
239 "./lib/scripts/update_sub_sup" \
240 "./lib/scripts/yxml" \
241 "./lib/Tools/browser" \
242 "./lib/Tools/build" \
243 "./lib/Tools/components" \
244 "./lib/Tools/display" \
246 "./lib/Tools/document" \
247 "./lib/Tools/emacs" \
249 "./lib/Tools/findlogics" \
250 "./lib/Tools/getenv" \
251 "./lib/Tools/install" \
253 "./lib/Tools/keywords" \
254 "./lib/Tools/latex" \
256 "./lib/Tools/mkroot" \
257 "./lib/Tools/options" \
258 "./lib/Tools/scala" \
259 "./lib/Tools/scalac" \
261 "./lib/Tools/unsymbolize" \
262 "./lib/Tools/update_sub_sup" \
263 "./lib/Tools/version" \
265 "./src/HOL/IMP/export.sh" \
266 "./src/HOL/Library/Sum_of_Squares/neos_csdp_client" \
267 "./src/HOL/Mirabelle/lib/Tools/mirabelle" \
268 "./src/HOL/Mutabelle/lib/Tools/mutabelle" \
269 "./src/HOL/SPARK/Examples/README" \
270 "./src/HOL/Tools/ATP/scripts/dummy_atp" \
271 "./src/HOL/Tools/ATP/scripts/remote_atp" \
272 "./src/HOL/Tools/Sledgehammer/MaSh/src/compareStats.py" \
273 "./src/HOL/Tools/Sledgehammer/MaSh/src/mash.py" \
274 "./src/HOL/Tools/Sledgehammer/MaSh/src/server.py" \
275 "./src/HOL/Tools/SMT/lib/scripts/remote_smt" \
276 "./src/HOL/TPTP/lib/Tools/tptp_graph" \
277 "./src/HOL/TPTP/lib/Tools/tptp_isabelle" \
278 "./src/HOL/TPTP/lib/Tools/tptp_isabelle_hot" \
279 "./src/HOL/TPTP/lib/Tools/tptp_nitpick" \
280 "./src/HOL/TPTP/lib/Tools/tptp_refute" \
281 "./src/HOL/TPTP/lib/Tools/tptp_sledgehammer" \
282 "./src/HOL/TPTP/TPTP_Parser/make_mlyacclib" \
283 "./src/HOL/TPTP/TPTP_Parser/make_tptp_parser" \
285 "./src/Pure/build-jars" \
286 "./src/Tools/Code/lib/Tools/codegen" \
287 "./src/Tools/Graphview/lib/Tools/graphview" \
288 "./src/Tools/jEdit/lib/Tools/jedit" \
289 "./src/Tools/Metis/fix_metis_license" \
290 "./src/Tools/Metis/make_metis" \
291 "./src/Tools/Metis/scripts/mlpp" \
292 "./src/Tools/WWW_Find/lib/Tools/wwwfind"
294 exeinto $(dirname "${TARGETDIR}/${i}")
298 insinto /etc/isabelle
300 dosym /etc/isabelle "${TARGETDIR}/etc"
302 dosym "${LIBDIR}/heaps" "${TARGETDIR}/heaps"
306 bin/isabelle install -d ${TARGETDIR} "${ED}usr/bin" \
307 || die "isabelle install failed"
308 newicon lib/icons/"${PN}.xpm" "${PN}.xpm"
309 newicon lib/icons/"${PN}-mini.xpm" "${PN}-mini.xpm"
310 dodoc ANNOUNCE CONTRIBUTORS COPYRIGHT NEWS README
313 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/Console.jar" \
314 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/ErrorList.jar" \
315 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/Highlight.jar" \
316 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/idea-icons.jar" \
317 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/jedit-5.1.0-patched/jars/QuickNotepad.jar" \
318 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/jedit-5.1.0-patched/jedit.jar" \
319 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/jsr305-2.0.0.jar" \
320 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/MacOSX.jar" \
321 "${ED}${TARGETDIR}/contrib/${JEDIT_P}/contrib/SideKick.jar" \
322 "${ED}${TARGETDIR}/contrib/${JFREECHART_P}/jfreechart-1.0.14-demo.jar" \
323 "${ED}${TARGETDIR}/lib/browser/GraphBrowser.jar" \
324 "${ED}${TARGETDIR}/lib/classes/Graphview.jar" \
325 "${ED}${TARGETDIR}/lib/classes/Pure.jar" \
326 "${ED}${TARGETDIR}/lib/classes/scala-actors.jar" \
327 "${ED}${TARGETDIR}/lib/classes/scala-compiler.jar" \
328 "${ED}${TARGETDIR}/lib/classes/scala-library.jar" \
329 "${ED}${TARGETDIR}/lib/classes/scala-reflect.jar" \
330 "${ED}${TARGETDIR}/lib/classes/scala-swing.jar" \
331 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/Console.jar" \
332 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/ErrorList.jar" \
333 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/Highlight.jar" \
334 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/idea-icons.jar" \
335 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/Isabelle-jEdit.jar" \
336 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/jsr305-2.0.0.jar" \
337 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/MacOSX.jar" \
338 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/QuickNotepad.jar" \
339 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jars/SideKick.jar" \
340 "${ED}${TARGETDIR}/src/Tools/jEdit/dist/jedit.jar"
344 # If any of the directories in /etc/isabelle/components do not exist, then
345 # even isabelle getenv ISABELLE_HOME fails. Hence it is necessary to
346 # to delete any non-existing directories. If an old Isabelle version was
347 # installed with component ebuilds like sci-mathematics/e, then the
348 # Isabelle version is upgraded, then the contrib directories will not
349 # exist initially, it is necessary to delete them from /etc/isabelle/components.
350 # Then these components are rebuilt (creating these directories) using the
351 # EAPI=5 subslot depends.
352 for i in $(egrep '^[^#].*$' "${ROOT}etc/isabelle/components")
354 if [ ! -d /usr/share/${MY_P}/${i} ]; then
355 sed -e "\@${i}@d" -i "${ROOT}etc/isabelle/components"
358 if use ledit && use readline; then
359 elog "Both readline and ledit use flags specified. The default setting"
360 elog "if both are installed is to use readline (rlwrap), this can be"
361 elog "modfied by editing the ISABELLE_LINE_EDITOR setting in"
362 elog "${ROOT}/etc/isabelle/settings"
364 elog "Please ensure you have a pdf viewer installed, for example:"
365 elog "As root: emerge app-text/zathura-pdf-poppler"
366 elog "Please configure your preferred pdf viewer, something like:"
367 elog "As normal user: xdg-mime default zathura.desktop application/pdf"
368 elog "Or alternatively by editing the PDF_VIEWER variable in the system"
369 elog "settings file ${ROOT}etc/isabelle/settings and/or the user"
370 elog "settings file \$HOME/.isabelle/${MY_P}/etc/settings"
371 elog "To improve sledgehammer performance, consider installing:"
372 elog "USE=isabelle emerge sci-mathematics/e sci-mathematics/spass"
373 elog "For nitpick it is necessary to install:"
374 elog "emerge sci-mathematics/kodkodi"