cabal-debian-4.36.1: Create a Debianization for a Cabal package

Debian.Debianize

Description

QUICK START:

You can either run cabal-debian, or for more power and flexibility you can put a Debianize.hs script in the package's debian subdirectory.

To see what your debianization would produce, or how it differs from the debianization already present:

% cabal-debian -n

This is equivalent to the library call

% ghc -e 'System.Environment.withArgs ["-n"] $Debian.Debianize.performDebianization Debian.Debianize.debianDefaults' To actually create the debianization and then build the debs, % ghc -e 'Debian.Debianize.performDebianization Debian.Debianize.debianDefaults' % sudo dpkg-buildpackage At this point you may need a script to achieve specific packaging goals. Put this this in debian/Debianize.hs: import Control.Lens import Data.Map as Map import Data.Set as Set import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel)) import Debian.Debianize main = performDebianization$ do
debianDefaults
(debInfo . binaryDebDescription (BinPkgName "cabal-debian") . relations . depends) %= (++ (rels "apt-file, debian-policy, debhelper, haskell-devscripts (>= 0.8.19)"))

Then to test it,

% runhaskell debian/Debianize.hs -n

and to run it for real:

% runhaskell debian/Debianize.hs
DESIGN OVERVIEW

The three phases of the operation of the system are Input -> Finalization -> Output.

Input
Module Debian.Debianize.Input - gather inputs using IO operations and customization functions, from the .cabal file, an existing debianization, and so on. This information results in a value of type Atoms. Modules Types, Lenses, Inputs.
Customize
Make modifications to the input values
Finalization
Module Debian.Debianize.Finalize - Fill in any information missing from Atoms that is required to build the debianization based on the inputs and our policy decisions.
Debianize
Module Debian.Debianize.Files - Compute the paths and files of the debianization from the Atoms value.
Output
Module Debian.Debianize.Output - Perform a variety of output operations on the debianzation - writing or updating the files in a debian directory, comparing two debianizations, validate a debianization (ensure two debianizations match in source and binary package names), or describe a debianization.

There is also a high level function to run a script that runs this entire pipeline when it finds from a script found in a debian/Debianize.hs file.

Synopsis

# Utility functions

module Debian.GHC