An open API service indexing awesome lists of open source software.

https://github.com/fedora-modularity/depchase

Tools for chasing RPM dependencies with DNF
https://github.com/fedora-modularity/depchase

Last synced: about 1 year ago
JSON representation

Tools for chasing RPM dependencies with DNF

Awesome Lists containing this project

README

          

# depchase

The depchase tool is an simple script to lookup runtime (and/or buildtime)
requirements of package(s).

## Setup

- python3-solv >= 0.6.30-3.git.2887.97b8c0c (https://copr.fedorainfracloud.org/coprs/ignatenkobrain/libsolv-latest/ as temporary workaround)
- python3-click
- python3-smartcols

## Installation

```
$ python3 setup.py install --user
```

You need to download files ending in `-primary.xml.gz` and `-filelists.xml.gz` and a file `repomd.xml` for each architecture you want to search through and for the sources. For Fedora rawhide you can download them from here:
* https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/
* https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/source/tree/repodata/

The directory structure should be as follows:
```
repos
├── sources
│   └── repodata
│   ├── 41989692c9d39640c5e9321b3d3b33ac9677d12cbae4c87a51e2f4f9977dee2e-filelists.xml.gz
│   ├── 85006762236a619d384209fda289d0ff02fc296400bdf48bc1c6a524b499c459-primary.xml.gz
│   └── repomd.xml
└── x86_64
└── repodata
├── 4e9d08a9d6ce135fb28c6a4df1fbabed317e16eba21f7acb814cc6c37ef4cca0-primary.xml.gz
├── 51a55ad79b12153b8c39b9fcceaa88c4f1d208100e9918f5cdf88e89920dedac-filelists.xml.gz
└── repomd.xml
```

And the repos.cfg file should contain:

```
[DEFAULT]
basedir = /path/to/the/repos/ # FILL HERE THE CORRECT PATH

[base]
path = ${DEFAULT:basedir}/{arch}
[base-source]
path = ${DEFAULT:basedir}/sources
```

## Usage

```
$ depchase -a x86_64 -c repos.cfg resolve [--selfhost] foo --hint bar
```

`--selfhost` switches to searching of build dependencies

### Output

Output is a list of binary and source packages which were required for
resolution. You can parse them into multiple files using simple bash
script:

```bash
#!/bin/bash -eu

PREFIX=$1
> $PREFIX-binary-packages-full.txt
> $PREFIX-binary-packages-short.txt
> $PREFIX-source-packages-full.txt
> $PREFIX-source-packages-short.txt
while read -r nevra; do
[[ "$nevra" == *.src || "$nevra" == *.nosrc ]] && type_="source" || type_="binary"
name=${nevra%-*-*}
echo "$nevra" >> $PREFIX-$type_-packages-full.txt
echo "$name" >> $PREFIX-$type_-packages-short.txt
done

export LC_ALL=C
for f in $PREFIX-{binary,source}-packages-{full,short}.txt; do
sort -u $f -o $f
done
```