import re import subprocess def is_gold_v1_12_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 < 12): return False return True if not is_gold_v1_12_linker_available(): config.unsupported = True