alt-ergo does not run on windows via cygwin - frama-c

I am trying to run a test file on frama-c with the alt-ergo prover. However,I am getting the followng error with alt-ergo. All the other frama-c checks are fine. I know that the issue is not with the test file.
------------------------------------------------------------
--- Alt-Ergo (stderr) :
------------------------------------------------------------
Fatal error: exception Sys_error("/tmp/wpf0dd65.dir/typed/test_post_2_Alt-Ergo.mlw: No such file or directory")
------------------------------------------------------------
[wp] [Alt-Ergo] Goal typed_test_post_2 : Failed
Error: Alt-Ergo exits with status [2]
I am on a windows machine and perform all of the installations via cygwin in administrator mode
I got frama-C Neon and installed it with ./configure & make & make-install, and the installation was successful ( all the frama-c checks pass in my test file)
I got the following version of alt-ergo Linux x86_64 binary: alt-ergo-0.95.2-x86_64 from http://alt-ergo.ocamlpro.com/download.php. I went with this version, since the frama-c docs ask for version 0.95.
I used the following instructions to install alt-ergo (https://www.lri.fr/~marche/MPRI-2-36-1/install.html)
Installation of Alt-ergo
The simplest way is to get the binary file of alt-ergo. Download the file called "Linux x86_64 binary" Then:
chmod +x alt-ergo-0.95.2-x86_64
sudo cp alt-ergo-0.95.2-x86_64 /usr/bin/alt-ergo
when calling which but frama-c and alt-ergo have a correct path
$ which frama-c
/usr/bin/frama-c
$ which alt-ergo
/usr/bin/alt-ergo
I also have why3 installed and it detects the ergo prover
$ why3 config --detect-provers
Found prover Alt-Ergo version 0.95.2, Ok.
1 provers detected and 0 provers detected with unsupported version
Save config to /home/username/.why3.conf
Edit
I created the following test.mlw with the online example
type 'a set
logic add : 'a , 'a set -> 'a set
logic mem : 'a , 'a set -> prop
axiom mem_add:
forall x, y : 'a. forall s : 'a set.
mem(x, add(y, s)) <->
(x = y or mem(x, s))
logic is1, is2 : int set
logic iss : int set set
goal g:
is1 = is2 ->
mem (is1, add (is2, iss))
running alt-ergo results in:
alt-ergo test.mlw
File "file.mlw", line 1, characters 1-26:Valid (0.0156) (0)
Any ideas?

The following treats the symptoms:
using the -wp-out flag with a windows path will solve the issue
for example
frama-c -wp -wp-print -wp-out c:/Users/userName/Desktop/tmp2 ../../cygdrive/c/Users/userName/Desktop/swap.c

Can you put the following example in a "file.mlw"
goal hello_world: 1+1 = 2
and then, try to execute your Windows and/or Cygwin binaries by providing "file.mlw" as input

Related

Why is blogdown putting a mamba command through normalizePath?

Here's what I'm doing:
I have a blog that uses blogdown to render .Rmd files.
Some of the code snippets in the blog are in Python. I'm using reticulate for that.
I'm using a GitHub workflow to build and publish the blog as part of a larger website. This workflow sets up the environment and package dependencies in miniconda.
The last time this ran was six months ago. At that time, it worked. Now, it does not. I can't seem to replicate the behavior locally for more detailed debugging.
It seems to be trying to put a mamba command into normalizePath instead of a filesystem path (www-main is the name of the repository):
conda activate www-main
Rscript -e 'blogdown::build_site(local=FALSE, run_hugo=FALSE, build_rmd="content/blog/2020-08-28-api.Rmd")'
shell: /usr/bin/bash -l {0}
env:
CONDA_PKGS_DIR: /home/runner/conda_pkgs_dir
Rendering content/blog/2020-08-28-api.Rmd...
[...]
Quitting from lines 401-410 (2020-08-28-api.Rmd)
Error in normalizePath(conda, winslash = "/", mustWork = TRUE) :
path[1]="# cmd: /usr/share/miniconda/condabin/mamba update --name www-main --file /home/runner/work/www-main/www-main/conda": No such file or directory
Calls: local ... python_munge_path -> get_python_conda_info -> normalizePath
Execution halted
Error: Failed to render content/blog/2020-08-28-api.Rmd
Execution halted
Lines 401-410 of 2020-08-28-api.Rmd are a Python code block:
400 ```{python python-data, dev='svg'}
401 import covidcast
402 from datetime import date
403 import matplotlib.pyplot as plt
404
405 data = covidcast.signal("fb-survey", "smoothed_hh_cmnty_cli",
406 date(2020, 9, 8), date(2020, 9, 8),
407 geo_type="state")
408 covidcast.plot_choropleth(data, figsize=(7, 5))
409 plt.title("% who know someone who is sick, Sept 8, 2020")
410 ```
The useful bits of the output of conda info, in case it helps:
active environment : www-main
active env location : /usr/share/miniconda/envs/www-main
shell level : 1
user config file : /home/runner/.condarc
populated config files : /home/runner/.condarc
conda version : 4.12.0
conda-build version : not installed
python version : 3.9.12.final.0
virtual packages : __linux=5.15.0=0
__glibc=2.31=0
__unix=0=0
__archspec=1=x86_64
base environment : /usr/share/miniconda (writable)
conda av data dir : /usr/share/miniconda/etc/conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/linux-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /home/runner/conda_pkgs_dir
envs directories : /usr/share/miniconda/envs
/home/runner/.conda/envs
platform : linux-64
user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.12 Linux/5.15.0-1020-azure ubuntu/20.04.5 glibc/2.31
UID:GID : 1001:121
netrc file : None
offline mode : False
I found this, but their workaround doesn't make sense for me since I'm not using papermill: https://github.com/rstudio/reticulate/issues/1184
I found this, but my paths don't have spaces: https://github.com/rstudio/reticulate/issues/1149
I found this, but their problem includes an entirely reasonable value for path[1], unlike mine: How can I tell R where the conda environment is via a docker image?
The build environment for this is a bit of a bear but I can probably put together a minimum working (/nonworking) example if needed, lmk
I tracked this down to at least two bits of weird/buggy behavior in reticulate and found a workaround: switch from vanilla miniconda to Mambaforge.
The TL;DR seems to be that whatever wacky ubuntu-latest setup-miniconda#v2 environment started putting into meta/history doesn't include a create line, which is what reticulate needs in order to figure out which conda goes with which python, because (1) it ignores the reticulate.conda_binary setting for some reason, and (2) it uses a more restrictive regex to parse the lines of the history file than the regex it uses to select them. Mambaforge does include the create line, so reticulate is happy.
- uses: conda-incubator/setup-miniconda#v2
with:
python-version: 3.9
activate-environment: www-main
miniforge-variant: Mambaforge
miniforge-version: latest
use-mamba: true
use-only-tar-bz2: true # (for caching support)
- name: Update environment
run: mamba env update -n www-main -f environment.yml

Bitbake build for qpid-cpp-1.39.0 fails

I must preface this saying I have very little knowledge of Yocto/Bitbake, make, cmake, autoconf, etc.
I have an application, written in C++, that I have been unable to get built. The issue I am having is that I have been unable to get some dependencies built in Yocto/Bitbake. The application has dependencies on the following libraries:
Paho-MQTT (https://github.com/eclipse/paho.mqtt.c.git)
Jansson JSON parser (http://www.digip.org/jansson/releases/jansson-2.10.tar.gz)
Apache QPID C++ (https://www-us.apache.org/dist/qpid/cpp/1.39.0/qpid-cpp-1.39.0.tar.gz)
When running the bitbake recipe for apache qpid, I am receiving the following error:
CMake Error at src/CMakeLists.txt:84 (message):
| Can't find amqp 0-10 spec for framing code generation
I do not have any ideas how to get past this error.
I am running Docker/Yocto on a Macbook and have followed the instructions to get everything installed and running. The application (and dependent libraries) are being compiled for a Multitech Conduit gateway running mLinux version 4.1.6. I followed the instructions at http://www.multitech.net/developer/software/mlinux/mlinux-building-images/building-a-custom-linux-image/ to download and build the default images for mLinux 4.0 and higher.
I could not find an existing recipe for building qpid-cpp-1.39.0. I was able to find a recipe for qpid_0.20 (http://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-extended/qpid/qpid_0.20.bb?h=master) that I attempted to modify to support qpid-cpp-1.39.0. When running bitbake against the recipe, I receive the following output:
pokyuser#8c538668c625:/workdir/mlinux-4.x/build$ bitbake qpid-cpp
NOTE: Started PRServer with DBfile: /workdir/mlinux-4.x/build/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 41127, PID: 10213
Loading cache: 100% |#############################################################################################################################################| Time: 0:00:01
Loaded 2996 entries from dependency cache.
Parsing recipes: 100% |###########################################################################################################################################| Time: 0:00:01
Parsing of 2213 .bb files complete (2207 cached, 6 parsed). 3001 targets, 177 skipped, 0 masked, 0 errors.
WARNING: No bb files matched BBFILE_PATTERN_user '^/workdir/mlinux-4.x/layers/user-layer/'
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION = "1.32.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "Ubuntu-16.04"
TARGET_SYS = "arm-mlinux-linux-gnueabi"
MACHINE = "mtcdt"
DISTRO = "mlinux"
DISTRO_VERSION = "4.1.7"
TUNE_FEATURES = "arm armv5 thumb dsp arm926ejs"
TARGET_FPU = "soft"
user-layer = "master:c9360c9479287f3ba229c9a37142baa5a22cce67"
meta-mlinux = "HEAD:4a060176a58345749e5907084cf1647f8b8cae23"
meta-multitech = "HEAD:55db4fd0bb04ccaedb10de0b249151a663b0d916"
meta-mono = "HEAD:b8e5da7138c61fb9ade87712a2fc28dc6283ab25"
meta-nodejs = "HEAD:78018dc7dc02b5039a165801d09c00564687a1b6"
meta-java = "HEAD:a265b31ec7d022be254abdf959360a7624208585"
meta-oe
meta-ruby
meta-perl
meta-python
meta-networking
meta-webserver
meta-multimedia
meta-filesystems = "HEAD:fe5c83312de11e80b85680ef237f8acb04b4b26e"
meta = "HEAD:ddf907ca95a19f54785079b4396935273b3747f6"
meta-jansson
meta-paho-mqtt
meta-clearblade-sdk
meta-qpid-cpp = "master:c9360c9479287f3ba229c9a37142baa5a22cce67"
Initialising tasks: 100% |########################################################################################################################################| Time: 0:00:02
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: qpid-cpp-1.39.0-r0 do_configure: Function failed: do_configure (log file is located at /workdir/mlinux-4.x/build/tmp/work/arm926ejste-mlinux-linux-gnueabi/qpid-cpp/1.39.0-r0/temp/log.do_configure.10486)
ERROR: Logfile of failure stored in: /workdir/mlinux-4.x/build/tmp/work/arm926ejste-mlinux-linux-gnueabi/qpid-cpp/1.39.0-r0/temp/log.do_configure.10486
Log data follows:
| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: Executing shell function do_configure
| -- The C compiler identification is GNU 6.2.0
| -- The CXX compiler identification is GNU 6.2.0
| -- Check for working C compiler: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/arm-mlinux-linux-gnueabi/arm-mlinux-linux-gnueabi-gcc
| -- Check for working C compiler: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/arm-mlinux-linux-gnueabi/arm-mlinux-linux-gnueabi-gcc -- works
| -- Detecting C compiler ABI info
| -- Detecting C compiler ABI info - done
| -- Detecting C compile features
| -- Detecting C compile features - done
| -- Check for working CXX compiler: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/arm-mlinux-linux-gnueabi/arm-mlinux-linux-gnueabi-g++
| -- Check for working CXX compiler: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/arm-mlinux-linux-gnueabi/arm-mlinux-linux-gnueabi-g++ -- works
| -- Detecting CXX compiler ABI info
| -- Detecting CXX compiler ABI info - done
| -- Detecting CXX compile features
| -- Detecting CXX compile features - done
| -- Build type is "RelWithDebInfo" (has debug symbols)
| -- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.12", minimum required is "2.7")
| -- Found PythonInterp: /usr/bin/python2.7 (found version "2.7.12")
| -- Found PkgConfig: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/pkg-config (found version "0.29.1")
| -- Found Ruby: /workdir/mlinux-4.x/build/tmp/sysroots/x86_64-linux/usr/bin/ruby (found version "2.2.0")
| -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
| -- Could NOT find VALGRIND (missing: VALGRIND_EXECUTABLE)
| -- Found CyrusSASL: /workdir/mlinux-4.x/build/tmp/sysroots/mtcdt/usr/lib/libsasl2.so
| CMake Error at src/CMakeLists.txt:84 (message):
| Can't find amqp 0-10 spec for framing code generation
|
|
| -- Configuring incomplete, errors occurred!
| See also "/workdir/mlinux-4.x/build/tmp/work/arm926ejste-mlinux-linux-gnueabi/qpid-cpp/1.39.0-r0/build/CMakeFiles/CMakeOutput.log".
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /workdir/mlinux-4.x/build/tmp/work/arm926ejste-mlinux-linux-gnueabi/qpid-cpp/1.39.0-r0/temp/log.do_configure.10486)
ERROR: Task (/workdir/mlinux-4.x/layers/meta-qpid-cpp/recipes-qpid-cpp/qpid-cpp/qpid-cpp_1.39.0.bb:do_configure) failed with exit code '1'
NOTE: Tasks Summary: Attempted 1273 tasks of which 1267 didn't need to be rerun and 1 failed.
Summary: 1 task failed:
/workdir/mlinux-4.x/layers/meta-qpid-cpp/recipes-qpid-cpp/qpid-cpp/qpid-cpp_1.39.0.bb:do_configure
Summary: There was 1 WARNING message shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
The recipe I used is as follows:
DESCRIPTION = "AMQP message brokers"
HOMEPAGE = "http://qpid.apache.org/"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b1e01b26bacfc2232046c90a330332b3"
SECTION = "mq"
DEPENDS = "boost perl-native python util-linux cyrus-sasl"
RDEPENDS_${PN} = "cyrus-sasl-bin"
SRC_URI = "git://github.com/apache/qpid-cpp;protocol=https"
SRCREV = "0f5d21861f6935ed2e4eb6e21f1d3cef19e22aa5"
S = "${WORKDIR}/git"
#S = "${WORKDIR}/${PN}-${PV}"
inherit cmake python-dir perlnative cpan-base update-rc.d pkgconfig ruby
OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
# Env var which tells perl if it should use host (no) or target (yes) settings
export PERLCONFIGTARGET = "${#is_target(d)}"
export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${#get_perl_version(d)}/CORE"
export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${#get_perl_version(d)}"
export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${#get_perl_version(d)}"
export PERL="${STAGING_BINDIR}/perl"
EXTRA_OECONF += " --without-help2man SASL_PASSWD=/usr/sbin/saslpasswd2"
EXTRA_OEMAKE += " CPPFLAGS=-Wno-unused-function \
pyexecdir=${PYTHON_SITEPACKAGES_DIR} \
pythondir=${PYTHON_SITEPACKAGES_DIR} \
"
INITSCRIPT_NAME = "qpidd"
INITSCRIPT_PARAMS = "defaults"
Knowing that I have just started learning Yocto/Bitbake just three days ago, I'm hoping that someone out there can help me determine what the problem is so that I can compile the apache qpid-cpp-1.39.0 library for mLinux.
According to find_file documentation:
The CMake variable CMAKE_FIND_ROOT_PATH specifies one or more
directories to be prepended to all other search directories. This
effectively “re-roots” the entire search under given locations. Paths
which are descendants of the CMAKE_STAGING_PREFIX are excluded from
this re-rooting, because that variable is always a path on the host
system. By default the CMAKE_FIND_ROOT_PATH is empty.
And since cmake called from bitbake environment is effectively a cross-compilation, then this variable should be also ignored. I added a patch files/0001-Qpid-cross-compile.patch, which worked for me:
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 82141efdb..3ba403a32 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
## -78,7 +78,7 ## endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
# rubygen subdir is excluded from stable distributions
# If the main AMQP spec is present, then check if ruby and python are
# present, and if any sources have changed, forcing a re-gen of source code.
-find_file(QPID_AMQP_SPEC NAMES amqp.0-10-qpid-errata.stripped.xml PATHS ${qpid-cpp_SOURCE_DIR}/specs ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH)
+find_file(QPID_AMQP_SPEC NAMES amqp.0-10-qpid-errata.stripped.xml PATHS ${qpid-cpp_SOURCE_DIR}/specs ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
mark_as_advanced(QPID_AMQP_SPEC)
if (NOT QPID_AMQP_SPEC)
message(FATAL_ERROR "Can't find amqp 0-10 spec for framing code generation")
## -106,7 +106,7 ## else (regen_amqp)
message(STATUS "No need to generate AMQP protocol sources")
endif (regen_amqp)
-find_file(QPID_BROKER_MANAGEMENT_SPEC NAMES management-schema.xml PATHS ${CMAKE_CURRENT_SOURCE_DIR}/qpid/broker ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH)
+find_file(QPID_BROKER_MANAGEMENT_SPEC NAMES management-schema.xml PATHS ${CMAKE_CURRENT_SOURCE_DIR}/qpid/broker ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
mark_as_advanced(QPID_BROKER_MANAGEMENT_SPEC)
if (NOT QPID_BROKER_MANAGEMENT_SPEC)
message(FATAL_ERROR "Can't find broker management spec for code generation")

Error while building ggplot2 book : could not find function "pandoc_latex_engine_args"

I just reported the following issue to the hadley/ggplot2-book repository:
When i press STRG+SHIFT+B in RStudio to build the book as described in the Readme I get this error:
mkdir -p book/tex
mkdir -p book/tex/_figures
mkdir -p book/tex/diagrams
cp book/ggplot2-book.tex book/tex/ggplot2-book.tex
Rscript book/render-tex.R data-manip.rmd
Error in rmarkdown::pandoc_options(to = "latex", from = "markdown_style", :
could not find function "pandoc_latex_engine_args"
Calls: <Anonymous> -> <Anonymous> -> structure -> <Anonymous>...
I have R 3.2.2, Rtools 3,2,x , pandoc 1.15.2 and installed all the dependencies as well as the inconsolata font. I have MikTeX 2.9 and also updated all packages that where updatable.
When I try ?pandoc_latex_engine_args (which presumably causes the error) the help page opens so this function should be available to R. I tried on 2 different computers (Windows 10 and Windows 7) and reran the complete installation process on each without any change. I also tried to manually build the book using the Cygwin terminal but this gives the same error.
Has anyone trying to build the book had the same problem or even better: does anyone know how to fix this?

Frama-c fails to parse an ACSL manual example list_length involving a pattern matching construct

On the following function definition (list.c):
//# type list<A> = Nil | Cons(A,list<A>);
/*# logic integer list_length<A>(list<A> l) =
# \match l {
# case Nil : 0
# case Cons(h,t) : 1 + list_length(tail)
# };
*/
frama-c fails with the message:
$ frama-c -wp -wp-rte list.c
[jessie3] Loading Why3 configuration...
[jessie3] Why3 environment loaded.
[jessie3] Loading Why3 theories...
[jessie3] Loading Why3 modules...
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing list.c (with preprocessing)
list.c:4:[kernel] user error: unexpected token 'l'
[kernel] user error: stopping on file "list.c" that has errors. Add '-kernel-msg-key pp'
for preprocessing command.
[kernel] Frama-C aborted: invalid user input.
The example is taken directly from the ACSL manual.
Why does it have troubles associating l with the only parameter of the function?
P.S. I use frama-c version: Sodium-20150201
Pattern matching is not supported in the current implementation of Frama-C. In order to check whether a specific ACSL feature is supported by the kernel (which does not always mean that your favorite plug-in will handle it), refer to the ACSL implementation manual. As mentioned in the intro of the manual, every entry appearing in red is unsupported by the current version of Frama-C.

errors while installing frama-c in cygwin

I am trying to install frama-c in cygwin and get the following errors but I can't interpret them. Can you help me interpreting them or give me a link to where I get the information?
Preparing Wp-Coq Sources
Uncaught exception: Util.UserError("_", _)
Makefile:49: recipe for target `depend' failed
make[1]: *** [depend] Error 2
src/wp/Makefile:285: recipe for target `.make-wpcoqs' failed
make: *** [.make-wpcoqs] Error 2
note that coqc and ocaml are both the latest version
Are you using Coq 8.4 by any chance? I had something very similar happen to me, and my issue was the lack of the option -coqlib <your Coq installation directory> when Coq is not installed in the standard directory in the PATH. There used to be a specific error message in Coq 8.3, but it seems to have disappeared in Coq 8.4.
If you can find the line in the Makefile which runs the coqdep command, and replace it with something like coqdep -coqlib ~/coq84pl1 (replacing ~/coq84pl1 with your Coq installation directory), it could work. But you would also need to add this flag to other Coq-related commands as well (coqc, for instance) or other issues might come up later.

Resources