Skip to content
You must be logged in to sponsor rizsotto

Become a sponsor to László Nagy

@rizsotto

László Nagy

rizsotto
Sydney/Australia

In short

Earlier I created a tool to build compilation database for Clang tools. My plan is to extend this tool to generate a semantic description of a build and provide more details how the build was done. This will fix a few long standing issues with the tool, but give more functionality too.

In details

The tool I'm talking about is Bear, which is now written in C and Python. It captures the executed processes command lines (with pre-loading mechanism of the dynamic linker) and creates a JSON file.

Would like to extend the capture mechanism to use compiler wrappers and ptrace, besides the existing library pre-load technique. And capture not only the process creation, but also supervise the execution and get the exit codes of the processes.

Since the current output format contains only compiler calls with specific fields, the extra information are not represented. My plan to come up with an output format which can contains all details that the tool is capturing.

Targeted use cases

The two relevant changes are the new capture techniques and the new output format. These will allow to support the following use cases:

  • Support the existing compilation database creation.
    • Cover more scenarios where the build tools are statically linked, or have security restrictions, etc..
    • Allow to control the output format in details. Like use relative paths to in the compilation description.
    • Support to merge two independent project build results. And if the projects are dependent on each other, make the file dependencies unique. This will allow to run static analyser across multiple modules, even from multiple projects.
  • The verbose output contains time information, therefore give the users an opportunity to profile their build process.
  • The verbose output might be annotate the process executions, that can be used to migrate from one build tool to another. Even better, this process can be automated and conversion tools can aid the migration process.

Current sponsors 1

@maflcko
Past sponsors 4
@Yvan-xy
@the-shank
@tyleragreen
Private Sponsor

Featured work

  1. rizsotto/Bear

    Bear is a tool that generates a compilation database for clang tooling.

    C++ 5,095
  2. rizsotto/Constantine

    A plugin for Clang compiler

    C++ 115
  3. rizsotto/scan-build

    Clang's scan-build re-implementation in python

    Python 365
  4. rizsotto/Grldd

    Haskell learning project.

    Haskell 2
  5. rizsotto/workingontologist

    Code examples for http://workingontologist.org/

    Shell
  6. rizsotto/json_compilation_db

    Rust crate to read/write JSON compilation database file.

    Rust 3

Select a tier

$ a month

Choose a custom amount.

$5 a month

Select

You buy me a scoop of ice cream.

$20 a month

Select

You buy me a big lunch.