From bea61147cc268cf99c6417712f0da34d3cdfdea3 Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Fri, 10 Feb 2017 11:43:57 -0800
Subject: [PATCH] native project: institute a version scheme to force a clean
 build

---
 com.oracle.truffle.r.native/Makefile          | 29 ++++++++++++++++++-
 .../fficall/src/jni/rffiutils.c               |  2 +-
 .../fficall/src/jni/rffiutils.h               |  2 +-
 com.oracle.truffle.r.native/version.source    |  1 +
 .../oracle/truffle/r/nodes/ffi/RFFIUtils.java |  1 -
 .../r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java |  1 +
 6 files changed, 32 insertions(+), 4 deletions(-)
 create mode 100644 com.oracle.truffle.r.native/version.source

diff --git a/com.oracle.truffle.r.native/Makefile b/com.oracle.truffle.r.native/Makefile
index 2b59c073ff..1207d671c8 100644
--- a/com.oracle.truffle.r.native/Makefile
+++ b/com.oracle.truffle.r.native/Makefile
@@ -30,12 +30,17 @@ export FASTR_NATIVE_DIR = $(TOPDIR)
 export R_VERSION = $(subst R-,,$(notdir $(basename $(basename $(wildcard $(FASTR_R_HOME)/libdownloads/R-*.gz)))))
 export GNUR_HOME = $(TOPDIR)/gnur/R-$(R_VERSION)
 
-all: 
+# Completely accurate dependency analysis is very difficult for this project, so use a version number
+# to force a clean build, and elsewhere use sentinels to avoid rebuilding when we can't compute the 
+# dependencies accurately.
+
+all: checkversion
 	$(MAKE) -C gnur
 	$(MAKE) -C include
 	$(MAKE) -C fficall
 	$(MAKE) -C library
 	$(MAKE) -C run
+	cp version.source version.built
 
 clean: 
 	$(MAKE) -C include clean
@@ -44,3 +49,25 @@ clean:
 	$(MAKE) -C run clean
 	$(MAKE) -C gnur clean
 
+version.source := $(shell cat version.source)
+
+#$(info version: $(version.source))
+ifeq ($(wildcard version.built),)
+	doclean = 1
+else
+version.built := $(shell cat version.built)
+#$(info version.built: $(version.built))
+ifneq ($(version.source),$(version.built))
+	doclean = 1
+else
+	doclean = 0
+endif
+endif
+
+#$(info doclean: $(doclean))
+checkversion:
+ifeq ($(doclean),1)
+	$(MAKE) clean
+endif
+
+	
\ No newline at end of file
diff --git a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c
index bf170af25d..03118d01c2 100644
--- a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c
+++ b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
diff --git a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.h b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.h
index 6ed346d211..c86fc4bc15 100644
--- a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.h
+++ b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
diff --git a/com.oracle.truffle.r.native/version.source b/com.oracle.truffle.r.native/version.source
new file mode 100644
index 0000000000..78c24caea0
--- /dev/null
+++ b/com.oracle.truffle.r.native/version.source
@@ -0,0 +1 @@
+2/10/17
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
index f98624c494..9b7df136ad 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
@@ -149,7 +149,6 @@ public class RFFIUtils {
     }
 
     private static void traceCall(CallMode mode, String name, int depthValue, Object... args) {
-        assert initialized;
         if (traceEnabled) {
             StringBuffer sb = new StringBuffer();
             sb.append("CallRFFI[");
diff --git a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
index 17087d2880..94381998e7 100644
--- a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
+++ b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
@@ -33,6 +33,7 @@ import com.oracle.truffle.r.runtime.ffi.CharSXPWrapper;
  * Some additional methods to support the native JNI side.
  */
 public final class JNIUpCallsRFFIImpl extends JavaUpCallsRFFIImpl {
+    // Checkstyle: stop method name check
 
     /**
      * Helper function for {@code R_TopLevelExec}, see {@link #R_ToplevelExec()}, called after C
-- 
GitLab