From 9c22c89df3cf410c43a635832890042dbd4dd788a6af09ae141711ead2c9996c Mon Sep 17 00:00:00 2001 From: Aaron Puchert Date: Sat, 7 Sep 2024 15:01:23 +0000 Subject: [PATCH] - Update to version 8.20.0. The most impactful changes are: * A mechanism to add user-defined rewrite rules to Coq's reduction mechanisms; see chapter "User-defined rewrite rules". * Support for primitive strings in terms. * Reduction of the bytecode segment size, which in turn means that `.vo` files might now be considerably smaller. - Notable breaking changes: * Syntactic global references passed through the `using` clauses of `auto`-like tactics are now handled as plain references rather than interpreted terms. In particular, their typeclass arguments will not be inferred. In general, the previous behaviour can be emulated by replacing `auto using foo` with `pose proof foo; auto`. * Argument order for the Ltac2 combinators `List.fold_left2` and `List.fold_right2` changed to be the same as in OCaml. * Importing a module containing a mutable Ltac2 definition does not undo its mutations. Replace `Ltac2 mutable foo := some_expr.` with `Ltac2 mutable foo := some_expr. Ltac2 Set foo := some_expr.` to recover the previous behaviour. * Some renaming in the standard library. Deprecations are provided for a smooth transition. - For more details, see the change log in coq-doc. OBS-URL: https://build.opensuse.org/package/show/science/coq?expand=0&rev=67 --- .gitattributes | 23 + .gitignore | 1 + _constraints | 11 + coq-8.19.2.tar.gz | 3 + coq-8.20.0.tar.gz | 3 + coq-refman-8.19.2.tar.xz | 3 + coq-refman-8.20.0.tar.xz | 3 + coq-rpmlintrc | 7 + coq-stdlib-8.19.2.tar.xz | 3 + coq-stdlib-8.20.0.tar.xz | 3 + coq.changes | 728 +++++++++++++++++++++++++++++++ coq.spec | 275 ++++++++++++ coq.xml | 12 + fr.inria.coq.coqide.desktop | 10 + fr.inria.coq.coqide.metainfo.xml | 71 +++ 15 files changed, 1156 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _constraints create mode 100644 coq-8.19.2.tar.gz create mode 100644 coq-8.20.0.tar.gz create mode 100644 coq-refman-8.19.2.tar.xz create mode 100644 coq-refman-8.20.0.tar.xz create mode 100644 coq-rpmlintrc create mode 100644 coq-stdlib-8.19.2.tar.xz create mode 100644 coq-stdlib-8.20.0.tar.xz create mode 100644 coq.changes create mode 100644 coq.spec create mode 100644 coq.xml create mode 100644 fr.inria.coq.coqide.desktop create mode 100644 fr.inria.coq.coqide.metainfo.xml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..642c0fb --- /dev/null +++ b/_constraints @@ -0,0 +1,11 @@ + + + + + 900 + + + 4 + + + diff --git a/coq-8.19.2.tar.gz b/coq-8.19.2.tar.gz new file mode 100644 index 0000000..aade9b7 --- /dev/null +++ b/coq-8.19.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18035624bcda4f8cffe5f348e02f0ae2503af1c40de165788d7d45578e6c5725 +size 7678311 diff --git a/coq-8.20.0.tar.gz b/coq-8.20.0.tar.gz new file mode 100644 index 0000000..0159aad --- /dev/null +++ b/coq-8.20.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b08b364e6d420c58578d419247c5a710f4248bab962a46e542d452edac9e7914 +size 7839432 diff --git a/coq-refman-8.19.2.tar.xz b/coq-refman-8.19.2.tar.xz new file mode 100644 index 0000000..15d6f05 --- /dev/null +++ b/coq-refman-8.19.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d192cf2fd441f441cd4bd91672cd46ed1d8744bff132bace7aae3741ec4941de +size 7665520 diff --git a/coq-refman-8.20.0.tar.xz b/coq-refman-8.20.0.tar.xz new file mode 100644 index 0000000..1840d12 --- /dev/null +++ b/coq-refman-8.20.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ff1da16e6483c7ea2ffc75b7254690041b206f4330b0ea02ef74b567a57fcf3 +size 7788608 diff --git a/coq-rpmlintrc b/coq-rpmlintrc new file mode 100644 index 0000000..7df8eb5 --- /dev/null +++ b/coq-rpmlintrc @@ -0,0 +1,7 @@ +# This line is mandatory to access the configuration functions +from Config import * + +# Unfortunate choice, but we can't easily change that. +addFilter("hidden-file-or-dir .*/.coq-native") +# These are loaded manually by the OCaml runtime and need no dependency information. +addFilter("shared-library-without-dependency-information .*\.cmxs") diff --git a/coq-stdlib-8.19.2.tar.xz b/coq-stdlib-8.19.2.tar.xz new file mode 100644 index 0000000..abf3fe2 --- /dev/null +++ b/coq-stdlib-8.19.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f0a46efc7ec7365ebb03937ab25a6994eb4f405853a28122f7c55859afb290f +size 2176420 diff --git a/coq-stdlib-8.20.0.tar.xz b/coq-stdlib-8.20.0.tar.xz new file mode 100644 index 0000000..cdfcbfa --- /dev/null +++ b/coq-stdlib-8.20.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0d9b5b24489633aa72fcaaddc462eb2d6f46ff55574c50fd520efb188dcfe7a +size 2203608 diff --git a/coq.changes b/coq.changes new file mode 100644 index 0000000..a4b3e7b --- /dev/null +++ b/coq.changes @@ -0,0 +1,728 @@ +------------------------------------------------------------------- +Thu Sep 5 20:49:31 UTC 2024 - Aaron Puchert + +- Update to version 8.20.0. The most impactful changes are: + * A mechanism to add user-defined rewrite rules to Coq's reduction + mechanisms; see chapter "User-defined rewrite rules". + * Support for primitive strings in terms. + * Reduction of the bytecode segment size, which in turn means + that `.vo` files might now be considerably smaller. +- Notable breaking changes: + * Syntactic global references passed through the `using` clauses + of `auto`-like tactics are now handled as plain references + rather than interpreted terms. In particular, their typeclass + arguments will not be inferred. In general, the previous + behaviour can be emulated by replacing `auto using foo` with + `pose proof foo; auto`. + * Argument order for the Ltac2 combinators `List.fold_left2` and + `List.fold_right2` changed to be the same as in OCaml. + * Importing a module containing a mutable Ltac2 definition does + not undo its mutations. Replace `Ltac2 mutable foo := + some_expr.` with `Ltac2 mutable foo := some_expr. Ltac2 Set foo + := some_expr.` to recover the previous behaviour. + * Some renaming in the standard library. Deprecations are + provided for a smooth transition. +- For more details, see the change log in coq-doc. + +------------------------------------------------------------------- +Sun Jun 30 17:20:06 UTC 2024 - Aaron Puchert + +- Update to version 8.19.2. + * Fixed a regression from Coq 8.18 in the presence of a defined + field in a primitive `Record`. + * Fixed an issue where the printer was sometimes failing to use a + prefix or infix custom notation whose right-hand side refers to + a different custom entry. + * Fixed `abstract` failure in the presence of admitted goals in + the surrounding proof. + * Fixed issues when using Ltac2 in VsCoq due to incorrect state + handling of Ltac2 notations. + * Fixed `Include` on a module containing a record declared with + `Primitive Projections`. + * Fixed an issue in `Fixpoint` with no arguments. + * Position error/warning tooltips correctly when multibyte UTF-8 + characters are present. + +------------------------------------------------------------------- +Thu Mar 7 22:31:46 UTC 2024 - Aaron Puchert + +- Update to version 8.19.1. + * Fixed incorrect abstraction of sort variables for opaque + constants leading to an inconsistency. + * Fixed memory corruption with `vm_compute` (rare but more + likely with OCaml 5.1). + * "Found no matching notation to enable or disable" is now a + warning instead of an error. + * Fixed undeclared universe with multiple uses of `abstract`. + * Fixed incorrect printing of constructor values with multiple + arguments, and over-parenthesizing of constructor printing. + * Fixed incorrect declared type for Ltac2.FMap.fold. + +------------------------------------------------------------------- +Sun Jan 28 20:20:35 UTC 2024 - Aaron Puchert + +- Update to version 8.19.0. The most impactful changes: + * Sort polymorphism makes it possible to share common constructs + over `Type`, `Prop` and `SProp`. + * The notation `term%_scope` to set a scope only temporarily (in + addition to `term%scope` for opening a scope applying to all + subterms). + * `lazy`, `simpl`, `cbn` and `cbv` and the associated `Eval` and + `eval` reductions learned to do head reduction when given flag + `head`. + * New Ltac2 APIs, improved Ltac2 `exact` and dynamic building of + Ltac2 term patterns. + * New performance evaluation facilities: `Instructions` to count + CPU instructions used by a command and Profiling system to + produce trace files. + * New command `Attributes` to assign attributes such as + `deprecated` to a library file. +- Notable breaking changes: + * `replace` with `by tac` does not automatically attempt to solve + the generated equality subgoal using the hypotheses. Use `by + first [assumption | symmetry;assumption | tac]` if you need the + previous behaviour. + * Removed old deprecated files from the standard library. +- Use %fdupes in the documentation package. + +------------------------------------------------------------------- +Sun Nov 12 22:52:11 UTC 2023 - Aaron Puchert + +- Revert last change: this is now set in ocaml-rpm-macros. +- Increase stack size limit in QEMU user space builds. Here ulimit + has no effect, so we add a wrapper around ocamlopt.opt to PATH + that adds "-s ..." to the qemu- command line. + +------------------------------------------------------------------- +Mon Oct 30 22:26:00 UTC 2023 - Aaron Puchert + +- Increase stack size limit to fix build on riscv64. + +------------------------------------------------------------------- +Sat Sep 16 20:35:51 UTC 2023 - Aaron Puchert + +- Update to version 8.18.0. + * The default locality of `Hint` and `Instance` commands was + switched to `export`. + * The universe unification algorithm can now delay the commitment + to a sort (the algorithm used to pick `Type`). Thanks to this + feature many `Prop` and `SProp` annotations can be now omitted. + * Ltac2 supports array literals, maps and sets of primitive + datatypes such as names (of constants, inductive types, etc) + and fine-grained control over profiling. + * The warning system offers new categories, enabling finer + (de)activation of specific warnings. This should be + particularly useful to handle deprecations. + * Many new lemmas useful for teaching analysis with Coq are now + part of the standard library about real numbers. + * The `#[deprecated]` attribute can now be applied to definitions. + +------------------------------------------------------------------- +Wed Jun 28 21:03:07 UTC 2023 - Aaron Puchert + +- Update to version 8.17.1. + * Fixed incorrect paths emitted by coqdep in some cases for META + files which prevented dune builds for plugins from working + correctly. + * Fixed shadowing of record fields in extraction to OCaml. + * Fixed an impossible-to-turn-off debug message "backtracking and + redoing byextend on ...". + * Fixed a major memory regression affecting MathComp 2. +- Classify desktop entry under Science instead of Education. +- Add screenshot URL to AppStream metadata. + +------------------------------------------------------------------- +Tue Mar 28 21:18:57 UTC 2023 - Aaron Puchert + +- Update to version 8.17.0. + * Fixed a logical inconsistency due to `vm_compute` in presence + of side-effects in the enviroment (e.g. using Back or Fail). + * It is now possible to dynamically enable or disable notations. + * Support multiple scopes in `Arguments` and `Bind Scope`. + * The tactics chapter of the manual has many improvements in + presentation and wording. The documented grammar is semi- + automatically checked for consistency with the implementation. + * Fixes to the `auto` and `eauto` tactics, to respect hint + priorities and the documented use of simple apply. This is a + potentially breaking change. + * New Ltac2 APIs, deep pattern-matching with `as` clauses and + handling of literals, support for record types and preterms. + * Move from :> to :: syntax for declaring typeclass fields as + instances, fixing a confusion with declaration of coercions. + * Standard library improvements. + +------------------------------------------------------------------- +Thu Jan 26 22:02:12 UTC 2023 - Aaron Puchert + +- Build with ocaml-rpm-macros to get proper Requires and Provides + for coq-devel. This should prevent incompatibilities with other + Ocaml libraries when building native objects against coq-devel. + +------------------------------------------------------------------- +Sat Nov 26 22:20:18 UTC 2022 - Aaron Puchert + +- Update to version 8.16.1. + * Fixed the conversion of `Prod` values in the native compiler. + * Added `SProp` check for opaque names in conversion. + * Pass the correct environment to compute η-expansion of + cofixpoints in VM and native compilation. + * Fixed an inconsistency with conversion of primitive arrays, and + associated incomplete strong normalization of primitive arrays + with `lazy`. + * `Print Assumptions` treats opaque definitions with missing + proofs (as found in .vos files, produced using -vos) as axioms + instead of ignoring them. + +------------------------------------------------------------------- +Thu Sep 8 21:11:24 UTC 2022 - Aaron Puchert + +- Update to version 8.16.0. + * The guard checker (see `Guarded`) now ensures strong + normalization under any reduction strategy. + * Irrelevant terms (in the `SProp` sort) are now squashed to a + dummy value during conversion, fixing a subject reduction + issue and making proof conversion faster. + * Introduction of reversible coercions, which allow coercions + relying on meta-level resolution such as type-classes or + canonical structures. Also allow coercions that do not fullfill + the uniform inheritance condition. + * Generalized rewriting support for rewriting with `Type`-valued + relations and in `Type` contexts, using the + `Classes.CMorphisms` library. + * Added the boolean equality scheme command for decidable + inductive types. + * Added a `Print Notation` command. + * Incompatibilities in name generation for Program obligations, + `eauto` treatment of tactic failure levels, use of `ident` in + notations, parsing of module expressions. + * Standard library reorganization and deprecations. + * Improve the treatment of standard library numbers by + `Extraction`. +- Coq requires ocamlfind at runtime now. + +------------------------------------------------------------------- +Wed Jun 1 21:41:11 UTC 2022 - Aaron Puchert + +- Update to version 8.15.2. + * Tactics `intuition` and `dintuition` use + `Tauto.intuition_solver` (defined as `auto with *`) instead of + hardcoding `auto with *`. This makes it possible to change the + default solver with `Ltac Tauto.intuition_solver ::= ...`. + * Fixed an uncaught exception `UnableToUnify` with + bidirectionality hints. + * Fixed multiple CoqIDE bugs. + * Fixed an incorrect implementation of `SFClassify`, allowing for + a proof of `False` since 8.11.0, due to Axioms present in + `Float.Axioms`. +- Rename coq.desktop to fr.inria.coq.coqide.desktop as the + documentation suggests, add an accompanying metainfo file. +- Declare documentation as noarch. + +------------------------------------------------------------------- +Thu Mar 24 22:56:21 UTC 2022 - Aaron Puchert + +- Update to version 8.15.1. + * Fixes an inconsistency when using module subtyping with + inductive types. + * Speeds up CoqIDE on large files. + * Fixes a bug where `coqc -vok` was not creating a .vok file. + * Fixes a regression in `cbn`. + * Improves usability of schemes with `elim foo using scheme with + (P0 := ...)` (the `P0` name was not accessible in 8.15.0). + +------------------------------------------------------------------- +Sat Jan 15 18:03:24 UTC 2022 - Aaron Puchert + +- Update to version 8.15.0. + * The `apply with` tactic no longer renames arguments unless + the compatibility flag `Apply With Renaming` is set. + * Improvements to the `auto` tactic family, fixing `Hint Unfold` + behavior, and generalizing the use of discrimination nets. + * The `typeclasses eauto` tactic has a new `best_effort` option + allowing it to return partial solutions to a proof search + problem, depending on the mode declarations associated to each + constraint. This mode is used by typeclass resolution during + type inference to provide more precise error messages. + * Many commands and options were deprecated or removed after + deprecation and more consistently support locality attributes. + * The `Import` command is extended with `import_categories` to + select the components of a module to import or not, including + features such as hints, coercions, and notations. + * A visual Ltac debugger is now available in CoqIDE. + * For more details, see refman/changes.html in coq-doc. + +------------------------------------------------------------------- +Sun Dec 12 20:11:15 UTC 2021 - Aaron Puchert + +- Update to version 8.14.1. + * Fixed the implementation of persistent arrays used by the VM + and native compute so that it uses a uniform representation. + Previously, storing primitive floats inside primitive arrays + could cause memory corruption. + * Fixed missing registration of universe constraints in Module + Type elaboration. + * Made `abstract` more robust with respect to Ltac `constr` + bindings containing existential variables. + * Correct support of trailing `let` by tactic `specialize`. + * Fixed an anomaly with `Extraction Conservative Types` when + extracting pattern-matching on singleton types. + * Regular error instead of an anomaly when calling `Separate + Extraction` in a module. + +------------------------------------------------------------------- +Wed Oct 20 21:31:46 UTC 2021 - Aaron Puchert + +- Update to version 8.14.0. + * The internal representation of match has changed to a more + space-efficient and cleaner structure, allowing the fix of a + completeness issue with cumulative inductive types in the type- + checker. The internal representation is now closer to the user- + level view of match, where the argument context of branches and + the inductive binders in and as do not carry type annotations. + * A new coqnative binary performs separate native compilation of + libraries, starting from a .vo file. It is supported by + coq_makefile. + * Improvements to typeclasses and canonical structure resolution, + allowing more terms to be considered as classes or keys. + * More control over notations declarations and support for + primitive types in string and number notations. + * Removal of deprecated tactics, notably omega, which has been + replaced by a greatly improved lia, along with many bug fixes. + * New Ltac2 APIs for interaction with Ltac1, manipulation of + inductive types and printing. + * Many changes and additions to the standard library in the + numbers, vectors and lists libraries. A new signed primitive + integers library Sint63 is available in addition to the + unsigned Uint63 library. + * For more details, see refman/changes.html in coq-doc. + +------------------------------------------------------------------- +Sat Sep 4 12:51:43 UTC 2021 - Aaron Puchert + +- Add documentation package based on github.com/coq/doc until we + can build the documentation directly in OBS. + +------------------------------------------------------------------- +Mon Apr 12 21:17:33 UTC 2021 - Aaron Puchert + +- Update to version 8.13.2. + * Fix crash when using vm_compute on an irreducible PArray.set. + * Fix crash when loading .vo files containing a vm_compute + normalized primitive array. + * Fix Ltac2.Array.init computational complexity. + +------------------------------------------------------------------- +Thu Feb 25 21:50:43 UTC 2021 - Aaron Puchert + +- Update to version 8.13.1. + * Fix arities of VM opcodes for some floating-point operations + that could cause memory corruption. + +------------------------------------------------------------------- +Sun Feb 7 22:48:00 UTC 2021 - Aaron Puchert + +- Update to version 8.13.0. + * Introduction of primitive persistent arrays in the core + language, implemented using imperative persistent arrays. + * Introduction of definitional proof irrelevance for the equality + type defined in the SProp sort. + * Cumulative record and inductive type declarations can now + specify the variance of their universes. + * Various bugfixes and uniformization of behavior with respect to + the use of implicit arguments and the handling of existential + variables in declarations, unification and tactics. + * New warning for unused variables in catch-all match branches + that match multiple distinct patterns. + * New warning for Hint commands outside sections without a + locality attribute, whose goal is to eventually remove the + fragile default behavior of importing hints only when using + Require. The recommended fix is to declare hints as export, + instead of the current default global, meaning that they are + imported through Require Import only, not Require. + * General support for boolean attributes. + * Many improvements to the handling of notations, including + number notations, recursive notations and notations with + bindings. A new algorithm chooses the most precise notation + available to print an expression, which might introduce changes + in printing behavior. + * Tactic improvements in lia and its zify preprocessing step, + now supporting reasoning on boolean operators such as Z.leb and + supporting primitive integers Int63. + * Typing flags can now be specified per-constant / inductive. + * Improvements to the reference manual including updated syntax + descriptions that match Coq's grammar in several chapters, and + splitting parts of the tactics chapter to independent sections. +- Add build flag to turn off building of the IDE. + +------------------------------------------------------------------- +Sun Dec 13 15:55:58 UTC 2020 - Aaron Puchert + +- Update to version 8.12.2. Fixes two impacting 8.12 regressions: + * Fixed a regression causing notations mentioning a coercion to + be ignored. + * Fixed a regression causing incomplete inference of implicit + arguments in exists. + +------------------------------------------------------------------- +Tue Nov 17 22:09:12 UTC 2020 - Aaron Puchert + +- Update to version 8.12.1. This contains mostly bug fixes: + * Polymorphic side-effects inside monomorphic definitions were + incorrectly handled as not inlined. This allowed deriving an + inconsistency. + * Regression in error reporting after SSReflect's case tactic. + A generic error message "Could not fill dependent hole in + apply" was reported for any error following case or elim. + * Several bugs with Search. + * The details environment introduced in coqdoc in Coq 8.12 can + now be used as advertised in the reference manual. + * View menu "Display parentheses" introduced in CoqIDE in + Coq 8.12 now works correctly. + +------------------------------------------------------------------- +Thu Aug 20 08:33:34 UTC 2020 - Martin Liška + +- Use memoryperjob constraint instead of %limit_build macro. + +------------------------------------------------------------------- +Tue Jul 28 21:48:40 UTC 2020 - Aaron Puchert + +- Update to version 8.12.0. + * New binder notation for non-maximal implicit arguments using [] + allowing to set and see the implicit status of arguments + immediately. + * New notation Inductive "I A | x : s := ..." to distinguish the + uniform from the non-uniform parameters in inductive + definitions. + * More robust and expressive treatment of implicit inductive + parameters in inductive declarations. + * Improvements in the treatment of implicit arguments and + partially applied constants in notations, parsing of + hexadecimal number notation and better handling of scopes and + coercions for printing. + * A correct and efficient coercion coherence checking algorithm, + avoiding spurious or duplicate warnings. + * An improved Search command which accepts complex queries. This + takes precedence over the now deprecated ssreflect search. + * Many additions and improvements of the standard library. + * Improvements to the reference manual include a more logical + organization of chapters along with updated syntax descriptions + that match Coq's grammar in most but not all chapters. + +------------------------------------------------------------------- +Sat Jun 6 12:11:06 UTC 2020 - Aaron Puchert + +- Update to version 8.11.2. + * Fixed a kernel issue where using Require inside a section + caused an anomaly when closing the section. + * Fixed normalization in conclusion of custom induction scheme. + * Fixed a loss of location of some tactic errors. + * Ignore -native-compiler option when built without native + compute support. + * Fixed a segfault issue with CoqIDE completion. + * Highlighting style is now consistently applied to all three + buffers of CoqIDE. + +------------------------------------------------------------------- +Wed Apr 8 22:20:23 UTC 2020 - Aaron Puchert + +- Update to version 8.11.1, with upstream support for OCaml 4.10. + * Allow more inductive types in Unset Positivity Checking mode. + * Fixed bugs in dealing with precedence of notations in custom + entries. + * In primitive floats, print a warning when parsing a decimal + value that is not exactly a binary64 floating-point number. + For instance, parsing 0.1 will print a warning whereas parsing + 0.5 won't. + * Fixed an issue in CoqIDE about compiling file paths containing + spaces. + * Fixed an issue where Extraction Implicit on the constructor of + a record was leading to an anomaly. +- Remove now obsolete ocaml-410-build.patch. + +------------------------------------------------------------------- +Sun Mar 29 21:42:13 UTC 2020 - Aaron Puchert + +- The num library is required for OCaml 4.06 or later. +- Add ocaml-410-build.patch: fix build with OCaml 4.10. + +------------------------------------------------------------------- +Thu Feb 6 16:38:09 UTC 2020 - Aaron Puchert + +- Update to version 8.11.0. + * Ltac2, a new tactic language for writing more robust larger + scale tactics, with built-in support for datatypes and the + multi-goal tactic monad. + * Primitive floats are integrated in terms and follow the binary64 + format of the IEEE 754 standard, as specified in the + Coq.Float.Floats library. + * Many other cleanups and improvements have been performed and + are further described in the changelog. + * Special note on compatibility: Fixed bugs of Export and Import + that can have a significant impact on user developments. +- Drop unneeded empty *.vos files. + +------------------------------------------------------------------- +Sat Nov 30 16:40:21 UTC 2019 - Aaron Puchert + +- Update to version 8.10.2. + * Fixed a critical bug of template polymorphism and nonlinear + universes; + * Fixed a few anomalies; + * Fixed an 8.10 regression related to the printing of coercions + associated to notations; + * Fixed uneven dimensions of CoqIDE panels when window has been + resized; + * Fixed queries in CoqIDE. + +------------------------------------------------------------------- +Tue Nov 12 22:46:34 UTC 2019 - Aaron Puchert + +- Update to version 8.10.0. + * some quality-of-life bug fixes; + * a critical bug fix related to template polymorphism; + * native 63-bit machine integers; + * a new sort of definitionally proof-irrelevant propositions: SProp; + * private universes for opaque polymorphic constants; + * string notations and numeral notations; + * a new simplex-based proof engine for the tactics lia, nia, lra + and nra; + * new introduction patterns for SSReflect; + * a tactic to rewrite under binders: under; + * easy input of non-ASCII symbols in CoqIDE, which now uses GTK3. +- Update to version 8.10.1. + * Fix proof of False when using SProp + * Fix an anomaly when unsolved evar in Add Ring + * Fix Ltac regression in binding free names in uconstr + * Fix handling of unicode input before space + * Fix custom extraction of inductives to JSON +- Update version requirements. + +------------------------------------------------------------------- +Tue Nov 12 22:31:20 UTC 2019 - Aaron Puchert + +- Fix findlib build dependency. + +------------------------------------------------------------------- +Sun Nov 3 18:06:05 UTC 2019 - Aaron Puchert + +- Use memory-constraints package to limit number of threads. +- Add dependencies to fix installation issues. + +------------------------------------------------------------------- +Wed Sep 25 20:16:34 UTC 2019 - Aaron Puchert + +- Prevent OOM by limiting the number of threads. + +------------------------------------------------------------------- +Tue Sep 24 22:13:12 UTC 2019 - Aaron Puchert + +- Change license tag to LGPL-2.1-only. +- Remove obsolete %defattr and other spec-cleaner suggestions. + +------------------------------------------------------------------- +Sat Aug 3 13:22:18 UTC 2019 - Aaron Puchert + +- Update to version 8.9.0. + * Kernel: mutually recursive records are now supported. + * Notations: + + Support for autonomous grammars of terms called “custom + entries”. + + Deprecated notations of the standard library will be removed + in the next version of Coq, see the next subsection for a + script to ease porting. + + Added the "Numeral Notation" command for registering decimal + numeral notations for custom types. + * Tactics: Introduction tactics intro/intros on a goal that is an + existential variable now force a refinement of the goal into a + dependent product rather than failing. + * Decision procedures: deprecation of tactic romega in favor of + lia and removal of fourier, replaced by lra which subsumes it. + * Proof language: focusing bracket { now supports named goals, + e.g. [x]:{ will focus on a goal (existential variable) named x. + * SSReflect: the implementation of delayed clear was simplified: + the variables are always renamed using inaccessible names when + the clear switch is processed and finally cleared at the end of + the intro pattern. In addition to that, the use-and-discard + flag {} typical of rewrite rules can now be also applied to + views, e.g. => {}/v applies v and then clears v. + See Section Introduction in the context. + * Vernacular: + + Experimental support for attributes on commands, as in + "#[local] Lemma foo : bar". Tactics and tactic notations now + support the deprecated attribute. + + Removed deprecated commands "Arguments Scope" and "Implicit + Arguments" in favor of "Arguments (scopes)" and "Arguments + (implicits)". + + New flag "Uniform Inductive Parameters" to avoid repeating + uniform parameters in constructor declarations. + + New commands "Hint Variables" and "Hint Constants" for + controlling the opacity status of variables and constants in + hint databases. It is recommended to always use these + commands after creating a hint database with Create HintDb. + + Multiple sections with the same name are now allowed. + * Library: additions and changes in the VectorDef, Ascii, and + String libraries. Syntax notations are now available only when + using "Import" of libraries and not merely "Require". + (Source of incompatibility, see Change Log for details) + * Toplevels: coqtop and coqide can now display diffs between + proof steps in color, using the Diffs option. + * Documentation: we integrated a large number of fixes to the new + Sphinx documentation. + * Tools: removed gallina utility and homebrewed Emacs mode. +- Update to version 8.9.1, which contains + * some quality-of-life bug fixes, + * many improvements to the documentation, + * a critical bug fix related to primitive projections and + native_compute. +- Remove unnecessary dependencies: ncurses-devel is no longer + needed, and the docs aren't build with TeX and hevea anymore. +- Remove dependencies that are automatically detected. +- Remove icon that is also available from the tarball. +- Replace some identical files by symlinks. +- Fix executable bits and shebangs. +- Separate runtime from devel files by ending. +- Use %license for LICENSE and CREDITS. +- Be more explicit in %files. +- Add mime type for Coq source files so they open with the IDE. +- Add rpmlintrc for issues that are hard to fix. + +------------------------------------------------------------------- +Thu Oct 11 09:35:41 UTC 2018 - ptrommler@icloud.com + +- update to 8.8.2 + +------------------------------------------------------------------- +Sun Jan 7 10:41:00 UTC 2018 - ptrommler@icloud.com + +- update to 8.7.1 + +------------------------------------------------------------------- +Thu Nov 2 15:32:20 UTC 2017 - ptrommler@icloud.com + +- update to 8.7.0 + * I need this in class b/c coq-ide reads _CoqProject files + +------------------------------------------------------------------- +Thu Apr 13 11:34:12 UTC 2017 - peter.trommler@ohm-hochschule.de + +- update to 8.6 from upstream + +------------------------------------------------------------------- +Fri Dec 2 14:30:06 UTC 2016 - peter.trommler@ohm-hochschule.de + +- update to 8.5pl3 from upstream + +------------------------------------------------------------------- +Fri Oct 21 18:11:31 UTC 2016 - peter.trommler@ohm-hochschule.de + +- update to 8.5pl2 from upstream + +------------------------------------------------------------------- +Sun Apr 10 10:32:12 UTC 2016 - peter.trommler@ohm-hochschule.de + +- update to 8.5 from upstream + +------------------------------------------------------------------- +Sat May 31 18:46:45 UTC 2014 - peter.trommler@ohm-hochschule.de + +- update to 8.4pl4 from upstream + +------------------------------------------------------------------- +Sun Jan 12 11:17:04 UTC 2014 - peter.trommler@ohm-hochschule.de + +- update to 8.4pl3 from upstream +- follow upstream versioning + +------------------------------------------------------------------- +Sun Nov 10 08:45:53 UTC 2013 - peter.trommler@ohm-hochschule.de + +- revert to our own lablgtk on older systems +* coq-ide cannot be built using 12.2 lablgtk2 + +------------------------------------------------------------------- +Wed Nov 6 19:53:49 UTC 2013 - peter.trommler@ohm-hochschule.de + +- use system provided lablgtk2 + +------------------------------------------------------------------- +Mon Apr 8 11:31:02 UTC 2013 - peter.trommler@ohm-hochschule.de + +- update to 8.4pl2 +- coqtop: handle interrupt signals reliably +- restor old behavior for code extraction (AccessOpaque) + +------------------------------------------------------------------- +Wed Dec 26 19:49:24 UTC 2012 - peter.trommler@ohm-hochschule.de + +- update to 8.4pl1 from upstream +- dropped f0b93...055.patch (integrated upstream) +- use ocamlfind to find lablgtk2 + +------------------------------------------------------------------- +Mon Dec 3 10:14:09 UTC 2012 - peter.trommler@ohm-hochschule.de + +- add patch for lablgtk2 v 2.16 + +------------------------------------------------------------------- +Thu Nov 29 20:18:17 UTC 2012 - peter.trommler@ohm-hochschule.de + +- mark config file + +------------------------------------------------------------------- +Sun Nov 11 18:53:41 UTC 2012 - peter.trommler@ohm-hochschule.de + +- give up on old ocaml names and require ocaml-lablgtk2-devel +- clean up spec file + +------------------------------------------------------------------- +Thu Oct 18 13:28:32 UTC 2012 - peter.trommler@ohm-hochschule.de + +- remove requires and rely on automatic dependency generation + for ocaml + +------------------------------------------------------------------- +Wed Oct 17 16:01:25 UTC 2012 - peter.trommler@ohm-hochschule.de + +- packaged new file coq.png + +------------------------------------------------------------------- +Sun Oct 7 15:59:53 UTC 2012 - peter.trommler@ohm-hochschule.de + +- update to 8.4 from upstream + +------------------------------------------------------------------- +Thu Apr 12 12:14:04 UTC 2012 - peter.trommler@ohm-hochschule.de + +- add ocaml- prefix to lablgtk-devel Buildrequires + +------------------------------------------------------------------- +Wed Apr 11 17:32:25 UTC 2012 - peter.trommler@ohm-hochschule.de + +- add Buildrequires hevea needed for documentation + +------------------------------------------------------------------- +Wed Apr 11 16:56:52 UTC 2012 - peter.trommler@ohm-hochschule.de + +- cleaned up spec file (BuildRequires and Requires one each line) +- SPDX license tag + +------------------------------------------------------------------- +Wed Apr 11 16:26:24 UTC 2012 - peter.trommler@ohm-hochschule.de + +- upgraded to 8.3pl4 from upstream +Bug fixes: + +- #2724 (using notations with binders in cases patterns was provoking an anomaly) +- #2723 (alpha-conversion bug #2723 introduced in r12485-12486) +- #2732 (anomaly when using the tolerance for writing "f atomic_tac" + as a short-hand for "f ltac:(atomic_tac)") +- #2729 (vm_compute: function used to decompose constructors did not handle let-ins) +- #2728 (compatibility with camlp5 6.05) +- #2682 (Fail discard the effects of a successful command) +- #2703 (Undetected universe inconsistency) +- #2667 (Coq crashes when "Arguments Scope" has too many parameters) +- Compilation of coqide under MacOS with gtk >= 2.24.11 +- Coqdoc: Fixing missing newline when using "Proof term." + + diff --git a/coq.spec b/coq.spec new file mode 100644 index 0000000..5e7b633 --- /dev/null +++ b/coq.spec @@ -0,0 +1,275 @@ +# +# spec file for package coq +# +# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2012-2018 Peter Trommler, peter.trommler at ohm-hochschule.de +# Copyright (c) 2024 Aaron Puchert +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%bcond_without ide + +%global dune_packages coq,coq-core,coq-stdlib +%if %{with ide} +%global dune_packages %{dune_packages},coqide,coqide-server +%endif + +Name: coq +Version: 8.20.0 +Release: 0 +Summary: Proof Assistant based on the Calculus of Inductive Constructions +License: LGPL-2.1-only +Group: Productivity/Scientific/Math +URL: https://coq.inria.fr/ +Source: https://github.com/coq/coq/archive/V%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source1: fr.inria.coq.coqide.desktop +Source2: fr.inria.coq.coqide.metainfo.xml +Source3: coq.xml +Source50: coq-refman-%{version}.tar.xz +Source51: coq-stdlib-%{version}.tar.xz +Source100: %{name}-rpmlintrc +BuildRequires: desktop-file-utils +BuildRequires: fdupes +BuildRequires: make >= 3.81 +BuildRequires: ocaml >= 4.09.0 +BuildRequires: ocaml-camlp5-devel >= 5.08 +BuildRequires: ocaml-dune >= 3.6.1 +BuildRequires: ocaml-rpm-macros +BuildRequires: ocamlfind(findlib) +BuildRequires: ocamlfind(zarith) +%if %{with ide} +BuildRequires: update-desktop-files +BuildRequires: ocamlfind(lablgtk3-sourceview3) +%endif +Requires: ocamlfind + +%description +Proof assistant which allows to handle calculus assertions, check mechanically +proofs of these assertions, helps to find formal proofs and extracts a certified +program from the constructive proof of its formal specification. + +This package contains shared files and the command line interface. +For a graphical interface install %{name}-ide. + +%package ide +Summary: IDE for The Coq Proof Assistant +Group: Productivity/Scientific/Math +Requires: %{name} = %{version} + +%description ide +The Coq Integrated Development Interface is a graphical interface for the Coq proof assistant. + +%package devel +Summary: Development files for coq +Group: Development/Libraries/Other +Requires: %{name} = %{version} +Requires: ocaml >= 4.09.0 + +%description devel +This package contains development files for Coq. + +%package doc +Summary: Documentation for coq +Group: Documentation/HTML +Requires: %{name} = %{version} +BuildArch: noarch + +%description doc +HTML reference manual for Coq and full documentation of the standard library. + +%prep +%setup -q -a 50 -a 51 + +%build +%if 0%{?qemu_user_space_build} +# The OCaml compiler sometimes needs a bit more stack than the usual limit. +# While ocaml-rpm-macros increases the limit, this doesn't affect a QEMU build. +# We add a wrapper script to PATH. This doesn't affect the processes started by +# Dune, but coqc itself uses the compiler from PATH. +mkdir bin +echo "#!/bin/bash +exec /usr/bin/qemu-%{_host_cpu} -s $((64*1024*1024)) /usr/bin/ocamlopt.opt \"\$@\"" >bin/ocamlopt.opt +chmod +x bin/ocamlopt.opt +export PATH=$PWD/bin:$PATH +%endif + +export CFLAGS='%{optflags}' +./configure \ + -prefix %{_prefix} \ + -libdir %{_libdir}/coq \ + -mandir %{_mandir} \ + -datadir %{_datadir}/%{name} \ + -docdir %{_docdir}/%{name} \ + -configdir %{_sysconfdir}/xdg/%{name} \ + -native-compiler yes \ + -natdynlink yes \ + -browser "xdg-open %s" +make %{?_smp_mflags} dunestrap + +dune_release_pkgs='%{dune_packages}' +%ocaml_dune_setup +%ocaml_dune_build + +%install +%global ocaml_standard_library %{_libdir} +%ocaml_dune_install + +%if %{with ide} +%suse_update_desktop_file -i %{SOURCE1} +install -D -m 644 %{SOURCE1} %{buildroot}%{_datadir}/applications/fr.inria.coq.coqide.desktop +install -D -m 644 %{SOURCE2} %{buildroot}%{_datadir}/metainfo/fr.inria.coq.coqide.metainfo.xml +install -D -m 644 %{SOURCE3} %{buildroot}%{_datadir}/mime/packages/coq.xml +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps +ln -s %{_datadir}/coq/coq.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/coq.png +%endif + +# Sometimes we get identical x and x.opt files, replace by symlink x -> x.opt. +for bin in %{buildroot}%{_bindir}/*.opt +do + if [ -f ${bin%.opt} ] && diff $bin ${bin%.opt} + then + rm ${bin%.opt} + ln -s ${bin#%{buildroot}} ${bin%.opt} + fi +done + +# Fix executable bit and shebangs, preferring python3. +# (https://www.python.org/dev/peps/pep-0394/#for-python-runtime-distributors) +chmod -x %{buildroot}%{_libdir}/coq-core/tools/TimeFileMaker.py +sed -i '1s|^#!/usr/bin/env *|#!/usr/bin/|;1s|^#!/usr/bin/python$|#!/usr/bin/python3|' \ + %{buildroot}%{_libdir}/coq-core/tools/make-{one-time-file,both-{time,single-timing}-files}.py + +# Remove superfluous man page. +rm %{buildroot}%{_mandir}/man1/coqtop.byte.1 + +# Remove unneeded empty *.vos files. +find %{buildroot}%{_libdir}/coq -empty -name '*.vos' -delete + +# Build lists of runtime and devel files by ending. +# Compiled theories and shared objects are needed at runtime. +find %{buildroot}%{_libdir} -type d | sed "s|%{buildroot}|%%dir |g" >dir.list +sed -i '1d; /coq-core\/tools/d' dir.list +find %{buildroot}%{_libdir} -name '*.cmxs' \ + -or -name '*.so' \ + -or -name '*.vo' | sed "s|%{buildroot}||g" >runtime.list + +# Object files, static libraries and import definitions are only needed for development. +# For now, we also put the standard library Coq sources here, since the runtime +# package contains the HTML documentation for the standard library. +find %{buildroot}%{_libdir} -name '*.a' \ + -or -name '*.cma' \ + -or -name '*.cmi' \ + -or -name '*.cmt' \ + -or -name '*.cmti' \ + -or -name '*.cmx' \ + -or -name '*.cmxa' \ + -or -name '*.glob' \ + -or -name '*.ml' \ + -or -name '*.mli' \ + -or -name '*.o' \ + -or -name '*.v' | sed "s|%{buildroot}||g" >devel.list + +# Until we can build it, we fetch the documentation from the official website: +# git clone --filter=tree:0 --sparse https://github.com/coq/doc.git +# pushd doc +# git sparse-checkout add V%{version} +# cd V%{version} +# tar --sort=name --owner=0 --group=0 --mtime="@${SOURCE_DATE_EPOCH}" \ +# --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ +# -cJf ../../coq-refman-%{version}.tar.xz refman +# tar --sort=name --owner=0 --group=0 --mtime="@${SOURCE_DATE_EPOCH}" \ +# --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ +# -cJf ../../coq-stdlib-%{version}.tar.xz stdlib +# popd + +# Drop some CSS files and headers in stdlib documentation, add some margin directly. +find stdlib/ -name '*.html' -exec sed -i ' +s#//coq.inria.fr/sites/all/themes/coq/coqdoc.css#%{_libdir}/coq-core/tools/coqdoc/coqdoc.css# +//d +/
/s/>/ style="margin:1em;">/ +/^
$/,/^ <\/div>$/d +/^