%global opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0) %global debug_package %{nil} %global tar_base_name coq-%{version} %global tex_dir %{_texmf_vendor}/tex/latex/misc # Upstream includes option for generation of optimized binaries, # however, specifically generates bytecode versions for certain # executables even when optimized option is set, namely the following: # coq-tex, coq_makefile, coq-interface, coqwc, coqdoc, parser, coqdep, # gallina # (coqtop.byte, coqide.byte binaries are also made available.) # .coqide-gtk2rc also produces an rpmlint warning due to its name, # however, this name is proper as per the Coq documentation Name: coq Version: 8.3pl2 Release: 2%{?dist} Summary: Proof management system Group: Applications/Engineering License: LGPLv2 URL: http://coq.inria.fr/ Source0: http://coq.inria.fr/V%{version}/files/%{tar_base_name}.tar.gz Source1: coqide.desktop Source2: README.coq-emacs Source3: README.coq-xemacs Source4: coq.xml # This patch was suggested by upstream to workaround a camlp5 bug (691913). # Remove this once ocaml-camlp5 > 6.02.2 is available. Patch0: coq-camlp5-bug.patch BuildRequires: ocaml >= 3.10.0, ocaml-camlp5-devel, ocaml-lablgtk-devel BuildRequires: desktop-file-utils, emacs-nox, xemacs-nox BuildRequires: emacs-proofgeneral, xemacs-proofgeneral # For documentation BuildRequires: tex(latex), hevea Requires(posttrans): tex(tex) Requires(postun): tex(tex) # This should always match the list in the ocaml spec file. # TODO: ppc64 is NOT currently on this list, due to a missing hevea package. ExclusiveArch: alpha armv4l %{ix86} ia64 x86_64 ppc sparc sparcv9 %description Coq is a formal proof management system. It allows for the development of theorems through first order logic that are mechanically checked by the machine. Sets of definitions and theorems can be saved as compiled modules and loaded into the system. This package provides the main Coq binary without an optional IDE, Coqide. # The IDE's package name will become "coq-coqide". That way, # searching for either "coqide" (the Ubuntu/Debian package name, and # also the full name of the IDE) or "coq" and "ide" will find # this. (If the package were named "coq-ide", the former would fail.) %package coqide Group: Applications/Engineering Summary: Coqide IDE for Coq proof management system Requires: %{name} = %{version}-%{release}, xdg-utils %description coqide Coq is a formal proof management system. It allows for the development of theorems through first order logic that are mechanically checked by the machine. Sets of definitions and theorems can be saved as compiled modules and loaded into the system. This package provides Coqide, a lightweight IDE for Coq. %package doc Group: Applications/Engineering License: Open Publication Summary: Documentation for Coq proof management system BuildArch: noarch %description doc Coq is a formal proof management system. It allows for the development of theorems through first order logic that are mechanically checked by the machine. Sets of definitions and theorems can be saved as compiled modules and loaded into the system. This package provides documentation and tutorials for the system. The main documentation comes in two parts: the main Library documentation, which describes all Coq.* modules, and the Reference Manual, which gives a more complete description of the whole system. Included are also HTML versions of both. Furthermore, there are two tutorials, the main one, and one specifically on recursive types. The example code for the latter is also included. %package emacs Group: Applications/Engineering Summary: GNU Emacs support for Coq proof management system Requires: %{name} = %{version}-%{release} Requires: emacs(bin) >= %{_emacs_version} Requires: emacs-proofgeneral BuildArch: noarch %description emacs This package provides GNU Emacs mode files for formatting Coq input. %package emacs-el Group: Applications/Engineering Summary: Elisp source files for Coq proof management system Requires: %{name}-emacs = %{version}-%{release} BuildArch: noarch %description emacs-el This package contains the Elisp source files for Coq's Emacs support. This package is not needed to use the Emacs interface. %package xemacs Group: Applications/Engineering Summary: XEmacs support for Coq proof management system Requires: %{name} = %{version}-%{release} Requires: xemacs(bin) >= %{_xemacs_version} Requires: xemacs-proofgeneral BuildArch: noarch %description xemacs This package provides XEmacs mode files for formatting Coq input. %package xemacs-el Group: Applications/Engineering Summary: Elisp source files for Coq proof management system Requires: %{name}-xemacs = %{version}-%{release} BuildArch: noarch %description xemacs-el This package contains the Elisp source files for Coq's XEmacs support. This package is not needed to use the XEmacs interface. %prep %setup -q -n %{tar_base_name} %patch0 # Fix some files that are not in UTF-8 encoding for f in CHANGES CREDITS doc/LICENSE; do iconv -f ISO-8859-1 -t UTF-8 -o $f.utf8 $f touch -r $f $f.utf8 mv -f $f.utf8 $f done cp -p %SOURCE1 %SOURCE2 %SOURCE3 . %build # Define opt flag based upon prior opt detection and restrictions %if %{opt} %global opt_option --opt %else %global opt_option --byte-only %endif %global coqdocdir %{_defaultdocdir}/coq-%{version} ./configure -prefix %{_prefix} \ -libdir %{_libdir}/coq \ -bindir %{_bindir} \ -mandir %{_mandir} \ -docdir %{coqdocdir} \ -emacs %{_emacs_sitelispdir} \ -coqdocdir %{tex_dir} \ %{opt_option} \ -browser "xdg-open %s" \ -camlp5dir %{_libdir}/ocaml/camlp5 export CAML_LD_LIBRARY_PATH=`pwd`/kernel/byterun:${CAML_LD_LIBRARY_PATH} make world VERBOSE=1 # Strip shared objects (not sure where the best location for a # makefile patch for this would be). strip kernel/byterun/dllcoqrun.so find plugins -name \*.cmxs | xargs strip %install make COQINSTALLPREFIX="%{buildroot}%{_prefix}" OLDROOT="%{_prefix}" install # Install desktop icon and menu entry %global coqdatadir %{_libdir}/coq %if %(test -d %{buildroot}%{coqdatadir} && echo 1 || echo 0) != 1 mkdir -p %{buildroot}%{coqdatadir} %endif sed -i -e 's|ICON-LOCATION-BASE|%{coqdatadir}/ide/coq.png|' coqide.desktop desktop-file-install --vendor="fedora" \ --dir=%{buildroot}%{_datadir}/applications \ coqide.desktop # Temporary workaround for coq 8.3 install bugs. # These files have to be installed for coq's provides to match its requires. cp -p plugins/dp/fol.cmi %{buildroot}%{coqdatadir}/plugins/dp cp -p plugins/extraction/miniml.cmi %{buildroot}%{coqdatadir}/plugins/extraction cp -p plugins/micromega/sos_lib.cmi %{buildroot}%{coqdatadir}/plugins/micromega cp -p proofs/decl_expr.cmi %{buildroot}%{coqdatadir}/proofs # Make a MIME type for .v files mkdir -p %{buildroot}%{_datadir}/mime/packages cp -p %{SOURCE4} %{buildroot}%{_datadir}/mime/packages # Install main Coq .v files for f in `find plugin theories -name '*.v' -type f`; do mkdir -p %{buildroot}%{coqdatadir}/`dirname $f` && cp -p $f %{buildroot}%{coqdatadir}/`dirname $f` done # Install tutorial code %global tutorialcodedir %{coqdatadir}/RecTutorial %if %(test -d %{buildroot}%{tutorialcodedir} && echo 1 || echo 0) != 1 mkdir -p %{buildroot}%{tutorialcodedir} %endif cp -p doc/RecTutorial/RecTutorial.v %{buildroot}%{tutorialcodedir} ln -s %{tutorialcodedir} %{buildroot}%{coqdatadir}/RecTutorial # Install documentation not installed by install-doc in Makefile for f in CHANGES COMPATIBILITY COPYRIGHT CREDITS INSTALL LICENSE README; do cp -p $f %{buildroot}%{coqdocdir}; done # We don't need both PostScript and PDF documentation rm -fr %{buildroot}%{coqdocdir}/ps # Don't install libcoqrun.a (it might not exist, but get rid of it if it does) rm -f %{buildroot}%{coqdatadir}/libcoqrun.a # Copy the Emacs support files for XEmacs, and byte compile mkdir -p %{buildroot}%{_xemacs_sitelispdir}/coq cp -p %{buildroot}%{_emacs_sitelispdir}/* %{buildroot}%{_xemacs_sitelispdir}/coq cd %{buildroot}%{_xemacs_sitelispdir}/coq %{_xemacs_bytecompile} *.el # Move Emacs support files to a subdir and byte compile mkdir -p %{buildroot}%{_emacs_sitelispdir}/coq cd %{buildroot}%{_emacs_sitelispdir}/coq mv ../*.el . %{_emacs_bytecompile} *.el %posttrans mktexlsr &> /dev/null || : update-mime-database %{_datadir}/mime &> /dev/null || : update-desktop-database -q &> /dev/null || : %postun if [ $1 -eq 0 ]; then update-desktop-database -q &> /dev/null update-mime-database %{_datadir}/mime &> /dev/null || : mktexlsr &> /dev/null fi # Note: we want to keep both coqtop.opt and coqtop.byte because the # byte compiled version can be used to compile new version through # coqmktop # Exclude libcoqrun.a only when it is installed (this appears to be # only for the native compile case) %files %defattr(-,root,root,-) # DON'T use the doc macro here or else it wipes out all the other documentation installed! %{_mandir}/man1/* %{coqdatadir} %{_bindir}/coq* %{_bindir}/gallina %exclude %{_bindir}/coqide* %exclude %{coqdatadir}/ide %if %{opt} %exclude %{coqdatadir}/*/*.cmxa %exclude %{coqdatadir}/*/*.a %endif %{tex_dir}/coq* # A few documentation files here should stay in the main package (and # are excluded from doc), but the bulk of the documentation is in the # doc subpackage %dir %{coqdocdir} %{coqdocdir}/CHANGES %{coqdocdir}/COMPATIBILITY %{coqdocdir}/COPYRIGHT %{coqdocdir}/CREDITS %{coqdocdir}/INSTALL %{coqdocdir}/LICENSE %{coqdocdir}/README %files coqide %defattr(-,root,root,-) %doc INSTALL.ide %{_bindir}/coqide* %{coqdatadir}/ide %exclude %{coqdatadir}/ide/ide.cmxa %exclude %{coqdatadir}/ide/ide.a # Is it ok to assume this is what desktop-file-install renames coqide.desktop to? %{_datadir}/applications/fedora-coqide.desktop %{_datadir}/mime/packages/coq.xml %files doc %defattr(-,root,root,-) %{coqdocdir}/* %exclude %{coqdocdir}/CHANGES %exclude %{coqdocdir}/COMPATIBILITY %exclude %{coqdocdir}/COPYRIGHT %exclude %{coqdocdir}/CREDITS %exclude %{coqdocdir}/INSTALL %exclude %{coqdocdir}/LICENSE %exclude %{coqdocdir}/README %files emacs %defattr(-,root,root,-) %dir %{_emacs_sitelispdir}/coq %{_emacs_sitelispdir}/coq/*.elc %doc README.coq-emacs %files emacs-el %defattr(-,root,root,-) %{_emacs_sitelispdir}/coq/*.el %files xemacs %defattr(-,root,root,-) %dir %{_xemacs_sitelispdir}/coq %{_xemacs_sitelispdir}/coq/*.elc %doc README.coq-xemacs %files xemacs-el %defattr(-,root,root,-) %{_xemacs_sitelispdir}/coq/*.el %changelog * Wed Jun 15 2011 Jerry James - 8.3pl2-2 - Remove workaround for bad documentation link in 8.3pl1, fixed in 8.3pl2 - Revert change in 8.3pl1-1 to split arch-specific stuff from noarch stuff. Coq tactics are written in ocaml, which compiles to arch-specific files, and those files are stored in the same place as the noarch proof files. - Move tutorial code into main package; it is small and we can then leave all the rest of the documentation as noarch * Tue Apr 26 2011 Jerry James - 8.3pl2-1 - New upstream release - Change the list of supported arches to match the ocaml list, except for ppc64, which is missing hevea * Mon Apr 4 2011 Jerry James - 8.3pl1-2 - Change the mime type to application/x-coq, and inherit from text/plain (bz 530254) * Thu Mar 31 2011 Jerry James - 8.3pl1-1 - New upstream release - Drop BuildRoot tag and clean section - Drop all patches (all merged or otherwise fixed upstream) - Comply with latest Ocaml packaging specs - Identify xdg-open as the default web browser - Comply with the emacs packaging guidelines, and build an XEmacs package - The -doc and -emacs* subpackages are now noarch - Workaround bug 691913 - Drop PostScript documentation; it's identical to PDF documentation - Deal with arch-specific files in /usr/share; install everything to libdir, then move the noarch stuff to datadir, but leave symlinks behind - Add a new mime type application/x-coqide and use it in the desktop file - Add post and postun scripts * Tue Feb 08 2011 Fedora Release Engineering - 8.2pl1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Wed Aug 05 2009 Alan Dunn - 8.2pl1-1 - New upstream release - Eliminated modification of tar_base_name that occurred for only version 8.2 - Added reference to bugzilla bug for ppc64 ExcludeArch - HTML form of documentation seems to no longer be distributed -> must generate Decided for consistency to generate all documentation - Additional file for iconv - documentation license file - Changed tutorial directory name, now also using bundled version of tutorial * Fri Jul 24 2009 Fedora Release Engineering - 8.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Thu Jun 18 2009 Alan Dunn - 8.2-1 - New upstream release - Seems documentation license has changed or wasn't explicitly stated before, fixed (is ok Fedora license) - Added versioning to documentation - Removed special OCaml, TeX logic for Fedora < 9 (no longer relevant) - Dropped makefile patch for compiling grammar.cma (fixed in Coq 8.2) - Dropped cmxa-install patch (fixed in Coq 8.2) - Changed makefile-strip patch and name (not yet fixed upstream...) - Changed check.patch -> coq-check-(version).patch, slightly changed for 8.2 (not yet fixed upstream...) - Dropped parser-renaming makefile-parser.patch, parser-man.patch (fixed in Coq 8.2) - Dropped coq-lablgtk-2.12.patch (fixed in Coq 8.2) - Changed way source (.v) files are installed - Stopped addition of other icon file (icon fixed in Coq 8.2) - Bytecode executables are now "clean" (not build with custom -> don't need to configure prelink around these) - define -> global - Added ExcludeArch sparc64 * Wed Jun 17 2009 S390x secondary arch maintainer 8.1pl4-3.1 - ExcludeArch s390, s390x as we don't have OCaml on those archs * Wed Mar 04 2009 Alan Dunn - 8.1pl4-3 - Minor change to cmxa-install patch instruction - Fixed to work with lablgtk 2.12 * Tue Feb 24 2009 Fedora Release Engineering - 8.1pl4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild * Fri Dec 5 2008 Richard W.M. Jones - 8.1pl4-1 - New upstream version 8.1pl4. - Attempt to rebuild against OCaml 3.11.0. - Run make with VERBOSE=1 so we can see the actual commands. - Pass -camlp5dir to configure so it uses camlp5 (overriding existence of camlp4 if it happens to be installed). * Wed Oct 22 2008 Alan Dunn 8.1pl3-5 - Added Coq .v files into the main package at user request. * Tue Sep 09 2008 Alan Dunn 8.1pl3-4 - Added creation of prelink blacklist for any bytecode files. - Fixed execstack status for binaries. * Tue Aug 05 2008 Alan Dunn 8.1pl3-3 - Changed parser to coq-parser to avoid name conflict with coda-client. - Made make process noisy again. * Sun Jul 20 2008 Alan Dunn 8.1pl3-2.1 - Minor bump for Fedora 8 to bring it into line with the rest. * Thu Jul 17 2008 Alan Dunn 8.1pl3-2 - Added check for Fedora distribution number to allow for Fedora 8 release. * Wed Jun 14 2008 Alan Dunn 8.1pl3-1 - Initial Fedora RPM version.