diff --git a/build-infer.sh b/build-infer.sh index ddfede7de..96a4818e3 100755 --- a/build-infer.sh +++ b/build-infer.sh @@ -167,6 +167,20 @@ install_infer-deps () { opam pin add infer-deps "$INFER_DEPS_DIR" } +# temporary: patch javalib and use local version as source of truth. can be removed once javalib +# creates a new release with the patch +# (https://gforge.inria.fr/tracker/index.php?func=detail&aid=21418&group_id=686&atid=2817) +install_patched_javalib() { + local javalib_dir="$INFER_ROOT"/dependencies/javalib + local unzipped_javalib_dir="$javalib_dir"/javalib-2.3.3 + tar xvf "$javalib_dir"/javalib-2.3.3.tar.bz2 -C "$javalib_dir" + # apply the patch + patch -d "$unzipped_javalib_dir"/src < "$javalib_dir"/allow_empty_method.patch + opam pin add javalib "$unzipped_javalib_dir" + # clean up unzipped source + rm -rf "$unzipped_javalib_dir" +} + install_locked_deps() { if ! opam lock 2> /dev/null; then echo "opam-lock not found in the current switch, installing from '$OPAM_LOCK_URL'..." >&2 @@ -176,6 +190,7 @@ install_locked_deps() { } install_opam_deps() { + install_patched_javalib if [ "$USE_OPAM_LOCK" = yes ]; then install_locked_deps else diff --git a/dependencies/javalib/allow_empty_method.patch b/dependencies/javalib/allow_empty_method.patch new file mode 100644 index 000000000..b76a9356d --- /dev/null +++ b/dependencies/javalib/allow_empty_method.patch @@ -0,0 +1,15 @@ +--- jLow2High.ml 2016-11-01 08:10:40.000000000 -0700 ++++ jLow2High.ml 2017-08-30 14:54:09.000000000 -0700 +@@ -630,9 +630,9 @@ + Java (lazy (low2high_code consts bootstrap_methods (Lazy.force c))) + | [] when is_native -> Native + | [] -> +- raise +- (Class_structure_error +- "A method not declared as Native, nor Abstract has been found without code.") ++ (* although this will never happen in bytecode generated by Javac, some bytecode generators ++ create empty method bodies without bothering to mark them native *) ++ Native + | [_] -> + raise + (Class_structure_error) diff --git a/dependencies/javalib/javalib-2.3.3.tar.bz2 b/dependencies/javalib/javalib-2.3.3.tar.bz2 new file mode 100644 index 000000000..90b20c1b9 Binary files /dev/null and b/dependencies/javalib/javalib-2.3.3.tar.bz2 differ