js.syncbase: Remove the -builtin_vdlroot flag.

The vdl tool needs access to its standard packages when compiling
and generating code.  It can either find the packages under
VDLROOT/JIRI_ROOT, or it can use the packages built-in to the
tool itself.

The previous behavior was that if -builtin_vdlroot=false (the
default), we'd always look under VDLROOT or JIRI_ROOT.  The new
behavior gets rid of the flag, and changes the behavior as if it
were set to true.  If VDLROOT or JIRI_ROOT are set, we always use
that value, otherwise we extract the built-in vdlroot to a
temporary directory.

The previous behavior was to write out the data as a
base64/gzipped/tarball with line breaks.  The new behavior writes
out a gzipped/tarball as raw binary data, without line breaks.
This is simpler; there's no need for the base64 encoding.

The previous behavior only included *.vdl files in the tarball;
we also need to include vdl.config files, since they affect code
generation for dependant packages.

Added an explicit test to make sure the builtin vdlroot data
contains exactly what we expect; the net result is similar to the
go-generate test (which reminds us when we've forgotten to run
go-generate), but is a bit more localized.

MultiPart: 5/6

Change-Id: I55a35656f643f70e55175a6804c9e5dd3e224801
diff --git a/src/gen-vdl/v.io/v23/security/index.js b/src/gen-vdl/v.io/v23/security/index.js
index 1268fed..ed390d1 100644
--- a/src/gen-vdl/v.io/v23/security/index.js
+++ b/src/gen-vdl/v.io/v23/security/index.js
@@ -263,7 +263,7 @@
 
   module.exports.AllPrincipals = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlessingPattern))("...", true), _typeBlessingPattern);
 
-  module.exports.ChainSeparator = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))("/", true), vdl.types.STRING);
+  module.exports.ChainSeparator = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))(":", true), vdl.types.STRING);
 
   module.exports.SHA1Hash = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeHash))("SHA1", true), _typeHash);
 
