installer: add option to extract overlord from toolkit
Ad an option '--extract-overlord' to allow the extraction of overlord
server from factory toolkit.
BUG=chrome-os-partner:41215
TEST=`./install_factory_toolkit.run -- --extract-overlord` then run
`./overlord/overlordd` to make sure it works.
Change-Id: Iadf0153a985a7fa4f876cec9f0ade1c7e9cb6e04
Reviewed-on: https://chromium-review.googlesource.com/276842
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Commit-Queue: Wei-Ning Huang <wnhuang@chromium.org>
Trybot-Ready: Wei-Ning Huang <wnhuang@chromium.org>
Tested-by: Wei-Ning Huang <wnhuang@chromium.org>
diff --git a/py/toolkit/installer.py b/py/toolkit/installer.py
index a371e7e..7ff36be 100755
--- a/py/toolkit/installer.py
+++ b/py/toolkit/installer.py
@@ -15,6 +15,7 @@
import argparse
from contextlib import contextmanager
import os
+import shutil
import sys
import tempfile
@@ -332,6 +333,25 @@
'\n' % {'board': target_board})
+def ExtractOverlord(src_root, output_dir):
+ output_dir = os.path.join(output_dir, 'overlord')
+ try:
+ os.makedirs(output_dir)
+ except OSError as e:
+ print str(e)
+ return
+
+ # Copy overlord binary and resource files
+ shutil.copyfile(os.path.join(src_root, 'usr/bin/overlordd'),
+ os.path.join(output_dir, 'overlordd'))
+ shutil.copytree(os.path.join(src_root, 'usr/share/overlord/app'),
+ os.path.join(output_dir, 'app'))
+
+ # Give overlordd execution permission
+ os.chmod(os.path.join(output_dir, 'overlordd'), 0755)
+ print "Extarcted overlord under '%s'" % output_dir
+
+
def main():
import logging
logging.basicConfig(level=logging.INFO)
@@ -389,6 +409,9 @@
parser.add_argument('--exe-path', dest='exe_path',
nargs='?', default=None,
help='Current self-extracting archive pathname')
+ parser.add_argument('--extract-overlord', dest='extract_overlord',
+ metavar='OUTPUT_DIR', type=str, default=None,
+ help='Extract overlord from the toolkit')
args = parser.parse_args()
@@ -402,6 +425,10 @@
InitUmpire(args.exe_path, src_root, args.umpire_board)
return
+ if args.extract_overlord is not None:
+ ExtractOverlord(src_root, args.extract_overlord)
+ return
+
# --pack-into may be called directly so this must be done before changing
# working directory to OLDPWD.
if args.pack_into and args.repack is None: