Source: botch
Section: utils
Priority: optional
Maintainer: Johannes Schauer <josch@debian.org>
Homepage: https://gitlab.mister-muffin.de/debian-bootstrap/botch/wikis/home
Standards-Version: 3.9.6
# these are needed to run debian/rules clean
Build-Depends:
 debhelper (>= 9),
 dh-ocaml,
 ocaml-nox,
 python3,
Build-Depends-Arch:
 cppo,
 ocaml-findlib,
 libextlib-ocaml-dev,
 libocamlgraph-ocaml-dev,
 libatdgen-ocaml-dev (>= 1.9.1-2),
 libxmlm-ocaml-dev,
 libparmap-ocaml-dev,
 libdose3-ocaml-dev (>= 5.0.1-1),
 dose-builddebcheck (>= 5.0.1-1) <!nocheck>,
 dose-extra (>= 5.0.1-1)         <!nocheck>,
 dctrl-tools                     <!nocheck>,
 aspcud                          <!nocheck>,
 python3-apt                     <!nocheck>,
 python3-debian                  <!nocheck>,
 python3-networkx                <!nocheck>,
 python3-yaml                    <!nocheck>,
 pep8                            <!nocheck>,
 pyflakes3                       <!nocheck>,
 python3-pygraphviz              <!nocheck>,
 gsfonts                         <!nocheck>,
 libgraph-easy-perl              <!nocheck>,
 graphviz                        <!nocheck>,
Build-Depends-Indep:
 markdown <!nodoc>,
 graphviz <!nodoc>,
Vcs-Browser: https://browse.dgit.debian.org/botch.git/
Vcs-Git: https://git.dgit.debian.org/dgit

Package: botch
Architecture: any
Depends:
 ${ocaml:Depends},
 ${misc:Depends},
 ${shlibs:Depends},
 ${python3:Depends},
 dose-builddebcheck (>= 5.0.1-1),
 dose-extra (>= 5.0.1-1),
 dctrl-tools,
 aspcud,
 python3-apt,
 python3-debian,
 python3-networkx,
 python3-yaml,
 python3-pygraphviz,
 zutils,
 dpkg-dev,
 libyojson-ocaml-dev,
# libjs-jquery-tablesorter and libjs-jquery are needed to look at the generated
# HTML with javascript bling
Recommends:
 libjs-jquery-tablesorter,
 libjs-jquery
# devscripts and libsoap-lite-perl are needed for /usr/bin/bts which is in turn
# needed by botch-dose2html because there is no soap module for python3
# libgraph-easy-perl is only needed for its /usr/bin/graph-easy program which
# is used in y-u-no-bootstrap and y-u-b-d-transitive-essential (but optional)
Suggests:
 libgraph-easy-perl,
 devscripts,
 www-browser,
 libsoap-lite-perl,
Description: Bootstrapping helper
 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:
 .
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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.
  - 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

Package: botch-doc
Section: doc
Architecture: all
Depends: ${misc:Depends}
Recommends:
Suggests:
Description: Bootstrapping helper - documentation
 Botch stands for bootstrap/build ordering tool chain and allows one to create
 and analyze bootstrapping dependency graphs, creates suggestions how to break
 dependency cycles and generates a build order.
 .
 This package contains the documentation.
