#!/usr/bin/env python # Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Replacement for the deprecated sysroot_ld_path.sh implementation in Chrome. """ Reads etc/ld.so.conf and/or etc/ld.so.conf.d/*.conf and returns the appropriate linker flags. """ from __future__ import print_function import argparse import glob import os import sys LD_SO_CONF_REL_PATH = "etc/ld.so.conf" LD_SO_CONF_D_REL_PATH = "etc/ld.so.conf.d" def parse_args(args): p = argparse.ArgumentParser(__doc__) p.add_argument('sysroot_path', nargs=1, help='Path to sysroot root folder') return os.path.abspath(p.parse_args(args).sysroot_path[0]) def process_entry(sysroot_path, entry): assert (entry.startswith('/')) print(os.path.join(sysroot_path, entry.strip()[1:])) def process_ld_conf_file(sysroot_path, conf_file_path): with open(conf_file_path, 'r') as f: for line in f.readlines(): if line.startswith('#'): continue process_entry(sysroot_path, line) def process_ld_conf_folder(sysroot_path, ld_conf_path): files = glob.glob(os.path.join(ld_conf_path, '*.conf')) for file in files: process_ld_conf_file(sysroot_path, file) def process_ld_conf_files(sysroot_path): conf_path = os.path.join(sysroot_path, LD_SO_CONF_REL_PATH) conf_d_path = os.path.join(sysroot_path, LD_SO_CONF_D_REL_PATH) if os.path.isdir(conf_path): process_ld_conf_folder(sysroot_path, conf_path) elif os.path.isdir(conf_d_path): process_ld_conf_folder(sysroot_path, conf_d_path) def main(args): sysroot_path = parse_args(args) process_ld_conf_files(sysroot_path) if __name__ == '__main__': try: sys.exit(main(sys.argv[1:])) except Exception as e: sys.stderr.write(str(e) + '\n') sys.exit(1)