blob: 40e8aa64014d2c4e82c5240e8ab55e019b827b06 [file] [log] [blame]
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Build script that builds a binary from a bundle."""
from __future__ import print_function
import argparse
import os.path
import subprocess
import sys
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'--config',
required=True,
choices=['cros.hardened', 'cros.nonhardened', 'cros.host'])
parser.add_argument('--use_ccache', required=True, choices=['true', 'false'])
parser.add_argument('--old_wrapper_path', required=True)
parser.add_argument('--output_file', required=True, type=str)
return parser.parse_args()
def calc_go_args(args):
# See https://github.com/golang/go/issues/26492 for how to
# build a fully static binary in go.
ldFlags = [
'-X', 'main.ConfigName=' + args.config, '-X',
'main.UseCCache=' + args.use_ccache, '-X',
'main.OldWrapperPath=' + args.old_wrapper_path, "-extldflags '-static'"
]
return [
'go', 'build', '-o',
os.path.abspath(args.output_file), '-ldflags', ' '.join(ldFlags), '-tags',
'osusergo netgo static_build'
]
def main():
args = parse_args()
# Note: Go does not support using absolute package names.
# So we run go inside the directory of the the build file.
sys.exit(subprocess.call(calc_go_args(args), cwd=os.path.dirname(__file__)))
if __name__ == '__main__':
main()