stackage-server/package.yaml
Alexey Kuleshevich f5e147ab97
Integration with Pantry and usage of new stackage-snapshots:
* Moved all extensions into modules that are using them, rather than globally,
  since they mess up ghci session and introduce conflicts among
  packages. Removed those from `.ghci` file as well
* Redesigned the schema to use Pantry and moved it into it's own module
* Switched all of the db and cron related stuff to RIO. Yesod part is
  still on classy-prelude
* Got pantry to update stackage-server database from hackage
* Got import of stackage-snapshots implemented
* Moved some logic from all-cabal-tool
* Switched everything to `PackageNameP`, `VersionP`, etc. from a la Text.
* Fixed haddock, so it now does proper redirects and pipes the docs
  correctly. Also implemented piping of json files from S3 bucket,
  so index-doc.json is also served by stackage-server thus making
  Ctrl+S feature work properly on haddock. Fix for commercialhaskell/stackage#4301
* Import of modules is done through cabal file parsing, which slows
  down the initial import process drastically, but incremental update
  is not a problem.
* Just as with modules, dependencies are also imported from cabal file.
* In general improved type safety by introducing a few data types:
  eg. `ModuleNameP`, `HackageCabalInfo`, and many more.
* Implemented pulling of deprecation map from hackages and storing it in db
* Implementation of forward/backward dependencies within a snapshot only.
* Drastically improved performance of cron import job, by checking which
  snapshots are not up to date
* Implemented pulling haddock list from S3 bucket. Modules that have
  documentation are marked from the availability of actual haddock. This
  process happens concurrently with snapshots loading.
* Rearranged modules a bit:
  * github related functions went into it's own module
  * cron related functions where moved from Database to Cron module
  * Split up some functions to reduce individual complexity
* Parallelized package loading in cron job
* Implemented parsed cabal file caching.
* All queries where reqritten with esqueleto
* Syntactic improvements:
  * Added stylish-haskell config
  * Formatted all imports and extensions with stylish-haskell.
  * Fixed inconsistent indentation across all modules
* Many improvements to the package page as well as few others.
* Reimplemented hoogledb creation.
* Dropped dependency on tar in favor of tar-conduit
* Added cli for stackage-server-cron
* Add cabal sha and size to the package page
* Fixed links in hoogle searches. Improved type safety for a hoogle handler
* satckage-server-cron is customizable with cli arguments

Final adjustments for the new stackage server release:

* Upgrade to lts-13.16.
* Stackage server related code has been merged to pantry. Made the code
  compatible with the newer version pantry
* Added cli '--snapshots-repo'
* Add readme to package page
* Adjust snapshots expected format:
  * Added `publish-time`
  * Removed name `field`
  * `compiler` field is now in the `resolver` field with fallback to
    the root
2019-04-30 17:10:33 +03:00

147 lines
2.4 KiB
YAML

name: stackage-server
flags:
library-only:
description: Build for use with "yesod devel"
manual: false
default: false
dev:
description: Turn on development settings, like auto-reload templates.
manual: false
default: false
dependencies:
- base
- yesod
- aeson
- barrier
- blaze-markup
- bytestring
- classy-prelude
- classy-prelude-yesod
- conduit
- conduit-extra
- directory
- email-validate
- esqueleto
- exceptions
- fast-logger
- ghc-prim
- html-conduit
- http-conduit
- monad-logger
- mtl
#- prometheus-client
#- prometheus-metrics-ghc
- pantry
- path
- persistent
- persistent-template
- resourcet
- rio
- shakespeare
- tar-conduit
- template-haskell
- text
- transformers
- these
- unliftio
- wai
- wai-extra
- wai-logger
#- wai-middleware-prometheus
- warp
- xml-conduit
- xml-types
- yaml
- yesod-auth
- yesod-core
- yesod-form
- yesod-newsfeed
- yesod-static
- zlib
- unordered-containers
- hashable
- Cabal
- mono-traversable
- process
- cmark-gfm
- formatting
- blaze-html
- haddock-library
- yesod-gitrepo
- yesod-gitrev
- hoogle
- deepseq
- auto-update
- yesod-sitemap
- streaming-commons
- classy-prelude-conduit
- path-pieces
- persistent-postgresql
- filepath
- http-client
- http-types
- amazonka
- amazonka-core
- amazonka-s3
- lens
- file-embed
- resource-pool
- containers
default-extensions:
- OverloadedStrings
library:
source-dirs: src
when:
- condition: (flag(dev)) || (flag(library-only))
then:
ghc-options:
- -Wall
- -O0
cpp-options: -DDEVELOPMENT
else:
ghc-options:
- -Wall
- -O2
executables:
stackage-server:
main: main.hs
source-dirs: app
ghc-options: -Wall -threaded -O2 -rtsopts "-with-rtsopts=-N -T"
dependencies:
- stackage-server
when:
- condition: flag(library-only)
buildable: false
- condition: flag(dev)
then:
other-modules: DevelMain
dependencies:
- foreign-store
else:
other-modules: []
stackage-server-cron:
main: stackage-server-cron.hs
source-dirs: app
other-modules: []
ghc-options:
- -Wall
- -threaded
- -O2
- -rtsopts
- -with-rtsopts=-N
dependencies:
- optparse-applicative
- rio
- stackage-server
when:
- condition: flag(library-only)
buildable: false
- condition: flag(dev)
cpp-options: -DDEVELOPMENT