The packunused package

[Tags:bsd3, program]

This simple CLI tool allows to find out which of the packages listed as build-depends in a Cabal package description file are redundant.

packunused works by taking advantage of GHC's -ddump-minimal-imports feature which creates .import files for each compiled module containing a minimal set of explicit import declarations. These .import files together with Cabal's generated package configuration meta-data is analyzed by packunused to detect potentially redundant package dependencies.

In order to use packunused you have to configure the package as usual. See the example session below:

 cabal clean
 rm *.imports
 cabal configure -O0 --disable-library-profiling
 cabal build --ghc-option=-ddump-minimal-imports

The -O0 --disable-library-profiling options are just to speed up compilation. In some cases you might want to pass additional options to the configure step, such as --enable-benchmark or --enable-tests.

When run, packunused prints a report to standard output listing its findings for each component built. The following is an example for the packunused package itself, with a redundant dependency added for demonstration on purpose:

 detected package components

  - executable(s): packunused

 (component names suffixed with '*' are not configured to be built)


 The following package dependencies seem redundant:

  - criterion-


Change log
Dependencies base (>=4.5 && <4.9), Cabal (>=1.14 && <1.23), directory (>=1.1 && <1.3), filepath (>=1.3 && <1.5), haskell-src-exts (>=1.13 && <1.17), optparse-applicative (>=0.8 && <0.12), split (==0.2.*) [details]
License BSD3
Copyright © 2014 Herbert Valerio Riedel
Author Herbert Valerio Riedel
Maintainer Herbert Valerio Riedel <>
Stability Unknown
Category Distribution
Home page
Bug tracker
Source repository head: git clone
Uploaded Tue Jan 27 08:53:03 UTC 2015 by HerbertValerioRiedel
Updated Sat Mar 28 18:18:00 UTC 2015 by HerbertValerioRiedel to revision 1
Distributions NixOS:
Downloads 3000 total (6 in the last 30 days)
0 []
Status Docs not available [build log]
Last success reported on 2015-11-13 [all 7 reports]


Maintainer's Corner

For package maintainers and hackage trustees