dry run for all common

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2018-10-18 00:00:00 +00:00
parent 23a9d767ba
commit cb3d8929ba
4 changed files with 16 additions and 7 deletions

View File

@@ -3787,6 +3787,8 @@ although this can be useful when someone gives you a random image.
TODO: explain link:update-buildroot-kernel-config[]
TODO: mention `--dry-run`
TODO Beware that Buildroot can `sed` override some of the configurations we make no matter what, e.g. it forces `CONFIG_BLK_DEV_INITRD=y` when `BR2_TARGET_ROOTFS_CPIO` is on, so you might want to double check as explained at <<find-the-kernel-config>>. TODO check if there is a way to prevent that patching and maybe patch Buildroot for it, it is too fuzzy. People should be able to just build with whatever `.config` they want.
We have managed to come up with minimalistic kernel configs that work for both QEMU and gem5 (oh, the hours of bisection).

4
build
View File

@@ -153,9 +153,7 @@ passing this option multiple times. Default: [{}]
'''.format(common.default_arch))
for component in component_names:
add_bool_arg(parser, component)
parser.add_argument('--dry-run', default=False, action='store_true', help='''\
Print the commands that would be run, but don't run them.
''')
common.add_dry_run_argument(parser)
args = parser.parse_args()
# Decide archs.

View File

@@ -20,7 +20,8 @@ args = common.setup(parser)
if args.clean:
common.rmrf(common.linux_build_dir)
else:
start_time = time.time()
if not common.dry_run:
start_time = time.time()
os.makedirs(common.linux_build_dir, exist_ok=True)
shutil.copy2(
os.path.join(common.linux_config_dir, 'buildroot-{}'.format(args.arch)),
@@ -82,5 +83,6 @@ else:
),
**common_args,
) == 0
end_time = time.time()
common.print_time(end_time - start_time)
if not common.dry_run:
end_time = time.time()
common.print_time(end_time - start_time)

View File

@@ -80,6 +80,11 @@ def add_build_arguments(parser):
action='store_true',
)
def add_dry_run_argument(parser):
parser.add_argument('--dry-run', default=False, action='store_true', help='''\
Print the commands that would be run, but don't run them.
''')
def base64_encode(string):
return base64.b64encode(string.encode()).decode()
@@ -122,6 +127,7 @@ def get_argparse(default_args=None, argparse_args=None):
formatter_class=argparse.RawTextHelpFormatter,
**argparse_args
)
this.add_dry_run_argument(parser)
parser.add_argument(
'-a', '--arch', choices=this.arch_choices, default=this.default_arch,
help='CPU architecture. Default: %(default)s'
@@ -508,7 +514,7 @@ def run_cmd(
#sigpipe_old = signal.getsignal(signal.SIGPIPE)
#signal.signal(signal.SIGPIPE, signal.SIG_DFL)
if not dry_run:
if not dry_run and not this.dry_run:
# https://stackoverflow.com/questions/15535240/python-popen-write-to-stdout-and-log-file-simultaneously/52090802#52090802
with subprocess.Popen(cmd, stdout=stdout, stderr=stderr, env=env, **kwargs) as proc:
if out_file is not None:
@@ -550,6 +556,7 @@ def setup(parser):
if args.gem5_worktree is not None and not gem5_build_id_given:
args.gem5_build_id = args.gem5_worktree
this.machine = args.machine
this.dry_run = args.dry_run
if args.arch == 'arm':
this.armv = 7
this.gem5_arch = 'ARM'