@@ -329,7 +329,7 @@
 
 
 module.exports.ExpiryCaveatValidationError = makeError('v.io/v23/security.ExpiryCaveatValidation', actions.NO_RETRY, {
-  'en': '{1:}{2:} now({4}) is after expiry({3})',
+  'en': '{1:}{2:} now({3}) is after expiry({4})',
 }, [
   new time.Time()._type,
   new time.Time()._type,
diff --git a/src/gen-vdl/v.io/v23/services/syncbase/index.js b/src/gen-vdl/v.io/v23/services/syncbase/index.js
index 580d040..dded181 100644
--- a/src/gen-vdl/v.io/v23/services/syncbase/index.js
+++ b/src/gen-vdl/v.io/v23/services/syncbase/index.js
@@ -12,6 +12,7 @@
 
 
 
+var time = require('./../../vdlroot/time');
 var access = require('./../../security/access');
 var permissions = require('./../permissions');
 
@@ -20,6 +21,12 @@
 
 
 // Types:
+var _typeDebugUpdateClockOpts = new vdl.Type();
+_typeDebugUpdateClockOpts.kind = vdl.kind.STRUCT;
+_typeDebugUpdateClockOpts.name = "v.io/v23/services/syncbase.DebugUpdateClockOpts";
+_typeDebugUpdateClockOpts.fields = [{name: "NtpHost", type: vdl.types.STRING}, {name: "Now", type: new time.Time()._type}, {name: "ElapsedTime", type: new time.Duration()._type}, {name: "DoNtpUpdate", type: vdl.types.BOOL}, {name: "DoLocalUpdate", type: vdl.types.BOOL}, {name: "StartClockD", type: vdl.types.BOOL}];
+_typeDebugUpdateClockOpts.freeze();
+module.exports.DebugUpdateClockOpts = (vdl.registry.lookupOrCreateConstructor(_typeDebugUpdateClockOpts));
 
 
 
@@ -48,6 +55,16 @@
 
     
       
+Service.prototype.debugUpdateClock = function(ctx, serverCall, uco) {
+  throw new Error('Method DebugUpdateClock not implemented');
+};
+    
+      
+Service.prototype.debugNow = function(ctx, serverCall) {
+  throw new Error('Method DebugNow not implemented');
+};
+    
+      
 Service.prototype.setPermissions = function(ctx, serverCall, perms, version) {
   throw new Error('Method SetPermissions not implemented');
 };
@@ -73,6 +90,38 @@
     
       
     {
+    name: 'DebugUpdateClock',
+    doc: "// DebugUpdateClock updates various bits of Syncbase virtual clock and clock\n// daemon state based on the specified options.\n// Requires --debug flag to be set (in addition to Admin check).\n// Users of this function typically specify --debug-do-not-start-clockd when\n// starting Syncbase so that they can configure the virtual clock before the\n// daemon starts mucking with it.",
+    inArgs: [{
+      name: 'uco',
+      doc: "",
+      type: _typeDebugUpdateClockOpts
+    },
+    ],
+    outArgs: [],
+    inStream: null,
+    outStream: null,
+    tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ]
+  },
+    
+      
+    {
+    name: 'DebugNow',
+    doc: "// DebugNow returns the current time per the Syncbase clock.\n// Requires --debug flag to be set (in addition to Admin check).",
+    inArgs: [],
+    outArgs: [{
+      name: '',
+      doc: "",
+      type: new time.Time()._type
+    },
+    ],
+    inStream: null,
+    outStream: null,
+    tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ]
+  },
+    
+      
+    {
     name: 'SetPermissions',
     doc: "// SetPermissions replaces the current Permissions for an object.  version\n// allows for optional, optimistic concurrency control.  If non-empty,\n// version's value must come from GetPermissions.  If any client has\n// successfully called SetPermissions in the meantime, the version will be\n// stale and SetPermissions will fail.  If empty, SetPermissions performs an\n// unconditional update.\n//\n// Permissions objects are expected to be small.  It is up to the\n// implementation to define the exact limit, though it should probably be\n// around 100KB.  Large lists of principals can be represented concisely using\n// blessings.\n//\n// There is some ambiguity when calling SetPermissions on a mount point.\n// Does it affect the mount itself or does it affect the service endpoint\n// that the mount points to?  The chosen behavior is that it affects the\n// service endpoint.  To modify the mount point's Permissions, use\n// ResolveToMountTable to get an endpoint and call SetPermissions on that.\n// This means that clients must know when a name refers to a mount point to\n// change its Permissions.",
     inArgs: [{
@@ -250,6 +299,8 @@
 };
 
    
+
+   
  
 
 
diff --git a/src/gen-vdl/v.io/v23/services/syncbase/nosql/index.js b/src/gen-vdl/v.io/v23/services/syncbase/nosql/index.js
index e69a4de..9fab3d3 100644
--- a/src/gen-vdl/v.io/v23/services/syncbase/nosql/index.js
+++ b/src/gen-vdl/v.io/v23/services/syncbase/nosql/index.js
@@ -148,7 +148,7 @@
 _typeStoreChange.fields = [{name: "Value", type: _type4}, {name: "FromSync", type: vdl.types.BOOL}];
 _typeSyncgroupMemberInfo.kind = vdl.kind.STRUCT;
 _typeSyncgroupMemberInfo.name = "v.io/v23/services/syncbase/nosql.SyncgroupMemberInfo";
-_typeSyncgroupMemberInfo.fields = [{name: "SyncPriority", type: vdl.types.BYTE}];
+_typeSyncgroupMemberInfo.fields = [{name: "SyncPriority", type: vdl.types.BYTE}, {name: "IsServer", type: vdl.types.BOOL}];
 _typeSyncgroupSpec.kind = vdl.kind.STRUCT;
 _typeSyncgroupSpec.name = "v.io/v23/services/syncbase/nosql.SyncgroupSpec";
 _typeSyncgroupSpec.fields = [{name: "Description", type: vdl.types.STRING}, {name: "Perms", type: new access.Permissions()._type}, {name: "Prefixes", type: _type2}, {name: "MountTables", type: _type1}, {name: "IsPrivate", type: vdl.types.BOOL}];