Summary:
optimize the git clone using --depth flag in term of size of clone
and also in term's of time taken to fetch the files and commit history
of whole repository .
More detail can be found at blog
https://www.atlassian.com/git/tutorials/big-repositories
Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
Pull Request resolved: https://github.com/facebook/infer/pull/1341
Reviewed By: da319
Differential Revision: D24917645
Pulled By: jvillard
fbshipit-source-id: 6764fc971
Summary:
This was removed in D19272627 but not added back in D21998484.
Pull Request resolved: https://github.com/facebook/infer/pull/1290
Reviewed By: dulmarod
Differential Revision: D22665397
Pulled By: jvillard
fbshipit-source-id: 8417e405a
Summary:
This is mostly a partial revert of D19022905 and D19272627 for only the
part of it concerned with "install-with-libs".
Fixes#1260.
Reviewed By: skcho
Differential Revision: D21998484
fbshipit-source-id: ed884e772
Summary:
With profiles and `(env ...)` stanza it's possible to consolidate
various ocamlc/ocamlopt/etc setups in a single place.
Where previously we needed to append `dune.common` to every dune file
and specify `flags` and `ocamlopt_flags` now the flags are specified
in `env` and applied accross the board.
This allows to
1. simplify build definitions,
2. avoid the need to generate dune files,
3. use plain sexps instead of OCaml and JBuilder plugin in build
files.
(I'll try to address 2 and 3 in the followup patches).
Existing `make` targets should continue working as before. Also, we
can use dune CLI like so:
```
infer/src$ dune printenv --profile opt # <- very useful for introspection
infer/src$ dune build check
infer/src$ dune build check --profile test
infer/src$ dune build infer.exe --profile dev
infer/src$ dune build infer.exe --profile opt
```
Also, with just 1 context something like `dune runtest` will run unit
tests only once instead of N times, where N is the number of contexts.
Now, there's one difference compared to the previous setup with
contexts:
- Previously, each context had its own build folder, and building infer
in opt context didn't invalidate any of the build artifacts in default
context. Therefore, alternating between `make` and `make opt` had low
overhead at the expense of having N copies of all build artifacts (1
for every context).
- Now, there's just 1 build folder and switching between profiles does
invalidate some artifacts (but not all) and rebuild takes a bit more
time.
So, if you're alternating like crazy between profiles your experience
may get worse (but not necessarily, more on that below). If you want
to trigger an opt build occasionally, you shouldn't notice much
difference.
For those who are concerned about slower build times when alternating
between different build profiles, there's a solution: [dune
cache](https://dune.readthedocs.io/en/stable/caching.html).
You can enable it by creating a file `~/.config/dune/config` with the
following contents:
```
(lang dune 2.0)
(cache enabled)
```
With cache enabled switching between different build profiles (but
also branches and commits) has ~0 overhead.
Dune cache works fine on Linux, but unfortunately there are [certain
problems with
MacOS](https://github.com/ocaml/dune/issues/3233) (hopefully, those
will be fixed soon and then there will be no downsides to using
profiles compared to contexts for our case).
Reviewed By: jvillard
Differential Revision: D20247864
fbshipit-source-id: 5f8afa0db
Summary:
This diff changes the build target from `install-with-libs` to `install` since the former has been
removed.
https://github.com/facebook/infer/issues/1207
Reviewed By: ngorogiannis
Differential Revision: D19272627
fbshipit-source-id: be730c1b7
Summary:
Using "opam init" in non interactive mode, in order to avoid compilation failures. Otherwise, It will wait for user input until a timeout, that will cause the compilation process to fail due to an OPAM error.
Also the Dockerfile has been modified in order to use [multistage builds](https://docs.docker.com/develop/develop-images/multistage-build/), obtaining a cleaner Docker image.
Pull Request resolved: https://github.com/facebook/infer/pull/1102
Reviewed By: jvillard
Differential Revision: D15430898
Pulled By: mbouaziz
fbshipit-source-id: 0718163bb
Summary:
Very minor change, but uses the latest opam version available.
Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for how to set up your development environment and run tests.
Pull Request resolved: https://github.com/facebook/infer/pull/1077
Differential Revision: D14703257
Pulled By: jvillard
fbshipit-source-id: 61c8dbd1e
Summary: Publish solutions to the lab, and a Docker file and image to get started more quickly with infer hacking.
Reviewed By: mbouaziz
Differential Revision: D13648847
fbshipit-source-id: daf48ad03
Summary:
Change the license of the source code from BSD + PATENTS to MIT.
Change `checkCopyright` to reflect the new license and learn some new file
types.
Generated with:
```
git grep BSD | xargs -n 1 ./scripts/checkCopyright -i
```
Reviewed By: jeremydubreil, mbouaziz, jberdine
Differential Revision: D8071249
fbshipit-source-id: 97ca23a
Summary:
This should fix the following issues:
- the previous release (0.13.0) not building anymore (#830)
- ubuntu 17:04 reached end of life, so `apt-get update` would now fail (#846)
- Docker doesn't support the `MAINTAINER` entry anymore, replaced by `LABEL maintainer` (#857)
Fixes#830, #846, #857
Reviewed By: sblackshear
Differential Revision: D6889313
fbshipit-source-id: 14daf1d
Summary:
I was unable to build 0.13 with the current Dockerfile. Changing the Infer version to 0.13 resulted in errors about the ocaml version not being >= 4.05 and < 4.06. When changing the ocaml version I found that the sqlite extension wouldn't compile via opam.
I tried to clean this up a little bit as I went but please let me know if I have reduced it too much. I made sure that everything still worked by running following the Docker steps outlined here http://fbinfer.com/docs/getting-started.html
Here's some info about the bits in the finalized container:
```
infer --version
Infer version v0.13.0
Copyright 2009 - present Facebook. All Rights Reserved.
```
```
opam --version
1.2.2
```
```
ocaml -version
The OCaml toplevel, version 4.02.3
```
```
java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.17.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
```
Closes https://github.com/facebook/infer/pull/792
Differential Revision: D6284203
Pulled By: jvillard
fbshipit-source-id: a6b1d32
Summary: Tests rely on at least 4.04.1, and no harm in avoiding CVE-2017-9772.
Reviewed By: jeremydubreil
Differential Revision: D5334702
fbshipit-source-id: 2b9b7f1
Summary: Bump version to 0.12.0. This should also fix Travis issues as 0.12.0 uses opam.lock for its opam dependencies, which points at non-broken package versions.
Reviewed By: cristianoc
Differential Revision: D5208632
fbshipit-source-id: 36d75ee
Summary:
This cuts the resulting image from ~4.6GB to ~1.6GB.
Infer functionality is not sacrificed and the following commands run successfully without any extra user interaction (including Android example provided the user has accepted the Android SDK license which they'll be prompted to do when running the Docker image, see https://github.com/facebook/infer/pull/597#issuecomment-284864016):
```bash
cd /infer/examples && infer -- javac Hello.java
cd /infer/examples && infer -- gcc -c hello.c
cd /infer/examples && infer -- clang -c hello.c
cd /infer/examples/c_hello && infer -- make
cd /infer/examples/java_hello && infer -- javac Hello.java Pointers.java Resources.java
cd /infer/examples/android_hello && infer -- ./gradlew build
```
The OPAM installation is no longer retained. This may impact Infer developers if they're using the Docker images and require OPAM packages to be installed as part of their workflow.
Closes https://github.com/facebook/infer/pull/597
Differential Revision: D4906386
Pulled By: jvillard
fbshipit-source-id: 6bc09d2
Summary: The version of infer in that file shouldn't be bumped until the release has been published on GitHub.
Reviewed By: jberdine
Differential Revision: D4810275
fbshipit-source-id: 1edd111
Summary:
Given #524 was required to do the last manual update, perhaps the Dockerfile could be updated as part of the release process instead of catching it after the fact?
Cheers!
Closes https://github.com/facebook/infer/pull/585
Reviewed By: akotulski
Differential Revision: D4620311
Pulled By: jvillard
fbshipit-source-id: fa74d95
Summary:
Fixes this error in the Docker image build (mentioned in https://github.com/facebook/infer/issues/570#issuecomment-282191663):
```
#=== ERROR while installing ctypes.0.11.3 =====================================#
# opam-version 1.2.2
# os linux
# command make XEN=disable ctypes-foreign
# path /root/.opam/infer-4.02.3/build/ctypes.0.11.3
# compiler 4.02.3
# exit-code 2
# env-file /root/.opam/infer-4.02.3/build/ctypes.0.11.3/ctypes-5557-6ff7fe.env
# stdout-file /root/.opam/infer-4.02.3/build/ctypes.0.11.3/ctypes-5557-6ff7fe.out
# stderr-file /root/.opam/infer-4.02.3/build/ctypes.0.11.3/ctypes-5557-6ff7fe.err
### stdout ###
# [...]
# The following required C libraries are missing: libffi.
# Please install them and retry. If they are installed in a non-standard location
# or need special flags, set the environment variables <LIB>_CFLAGS and <LIB>_LIBS
# accordingly and retry.
#
# For e
Closes https://github.com/facebook/infer/pull/587
Reviewed By: mbouaziz
Differential Revision: D4605385
Pulled By: jvillard
fbshipit-source-id: 689cd4e
Summary:
Also the infer version seems to be reporting the wrong value.
```
$ infer -version
Infer version v0.9.4
```
Closes https://github.com/facebook/infer/pull/524
Differential Revision: D4284090
Pulled By: jvillard
fbshipit-source-id: fd17833
Summary:
- add g++ to `apt-get install`
- leave opam setup to `./build-infer.sh` now that it does it for us
closes#399
Reviewed By: jberdine
Differential Revision: D3613222
fbshipit-source-id: ea8ddf7
Summary:
Looks like the virtual package build-essentials no longer includes autoconf.
Also get rid of this vague virtual package in favour of explicitely enumerating
the actual packages that we want.
Reviewed By: jeremydubreil
Differential Revision: D3224349
fb-gh-sync-id: d7d3f19
fbshipit-source-id: d7d3f19
Summary:public
Sometimes github is down, and replies with an error page, which is not a good
substitute for an opam binary. Failing makes docker not cache the result, so
it's easy to try again when github gets better.
Reviewed By: cristianoc
Differential Revision: D3138561
fb-gh-sync-id: 6725c42
fbshipit-source-id: 6725c42
Summary:public
This version of gradle doesn't work with our example anyway, so cut down the
installed image a bit. Use ./gradlew instead, as the README already points out.
Reviewed By: jberdine
Differential Revision: D3114775
fb-gh-sync-id: 49c38e4
fbshipit-source-id: 49c38e4
Summary:public
Instead of using the GitHub APIs to figure out the latest infer version to
download, hardcode it in the file. This way, Docker doesn't cache the version
number.
Differential Revision: D3109567
fb-gh-sync-id: 679018e
fbshipit-source-id: 679018e
Summary:public
- install the "pkg-config" and "ncurses-dev" apt packages
- install the android-22 target as the base image stopped shipping with it
- use more robust ways of installing opam depencies
- switch build command to `./build-infer.sh`
- switch android example to use gradlew instead of gradle because it complains
about gradle-2.11 not being gradle-2.2
closes#291
Reviewed By: cristianoc
Differential Revision: D3000540
fb-gh-sync-id: f8bd44b
shipit-source-id: f8bd44b
Summary:
fixes#267.
By calling opam with the --shell=bash in the script I don't get the errors I had before.
The new line I added in the docker/README.md was so the list would display correctly when rendered.
Closes https://github.com/facebook/infer/pull/272
Reviewed By: jberdine
Differential Revision: D2916859
Pulled By: jvillard
fb-gh-sync-id: 4243f79
shipit-source-id: 4243f79
Summary:
An issue facebook/infer#270 suggest two docker build failure error.
facebok/infer#270 issues two docker build failure errors.
- failure in 'make -C infer clang java' : add './configure' before the command.
- failure in building sources : add 'opam switch 4.02.3' to use this syntax in ' cc4439938e/infer/src/clang/cLocation.ml (L76) '. In ubuntu, when 'apt-get install ocaml' ( cc4439938e/docker/Dockerfile (L20) ), for now, it installs ocaml 4.01, but this syntax does not work with ocaml 4.01.
Closes https://github.com/facebook/infer/pull/271
Reviewed By: jberdine
Differential Revision: D2916909
Pulled By: jvillard
fb-gh-sync-id: 3eba991
shipit-source-id: 3eba991
Summary: public Add instructions how to use the docker image, a script to automatically
build and run the docker container, and base the docker image on the latest
release of infer instead of git, which saves compiling clang.
Reviewed By: cristianoc
Differential Revision: D2564909
fb-gh-sync-id: 5c8ea96
Summary: I make a infer's image by docker tech,please check it.
Closes https://github.com/facebook/infer/pull/151
Reviewed By: martinoluca
Differential Revision: D2549836
Pulled By: jvillard
fb-gh-sync-id: 702f5c1