packages feed

hackage-server-0.4: hackage-server.cabal

name:         hackage-server
version:      0.4
category:     Distribution
synopsis:     The Hackage web server
description:  The new implementation of the Hackage web server, based on the
              Happstack architecture. This is the implementation used to power
              http://hackage.haskell.org/
              .
              It is designed to be easy to run your own instance.
              It also includes a doc builder client and a mirroring client.
author:       Duncan Coutts <duncan@community.haskell.org>,
              David Himmelstrup <lemmih@gmail.com>,
              Ross Paterson <ross@soi.city.ac.uk>,
              Matthew Gruen <wikigracenotes@gmail.com>
maintainer:   Duncan Coutts <duncan@community.haskell.org>,
              Matthew Gruen <wikigracenotes@gmail.com>
copyright:    2008-2013 Duncan Coutts,
              2012-2013 Edsko de Vries,
              2010-2011 Matthew Gruen,
              2009-2010 Antoine Latter,
              2008 David Himmelstrup,
              2007 Ross Paterson
license:      BSD3
license-file: LICENSE

build-type: Simple
cabal-version: >=1.10
data-dir: datafiles
data-files:
  templates/*.html.st
  templates/*.st
  templates/*.txt.st
  templates/EditCabalFile/*.html.st
  templates/Html/*.html.st
  templates/LegacyPasswds/*.html.st
  templates/Search/*.xml.st
  templates/UserSignupReset/*.st

  static/*.css
  static/*.ico
  static/*.png

source-repository head
  type: git 
  location: https://github.com/haskell/hackage-server 

flag minimal
  default: False
  description: Include only the minimum feature set.
  manual: True

flag debug
  default: False
  description: Include debugging features
  manual: True

flag build-hackage-server
  default: True
  manual: True

flag build-hackage-mirror
  default: True
  manual: True

flag build-hackage-build
  default: True
  manual: True

executable hackage-server
  if ! flag(build-hackage-server)
    buildable: False
  main-is: Main.hs
  other-modules:
    Data.IntTrie
    Data.StringTable
    Data.TarIndex

    Distribution.Server

    Distribution.Server.Framework
    Distribution.Server.Framework.Auth
    Distribution.Server.Framework.AuthTypes
    Distribution.Server.Framework.AuthCrypt
    Distribution.Server.Framework.BlobStorage
    Distribution.Server.Framework.Cache
    Distribution.Server.Framework.Error
    Distribution.Server.Framework.Logging
    Distribution.Server.Framework.Feature
    Distribution.Server.Framework.Hook
    Distribution.Server.Framework.Instances
    Distribution.Server.Framework.MemState
    Distribution.Server.Framework.MemSize
    Distribution.Server.Framework.Resource
    Distribution.Server.Framework.RequestContentTypes
    Distribution.Server.Framework.ResponseContentTypes
    Distribution.Server.Framework.BackupDump
    Distribution.Server.Framework.BackupRestore
    Distribution.Server.Framework.ServerEnv
    
    Distribution.Server.Packages.Index
    Distribution.Server.Packages.ModuleForest
    Distribution.Server.Packages.PackageIndex
    Distribution.Server.Packages.Types
    Distribution.Server.Packages.Unpack
    Distribution.Server.Packages.Render
    Distribution.Server.Packages.ChangeLog

    Distribution.Server.Pages.BuildReports
    Distribution.Server.Pages.Distributions
    Distribution.Server.Pages.Group
    Distribution.Server.Pages.Index
    Distribution.Server.Pages.Package
    Distribution.Server.Pages.Package.HaddockHtml
    Distribution.Server.Pages.Package.HaddockLex
    Distribution.Server.Pages.Package.HaddockParse
    Distribution.Server.Pages.Recent
    -- [reverse index disabled] Distribution.Server.Pages.Reverse
    Distribution.Server.Pages.Template
    Distribution.Server.Pages.Util

    Distribution.Server.Users.Group
    Distribution.Server.Users.State
    Distribution.Server.Users.Types
    Distribution.Server.Users.Backup
    Distribution.Server.Users.Users

    Distribution.Server.Util.Happstack
    Distribution.Server.Util.Histogram
    Distribution.Server.Util.CountingMap
    Distribution.Server.Util.Index
    Distribution.Server.Util.NameIndex
    Distribution.Server.Util.Parse
    Distribution.Server.Util.ServeTarball
    Distribution.Server.Util.TarIndex
    Distribution.Server.Util.TextSearch

    Distribution.Server.Features
    Distribution.Server.Features.Core
    Distribution.Server.Features.Core.State
    Distribution.Server.Features.Core.Backup
    Distribution.Server.Features.Mirror
    Distribution.Server.Features.Upload
    Distribution.Server.Features.Upload.State
    Distribution.Server.Features.Upload.Backup
    Distribution.Server.Features.Users


  if flag(minimal)
    cpp-options: -DMINIMAL
  else
    other-modules:
      Distribution.Server.Features.TarIndexCache
      Distribution.Server.Features.TarIndexCache.State
      Distribution.Server.Features.LegacyRedirects
      Distribution.Server.Features.LegacyPasswds
      Distribution.Server.Features.LegacyPasswds.Auth
      Distribution.Server.Features.PackageContents
      Distribution.Server.Features.BuildReports
      Distribution.Server.Features.BuildReports.BuildReport
      Distribution.Server.Features.BuildReports.BuildReports
      Distribution.Server.Features.BuildReports.Backup
      Distribution.Server.Features.BuildReports.State
      Distribution.Server.Features.PackageCandidates
      Distribution.Server.Features.PackageCandidates.Types
      Distribution.Server.Features.PackageCandidates.State
      Distribution.Server.Features.PackageCandidates.Backup
      Distribution.Server.Features.Distro
      Distribution.Server.Features.Distro.Distributions
      Distribution.Server.Features.Distro.Backup
      Distribution.Server.Features.Distro.State
      Distribution.Server.Features.Distro.Types
      Distribution.Server.Features.Documentation
      Distribution.Server.Features.Documentation.State
      Distribution.Server.Features.DownloadCount
      Distribution.Server.Features.DownloadCount.State
      Distribution.Server.Features.EditCabalFiles
      Distribution.Server.Features.Html
      Distribution.Server.Features.Search
      Distribution.Server.Features.RecentPackages
      Distribution.Server.Features.PreferredVersions
      Distribution.Server.Features.PreferredVersions.State
      Distribution.Server.Features.PreferredVersions.Backup
      -- [reverse index disabled] Distribution.Server.Features.ReverseDependencies
    -- [reverse index disabled] Distribution.Server.Features.ReverseDependencies.State
      Distribution.Server.Features.Tags
      Distribution.Server.Features.Tags.State
      Distribution.Server.Features.UserDetails
      Distribution.Server.Features.UserSignup
      Distribution.Server.Features.StaticFiles

  if flag(debug)
    cpp-options: -DDEBUG
    other-modules:
      Distribution.Server.Features.Crash

  build-depends:
    base       == 4.*,
    filepath   >= 1.1,
    directory  >= 1.0 && < 1.3,
    random     >= 1.0,
    array      >= 0.1,
    vector     >= 0.10,
    containers >= 0.4,
    pretty     >= 1.0,
    base64-bytestring ==0.1.* || == 1.0.*,
    base16-bytestring ==0.1.*,
    bytestring >= 0.9,
    --TODO: drop blaze builder in favour of bytestring-0.10 builder
    blaze-builder,
    text       >= 0.11,
    split      >= 0.2,
    time       >= 1.1 && < 1.5,
    old-locale >= 1.0,
    deepseq    == 1.1.* || == 1.3.*,
    transformers >= 0.3,
    mtl        >= 2.0,
    parsec     == 3.1.*,
    network    >= 2.1,
    unix       < 2.7,
    zlib       >= 0.5.3 && < 0.6,
    tar        == 0.4.* && >= 0.4.0.1,
    async      == 2.0.*,
    binary     == 0.5.*,
    cereal     == 0.3.*,
    safecopy   >= 0.6 && < 0.9,
    crypto-api >= 0.12 && < 0.13, 
    pureMD5    >= 0.2,
    xhtml      >= 3000.1,
    -- The instances created by deriveJSON in later versions of Aeson are 
    -- different from the instances created by this version; this would be ok
    -- if we only used the Aeson-created instance, but we also hand-create
    -- JSON in various places (for instance, in 'putUserDetails' in the import
    -- client). 
    aeson      == 0.6.1.*,
    unordered-containers >= 0.2.3.0,
    rss        == 3000.2.*,
    Cabal      >= 1.16 && < 1.17,
    csv        == 0.1.*,
    stm        >= 2.2 && < 2.5,
    acid-state == 0.8.*,
    happstack-server == 7.0.* || ==7.1.* && >= 7.0.6,
    hslogger,
    mime-mail  ==0.4.*,
    HStringTemplate ==0.7.*,
    lifted-base >= 0.2.1 && < 0.3

  if ! flag(minimal)
    build-depends:
      snowball == 1.0.*,
      tokenize >= 0.1.3 && < 0.2

  build-tools:
    alex       >= 2.2  && < 3.2,
    happy      >= 1.17 && < 1.20

  if !os(darwin)
    extra-libraries: crypt

  default-language: Haskell2010
  ghc-options: -Wall -fwarn-tabs -fno-warn-unused-do-bind -fno-warn-deprecated-flags
               -threaded -funbox-strict-fields
  other-extensions: TemplateHaskell
  if impl(ghc >= 7.0)
    ghc-options: -rtsopts -with-rtsopts=-I0

executable hackage-mirror
  if ! flag(build-hackage-mirror)
    buildable: False
  main-is: MirrorClient.hs
  other-modules:
    Distribution.Client
    Distribution.Server.Users.Types
    Distribution.Server.Util.Index
    Distribution.Server.Util.Merge
  build-depends:
    base,
    containers, array, vector, bytestring, text, pretty,
    filepath, directory,
    time,     old-locale, random,
    tar,      zlib,
    network,  HTTP >= 4000.1.3,
    Cabal,
    safecopy, cereal, binary, mtl,
    unix
  default-language: Haskell2010
  ghc-options: -Wall -fwarn-tabs

executable hackage-build
  if ! flag(build-hackage-build)
    buildable: False
  main-is: BuildClient.hs
  other-modules:
    Distribution.Client
    Distribution.Server.Users.Types
    Distribution.Server.Util.Index
    Distribution.Server.Util.Merge
  build-depends:
    base,
    containers, array, vector, bytestring, text, pretty,
    filepath, directory, process >= 1.0,
    time,     old-locale,
    tar,      zlib,
    network,  HTTP,
    Cabal,
    safecopy, cereal, binary, mtl,
    -- See comment above why we insist on this version of Aeson
    aeson == 0.6.1.*, 
    random,
    unix,
    -- Runtime dependency only:
    hscolour >= 1.8
  default-language: Haskell2010
  -- the -threaded option is necessary for correct handling
  -- of CTRL-C (not sure why :( )
  ghc-options: -Wall -fwarn-tabs -threaded

executable hackage-import
  if ! flag(build-hackage-mirror)
    buildable: False
  main-is: ImportClient.hs
  other-modules:
  build-depends:
    base,
    containers, array, vector, bytestring, text, pretty,
    filepath, directory,
    time,     old-locale, random,
    tar,      zlib,
    network,  HTTP >= 4000.1.3,
    Cabal,
    safecopy, cereal, binary, mtl,
    csv, async, attoparsec,
    -- See comment above why we insist on this version of Aeson
    aeson == 0.6.1.*,
    unordered-containers
  default-language: Haskell2010
  ghc-options: -Wall -fwarn-tabs

Test-Suite HighLevelTest
    type:           exitcode-stdio-1.0
    main-is:        HighLevelTest.hs
    hs-source-dirs: tests
    default-language: Haskell2010
    ghc-options:    -threaded
    build-depends:  base,
                    bytestring,
                    base64-bytestring,
                    Cabal,
                    directory,
                    filepath,
                    HTTP,
                    network,
                    process,
                    tar,
                    unix,
                    zlib