Fixes to onos_stage to include karaf.zip

Change-Id: Iae00ae0a47150b470a7fc409260ca21824af020e
diff --git a/buck-tools/onos_stage.py b/buck-tools/onos_stage.py
index f93790d..63e1f7f 100755
--- a/buck-tools/onos_stage.py
+++ b/buck-tools/onos_stage.py
@@ -5,6 +5,8 @@
 import os
 from zipfile import ZipFile
 from tarfile import TarFile, TarInfo
+import tarfile
+import time
 from cStringIO import StringIO
 
 VERSION = '1.6.0' #FIXME version, and maybe git commit hash
@@ -12,11 +14,14 @@
 
 
 written_files = set()
+now = time.time()
 
 def addFile(tar, dest, file, file_size):
     if dest not in written_files:
         info = TarInfo(dest)
         info.size = file_size
+        info.mtime = now
+        info.mode = 0777
         tar.addfile(info, fileobj=file)
         written_files.add(dest)
 
@@ -25,6 +30,8 @@
         print dest, string
         info = TarInfo(dest)
         info.size = len(string)
+        info.mtime = now
+        info.mode = 0777
         file = StringIO(string)
         tar.addfile(info, fileobj=file)
         file.close()
@@ -32,13 +39,14 @@
 
 def stageOnos(output, files=[]):
     # Note this is not a compressed zip
-    with TarFile(output, 'a') as output:
-        written_files = set(output.getnames())
+    with tarfile.open(output, 'w:gz') as output:
         for file in files:
             if '.zip' in file:
                 with ZipFile(file, 'r') as zip_part:
                     for f in zip_part.infolist():
-                        dest = BASE + 'apache-karaf-3.0.5/system/' + f.filename
+                        dest = f.filename
+                        if BASE not in dest:
+                            dest = BASE + 'apache-karaf-3.0.5/system/' + f.filename
                         addFile(output, dest, zip_part.open(f), f.file_size)
             elif '.oar' in file:
                 with ZipFile(file, 'r') as oar:
diff --git a/tools/package/BUCK b/tools/package/BUCK
index 27c0274..a452ce4 100644
--- a/tools/package/BUCK
+++ b/tools/package/BUCK
@@ -100,6 +100,6 @@
 genrule(
   name = 'onos-package',
   out = 'onos.tar.gz',
-  bash = 'cp $(location :onos-karaf) $OUT && $(exe //buck-tools:onos-stage) $OUT ' + ' '.join(sources),
+  bash = '$(exe //buck-tools:onos-stage) $OUT $(location :onos-karaf) ' + ' '.join(sources),
   visibility = [ 'PUBLIC' ],
 )
\ No newline at end of file
diff --git a/tools/package/onos-prep-karaf b/tools/package/onos-prep-karaf
index afda1c2..d1f561c 100755
--- a/tools/package/onos-prep-karaf
+++ b/tools/package/onos-prep-karaf
@@ -56,7 +56,7 @@
 cp -r init $PREFIX
 cp -r etc $PREFIX/$KARAF_DIR/etc/
 
-tar czf $OUT $PREFIX
+zip -q -0 -r $OUT $PREFIX
 
 #FIXME
 # Stage all builtin ONOS apps for factory install