- NodeJS (use any version between v16.16.x - v18.18.x)
- Python (Version >=2. Note: if you are having issues using 3.11 or later, use 3.10)
- (Optional) NuSMV
- (Optional) JKind
- (Optional) Kind 2
- (Optional) Z3
When you open the FRET distribution, you will see the following directory structure:
.
├── fret-electron
├── tools
├── tutorialExamples
├── CONTRIBUTORS.md
├── LICENSE.pdf
└── README.md
Here are the steps to install and start FRET:
- cd fret-electron
- npm run fret-install (please do 'npm run fret-reinstall' instead if you already have a FRET installation)
- npm start
For the installation of FRET on Windows 10 see Installation_Windows.
For the installation of FRET on Apple M1 machines see notes below.
Alternatively, for Linux users, we provide a Docker image to build an executable binary. Here are the steps:
cd fret
mv tools/Scripts/docker/Dockerfile .
mv tools/Scripts/docker/generate_executable_Linux.sh .
docker build -t fret-install -f Dockerfile .
mkdir ../fret-desktop (Replace path with your preference)
docker run -v $PWD/../fret-desktop:/tmp/fret -u root -it fret-install:latest /bin/bash
cp ~fret/Desktop/FRET-linux-x64.tgz /tmp/fret/
exit
(to exit the docker image)cd ../fret-desktop
tar -xzvf FRET-linux-x64.tgz
cd FRET-linux-x64
./FRET
(or./FRET --no-sandbox
if the application doesn't load)
Note: To run the LTLSIM simulator, a NuSMV (see http://nusmv.fbk.eu/) installation is required. Please make sure that the NuSMV binaries directory is added to the PATH environment variable. Additionally, please add
$PATH_TO_FRET/fret/tools/LTLSIM/ltlsim-core/simulator
to the PATH environment variable.
Note: To perform realizability checking, additional dependencies must be installed (e.g., JKind or Kind2). Read the realizability checking Dependencies section for details.
Note: FRET can run with either python 2.x or python 3.x. You can config FRET to specify which version of python to use. For example, to use python2 executable, run the following:
npm config set python /usr/bin/python2.x
Note: We have added package-lock.json files, as recommended by nodeJS, to assist the installation of FRET. These files were previously untracked (prior to release 3.1). If you get an "untracked working tree files error" when pulling the new code, please delete your local package-lock.json files.
Note: Compiling on Windows machines requires gcc and the node-gyp prerequisites.
Note: For M1 architectures please follow the following steps after cloning FRET:
- cd fret/fret-electron
- npm run fret-install
- cd app (under fret/fret-electron/)
- npm install leveldown@latest
- Edit package-lock.json (under fret/fret-electron/app/)
- Change leveldown dependency: “^5.4.0” under node_modules/level to “^6.0.3”
- Change leveldown dependency: “5.6.0” under node_modules/pouchdb to “^6.0.3”
- cd ..
- npm start
Note: If you encounter GPU-related issues on Ubuntu 22.04 LTS, here is a workaround (see also here):
- cd fret/fret-electron
- Open package.json in an editor
- Find the "scripts" object, change the value of the "start" key from "cross-env NODE_ENV=production electron ./app/" to "cross-env NODE_ENV=production electron --no-sandbox ./app/"
- Save and exit the editor
- npm start
Note: If you encounter glibc-related issues when using the executable built by the Docker image, try the following steps:
- Open the "Dockerfile" file in an editor (this file should be in the "fret" root folder if you already attempted to build a binary)
- Change "FROM ubuntu:latest" to "FROM ubuntu:focal"
- Try again the Docker instructions, starting with step 4.