---
name: "botch"
section: "1"
platform: "linux"
package: "botch"
version: "0.24-6+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/botch"
---

# botch(1)

bootstrap/build order tool chain

## NAME

botch - bootstrap/build order tool chain

## DESCRIPTION

botch is a collection of tools to create and analyze dependency graphs. This task is facilitated by a range of individual tools which use the deb822 and graphml formats to exchange information with each other.

Also consider browsing the HTML based doc-base Manual at */usr/share/doc/botch/wiki/Home.html*

The tools that botch ships allow one to:

- set operations on Packages or Sources files

  - **botch-packages-difference**: calculate the asymmetric set difference

    - **botch-packages-intersection**: calculate the set intersection

    - **botch-packages-union**: calculate the set union

    - transform Packages and Sources control files

  - **botch-latest-version**: only keep the latest version

    - **botch-bin2src**: convert binary packages to their source packages

    - **botch-src2bin**: turn source packages into their binary packages

    - **botch-clean-repository**: clean errors in a repository by removing transitively uninstallable or compilable packages

    - **botch-add-arch**: add architecture to source packages

    - **botch-convert-arch**: convert the architecture of a Packages file

    - **botch-remove-virtual-disjunctions**: remove virtual dependency disjunctions

    - **botch-optuniv**: self contained repository with minimal number of source packages

    - **botch-fix-cross-problems**: fix Packages files with the output of **botch-cross-problems**

    - **botch-filter-src-builds-for**: filter a Sources file for the packages building for a certain architecture

    - analysis of Packages and Sources control files

  - **botch-packages-diff**: create a diff between two Packages or Sources files

    - **botch-ma-diff**: diff two packages files for differences in their multiarch values

    - **botch-apply-ma-diff**: applies a multiarch diff as created by **botch-ma-diff**

    - **botch-check-ma-same-versions**: check if Multi-Arch:same versions are in sync

    - create graphs of different types

  - **botch-create-graph**: create graph based on installation sets, strong dependency sets or dependency closures

    - **botch-annotate-strong**: add strong dependency information to a dependency graph

    - conversion of graphs

  - **botch-buildgraph2srcgraph**: converts a buildgraph into a srcgraph

    - **botch-graphml2dot**: converts graphml to dot

    - **botch-collapse-srcgraph**: make a srcgraph acyclic by collapsing its strongly connected components

    - **botch-profile-build-fvs**: remove droppable dependencies from graph

    - **botch-buildgraph2packages**: convert buildgraph to packages

    - **botch-graph-tred**: find the transitive reduction of a graph in GraphML or dot format

    - **botch-graph2text**: for each vertex in a graph print a formatted line on standard output

    - extract regions from graphs

  - **botch-graph-neighborhood**: extract the neighborhood around a vertex

    - **botch-extract-scc**: extract all strongly connected components

    - **botch-graph-ancestors**: find all ancestors of a vertex in a graph in GraphML or dot format

    - **botch-graph-descendants**: find all descendants of a vertex in a graph in GraphML or dot format

    - **botch-graph-shortest-path**: find the shortest path(s) between two vertices of a graph in GraphML or dot format

    - **botch-graph-sinks**: find all sinks (vertices without successors) in a graph in GraphML or dot format

    - **botch-graph-sources**: find all sources (vertices without predecessors) in a graph in GraphML or dot format

    - dose3 wrappers

  - **botch-dose2html**: turn the yaml output by **dose-builddebcheck** into html

    - **botch-buildcheck-more-problems**: a tool like dose-builddebcheck but return more than the first reason

    - **botch-distcheck-more-problems**: a tool like dose-distcheck but return more than the first reason

    - analyze graphs

  - **botch-calcportsmetric**: calculate source package importance

    - **botch-calculate-fas**: calculate a feedback arc set

    - **botch-find-fvs**: calculate a feedback vertex set

    - **botch-graph-difference**: graph diff

    - **botch-graph-info**: show info about a buildgraph or sourcegraph

    - **botch-partial-order**: calculate the partial vertex order

    - **botch-print-stats**: find cycles, selfcycles, amount of cycles through edges, feedback arc and vertex set, strong articulation points and bridges

    - **botch-multiarch-interpreter-problem**: find all arch:all packages that allow switching architectures

    - create build orders

  - **botch-build-fixpoint**: find build order until dependency cycles occur

    - **botch-build-order-from-zero**: find a build order for a non-existing architecture

    - **botch-wanna-build-sortblockers**: importance of source packages for ports

    - handling of botch-internal formats

  - **botch-stat-html**: turn the JSON output of **botch-print-stats** into human readable HTML

    - **botch-droppable-diff**: difference between two \*.droppable files

    - **botch-droppable-union**: union of two \*.droppable files

    - **botch-checkfas**: check which edges in the fas are not droppable

    - **botch-fasofstats**: extract feedback arc set from output of **botch-print-stats**

    - **botch-download-pkgsrc**: download Packages and Sources

    - shell scripts connecting the tools for meaningful operations

  - **botch-cross**: execute botch tools in the cross phase

    - **botch-native**: execute botch tools in the native phase

    - **botch-transition**: calculate a transition order

    - **botch-y-u-no-bootstrap**: Find out why Debian cannot be bootstrapped.

    - **botch-y-u-b-d-transitive-essential**: Find out why source packages are B-D transitive essential.

    ## SEE ALSO

Debian doc-base Manual */usr/share/doc/botch/wiki/Home.html*

## AUTHOR

This man page was written by Johannes Schauer. Botch is written by Johannes Schauer and Pietro Abate.

## COPYRIGHT

Copyright 2012-2014 Johannes Schauer, Pietro Abate

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. A special linking exception to the GNU Lesser General Public License applies to this library, see the COPYING file for more information.
