LinuxCommandLibrary

blight

Erase all data on a block device

TLDR

Set display brightness to 50%

$ blight set [50] [[-r|--relative]]
copy

Show current display brightness
$ blight show
copy

Print maximum display brightness
$ blight max
copy

Increase display brightness in %
$ blight inc [number] [[-r|--relative]]
copy

Decrease display brightness with internal units
$ blight dec [number]
copy

SYNOPSIS

blight [OPTIONS] -- COMMAND [ARGS...]

PARAMETERS

-o FILE, --output FILE
    Specify the output file path for collected build data.

--json
    Output the collected data in JSON format.

-v, --verbose
    Increase verbosity of blight's own messages.

--trace-exec
    Enable tracing of execve (program execution) system calls.

--trace-open
    Enable tracing of open (file access) system calls.

--trace-stat
    Enable tracing of stat (file metadata) system calls.

--all-syscalls
    Trace all supported system calls (default behavior).

--only-exec
    Only trace execve system calls, disabling others.

--ignore-exec PATTERN
    Do not trace executions matching the given pattern.

--ignore-open PATTERN
    Do not trace file opens matching the given pattern.

--ignore-stat PATTERN
    Do not trace file stats matching the given pattern.

--config FILE
    Load configuration from the specified file.

--no-default-config
    Prevent loading of default configuration files.

-h, --help
    Display a help message and exit.

--version
    Display version information and exit.

--
    Separator that indicates all subsequent arguments belong to the COMMAND being instrumented.

DESCRIPTION

blight is a powerful Linux command-line tool designed for comprehensive analysis and instrumentation of software build processes. It acts as a wrapper around existing build commands (e.g., make, cmake), intercepting system calls such as execve, open, and stat to meticulously record all file accesses, command executions, and inter-process communications that occur during a build. This detailed logging provides invaluable insights into a project's build graph, exact dependencies, and potential inefficiencies. The collected data can be used for various purposes, including optimizing build times, ensuring build reproducibility, identifying redundant operations, or enhancing software supply chain security by understanding exactly what resources are touched during compilation and linking. Its primary goal is to provide a granular view into the "black box" of complex software builds, transforming implicit behaviors into explicit, analyzable data.

CAVEATS

blight relies on system call interposition (e.g., using ptrace or LD_PRELOAD), which can introduce performance overhead to the build process. It may also encounter compatibility issues with certain sandboxing environments, container runtimes, or highly optimized build configurations. It's primarily designed for tracing build processes and might not be suitable for general-purpose system call tracing.

USAGE MODEL

blight is typically invoked by prefixing your standard build command. For example, to trace a make build, you would run
blight -- make all.
The collected data, often in JSON format, can then be processed by other tools for visualization, analysis, or dependency graph generation.

HISTORY

Developed by the blight-build organization, blight emerged to address the growing need for deeper introspection into complex software build systems. Its development focuses on providing a robust, cross-platform solution for capturing granular build data, which is crucial for modern software development practices like supply chain security, build reproducibility initiatives, and build performance optimization. It leverages OS-specific mechanisms (like ptrace on Linux or library interposition) to achieve its tracing capabilities.

SEE ALSO

make(1), cmake(1), meson(1), strace(1), ltrace(1)

Copied to clipboard