-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #26030 from Frama-C/frama-c.29.0
[new release] Frama-C 29.0 (Copper)
- Loading branch information
Showing
1 changed file
with
195 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
opam-version: "2.0" | ||
synopsis: "Platform dedicated to the analysis of source code written in C" | ||
description:""" | ||
Frama-C gathers several analysis techniques in a single collaborative | ||
framework, based on analyzers (called "plug-ins") that can build upon the | ||
results computed by other analyzers in the framework. | ||
Thanks to this approach, Frama-C provides sophisticated tools, including: | ||
- an analyzer based on abstract interpretation (Eva plug-in); | ||
- a program proof framework based on weakest precondition calculus (WP plug-in); | ||
- a program slicer (Slicing plug-in); | ||
- a tool for verification of temporal (LTL) properties (Aoraï plug-in); | ||
- a runtime verification tool (E-ACSL plug-in); | ||
- several tools for code base exploration and dependency analysis | ||
(plug-ins From, Impact, Metrics, Occurrence, Scope, etc.). | ||
These plug-ins communicate between each other via the Frama-C API | ||
and via ACSL (ANSI/ISO C Specification Language) properties. | ||
""" | ||
maintainer: "[email protected]" | ||
authors: [ | ||
"Michele Alberti" | ||
"Thibaud Antignac" | ||
"Gergö Barany" | ||
"Patrick Baudin" | ||
"Nicolas Bellec" | ||
"Thibaut Benjamin" | ||
"Allan Blanchard" | ||
"Lionel Blatter" | ||
"François Bobot" | ||
"Richard Bonichon" | ||
"Vincent Botbol" | ||
"Quentin Bouillaguet" | ||
"David Bühler" | ||
"Zakaria Chihani" | ||
"Loïc Correnson" | ||
"Julien Crétin" | ||
"Pascal Cuoq" | ||
"Zaynah Dargaye" | ||
"Basile Desloges" | ||
"Jean-Christophe Filliâtre" | ||
"Philippe Herrmann" | ||
"Maxime Jacquemin" | ||
"Florent Kirchner" | ||
"Alexander Kogtenkov" | ||
"Remi Lazarini" | ||
"Tristan Le Gall" | ||
"Jean-Christophe Léchenet" | ||
"Matthieu Lemerre" | ||
"Dara Ly" | ||
"David Maison" | ||
"Claude Marché" | ||
"André Maroneze" | ||
"Thibault Martin" | ||
"Fonenantsoa Maurica" | ||
"Melody Méaulle" | ||
"Benjamin Monate" | ||
"Yannick Moy" | ||
"Pierre Nigron" | ||
"Anne Pacalet" | ||
"Valentin Perrelle" | ||
"Guillaume Petiot" | ||
"Dario Pinto" | ||
"Virgile Prevosto" | ||
"Armand Puccetti" | ||
"Félix Ridoux" | ||
"Virgile Robles" | ||
"Jan Rochel" | ||
"Muriel Roger" | ||
"Julien Signoles" | ||
"Nicolas Stouls" | ||
"Kostyantyn Vorobyov" | ||
"Boris Yakobowski" | ||
] | ||
homepage: "https://frama-c.com/" | ||
license: "LGPL-2.1-only" | ||
dev-repo: "git+https://git.frama-c.com/pub/frama-c.git" | ||
doc: "http://frama-c.com/download/user-manual-29.0-Copper.pdf" | ||
bug-reports: "https://git.frama-c.com/pub/frama-c/issues" | ||
tags: [ | ||
"deductive" | ||
"program verification" | ||
"formal specification" | ||
"automated theorem prover" | ||
"interactive theorem prover" | ||
"C" | ||
"plugins" | ||
"abstract interpretation" | ||
"slicing" | ||
"weakest precondition" | ||
"ACSL" | ||
"dataflow analysis" | ||
"runtime verification" | ||
] | ||
|
||
build: [ | ||
["bash" "dev/disable-plugins.sh" "e-acsl"] { os-family = "windows" } | ||
["bash" "dev/disable-plugins.sh" "gui"] { os = "macos" } | ||
["dune" "build" "-j%{jobs}%" "--release" "--promote-install-files=false" | ||
"@install" | ||
"@doc" { with-doc } | ||
] | ||
] | ||
|
||
install: [ | ||
[make | ||
"RELEASE=yes" "PREFIX=%{prefix}%" "MANDIR=%{man}%" | ||
"DOCDIR=%{doc}%" { with-doc } | ||
"install" | ||
] | ||
] | ||
|
||
remove: [ | ||
[make "PREFIX=%{prefix}%" "-f" "ivette/Makefile.installation" "uninstall"] | ||
] | ||
|
||
run-test: [ | ||
["dune" "exec" "--" "frama-c-ptests" "tests" "src/plugins/*/tests" | ||
] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" & os-distribution != "freebsd" } | ||
["dune" "build" "-j%{jobs}%" "@ptests_config" | ||
] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" & os-distribution != "freebsd" } | ||
] | ||
|
||
depends: [ | ||
"dune" { >= "3.7.0" | ||
& != "3.13.0" # performance problem | ||
} | ||
"dune-configurator" | ||
"dune-site" { >= "3.7.0" | ||
& != "3.13.0" # performance problem | ||
} | ||
|
||
( "alt-ergo-free" | "alt-ergo" ) | ||
"conf-graphviz" { post } | ||
"conf-time" { with-test } | ||
"menhir" { >= "20181006" & build } | ||
"ocaml" { >= "4.13.1" } | ||
"ocamlgraph" { >= "2.0.0" } | ||
"ocamlgraph" { with-test & >= "2.1.0" } | ||
"odoc" { with-doc } | ||
"unionFind" { >= "20220107" } | ||
"why3" { >= "1.7.1" & (< "1.8.0" | !with-test) } | ||
"yaml" { >= "3.0.0" } | ||
"yojson" {>= "1.6.0" & (>= "2.0.1" | !with-test)} | ||
"zarith" { >= "1.9" } | ||
|
||
# PPXs | ||
"ppx_deriving" | ||
"ppx_deriving_yojson" | ||
"ppx_deriving_yaml" { >= "0.2.0" } | ||
|
||
# GTK3 disabled on macOS (segfaults), and made optional on Windows | ||
# (due to complex situation with Cygwin + MinGW). | ||
"lablgtk3" { >= "3.1.0" & os!="macos" & os-family!="windows" } | ||
"lablgtk3-sourceview3" { os!="macos" & os-family!="windows" } | ||
"conf-gtksourceview3" { os!="macos" & os-family!="windows" } | ||
] | ||
|
||
# Note: do not put particular versions here, if some version is *incompatible*, | ||
# use the field 'conflicts'. | ||
depopts: [ | ||
"apron" | ||
"mlmpfr" | ||
"zmq" | ||
"lablgtk3" { os-family="windows" } | ||
"lablgtk3-sourceview3" { os-family="windows" } | ||
"conf-gtksourceview3" { os-family="windows" } | ||
] | ||
|
||
conflicts: [ | ||
"cairo2" { < "0.6.2" } | ||
"mlmpfr" { < "4.1.0-bugfix2" } | ||
"pilat" { <= "1.6" } | ||
"result" { < "1.5" } | ||
] | ||
|
||
post-messages: [ | ||
"The Frama-C/WP plug-in requires one or more external prover(s). | ||
Recommended provers are: | ||
- Alt-Ergo (https://alt-ergo.ocamlpro.com) | ||
- CVC4 (https://cvc4.github.io) | ||
- Z3 (https://github.com/Z3Prover/z3) | ||
Use 'why3 config detect' to configure new provers. | ||
" { success } | ||
"Ivette is a new GUI for Frama-C, currently in development. | ||
Run 'ivette' once to finalize installation (requires an internet connection). | ||
Once finalized, 'ivette' will work offline. | ||
Finalization also requires Node v20 and Yarn: | ||
- install NVM (https://github.com/nvm-sh/nvm) | ||
- run 'nvm use 20' | ||
- run 'npm install --global yarn'" { success } | ||
] | ||
|
||
url { | ||
src: "https://www.frama-c.com/download/frama-c-29.0-Copper.tar.gz" | ||
checksum: "sha256=d2fbb3b8d0ff83945872e9e6fa258e934a706360e698dae3b4d5f971addf7493" | ||
} |