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)