Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: {caching,test,bench}: mk cache aware of package dep versions #2532

Commits on Dec 23, 2021

  1. CI: {caching,test,bench}: mk cache aware of package dep versions

    1. CI caches 3rd patry dependency binaries.
    
    2. That is why we do not want to trigger on all `.cabal` changes. We want to
    cache only when changes in `.cabal` descriptions lead to changes in versions of
    deps used, or in their compilation flags. `freeze` files:
    
    For example the bits of the resulting `.freeze` file:
    
    active-repositories: hackage.haskell.org:merge
    constraints: any.Boolean ==0.2.4,
                 ...
                 any.HsYAML ==0.2.1.0,
                 HsYAML -exe,
                 any.HsYAML-aeson ==0.2.0.1,
                 HsYAML-aeson -exe,
                 any.JuicyPixels ==3.3.6,
                 JuicyPixels -mmap,
                 any.MemoTrie ==0.6.10,
                 MemoTrie -examples,
                 ...
                 any.QuickCheck ==2.14.2,
                 QuickCheck -old-random +templatehaskell,
                 aeson -bytestring-builder -cffi -developer -fast,
                 ...
                 any.aeson-pretty ==0.8.9,
                 aeson-pretty -lib-only,
                 bifunctors +semigroups +tagged,
                 any.blaze-textual ==0.2.2.1,
                 blaze-textual -developer -integer-simple +native,
                 ...
                 any.brittany ==0.13.1.2,
                 brittany -brittany-dev-lib -brittany-test-perf,
                 ...
                 any.clock ==0.8.2,
                 clock -llvm,
                 any.cmdargs ==0.10.21,
                 cmdargs +quotation -testprog,
                 ...
                 any.comonad ==5.0.8,
                 comonad +containers +distributive +indexed-traversable,
                 ...
                 any.hashtables ==1.2.4.2,
                 hashtables -bounds-checking -debug -detailed-profiling -portable -sse42 +unsafe-tricks,
                 haskell-language-server -alternatenumberformat +brittany +callhierarchy +class +eval +floskell +fourmolu +haddockcomments +hlint -ignore-plugins-ghc-bounds +importlens +modulename +ormolu -pedantic +pragmas +qualifyimportednames +refineimports -rename +retrie +splice +stylishhaskell +tactic,
                 ...
                 any.hlint ==3.2.7,
                 hlint -ghc-lib +gpl -hsyaml +threaded,
                 hls-eval-plugin -pedantic,
                 hls-graph -embed-files -pedantic -stm-stats,
                 hls-hlint-plugin -ghc-lib -hlint33 -pedantic,
                 ...
                 any.integer-logarithms ==1.0.3.1,
                 integer-logarithms -check-bounds +integer-gmp,
                 ...
                 any.lens ==5.0.1,
                 lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy,
                 ...
                 any.scientific ==0.3.7.0,
                 scientific -bytestring-builder -integer-simple,
                 any.semigroupoids ==5.3.6,
                 semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
                 any.semigroups ==0.19.2,
                 semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers,
                 ...
                 any.transformers-compat ==0.6.6,
                 transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
                 ...
                 any.vector ==0.12.3.1,
                 vector +boundschecks -internalchecks -unsafechecks -wall,
                 any.vector-algorithms ==0.8.0.4,
                 vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
                 ...
    index-state: hackage.haskell.org 2021-11-29T12:28:17Z
    ```
    
    You got the idea. `freeze` collects stuff for dependencies.
    
    I also checked - it solves & collects all package configuration across all
    subprojects in one file.
    Anton-Latukha committed Dec 23, 2021
    Configuration menu
    Copy the full SHA
    874d500 View commit details
    Browse the repository at this point in the history
  2. CI: {caching,test,bench}: freeze: allow to fail

    Before we not had this at all.
    
    Now - most cases would use it.
    
    But for example, all HLS subprojects can not solve single version of deps for
    GHC 9.0 at once.
    
    And depending on `.cabal` is not the right way, as it means to account of only 1
    configuration of many in the project.
    Anton-Latukha committed Dec 23, 2021
    Configuration menu
    Copy the full SHA
    bed87e8 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2e65651 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    258ed91 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    482bc66 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    0c521cc View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    b08c434 View commit details
    Browse the repository at this point in the history