packages feed

hackage-server-0.5.0: hackage-server.cabal

name:         hackage-server
version:      0.5.0
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-2014 Duncan Coutts,
              2012-2013 Edsko de Vries,
              2013 Google Inc.,
              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/*.html.st
  templates/UserSignupReset/*.email.st
  templates/AdminFrontend/*.html.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

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

-- Requires working local outgoing email
flag test-create-user
  default: False
  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.CacheControl
    Distribution.Server.Framework.BackupDump
    Distribution.Server.Framework.BackupRestore
    Distribution.Server.Framework.ServerEnv
    Distribution.Server.Framework.Templating
    Distribution.Server.Framework.HappstackUtils

    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.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.Package.HaddockTypes
    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.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.GZip
    Distribution.Server.Util.ContentType
    Distribution.Server.Util.SigTerm

    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.Render
      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.PackageList
      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.DownloadCount.Backup
      Distribution.Server.Features.EditCabalFiles
      Distribution.Server.Features.Html
      Distribution.Server.Features.HoogleData
      Distribution.Server.Features.HaskellPlatform
      Distribution.Server.Features.HaskellPlatform.State
      Distribution.Server.Features.Search
      Distribution.Server.Features.Search.BM25F
      Distribution.Server.Features.Search.DocIdSet
      Distribution.Server.Features.Search.DocTermIds
      Distribution.Server.Features.Search.DocFeatVals
      Distribution.Server.Features.Search.ExtractDescriptionTerms
      Distribution.Server.Features.Search.ExtractNameTerms
      Distribution.Server.Features.Search.PkgSearch
      Distribution.Server.Features.Search.SearchEngine
      Distribution.Server.Features.Search.SearchIndex
      Distribution.Server.Features.Search.TermBag
      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.Backup
      Distribution.Server.Features.Tags.State
      Distribution.Server.Features.UserDetails
      Distribution.Server.Features.UserSignup
      Distribution.Server.Features.StaticFiles
      Distribution.Server.Features.ServerIntrospect

  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.10.4.1,
    --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.*,
    cereal     >= 0.4,
    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.0.3,
    HaXml      >= 1.24,
    Cabal      == 1.20.*,
    csv        == 0.1.*,
    stm        >= 2.2 && < 2.5,
    acid-state >= 0.12.2,
    happstack-server == 7.3.*,
    hslogger,
    mime-mail  ==0.4.*,
    HStringTemplate ==0.7.*,
    lifted-base >= 0.2.1 && < 0.3,
    QuickCheck >= 2.5

  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.Client.Cron
    Distribution.Client.UploadLog
    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.2.11,
    Cabal,
    safecopy, cereal, binary, mtl,
    unix, aeson
  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-import)
    buildable: False
  main-is: ImportClient.hs
  other-modules:
    Distribution.Client.DistroMap
    Distribution.Client.HtPasswdDb
    Distribution.Client.ParseApacheLogs
    Distribution.Client.PkgIndex
    Distribution.Client.TagsFile
    Distribution.Client.UserAddressesDb
  build-depends:
    base,
    containers, array, vector, bytestring, text, pretty,
    filepath, directory,
    time,     old-locale, random,
    tar,      zlib,
    network,  HTTP >= 4000.2.11,
    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 -Wall
    build-depends:  base,
                    bytestring,
                    base64-bytestring,
                    Cabal,
                    directory,
                    filepath,
                    HTTP,
                    network,
                    process,
                    tar,
                    unix,
                    zlib,
                    unordered-containers,
                    aeson,
                    text,
                    vector,
                    xml,
                    random

Test-Suite CreateUserTest
    if ! flag(test-create-user)
      buildable: False
    type:           exitcode-stdio-1.0
    main-is:        CreateUserTest.hs
    hs-source-dirs: tests
    default-language: Haskell2010
    ghc-options:    -threaded -Wall
    build-depends:  base,
                    bytestring,
                    base64-bytestring,
                    Cabal,
                    directory,
                    filepath,
                    HTTP,
                    network,
                    process,
                    tar,
                    unix,
                    zlib,
                    unordered-containers,
                    aeson,
                    text,
                    vector,
                    xml,
                    random