graphql-engine/cabal.project
kodiakhq[bot] 020198969f ci: fix up pro build scripts, optimize cabal/ghc build flags
Before these changes:

**pro build:** 52min
**oss build**: 62min

After:

**pro build:** 25min
**oss build**: 23min

This decreases overall CI wall-clock time from 1:50:00 to 1:15:00.

Despite bumping the instance size for OSS builds this should (back-of-envelope) **_cut_ CI costs** for haskell build stuff by ~33%

Future work will:

- cache library dependency build products: saves further ~8 min (build and wallclock)
- use the oss lib build products in pro as well: saves further ~5min server time (i.e. saves money for same build time)
- maybe cache the rest of `dist-newstyle`: savings depend on the diff (at most 4.5 min; is this even worthwhile?)

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/2937
GitOrigin-RevId: a1faceaf1adfc1701e634a887f2cdabacab5cddd
2021-11-24 08:20:14 +00:00

100 lines
3.1 KiB
Plaintext

-- Global project configuration.
--
-- This file can be overridden with cabal.project.local (see e.g. cabal.project.dev)
--
-- If you need to switch between several local configurations you can also
-- create a symlink to this file with a different name, e.g.:
-- $ ln -s cabal.project cabal.project.myconfig
-- $ ln -s cabal.project.freeze cabal.project.myconfig.freeze
-- ...and then create a new set of overrides in:
-- cabal.project.myconfig.local
-- ...and then invoke cabal with
-- $ cabal new-build --project-file=cabal.project.myconfig
--
-- See: https://www.haskell.org/cabal/users-guide/nix-local-build.html#configuring-builds-with-cabal-project
with-compiler: ghc-8.10.7
-- package-level parallelism:
jobs: $ncpus
packages: server
constraints:
-- Ensure we don't end up with a freeze file that forces an incompatible
-- version in CI for `Setup.hs` scripts.
setup.Cabal <3.4
package *
-- NOTE: this gets applied to both local (hasura) packages and dependencies,
-- but optimizations for local hasura packages are overridden/controlled
-- via the 'optimize-hasura' flag.
optimization: 2
-- For tooling, e.g. 'weeder', and IDE-like stuff:
ghc-options: -fwrite-ide-info
haddock-html: true
haddock-hoogle: true
haddock-hyperlink-source: true
haddock-quickjump: true
package graphql-engine
ghc-options: -j
haddock-options: "--show-all"
source-repository-package
type: git
location: https://github.com/hasura/kriti-lang.git
tag: v0.2.2
source-repository-package
type: git
location: https://github.com/hasura/pg-client-hs.git
tag: f28738e18b7038627fb59b93dbc67929fe427c57
source-repository-package
type: git
location: https://github.com/hasura/graphql-parser-hs.git
tag: 36212bcc3815434a1bc25dc96f091a783b880ca4
source-repository-package
type: git
location: https://github.com/hasura/ci-info-hs.git
tag: be578a01979fc95137cc2c84827f9fafb99df60f
source-repository-package
type: git
location: https://github.com/hasura/pool.git
tag: bc4c3f739a8fb8ec4444336a34662895831c9acf
source-repository-package
type: git
location: https://github.com/fpco/odbc.git
tag: 7c0cea45d0b779419eb16177407c4ee9e7ba4c6f
package odbc
ghc-options: -Wwarn
-- Our CI compiles with -Werror, which is also applied to those packages
-- while it's fine for packages we maintain, we can't actually enforce
-- that third-party packages are warning-free, hence this -Wno-error.
-- When the changes in odbc are released, we can instead depend on
-- the hackage version, and remove it from this list of packages.
source-repository-package
type: git
location: https://github.com/hasura/ekg-core.git
tag: e31b47d5c67e1347f141079ad2d18f682e1b046f
source-repository-package
type: git
location: https://github.com/hasura/ekg-json.git
tag: 098e3a5951c4991c823815706f1f58f608bb6ec3
-- This is v1.2.3.2 with https://github.com/haskell/text/pull/348
-- cherry-picked. When 1.3 is released we can move from this fork.
source-repository-package
type: git
location: https://github.com/hasura/text.git
tag: 874c3164fadf39a83382359d2b6ce941a3e134da