Skip to main content
Glama
show_headers_to_dep_file.py2.07 kB
#!/usr/bin/env python3 # Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under both the MIT license found in the # LICENSE-MIT file in the root directory of this source tree and the Apache # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. # pyre-unsafe import re import sys from subprocess import PIPE, run import dep_file_utils # output_path -> path to write the dep file to # cmd_args -> command to be run to get dependencies from compiler # input_file -> Path to the file we're generating the dep file for. We need this since # when generating dependencies for a file using show_headers, the output does not include # the file itself, so we need the path to add it manually def process_show_headers_dep_file(output_path, cmd_args, input_file): ret = run(cmd_args, stderr=PIPE, encoding="utf-8") parse_into_dep_file(ret.stderr, output_path, input_file, ret.returncode) sys.exit(ret.returncode) def parse_into_dep_file(output, dst_path, input_file, returncode): """ Convert stderr generated by clang to dep file. This will be a mix of output like: warning: this is a warning! .path/to/dep1.h ..path/to/dep2.h ...path/to/dep3.h and we want to get: path/to/dep1.h path/to/dep2.h path/to/dep3.h """ lines = output.splitlines() if returncode == 0: deps = [] for line in lines: if line.startswith("."): path = remove_leading_dots(line.replace(" ", "")) if len(path) > 0: deps.append(path.strip()) continue print(line, file=sys.stderr) # This was a warning/error deps.append(input_file) dep_file_utils.normalize_and_write_deps(deps, dst_path) else: for line in lines: if re.match(r"^\.+ ", line): continue print(line, file=sys.stderr) def remove_leading_dots(s): while s.startswith("."): s = s[1:] return s

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server