VM Download

The Footpatch VM is hosted on Zenodo. The username/password is vagrant/vagrant.

Build from source

If you just want to play with running footpatch (and possibly hacking at the code), use the VM. Dependencies for olders versions of Infer can (and have) broken or disappeared, and can cause building from source to be problematic.

If you really want to build from source, here is some guidance. Building is only tested on Ubuntu 14.04 and Infer v0.9.3. There is no support for other versions of Infer at this time. Install the dependencies

If you have all the dependencies installed, running ./SETUP.sh should be enough.

Dependencies

You need at least the following dependencies:

# install opam
add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install opam

# additional deps
opam depext conf-autoconf.0.1
opam depext conf-m4.1
opam depext camlzip.1.05

# java
sudo apt-get install default-jdk
sudo apt-get install default-jre

For projects tested, you need to do at least:


sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get install --only-upgrade libstdc++6

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install gradle

sudo apt-get install clang
sudo apt-get install subversion

Known good package versions

These package versions are known to be good for the source build release, but may have updated constraints in opam that make it hard to obtain this configuration.

# Installed packages for infer-4.02.3:                                              
ANSITerminal              0.7  Basic control of ANSI compliant terminals and the
atd                     1.2.0  Parser for the ATD data format description langua
atdgen                 1.10.0  Generates efficient JSON serializers, deserialize
base-bigarray            base  Bigarray library distributed with the OCaml compi
base-bytes               base  Bytes library distributed with the OCaml compiler
base-ocamlbuild          base  OCamlbuild binary and libraries distributed with 
base-threads             base  Threads library distributed with the OCaml compil
base-unix                base  Unix library distributed with the OCaml compiler 
BetterErrors            0.0.1  Better compiler error output.                        
bin_prot            113.33.03  A binary protocol generator                          
biniou                 1.0.12  Binary data format designed for speed, safety, ea
camlp4                 4.02+7  Camlp4 is a system for writing extensible parsers
camlzip                  1.05  Provides easy access to compressed files in ZIP, 
camomile                0.8.5  A comprehensive Unicode library                      
conf-autoconf             0.1  Virtual package relying on autoconf installation.
conf-m4                     1  Virtual package relying on m4                        
conf-ncurses                1  Virtual package relying on ncurses                   
conf-pkg-config           1.0  Virtual package relying on pkg-config installatio
conf-which                  1  Virtual package relying on which                     
core                113.33.03  Industrial strength alternative to OCaml's standa
core_kernel         113.33.03  Industrial strength alternative to OCaml's standa
cppo                    1.4.1  Equivalent of the C preprocessor for OCaml progra
ctypes                 0.12.1  Combinators for binding to C libraries without wr
ctypes-foreign          0.4.0  Virtual package for enabling the ctypes.foreign s
easy-format             1.2.0  High-level and functional interface to the Format
extlib-compat           1.7.2  A complete yet small extension for OCaml standard
fieldslib           113.33.03  Syntax extension to define first class values rep
integers                0.2.2  Various signed and unsigned integer types for OCa
javalib                 2.3.3  Javalib is a library written in OCaml with the ai
js-build-tools      113.33.04  Collection of tools to help building Jane Street 
lambda-term            1.10.1  Terminal manipulation library for OCaml              
lwt                     2.4.5  A cooperative threads library for OCaml              
menhir               20170101  LR(1) parser generator                               
merlin                  2.5.5  Editor helper, provides completion, typing and so
merlin-extend             0.3  A protocol to provide custom frontend to Merlin  
merlin_extend             0.2 (pinned)                                              
ocamlbuild                  0  Build system distributed with the OCaml compiler 
ocamlfind               1.7.1  A library manager for OCaml                          
ounit                   2.0.0  Unit testing framework loosely based on HUnit. It
ppx_assert          113.33.03  Assert-like extension nodes that raise useful err
ppx_bench           113.33.03  Syntax extension for writing in-line benchmarks i
ppx_bin_prot        113.33.03  Generation of bin_prot readers and writers from
ppx_compare         113.33.03  Generation of comparison functions from types    
ppx_core            113.33.03  Standard library for ppx rewriters               
ppx_custom_printf   113.33.03  Printf-style format-strings for user-defined stri
ppx_deriving              4.1  Type-driven code generation for OCaml >=4.02     
ppx_driver          113.33.04  Feature-full driver for OCaml AST transformers   
ppx_enumerate       113.33.03  Generate a list containing all values of a finite
ppx_expect          113.33.03  Cram like framework for OCaml                    
ppx_fail            113.33.03  Add location to calls to failwiths               
ppx_fields_conv     113.33.03  Generation of accessor and iteration functions fo
ppx_here            113.33.03  Expands [%here] into its location                
ppx_inline_test     113.33.03  Syntax extension for writing in-line tests in oca
ppx_jane            113.33.03  Standard Jane Street ppx rewriters               
ppx_let             113.33.03  Monadic let-bindings                             
ppx_optcomp         113.33.03  Optional compilation for OCaml                   
ppx_pipebang        113.33.03  A ppx rewriter that inlines reverse application o
ppx_sexp_conv       113.33.03  Generation of S-expression conversion functions f
ppx_sexp_message    113.33.03  A ppx rewriter for easy construction of s-express
ppx_sexp_value      113.33.03  A ppx rewriter that simplifies building s-express
ppx_tools          5.0+4.02.0  Tools for authors of ppx rewriters and other synt
ppx_type_conv       113.33.03  Support Library for type-driven code generators  
ppx_typerep_conv    113.33.03  Generation of runtime types from type declaration
ppx_variants_conv   113.33.03  Generation of accessor and iteration functions fo
re                      1.7.1  RE is a regular expression library for OCaml     
react                   1.2.0  Declarative events and signals for OCaml         
reason                  1.4.0  Reason: Meta Language Toolchain                  
result                    1.2  Compatibility Result module                      
sawja                   1.5.2  Provide a high level representation of Java bytec
sexplib             113.33.03  Library for serializing OCaml values to and from 
topkg                   0.9.0  The transitory OCaml software packager           
typerep             113.33.03  typerep is a library for runtime types.          
utop                   1.19.3  Universal toplevel for OCaml                     
variantslib         113.33.03  Part of Jane Street's Core library               
xmlm                    1.3.0  Streaming XML codec for OCaml                    
yojson                  1.3.3  Yojson is an optimized parsing and printing libra
zed                       1.4  Abstract engine for text edition in OCaml
merlin_extend.0.2                      git   https://github.com/let-def/merlin-extend.git#reason-0.0.1