mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
* 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
147 lines
2.4 KiB
YAML
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
|