build.py 1.97 KB
Newer Older
‘oliver.hui’'s avatar
‘oliver.hui’ committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
'''
@File: build.py
@Description: CI Build Script
@Author: leon.li(l2m2lq@gmail.com)
@Date: 2019-09-12 08:53:45
'''

import argparse
import sys
import qtciutil
import os
import subprocess

def sincpm_bin(cmd):
  return qtciutil.common_cmd('SINCPM_BIN', cmd)

def sincpm_update():
  # check sincpm.json if exists
  ci_script_dir = os.path.dirname(os.path.realpath(__file__))
  filepath = os.path.join(ci_script_dir, "../sincpm.json")
  if not os.path.isfile(filepath):
    raise qtciutil.QtCiUtilError("no sincpm.json found.")

  # get platform infomation
  qt_verison_str = qtciutil.qt_version()
  qmake_spec_str = qtciutil.qmake_spec()
  compiler_str = qmake_spec_str.split('-')[1]
  if compiler_str == 'g++':
    compiler_str = 'gcc'
  os_system = qtciutil.platform_system()
  arch_str = 'x64'
  if os_system == 'windows':
    arch_str = 'x86'

  # sincpm update
  update_args = [sincpm_bin('sincpm'), 'update']
  update_args.append('--os=%s' % os_system)
  update_args.append('--qt=%s' % qt_verison_str)
  update_args.append('--compiler=%s' % compiler_str)
  update_args.append('--arch=%s' % arch_str)
  print("update_args: ", update_args)
  pinfo = subprocess.run(update_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  if pinfo.returncode != 0:
    raise qtciutil.QtCiUtilError("sincpm update failed.")

if __name__ == "__main__":
  parser = argparse.ArgumentParser(description='Build Arg Parser')
  parser.add_argument('--pro_file', '-p', type=str, required=True,
                      help='pro path', metavar='$CI_PROJECT_DIR/src/something.pro')
  parser.add_argument('--build_dir', '-b', type=str, required=True,
                      help='build directory', metavar='$CI_PROJECT_DIR/build')
  parser.add_argument('--mode', '-m', type=str, required=True,
                      help='debug or release', metavar='release')
  args = vars(parser.parse_args())
  pro_file = args['pro_file']
  build_dir = args['build_dir']
  mode = args['mode']
  sincpm_update()
  qtciutil.build(pro_file, build_dir, mode)