#header #difference #repository #path #parameters #searcher #libhif

app feaders

Header file searcher using libhif written in Rust

1 unstable release

Uses old Rust 2015

0.2.0 Apr 24, 2016

#11 in #searcher

GPLv3 license

1.5MB
30K SLoC

feaders-rs

Clippy Linting Result

Reimplementation of the Feaders project in Rust.

Usage

$ feaders -h
Usage: feaders [options] PATH

Options:
    -h, --help          prints this menu
    -r, --repo          repository to use for resolution
    -v, --verbose       verbose mode
    -d, --deduplicate   try to deduplicate headers
        --version       display version information

(note: the repository parameter is currently ignored and all repositories found in /etc/yum.repos.d/ are searched)

Example run:

$ feaders -d ../Pillow/
python-devel-2.7.10-8.fc22.x86_64
tk-devel-1:8.6.4-2.fc22.x86_64
libjpeg-turbo-devel-1.4.0-2.fc22.x86_64
libtiff-devel-4.0.3-21.fc22.x86_64
openjpeg-devel-1.5.1-14.fc22.x86_64
zlib-devel-1.2.8-7.fc22.x86_64
lcms2-devel-2.7-1.fc22.x86_64
libwebp-devel-0.4.4-1.fc22.x86_64

Differences from original Feaders

Aside from being written in Rust instead of Python, feaders-rs takes a different stab at searching repositories. The original implementation relied on librepo to download sqlite representation of repositories and split the workflow into a client/server part, where the client was used to search the file system for C/C++ files, extract #include statements and query the server which performed all the sqlite queries.

feaders-rs uses libhif to faciliate the search via libsolv queries. FFI definitions for libhif were auto generated using rust-bindgen and the Dockerized generator is available in it's own repository rust-libhif.

Notes

I've used this project to actually learn Rust on the go, if you catch a silly mistake or just "bad Rust" please open an issue or send a pull request.

Dependencies

~5.5MB
~104K SLoC