Cabal-3.8.0.20220526: A framework for packaging Haskell software
CopyrightSimon Marlow 2004
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Simple.SrcDist

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

sdist Source #

Arguments

:: PackageDescription

information from the tarball

-> SDistFlags

verbosity & snapshot

-> (FilePath -> FilePath)

build prefix (temp dir)

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO () 

Create a source distribution.

Parts of sdist

printPackageProblems :: Verbosity -> PackageDescription -> IO () Source #

Note: must be called with the CWD set to the directory containing the '.cabal' file.

prepareTree Source #

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from the cabal file

-> FilePath

source tree to populate

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO () 

Prepare a directory tree of source files.

createArchive Source #

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from cabal file

-> 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.

Snapshots

prepareSnapshotTree Source #

Arguments

:: Verbosity

verbosity

-> PackageDescription

info from the cabal file

-> FilePath

source tree to populate

-> [PPSuffixHandler]

extra preprocessors (includes suffixes)

-> IO () 

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 :: UTCTime -> PackageDescription -> PackageDescription Source #

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

snapshotVersion :: UTCTime -> Version -> Version Source #

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

dateToSnapshotNumber :: UTCTime -> Int Source #

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

Extracting the source files

listPackageSources Source #

Arguments

:: Verbosity

verbosity

-> FilePath

directory with cabal file

-> PackageDescription

info from the cabal file

-> [PPSuffixHandler]

extra preprocessors (include suffixes)

-> IO [FilePath]

relative paths

List all source files of a package.

Since Cabal-3.4 returns a single list. There shouldn't be any executable files, they are hardly portable.

listPackageSourcesWithDie Source #

Arguments

:: Verbosity

verbosity

-> (Verbosity -> String -> IO [FilePath])

die' alternative. Since die' prefixes the error message with errorPrefix, whatever is passed in here and wants to die should do the same. See issue #7331.

-> FilePath

directory with cabal file

-> PackageDescription

info from the cabal file

-> [PPSuffixHandler]

extra preprocessors (include suffixes)

-> IO [FilePath]

relative paths

A variant of listPackageSources with configurable die.

Note: may still die directly. For example on missing include file.

Since @3.4.0.0