cbmc: init at 5.63.0

Cadical is used as sat solver backend.

https://github.com/diffblue/cbmc/releases/tag/cbmc-5.63.0

authored by Jiajie Chen and committed by Franz Pletz da87f771 a6d96a70

+133
+49
pkgs/applications/science/logic/cbmc/0001-Do-not-download-sources-in-cmake.patch
···
··· 1 + From fbc1488e8da0175e9c9bdf5892f8a65c71f2a266 Mon Sep 17 00:00:00 2001 2 + From: Jiajie Chen <c@jia.je> 3 + Date: Fri, 15 Jul 2022 18:33:15 +0800 4 + Subject: [PATCH] Do not download sources in cmake 5 + 6 + --- 7 + src/solvers/CMakeLists.txt | 20 +------------------- 8 + 1 file changed, 1 insertion(+), 19 deletions(-) 9 + 10 + diff --git a/src/solvers/CMakeLists.txt b/src/solvers/CMakeLists.txt 11 + index 744def486..5b719a78a 100644 12 + --- a/src/solvers/CMakeLists.txt 13 + +++ b/src/solvers/CMakeLists.txt 14 + @@ -106,31 +106,13 @@ elseif("${sat_impl}" STREQUAL "glucose") 15 + elseif("${sat_impl}" STREQUAL "cadical") 16 + message(STATUS "Building solvers with cadical") 17 + 18 + - download_project(PROJ cadical 19 + - URL https://github.com/arminbiere/cadical/archive/rel-1.4.1.tar.gz 20 + - PATCH_COMMAND true 21 + - COMMAND CXX=${CMAKE_CXX_COMPILER} ./configure -O3 -s CXXFLAGS=-std=c++14 22 + - URL_MD5 b44874501a175106424f4bd5de29aa59 23 + - ) 24 + - 25 + message(STATUS "Building CaDiCaL") 26 + - execute_process(COMMAND make -j WORKING_DIRECTORY ${cadical_SOURCE_DIR}) 27 + 28 + target_compile_definitions(solvers PUBLIC 29 + SATCHECK_CADICAL HAVE_CADICAL 30 + ) 31 + 32 + - add_library(cadical STATIC IMPORTED) 33 + - 34 + - set_target_properties( 35 + - cadical 36 + - PROPERTIES IMPORTED_LOCATION ${cadical_SOURCE_DIR}/build/libcadical.a 37 + - ) 38 + - 39 + - target_include_directories(solvers 40 + - PUBLIC 41 + - ${cadical_SOURCE_DIR}/src 42 + - ) 43 + + target_include_directories(solvers PUBLIC ${cadical_INCLUDE_DIR}) 44 + 45 + target_link_libraries(solvers cadical) 46 + elseif("${sat_impl}" STREQUAL "ipasir-cadical") 47 + -- 48 + 2.35.1 49 +
+82
pkgs/applications/science/logic/cbmc/default.nix
···
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , testers 5 + , bison 6 + , cadical 7 + , cbmc 8 + , cmake 9 + , flex 10 + , makeWrapper 11 + , perl 12 + }: 13 + 14 + stdenv.mkDerivation rec { 15 + pname = "cbmc"; 16 + version = "5.63.0"; 17 + 18 + src = fetchFromGitHub { 19 + owner = "diffblue"; 20 + repo = pname; 21 + rev = "${pname}-${version}"; 22 + sha256 = "sha256-4tn3wsmaYdo5/QaZc3MLxVGF0x8dmRKeygF/8A+Ww1o="; 23 + }; 24 + 25 + nativeBuildInputs = [ 26 + bison 27 + cmake 28 + flex 29 + perl 30 + makeWrapper 31 + ]; 32 + 33 + buildInputs = [ cadical ]; 34 + 35 + # do not download sources 36 + # link existing cadical instead 37 + patches = [ 38 + ./0001-Do-not-download-sources-in-cmake.patch 39 + ]; 40 + 41 + postPatch = '' 42 + # do not hardcode gcc 43 + substituteInPlace "scripts/bash-autocomplete/extract_switches.sh" \ 44 + --replace "gcc" "$CC" \ 45 + --replace "g++" "$CXX" 46 + # fix library_check.sh interpreter error 47 + patchShebangs . 48 + '' + lib.optionalString (!stdenv.cc.isGNU) '' 49 + # goto-gcc rely on gcc 50 + substituteInPlace "regression/CMakeLists.txt" \ 51 + --replace "add_subdirectory(goto-gcc)" "" 52 + ''; 53 + 54 + postInstall = '' 55 + # goto-cc expects ls_parse.py in PATH 56 + mkdir -p $out/share/cbmc 57 + mv $out/bin/ls_parse.py $out/share/cbmc/ls_parse.py 58 + chmod +x $out/share/cbmc/ls_parse.py 59 + wrapProgram $out/bin/goto-cc \ 60 + --prefix PATH : "$out/share/cbmc" \ 61 + ''; 62 + 63 + # fix "argument unused during compilation" 64 + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang 65 + "-Wno-unused-command-line-argument"; 66 + 67 + # TODO: add jbmc support 68 + cmakeFlags = [ "-DWITH_JBMC=OFF" "-Dsat_impl=cadical" "-Dcadical_INCLUDE_DIR=${cadical.dev}/include" ]; 69 + 70 + passthru.tests.version = testers.testVersion { 71 + package = cbmc; 72 + command = "cbmc --version"; 73 + }; 74 + 75 + meta = with lib; { 76 + description = "CBMC is a Bounded Model Checker for C and C++ programs"; 77 + homepage = "http://www.cprover.org/cbmc/"; 78 + license = licenses.bsdOriginal; 79 + maintainers = with maintainers; [ jiegec ]; 80 + platforms = platforms.unix; 81 + }; 82 + }
+2
pkgs/top-level/all-packages.nix
··· 34247 34248 boogie = dotnetPackages.Boogie; 34249 34250 cadical = callPackage ../applications/science/logic/cadical {}; 34251 34252 inherit (callPackage ./coq-packages.nix {
··· 34247 34248 boogie = dotnetPackages.Boogie; 34249 34250 + cbmc = callPackage ../applications/science/logic/cbmc { }; 34251 + 34252 cadical = callPackage ../applications/science/logic/cadical {}; 34253 34254 inherit (callPackage ./coq-packages.nix {