Cabal-1.10.0.0: A framework for packaging Haskell software

Portabilityportable
Maintainercabal-devel@haskell.org

Distribution.Simple.SrcDist

Contents

Description

This handles the sdist command. The module exports an sdist action but also some of the phases that make it up so that other tools can use just the bits they need. In particular the preparation of the tree of files to go into the source tarball is separated from actually building the source tarball.

The createArchive action uses the external tar program and assumes that it accepts the -z flag. Neither of these assumptions are valid on Windows. The sdist action now also does some distribution QA checks.

Synopsis

The top level action

sdistSource

Arguments

:: PackageDescription

information from the tarball

-> Maybe LocalBuildInfo

Information from configure

-> SDistFlags

verbosity & snapshot

-> (FilePath -> FilePath)

build prefix (temp dir)

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO () 

Create a source distribution.

Parts of sdist

prepareTreeSource

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from the cabal file

-> Maybe LocalBuildInfo 
-> FilePath

dist dir

-> FilePath

source tree to populate

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO FilePath

the name of the dir created and populated

Prepare a directory tree of source files.

createArchiveSource

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from cabal file

-> Maybe LocalBuildInfo

info from configure

-> FilePath

source tree to archive

-> FilePath

name of archive to create

-> IO FilePath 

Create an archive from a tree of source files, and clean up the tree.

Snaphots

prepareSnapshotTreeSource

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from the cabal file

-> Maybe LocalBuildInfo 
-> FilePath

dist dir

-> FilePath

source tree to populate

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO FilePath

the resulting temp dir

Prepare a directory tree of source files for a snapshot version. It is expected that the appropriate snapshot version has already been set in the package description, eg using snapshotPackage or snapshotVersion.

snapshotPackage :: CalendarTime -> PackageDescription -> PackageDescriptionSource

Modifies a PackageDescription by appending a snapshot number corresponding to the given date.

snapshotVersion :: CalendarTime -> Version -> VersionSource

Modifies a Version by appending a snapshot number corresponding to the given date.

dateToSnapshotNumber :: CalendarTime -> IntSource

Given a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.