Skip to content

Should the "unconstrained build" be off by default for head.hackage #642

Closed
@andreasabel

Description

@andreasabel

With head job we get this in cabal.project:
allow-newer: *:Cabal, *:Cabal-syntax, *:array, *:base, *:binary, *:bytestring, *:containers, *:deepseq, *:directory, *:exceptions, *:filepath, *:ghc, *:ghc-bignum, *:ghc-boot, *:ghc-boot-th, *:ghc-compact, *:ghc-heap, *:ghc-prim, *:ghci, *:haskeline, *:hpc, *:integer-gmp, *:libiserv, *:mtl, *:parsec, *:pretty, *:process, *:rts, *:stm, *:system-cxx-std-lib, *:template-haskell, *:terminfo, *:text, *:time, *:transformers, *:unix, *:xhtml,

Usually, its effects are moderated by matching installed constraints in cabal.project.local:

constraints: Cabal installed
constraints: Cabal-syntax installed
constraints: array installed
constraints: base installed
constraints: binary installed
constraints: bytestring installed
constraints: containers installed
constraints: deepseq installed
constraints: directory installed
constraints: exceptions installed
constraints: filepath installed
constraints: ghc installed
constraints: ghc-bignum installed
constraints: ghc-boot installed
constraints: ghc-boot-th installed
constraints: ghc-compact installed
constraints: ghc-heap installed
constraints: ghc-prim installed
constraints: ghci installed
constraints: haskeline installed
constraints: hpc installed
constraints: integer-gmp installed
constraints: libiserv installed
constraints: mtl installed
constraints: parsec installed
constraints: pretty installed
constraints: process installed
constraints: rts installed
constraints: stm installed
constraints: system-cxx-std-lib installed
constraints: template-haskell installed
constraints: terminfo installed
constraints: text installed
constraints: time installed
constraints: transformers installed
constraints: unix installed
constraints: xhtml installed

However, in the "unconstrained build", the cabal.project.local is deleted while the cabal.project remains in place.
As a consequence, we can get wild build plans, e.g. Cabal-3.2.1.0 paired with Cabal-syntax-3.8.1.0

src/Hackage/Security/TUF/Layout/Repo.hs:9:1: error:
    Ambiguous module name ‘Distribution.Package’:
      it was found in multiple packages:
      Cabal-3.2.1.0 Cabal-syntax-3.8.1.0

Is this working as intended?

There is a setting unconstrained-build: for cabal.haskell-ciwhich I could set to < 9.6 to prevent such false negatives.
Should this maybe on by default for the head job?

Having to put this into the cabal.haskell-ci brings the risk that it remains there forgotten while GHC has long progressed beyond 9.6. What I would really want to put there is != head or so. But I would argue that this could be the default.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions