Changeset View
Changeset View
Standalone View
Standalone View
contrib/gitian-build.py
Show First 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | def build(): | ||||
os.makedirs('inputs', exist_ok=True) | os.makedirs('inputs', exist_ok=True) | ||||
subprocess.check_call(['make', '-C', '../bitcoin-abc/depends', | subprocess.check_call(['make', '-C', '../bitcoin-abc/depends', | ||||
'download', 'SOURCES_PATH=' + os.getcwd() + '/cache/common']) | 'download', 'SOURCES_PATH=' + os.getcwd() + '/cache/common']) | ||||
output_dir_src = '../' + base_output_dir + '/src' | output_dir_src = '../' + base_output_dir + '/src' | ||||
if args.linux: | if args.linux: | ||||
print('\nCompiling ' + args.version + ' Linux') | print('\nCompiling ' + args.version + ' Linux') | ||||
subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin='+args.commit, | subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin=' + args.commit, | ||||
'--url', 'bitcoin='+args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | '--url', 'bitcoin=' + args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | ||||
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | ||||
'-linux', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | '-linux', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | ||||
output_dir_linux = '../' + base_output_dir + '/linux' | output_dir_linux = '../' + base_output_dir + '/linux' | ||||
os.makedirs(output_dir_linux, exist_ok=True) | os.makedirs(output_dir_linux, exist_ok=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*.tar.gz ' + output_dir_linux, shell=True) | 'mv build/out/bitcoin-*.tar.gz ' + output_dir_linux, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | 'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv result/bitcoin-*-linux-res.yml ' + output_dir_linux, shell=True) | 'mv result/bitcoin-*-linux-res.yml ' + output_dir_linux, shell=True) | ||||
if args.windows: | if args.windows: | ||||
print('\nCompiling ' + args.version + ' Windows') | print('\nCompiling ' + args.version + ' Windows') | ||||
subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin='+args.commit, | subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin=' + args.commit, | ||||
'--url', 'bitcoin='+args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | '--url', 'bitcoin=' + args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | ||||
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | ||||
'-win-unsigned', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | '-win-unsigned', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | ||||
output_dir_win = '../' + base_output_dir + '/win' | output_dir_win = '../' + base_output_dir + '/win' | ||||
os.makedirs(output_dir_win, exist_ok=True) | os.makedirs(output_dir_win, exist_ok=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*-win-unsigned.tar.gz inputs/', shell=True) | 'mv build/out/bitcoin-*-win-unsigned.tar.gz inputs/', shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ' + output_dir_win, shell=True) | 'mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ' + output_dir_win, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | 'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv result/bitcoin-*-win-res.yml ' + output_dir_win, shell=True) | 'mv result/bitcoin-*-win-res.yml ' + output_dir_win, shell=True) | ||||
if args.macos: | if args.macos: | ||||
print('\nCompiling ' + args.version + ' MacOS') | print('\nCompiling ' + args.version + ' MacOS') | ||||
subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin='+args.commit, | subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'bitcoin=' + args.commit, | ||||
'--url', 'bitcoin='+args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | '--url', 'bitcoin=' + args.url, '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | ||||
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + | ||||
'-osx-unsigned', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | '-osx-unsigned', '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | ||||
output_dir_osx = '../' + base_output_dir + '/osx' | output_dir_osx = '../' + base_output_dir + '/osx' | ||||
os.makedirs(output_dir_osx, exist_ok=True) | os.makedirs(output_dir_osx, exist_ok=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/', shell=True) | 'mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/', shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ' + output_dir_osx, shell=True) | 'mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ' + output_dir_osx, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | 'mv build/out/src/bitcoin-*.tar.gz ' + output_dir_src, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv result/bitcoin-*-osx-res.yml ' + output_dir_osx, shell=True) | 'mv result/bitcoin-*-osx-res.yml ' + output_dir_osx, shell=True) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
if args.commit_files: | if args.commit_files: | ||||
print('\nCommitting '+args.version+' Unsigned Sigs\n') | print('\nCommitting ' + args.version + ' Unsigned Sigs\n') | ||||
os.chdir('gitian.sigs') | os.chdir('gitian.sigs') | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'add', args.version+'-linux/'+args.signer]) | ['git', 'add', args.version + '-linux/' + args.signer]) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'add', args.version+'-win-unsigned/'+args.signer]) | ['git', 'add', args.version + '-win-unsigned/' + args.signer]) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'add', args.version+'-osx-unsigned/'+args.signer]) | ['git', 'add', args.version + '-osx-unsigned/' + args.signer]) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'commit', '-m', 'Add '+args.version+' unsigned sigs for '+args.signer]) | ['git', 'commit', '-m', 'Add ' + args.version + ' unsigned sigs for ' + args.signer]) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
def sign(): | def sign(): | ||||
global args, workdir | global args, workdir | ||||
os.chdir('gitian-builder') | os.chdir('gitian-builder') | ||||
if args.windows: | if args.windows: | ||||
print('\nSigning ' + args.version + ' Windows') | print('\nSigning ' + args.version + ' Windows') | ||||
subprocess.check_call('cp inputs/bitcoin-' + args.version + | subprocess.check_call('cp inputs/bitcoin-' + args.version + | ||||
'-win-unsigned.tar.gz inputs/bitcoin-win-unsigned.tar.gz', shell=True) | '-win-unsigned.tar.gz inputs/bitcoin-win-unsigned.tar.gz', shell=True) | ||||
subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, | subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature=' + args.commit, | ||||
'../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | '../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | ||||
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', | subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + '-win-signed', | ||||
'--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*win64-setup.exe ../bitcoin-binaries/'+args.version, shell=True) | 'mv build/out/bitcoin-*win64-setup.exe ../bitcoin-binaries/' + args.version, shell=True) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
'mv build/out/bitcoin-*win32-setup.exe ../bitcoin-binaries/'+args.version, shell=True) | 'mv build/out/bitcoin-*win32-setup.exe ../bitcoin-binaries/' + args.version, shell=True) | ||||
if args.macos: | if args.macos: | ||||
print('\nSigning ' + args.version + ' MacOS') | print('\nSigning ' + args.version + ' MacOS') | ||||
subprocess.check_call('cp inputs/bitcoin-' + args.version + | subprocess.check_call('cp inputs/bitcoin-' + args.version + | ||||
'-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz', shell=True) | '-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz', shell=True) | ||||
subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, | subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature=' + args.commit, | ||||
'../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | ||||
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', | subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version + '-osx-signed', | ||||
'--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | '--destination', '../gitian.sigs/', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | ||||
subprocess.check_call('mv build/out/bitcoin-osx-signed.dmg ../bitcoin-binaries/' + | subprocess.check_call('mv build/out/bitcoin-osx-signed.dmg ../bitcoin-binaries/' + | ||||
args.version+'/bitcoin-'+args.version+'-osx.dmg', shell=True) | args.version + '/bitcoin-' + args.version + '-osx.dmg', shell=True) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
if args.commit_files: | if args.commit_files: | ||||
print('\nCommitting '+args.version+' Signed Sigs\n') | print('\nCommitting ' + args.version + ' Signed Sigs\n') | ||||
os.chdir('gitian.sigs') | os.chdir('gitian.sigs') | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'add', args.version+'-win-signed/'+args.signer]) | ['git', 'add', args.version + '-win-signed/' + args.signer]) | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'add', args.version+'-osx-signed/'+args.signer]) | ['git', 'add', args.version + '-osx-signed/' + args.signer]) | ||||
subprocess.check_call(['git', 'commit', '-a', '-m', 'Add ' + | subprocess.check_call(['git', 'commit', '-a', '-m', 'Add ' + | ||||
args.version+' signed binary sigs for '+args.signer]) | args.version + ' signed binary sigs for ' + args.signer]) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
def verify(): | def verify(): | ||||
global args, workdir | global args, workdir | ||||
os.chdir('gitian-builder') | os.chdir('gitian-builder') | ||||
print('\nVerifying v'+args.version+' Linux\n') | print('\nVerifying v' + args.version + ' Linux\n') | ||||
subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | ||||
'-linux', '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | '-linux', '../bitcoin-abc/contrib/gitian-descriptors/gitian-linux.yml']) | ||||
print('\nVerifying v'+args.version+' Windows\n') | print('\nVerifying v' + args.version + ' Windows\n') | ||||
subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | ||||
'-win-unsigned', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | '-win-unsigned', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win.yml']) | ||||
print('\nVerifying v'+args.version+' MacOS\n') | print('\nVerifying v' + args.version + ' MacOS\n') | ||||
subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | ||||
'-osx-unsigned', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | '-osx-unsigned', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx.yml']) | ||||
print('\nVerifying v'+args.version+' Signed Windows\n') | print('\nVerifying v' + args.version + ' Signed Windows\n') | ||||
subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | ||||
'-win-signed', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | '-win-signed', '../bitcoin-abc/contrib/gitian-descriptors/gitian-win-signer.yml']) | ||||
print('\nVerifying v'+args.version+' Signed MacOS\n') | print('\nVerifying v' + args.version + ' Signed MacOS\n') | ||||
subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | subprocess.check_call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version + | ||||
'-osx-signed', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | '-osx-signed', '../bitcoin-abc/contrib/gitian-descriptors/gitian-osx-signer.yml']) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
def main(): | def main(): | ||||
global args, workdir | global args, workdir | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | def main(): | ||||
# Disable for MacOS if no SDK found | # Disable for MacOS if no SDK found | ||||
if args.macos and not os.path.isfile('gitian-builder/inputs/MacOSX10.11.sdk.tar.gz'): | if args.macos and not os.path.isfile('gitian-builder/inputs/MacOSX10.11.sdk.tar.gz'): | ||||
print('Cannot build for MacOS, SDK does not exist. Will build for other OSes') | print('Cannot build for MacOS, SDK does not exist. Will build for other OSes') | ||||
args.macos = False | args.macos = False | ||||
script_name = os.path.basename(sys.argv[0]) | script_name = os.path.basename(sys.argv[0]) | ||||
# Signer and version shouldn't be empty | # Signer and version shouldn't be empty | ||||
if args.signer == '': | if args.signer == '': | ||||
print(script_name+': Missing signer.') | print(script_name + ': Missing signer.') | ||||
print('Try '+script_name+' --help for more information') | print('Try ' + script_name + ' --help for more information') | ||||
exit(1) | exit(1) | ||||
if args.version == '': | if args.version == '': | ||||
print(script_name+': Missing version.') | print(script_name + ': Missing version.') | ||||
print('Try '+script_name+' --help for more information') | print('Try ' + script_name + ' --help for more information') | ||||
exit(1) | exit(1) | ||||
# Add leading 'v' for tags | # Add leading 'v' for tags | ||||
if args.commit and args.pull: | if args.commit and args.pull: | ||||
raise Exception('Cannot have both commit and pull') | raise Exception('Cannot have both commit and pull') | ||||
args.commit = ('' if args.commit else 'v') + args.version | args.commit = ('' if args.commit else 'v') + args.version | ||||
if args.setup: | if args.setup: | ||||
setup() | setup() | ||||
os.chdir('bitcoin-abc') | os.chdir('bitcoin-abc') | ||||
if args.pull: | if args.pull: | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'fetch', args.url, 'refs/pull/'+args.version+'/merge']) | ['git', 'fetch', args.url, 'refs/pull/' + args.version + '/merge']) | ||||
os.chdir('../gitian-builder/inputs/bitcoin') | os.chdir('../gitian-builder/inputs/bitcoin') | ||||
subprocess.check_call( | subprocess.check_call( | ||||
['git', 'fetch', args.url, 'refs/pull/'+args.version+'/merge']) | ['git', 'fetch', args.url, 'refs/pull/' + args.version + '/merge']) | ||||
args.commit = subprocess.check_output( | args.commit = subprocess.check_output( | ||||
['git', 'show', '-s', '--format=%H', 'FETCH_HEAD'], universal_newlines=True, encoding='utf8').strip() | ['git', 'show', '-s', '--format=%H', 'FETCH_HEAD'], universal_newlines=True, encoding='utf8').strip() | ||||
args.version = 'pull-' + args.version | args.version = 'pull-' + args.version | ||||
print(args.commit) | print(args.commit) | ||||
subprocess.check_call(['git', 'fetch']) | subprocess.check_call(['git', 'fetch']) | ||||
subprocess.check_call(['git', 'checkout', args.commit]) | subprocess.check_call(['git', 'checkout', args.commit]) | ||||
os.chdir(workdir) | os.chdir(workdir) | ||||
Show All 12 Lines |