Fixed P4 tools build script for Ubuntu 14

+ bumped version of p4runtime and BMv2
+ minor update to bmv2.py

Change-Id: I7784b075b2e6015bb3eef1286011968303b66129
diff --git a/tools/dev/mininet/bmv2.py b/tools/dev/mininet/bmv2.py
index a0f92d2..6b31d05 100644
--- a/tools/dev/mininet/bmv2.py
+++ b/tools/dev/mininet/bmv2.py
@@ -22,16 +22,16 @@
     deviceId = 0
     instanceCount = 0
 
-    def __init__(self, name, debugger=False, loglevel="warn", elogger=False, persistent=False,
-                 thriftPort=None, grpcPort=None, netcfg=True, **kwargs):
+    def __init__(self, name, json=None, debugger=False, loglevel="warn", elogger=False,
+                 persistent=False, grpcPort=None, netcfg=True, **kwargs):
         Switch.__init__(self, name, **kwargs)
-        self.thriftPort = ONOSBmv2Switch.pickUnusedPort() if not thriftPort else thriftPort
         self.grpcPort = ONOSBmv2Switch.pickUnusedPort() if not grpcPort else grpcPort
         if self.dpid:
             self.deviceId = int(self.dpid, 0 if 'x' in self.dpid else 16)
         else:
             self.deviceId = ONOSBmv2Switch.deviceId
             ONOSBmv2Switch.deviceId += 1
+        self.json = json
         self.debugger = debugger
         self.loglevel = loglevel
         self.logfile = '/tmp/bmv2-%d.log' % self.deviceId
@@ -43,7 +43,6 @@
             self.exectoken = "/tmp/bmv2-%d-exec-token" % self.deviceId
             self.cmd("touch %s" % self.exectoken)
         # Store thrift port for future uses.
-        self.cmd("echo %d > /tmp/bmv2-%d-thrift-port" % (self.thriftPort, self.deviceId))
         self.cmd("echo %d > /tmp/bmv2-%d-grpc-port" % (self.grpcPort, self.deviceId))
 
     @classmethod
@@ -114,15 +113,17 @@
         for port, intf in self.intfs.items():
             if not intf.IP():
                 args.append('-i %d@%s' % (port, intf.name))
-        if self.thriftPort:
-            args.append('--thrift-port %d' % self.thriftPort)
         if self.elogger:
             nanomsg = 'ipc:///tmp/bmv2-%d-log.ipc' % self.deviceId
             args.append('--nanolog %s' % nanomsg)
         if self.debugger:
             args.append('--debugger')
+        args.append('--log-console')
         args.append('-L%s' % self.loglevel)
-        args.append('--no-p4')
+        if not self.json:
+            args.append('--no-p4')
+        else:
+            args.append(self.json)
 
         # gRPC target-specific options.
         args.append('--')
@@ -131,14 +132,12 @@
 
         bmv2cmd = " ".join(args)
         info("\nStarting BMv2 target: %s\n" % bmv2cmd)
+
         if self.persistent:
             # Bash loop to re-exec the switch if it crashes.
-            cmdStr = "(while [ -e {} ]; " \
-                     "do {} ; " \
-                     "sleep 1; " \
-                     "done;) > {} 2>&1 &".format(self.exectoken, bmv2cmd, self.logfile)
-        else:
-            cmdStr = "{} > {} 2>&1 &".format(bmv2cmd, self.logfile)
+            bmv2cmd = "(while [ -e {} ]; do {} ; sleep 1; done;)".format(self.exectoken, bmv2cmd)
+
+        cmdStr = "{} > {} 2>&1 &".format(bmv2cmd, self.logfile)
 
         # Starts the switch.
         out = self.cmd(cmdStr)
@@ -157,7 +156,7 @@
     def stop(self, deleteIntfs=True):
         """Terminate switch."""
         self.cmd("rm -f /tmp/bmv2-%d-*" % self.deviceId)
-        self.cmd("rm -f /tmp/bmv2-%d.log" % self.deviceId)
+        self.cmd("rm -f /tmp/bmv2-%d.log*" % self.deviceId)
         self.cmd('kill %' + BMV2_TARGET)
         Switch.stop(self, deleteIntfs)