def parse_make_n(f: Iterator[str]) -> List[Dict[str, str]]: """parse the output of `make -n <target>` This function makes many assumptions about the format of your build log. This happens to work right now for qmk. """ state = 'start' this_file = None records = [] for line in f: if state == 'start': m = file_re.search(line) if m: this_file = m.group(1) state = 'cmd' if state == 'cmd': assert this_file m = cmd_re.search(line) if m: # we have a hit! this_cmd = m.group(1) args = shlex.split(this_cmd) for s in system_libs(args[0]): args += ['-isystem', '%s' % s] new_cmd = ' '.join(shlex.quote(s) for s in args if s != '-mno-thumb-interwork') records.append({"directory": str(QMK_FIRMWARE.resolve()), "command": new_cmd, "file": this_file}) state = 'start' return records
def os_test_linux(): """Run the Linux specific tests. """ # Don't bother with udev on WSL, for now if 'microsoft' in platform.uname().release.lower(): cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.") # https://github.com/microsoft/WSL/issues/4197 if QMK_FIRMWARE.as_posix().startswith("/mnt"): cli.log.warning("I/O performance on /mnt may be extremely slow.") return CheckStatus.WARNING return CheckStatus.OK else: cli.log.info("Detected {fg_cyan}Linux{fg_reset}.") return check_udev_rules()