X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=abs;h=487f57f9290b3bc9987cb464dfe121c2d35e6072;hb=5d05e7c56bae3be51b5e0a371d509883ecabd569;hp=bafea7afc5cbc2caee1a39e49aaa3dafbb8b059c;hpb=6735d58ea2747d79f4045cb04faf786daca501ec;p=scm%2Fmeta%2Fabs.git diff --git a/abs b/abs index bafea7a..487f57f 100755 --- a/abs +++ b/abs @@ -147,7 +147,7 @@ class _Rootstrap(object): def list_rootstrap(self, rootstrap_search=None): """List all the rootstraps""" - rs_prefix = 'mobile|wearable' + rs_prefix = 'mobile|wearable|tizeniot' if rootstrap_search is not None: rs_prefix = rootstrap_search print 'Set rs_prefix: %s' % rs_prefix @@ -191,13 +191,13 @@ class Sdk(object): 'tizen-sdk-ux/tools/ide/bin/tizen', \ 'tizen-sdk-cli/tools/ide/bin/tizen'] - def __init__(self, sdkpath=None, rootstrap_search=None): + def __init__(self, sdkpath=None, rootstrap_search=None, no_dbus=False): self.error_parser = ErrorParser() self.runtool = Executor(checker=self.error_parser) self.home = os.getenv('HOME') - self.config_file = os.path.join(g_home, '.abs') + self.config_file = os.path.join(g_home, '.absconfig') if sdkpath is None: self.tizen = self.get_user_root() @@ -215,6 +215,10 @@ class Sdk(object): raise LocalError('Fail to locate cli tool') self.rs = _Rootstrap(sdk_path=self.tizen, config=self.config_file, rootstrap_search=rootstrap_search) + if no_dbus != False: + self.no_dbus = True + else: + self.no_dbus = False def get_user_root(self): @@ -248,8 +252,14 @@ class Sdk(object): """Run a tizen command""" cmd = [self.tizen, command] + args + if command == 'package': + dbus_command = 'dbus-run-session -- bash; echo build | gnome-keyring-daemon --unlock; ' + if self.no_dbus == True: + dbus_command = ' ' + cmd = ['{} '.format(dbus_command)] + cmd print '\nRunning command:\n %s' % ' '.join(cmd) - return self.runtool.run(' '.join(cmd), show=show, checker=checker) + return self.runtool.run('{}'.format(' '.join(cmd)), \ + show=show, checker=checker) def copytree2(self, src, dst, symlinks=False, ignore=None): """Copy with Ignore & Overwrite""" @@ -394,6 +404,19 @@ class Sdk(object): if ret: raise LocalError(ret) + def raise_package_exception(self, out, output_dir, i, bname, appname): + logpath = os.path.join(output_dir, \ + 'package_%d_%s' % (i, bname)) + if not os.path.isdir(output_dir): + os.makedirs(output_dir) + with open(logpath + '.log', 'w') as lf: + lf.write(out) + if 'keystore password was incorrect' in out \ + or 'Sequence tag error' in out \ + or 'Signing... java.io.IOException: ' in out: + raise LocalError('signing error for %s.' % appname) + raise LocalError('TPK/WGT file not generated for %s.' % appname) + def package(self, source, cert=None, pkg_type=None, conf='Debug', manual_strip=False): """SDK CLI package command IF Debug + Manual Strip off then generate package-name-debug.tpk @@ -479,7 +502,7 @@ class Sdk(object): try: final_app = list_files(os.path.join(x['path'], conf), ext='tpk')[0] except: - raise LocalError('TPK file not generated for %s.' % x['APPNAME']) + self.raise_package_exception(out, source.output_dir, i, os.path.basename(x['path']), x['APPNAME']) x['out_package'] = final_app elif x['type'] == 'sharedLib': self._package_sharedlib(x['path'], conf, x['APPNAME']) @@ -493,7 +516,7 @@ class Sdk(object): try: final_app = list_files(os.path.join(x['path'], '.buildResult'), ext='wgt')[0] except: - raise LocalError('WGT file not generated for %s.' % x['APPNAME']) + self.raise_package_exception(out, source.output_dir, i, os.path.basename(x['path']), x['APPNAME']) x['out_package'] = final_app if source.b_multi == True: @@ -507,14 +530,14 @@ class Sdk(object): extra_args.extend(['--', '"%s"' % final_app]) if final_app.endswith('.tpk'): - out = self._run('package', main_args + extra_args) + out = '%s\n\n%s' % (out, self._run('package', main_args + extra_args)) elif final_app.endswith('.wgt'): - out = self._run('package', main_args_web + extra_args) + out = '%s\n\n%s' % (out, self._run('package', main_args_web + extra_args)) #TODO: signature validation check failed : Invalid file reference. An unsigned file was found. if final_app.endswith('.tpk'): print 'Packaging final step again!' - out = self._run('package', main_args + ['--', '"%s"' % final_app]) + out = '%s\n\n%s' % (out, self._run('package', main_args + ['--', '"%s"' % final_app])) #Append arch to web binary #if final_app.endswith('.wgt'): @@ -534,6 +557,7 @@ class Sdk(object): else : shutil.copy(final_app, source.output_dir) + def clean(self, source): """SDK CLI clean command""" @@ -652,6 +676,8 @@ def argument_parsing(argv): help='Extra compile options USER_CPP_OPTS') build.add_argument('--link-opts', action='store', dest='link_opts', \ help='Extra linking options USER_LINK_OPTS') + build.add_argument('--no-dbus', action='store', dest='no_dbus', default=False, \ + help='Do not run dbus session before packaging') return parser.parse_args(argv[1:]) @@ -665,7 +691,7 @@ def build_main(args): print '-------------------' print '(%s)' % args.profiletosearch print '-------------------' - my_sdk = Sdk(sdkpath=args.sdkpath, rootstrap_search=args.profiletosearch) + my_sdk = Sdk(sdkpath=args.sdkpath, rootstrap_search=args.profiletosearch, no_dbus=args.no_dbus) my_sdk.clean(my_source) my_sdk.build_tizen(my_source, rootstrap=args.rootstrap, arch=args.arch, jobs=args.jobs) if args.conf == 'Debug' : @@ -704,4 +730,6 @@ if __name__ == '__main__': os.makedirs('_abs_out_') with open(os.path.join('_abs_out_', 'build_EXCEPTION.log'), 'w') as ef: ef.write('Exception %s' % repr(e)) - sys.exit(1) + if 'keystore password was incorrect' in repr(e): + sys.exit(99) + sys.exit(77)