yuntongzhang / footpatch

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NEW Build from Source.

  1. Get new docker and install common packages.
apt update
apt install build-essential wget patch unzip vim git
  1. Install opam 1.2.2 and init.
wget https://github.com/ocaml/opam/releases/download/1.2.2/opam-1.2.2-x86_64-Linux
install opam-1.2.2-x86_64-Linux /usr/local/bin/opam
opam init --comp=4.02.3
eval `opam config env`
  1. Install additional opam deps:
opam depext conf-autoconf.0.1
opam depext conf-m4.1
opam depext camlzip.1.05
  1. Install java 8_151:
# Download from https://www.oracle.com/sg/java/technologies/javase/javase8-archive-downloads.html
# outside docker
docker cp ./jdk-8u151-linux-x64.tar.gz footpatch:/root/
# inside docker
mkdir -p /usr/lib/jvm
tar zxvf jdk-8u151-linux-x64.tar.gz -C /usr/lib/jvm
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_151/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_151/bin/javac" 1
sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_151/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_151/bin/javac
  1. Install FootPatch:
git clone https://github.com/yuntongzhang/footpatch.git
cd footpatch/
./SETUP.sh

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

About


Languages

Language:OCaml 78.9%Language:C 10.8%Language:Makefile 3.4%Language:Shell 3.2%Language:Java 2.4%Language:Reason 1.4%