import re import subprocess def is_gold_v1_16_linker_available(): if not config.gold_executable: return False try: ld_cmd = subprocess.Popen( [config.gold_executable, "-v"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) ld_out, _ = ld_cmd.communicate() ld_out = ld_out.decode() except: return False match = re.search(r"GNU gold \(.*\) (\d+)\.(\d+)", ld_out) if not match: return False major = int(match.group(1)) minor = int(match.group(2)) if major < 1 or (major == 1 and minor < 16): return False return True if not is_gold_v1_16_linker_available(): config.unsupported = True