# packages

pkgId: f72306f354ddcf161910276e349253ba1000ece6c1ee929a9196e391361c5539
name: cabal-sort
arch: src
version: 0.0.5.3
epoch: 0
release: 1.el7.centos
summary: Topologically sort cabal packages
url: https://hackage.haskell.org/package/cabal-sort
rpm_license: BSD
rpm_vendor: Fedora Project COPR (petersen/cabal-sort)
rpm_group: Unspecified
rpm_buildhost: copr-builder-571546436.novalocal
location_href: 00461657-cabal-sort/cabal-sort-0.0.5.3-1.el7.centos.src.rpm
checksum_type: sha256
description:
  If you have a bunch of packages you may want to compile or recompile, then you
  need an order of compilation that meets the dependencies. Given a number of
  cabal package files, this program reads all those files and emits them
  topologically sorted according to their dependencies. This way you can compile
  many packages at once, say if a very low-level package has changed.

  For compiling a couple of packages from their local darcs repositories in the
  right order, you may run something like

  > for dir in `find . -name "*.cabal" | fgrep -v _darcs | xargs cabal-sort
  --info=dir`; do (cd $dir && cabal install); done

  Note that cabal-install does this automatically since version 0.10 when you
  call it will multiple directory names as arguments. However, when the
  constraint solver in cabal-install fails you may still use cabal-sort for an
  automated build.

  For uploading a set of packages to Hackage in the right order you may run

  > for dir in `find . -name "*.cabal" | fgrep -v _darcs | xargs cabal-sort
  --info=dir`; do (cd $dir && rm dist/*.tar.gz && cabal sdist && cabal upload
  dist/*.tar.gz); done

  Sometimes you have to inspect a number of packages manually, e.g. in order to
  adapt your packages to a new GHC version. In this case I found it useful to run

  > for dir in `find . -name "*.cabal" | fgrep -v _darcs | xargs cabal-sort
  --info=dir`; do (cd $dir; bash); done'.

  This way you start a local shell for every package. Then you can easily access
  commands in the shell history that you already run for previous packages, e.g.
  'editor *.cabal'. After you finished a package, you switch to the next package
  simply by leaving the shell by calling 'exit'.

  Problem 1: Given packages A, B, C, where C depends on B and B depends on A, and
  you call

  > cabal-sort C.cabal A.cabal

  then the emitted order of packages may be wrong, because cabal-sort does not
  get to know the dependency of C on B. Even if the order is correct, B.cabal is
  missing in the output and thus the list of cabal files cannot immediately be
  used for a sequence of cabal-install runs.

  Problem 2: We ignore flags and merge all dependencies. This may lead to
  dependency cycles that cannot occur for any flag assignment.

  You also have options '--parallel' and '--makefile' that support parallel
  compilation. The first option is for manual parallelization and the second one
  allows you to compile parallelly using 'make''s '-j'/'--jobs' option.

  There is a second program called 'ghc-pkg-dep' that finds recursively all
  packages that a set of packages depends on. Duplicates are eliminated and the
  packages are given topologically sorted, such that you can use this for
  recompilation of the packages. The packages must already be registered with
  'ghc-pkg'.

  > ghc-pkg-dep pkgA-0.1 pkgB-2.3 pkgC-0.1.2

  On GHC versions before 7.0 ghc-pkg runs quite slowly. In order to not get bored
  you may run the program with '--verbose=2' option.


pkgId: 36b7b18bfb98dd9e70aa52cb701639386283bac9f7cdb05e220aad27d0701f7f
name: cabal-sort-debuginfo
arch: x86_64
version: 0.0.5.2
epoch: 0
release: 1.el7.centos
summary: Debug information for package cabal-sort
url: https://hackage.haskell.org/package/cabal-sort
rpm_license: BSD
rpm_vendor: Fedora Project COPR (petersen/cabal-sort)
rpm_group: Development/Debug
rpm_buildhost: copr-builder-650335778
rpm_sourcerpm: cabal-sort-0.0.5.2-1.el7.centos.src.rpm
location_href: 00113174-cabal-sort/cabal-sort-debuginfo-0.0.5.2-1.el7.centos.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package cabal-sort.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


