packunused: Tool for detecting redundant Cabal package dependencies
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 packunused
Experimental support for stack
:
stack setup --upgrade-cabal # necessary only when stack's global Cabal installation is out of date stack clean stack build --ghc-options '-ddump-minimal-imports -O0' packunused
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) executable(packunused) ~~~~~~~~~~~~~~~~~~~~~~ The following package dependencies seem redundant: - criterion-0.6.2.0-9dd4d764629a47662168743b2dfda9bc
Downloads
- packunused-0.1.2.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.1.3, 0.1.1.4, 0.1.2 |
---|---|
Change log | changelog.md |
Dependencies | base (>=4.5 && <4.10), Cabal (>=1.24 && <1.25), directory (>=1.1 && <1.4), filepath (>=1.3 && <1.5), haskell-src-exts (>=1.18.2 && <1.20), optparse-applicative (>=0.8 && <0.14), process (>=1.1 && <1.7), split (>=0.2 && <0.3) [details] |
License | BSD-3-Clause |
Copyright | © 2014 Herbert Valerio Riedel |
Author | Herbert Valerio Riedel |
Maintainer | Herbert Valerio Riedel <hvr@gnu.org> |
Revised | Revision 1 made by HerbertValerioRiedel at 2017-06-03T11:13:25Z |
Category | Distribution |
Home page | https://github.com/hvr/packunused |
Bug tracker | https://github.com/hvr/packunused/issues |
Source repo | head: git clone https://github.com/hvr/packunused.git |
Uploaded | by HerbertValerioRiedel at 2017-05-05T16:38:49Z |
Distributions | NixOS:0.1.2 |
Executables | packunused |
Downloads | 8246 total (44 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs not available [build log] Last success reported on 2017-05-05 [all 2 reports] |