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

source-repository-package not optional #5444

Open
nomeata opened this issue Jul 18, 2018 · 27 comments
Open

source-repository-package not optional #5444

nomeata opened this issue Jul 18, 2018 · 27 comments

Comments

@nomeata
Copy link
Contributor

nomeata commented Jul 18, 2018

I was hoping that I can use source-repository-package to point to “optional” dependencies, i.e. dependencies that are used when needed, but not built when not. I want to use this in my cabal.project:

source-repository-package
      type:     git
      location: https://github.com/ghcjs/ghcjs-base
      tag: 01014ade3f8f5ae677df192d7c2a208bd795b96c

because ghcjs-base is not on Hackage yet. The problem is that this package is only a dependency of jsaddle when using ghcjs, but not when using ghc. Furthemore, ghcjs-base has dependencies that cannot be fulfilled with ghc.

So with this in cabal.project, cabal thinks it has to build ghcjs-base, even with using ghc, and fails.

@typedrat
Copy link
Collaborator

So basically, they shouldn't be added like they're another package in the same project, but they should just expand the universe of things that the solver knows about to depend on?

@nomeata
Copy link
Contributor Author

nomeata commented Jul 18, 2018

At least that was my (possibly naive) expectation. The main reason I want to use this feature is to be able to build packages that are not being uploaded to Hackage, like reflex (reflex-frp/reflex-dom#140, reflex-frp/reflex#177)

@typedrat
Copy link
Collaborator

That feels like how it should work to me, too.

@hvr
Copy link
Member

hvr commented Jul 18, 2018

This is a general problem; we only have packages: and optional-packages: available; which force packages to become local ones which are solved for (even if they're not necessarily built). So source-repository-packages are basically like having Git submodules + packages:. From that POV, that's consistent.

Otoh, we can add additional package repo indices via repository-stanzas; these would just "expand the universe" w/o them being included always in the build-plan.

What would be useful to have is a way to merely add single packages to the "universe" (similiar to repository-stanzas; but much simpler), and then have a property-field for source-repository-packages in order to declare whether this package ought to be local (like it is now), non-local (i.e. cached in the nix-style store), or index (i.e. merely "added to the universe"; as if it was included in a package repo index).

PS: @nomeata for now you can workaround this by having separate cabal.project files for ghc and ghcjs; you can then use --project-file= to select the "personality" you need.

@gbaz
Copy link
Collaborator

gbaz commented Jul 18, 2018

That idea (adding packages to the universe) was basically the cabal-side design of the provenance-qualified package imports proposal: ghc-proposals/ghc-proposals#115

Cabal could adopt that or something similar even without GHC actually implementing the ability to track provenance in the packagedb proper.

@nomeata
Copy link
Contributor Author

nomeata commented Jul 18, 2018

The documented use case for `optional-packages`` is vendored dependencies. I guess usually you use your dependencies, so usually people don’t notice the difference, but I would argue that the current behaviour is not following the principle of least surprise.

PS: @nomeata for now you can workaround this by having separate cabal.project files for ghc and ghcjs; you can then use --project-file= to select the "personality" you need.

Doing that already :-)

@hvr
Copy link
Member

hvr commented Jul 18, 2018

@nomeata well, the main use-case for source-repository-package as I see it is to cause a specific snapshot of a package to be used in your install-plan; so if you point your cabal.project file to some git repo, I'd argue the principle of least surprise would be in fact require that the Git version is taken, and not some other version that might have been on Hackage.

If we now wanted the variant that such (possibly temporarily) vendored dependencies are declared "exclusive" (i.e. they hide all other versions for the same package-name), but at the same time act like index-packages (i.e. they're only included in the install-plan if anything force them in by actually depending on them), we need yet another mode (strawman: index-exclusive) than the one I suggested in #5444 (comment)

(I'm not sure how provenance-qualification would benefit here; once remote git repo deps are involved, we're not in a self-describing package context anymore, but instead in a cabal.project-specific context where the cabal.project file sets up the "routing" of where packages are procured from -- i.e. that's where the "local" of "nix-style local builds" becomes apparent: we're dealing with local versions of packages which are supposed to supplant/shadow any pre-existing Hackage packages of the same name; I don't think we intend to introduce new names or labelled namespaces when vendor a package in this context -- for example, if I locally vendor a Git snapshot of text, I want that version to be used everywhere across my install-plan, and w/o having to modify any build-depends; nor do I think I care about the provenance information if the pkg is registered in a nix-style pkg store/cache or even merely the local dist-newstyle pkg-db as I don't see what this information would be useful for)

@nomeata
Copy link
Contributor Author

nomeata commented Jul 18, 2018

I'd argue the principle of least surprise would be in fact require that the Git version is taken, and not some other version that might have been on Hackage.

Good point…

index-exlusive sounds right. Not sure if we need all the others :-)

@hvr
Copy link
Member

hvr commented Jul 18, 2018

well, you need the local one at least to mark your "primary" local packages; otherwise cabal new-build all would not build anything

PS: we also have extra-packages: which I didn't bring up yet...

and here's a link to the docs for convenience: http://cabal.readthedocs.io/en/latest/nix-local-build.html#specifying-the-local-packages

@nomeata
Copy link
Contributor Author

nomeata commented Jul 18, 2018

The docs don't help me to understand why I'd want extra-packages.

@gbaz
Copy link
Collaborator

gbaz commented Jul 19, 2018

@hvr, you write

I'm not sure how provenance-qualification would benefit here; once remote git repo deps are involved, we're not in a self-describing package context anymore, but instead in a cabal.project-specific context

But the provenance quantification proposal described how to specify git repo deps as repositories, which is exactly what you're describing. And it described how to do so within cabal files rather than just project files.

Cabal files are extended in two ways.

source-origin-alises: is a top-level property consisting of a list of aliases in the usual indented assignment style. These aliases will be passed to all invocations of ghc in the course of a cabal build. Example syntax:

source-origin-aliases:
hackage: https://…
foobar: http://…

build-depends: fields now can take package names in the form of [REPO]+somepackage rather than just somepackage.

All that is required is to allow source-origin-aliases to take aliases to git repos of single packages as well as standard repositories, which can be derived directly from the syntax we already have for source-repository-package.

@hvr
Copy link
Member

hvr commented Jul 19, 2018

(I briefly talked with @gbaz about the provenance qualification; there's overlap in what you can do via cabal.project already now and what prov-qualification would allow, but the intentions of the two mechanisms diverge)

@nomeata that's true; the documentation of extra-packages is very lacking; you can read however Duncan's rationale for it at e.g. #3737 (comment) and a recent enhancement to its syntax (which also hasn't found its way into the docs) was merged via #4889

@nomeata
Copy link
Contributor Author

nomeata commented Jul 19, 2018

This discussion prompted me to not use source-repository-package for my goal, but rather set up my own hackage overlay repository with these packages:
http://hackage-ghcjs-overlay.nomeata.de/
https://github.com/nomeata/hackage-ghcjs-overlay
A bit manual, but makes the travis scripts that uses them easier.

@sboosali sboosali mentioned this issue Mar 9, 2019
4 tasks
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 11, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 11, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versiont)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 11, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 14, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 14, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
@hasufell
Copy link
Member

What needs to be done to move this ticket/the discussion further? This is still a problem today.

hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 21, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 21, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 24, 2020
The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraings were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. cardano-foundation#1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 27, 2020
This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Aug 31, 2020
This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all
hasufell pushed a commit to hasufell/cardano-wallet that referenced this issue Sep 25, 2020
This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all
iohk-bors bot added a commit to cardano-foundation/cardano-wallet that referenced this issue Sep 30, 2020
2027: Allow to build with cabal r=rvl a=hasufell

The process to create these files is roughly:

1. run `stack2cabal`
2. work around cabal bugs (see haskell/cabal#5444)
3. disable tests to avoid build failures with --enable-tests from
   unrelated packages (cabal considers all packages defined via
   source-repository-package as *local* and will try to build its tests)
4. fix package constraints in cabal.project.freeze, where stackage
   constraints were overwritten in stack.yaml files (usually raising
   a version number)

Rationale:

1. good to support all available tools as options for interested users
2. cabal allows easier managing of package bounds (and testing against
   latest package versions)
3. #1303 is an excellent workaround for nix users, but requires nix.
   This should be the go-to fallback in case cabal project files
   get out of sync for too long.


Co-authored-by: Julian Ospald <[email protected]>
Co-authored-by: KtorZ <[email protected]>
Co-authored-by: Rodney Lorrimar <[email protected]>
hasufell pushed a commit to hasufell/cardano-node that referenced this issue Oct 2, 2020
This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all
iohk-bors bot added a commit to IntersectMBO/cardano-node that referenced this issue Oct 2, 2020
1775: Fix build for cabal users that don't have systemd r=intricate a=hasufell

This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all

----

related:
- #1666
- #1200

This has also been discussed on slack.

Instructions for this edge case should probably be added to the wiki?

Co-authored-by: Julian Ospald <[email protected]>
JaredCorduan pushed a commit to IntersectMBO/cardano-node that referenced this issue Nov 3, 2020
This is mainly due to a cabal bug and should be removed in
the future: haskell/cabal#5444

There are various distros, where installing development files
of libsystemd won't be an option:

- Alpine (doesn't have systemd at all)
- Gentoo (not installable when eudev is installed)
- Exherbo (not installable when eudev is installed)

Users are expected to run the script and then execute cabal like so:

  cabal build --project-file=cabal.nosystemd.project all
@Fuuzetsu
Copy link
Member

Fuuzetsu commented Nov 19, 2020

Another problem that this causes: all source-repository-packages are local and are therefore registered as -inplace rather than have some UnitID. This means tools like cabal-cache aren't able to cache these which is very sad: we have maybe some 30+ packages listed like this.

The problem is greatly amplified in that it's enough for a single package deep down in the transitive chain to completely mess up caching. For example, we're using a custom commit of the socks library. That now gets registered as local which means everything that depends on that (like http-client-tls and then amazonka and everything upstream from there) is now -inplace and can't be cached. That's quite said. I believe in stack this is exactly what extra-deps field achieves FWIW.

EDIT:

As follow-up for anyone looking in future: it appears that you can leave cabal-cache to downloading anything from the cabal store and everything left over in dist-newstyle should just be in-place dependencies. You can have your CI cache this bit in naive way.

@Fuuzetsu
Copy link
Member

Fuuzetsu commented Nov 19, 2020

I believe in stack this is exactly what extra-deps field achieves FWIW.

I think I was mistaken actually: https://stackoverflow.com/questions/54351314/how-to-cache-a-haskell-dependency-to-speed-up-compilation-time

@phadej
Copy link
Collaborator

phadej commented Nov 19, 2020

@Fuuzetsu

Another problem that this causes: all source-repository-packages are local

Have you tried cabal-install-3.4 release candidates?

E.g. in https://github.com/phadej/trustee which has two source-repository-package definitions I see

UnitId "peura-0.20201018-d5fb116a42702e0c31cde71ced2a98aed4f889bb86bd9ab549d93547250bf689"
UnitId "urakka-0.1-73d82c94439d9c8b493f147de03fa28ce2e4ef7a15389feb17d9595fe0dd7378"

in cabal-plan plan.json dump.

@hasufell
Copy link
Member

@phadej 3.4 is indeed an improvement, but afais the solver still considers all source-repository-packages, even if it isn't actually part of the depgraph (e.g. because it's behind a disabled flag or because it isn't an actual dependency of anything).

As in: in some projects I have to remove a source-repository-package from cabal.project to make the project build (examples are cardano-wallet/cardano-node with systemd disabled).

@Fuuzetsu
Copy link
Member

Have you tried cabal-install-3.4 release candidates?

I tried it and it seems all the inplace packages and their dependencies now have proper unit IDs and can be picked up via cabal-cache, that's great. That solves half of my problem. The rest of the issue is just what this ticket is about.

@gbaz
Copy link
Collaborator

gbaz commented Jan 2, 2022

I think allowing conditionals in project files (that can case on compilers, etc just like in packages) would resolve this as per #7783 ?

@hasufell
Copy link
Member

I think allowing conditionals in project files (that can case on compilers, etc just like in packages) would resolve this as per #7783 ?

I think that's just a workaround. Local packages that are not needed for the build and are not requested as targets by the user shouldn't be part of the resolution.

@phadej
Copy link
Collaborator

phadej commented Jul 14, 2022

Local packages that are not needed for the build and are not requested as targets by the user shouldn't be part of the resolution.

That would ruin install plan caching e.g. in project where there are different packages:

cabal build pkg1
cabal build pkg2

would need to run solver in between, which will make cabal feel non-interactive. If both packages are built, those commands should be no-op and fast (<10ms).

@hasufell
Copy link
Member

That would ruin install plan caching e.g. in project where there are different packages:

I'm not sure I follow. I'd expect Cabal to cache plans for all the targets separately then, unless there's a build plan that works for all of them.

I also think your described behavior is too implicit and not a good default.

I'd actually expect two resolutions, unless I did run something like cabal configure all beforehand.

@phadej
Copy link
Collaborator

phadej commented Jul 14, 2022

I'd expect Cabal to cache plans for all the targets separately then,

That would be another caching strategy, cabal-install doesn't do that now, but rather follows single install-plan strategy. Implicit enabling of some targets in cabal test and cabal benchmark is weird though. But as nothing related is documented nor specified, I guess it all can be changed (if someone specifies the precise semantics so we don't need to argue what is a feature and what is a bug, until then I'd consider current behavior to be indented feature).

@phadej
Copy link
Collaborator

phadej commented Jul 14, 2022

I'd welcome a feature where tar.gz local and remote packages, and source-repository-packages were treated like override package-repositories (i.e. like a single version "hackage"-like repositories) rather than a must have packages.
i.e. if package in source-repository-package is needed, than it's build, but cabal build all won't match on it.

However, it would be weird to say

packages: http://.../foo.tar.gz

and cabal build all won't build foo, because foo is in packages:. In fact, stack had a way to specify git packages in their packages:, but later moved them to extra-deps (which are more like package-repositories specification, though not exactly). So it would be better to have different field for these to avoid possible confusion.

EDIT: currently e.g. --enable-tests doesn't enable tests in source-repository-package as they are not "local", but they are still project packages. So they are something in between, and that something in between is also confusing.

That is a somewhat radical change (i.e. only truly local unpacked packages were "project" / "local" packages), which needs some dedicated person to push through. I won't be one.

@ParetoOptimalDev
Copy link

ParetoOptimalDev commented Feb 12, 2023

source-repository-packages were treated like override package-repositories

Can anyone point me to the documentation (if it exists, I couldn't find it) or implementation for "override package-repositories"?

@Mikolaj
Copy link
Member

Mikolaj commented Feb 13, 2023

I don't know, but somewhat related is #7783.

hamishmack added a commit to input-output-hk/haskell.nix that referenced this issue Feb 29, 2024
hamishmack added a commit to input-output-hk/haskell.nix that referenced this issue Jul 12, 2024
* Update nixpkgs pins

* Remove sphinx override

* Boot with ghc 8.10.7

* Patch code in case we decide to run sphinx doc generation

* Remove reference to old pkg

* Bump pinned haskellNix in nix-tools subdir

* Remove sphinx dependency and don't build docs for old GHCs

* Add materialized files

* Remove broken assert

* Fix disabling docs

* ifdLevel 1

* Try building ghc 9.2.8 with 9.2.8

* ifdLevel 0

* Try ghc902 to boot native ghc928

* Try haskell.nix ghc902 to boot native ghc928

* ifdLevel 1

* Stick with haskell.nix ghc 8.10.7 for building 9.2.8

* Bump ghc99

* Fix hash for linux

* Use ghc 9.6.4 to build git ghc commits

* Disable ghc-iserv-prof for ghc HEAD for now

* Fix logic

* ifdLevel 2

* Bump pins

* Fix for libsodium 1.0.19

* Fix hash

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Bump iserv-proxy

* Let's try using it directly.

* Add os-string package for ghc head

* Fix winePackage.minimal

* Update hackage-head

* Disable plugin test for ghc head

* Fix for emscripten in nixpkgs-unstable

* Fix for ghc 9.8.1

* Keep haddock but not sphinx docs

* ifdLevel 0

* ifdLevel 1

* Fix for musl

* ifdLevel 2

* ifdLevel 0

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Update hackage head

* Fix for ghc head

* Better fix for `os-string`

* Workaround for haskell/cabal#5444

* Conditional source-repository-package support

* Add missing \n

* Avoid libsodium on ghcjs and update hackage head

* Updte head.hackage sha256

* Updte head.hackage sha256

* Fix code coverage for ghc HEAD

* Fix code coverage for ghc HEAD

* Fix code coverage for ghc HEAD

* Updte head.hackage sha256

* Fixes for latest ghc 9.9

* ifdLevel 0

* Bump ghc99 pin

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Fix paths

* ifdLevel 1

* Fix paths

* ifdLevel 2

* ifdLevel 3

* Fix for ghc 8.10

* Exclude plugin test

* ifdLevel 0

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Remove patch replaced by ghc source patch

* Always build mingwW64

* Drop bad hack

* Try to fix windows ASLR.

Since binutils 2.36, it defaults to building ASLR for windows. This somehow seems to break with libffi and ghc. Not quite clear why exactly, however reverting back to non ASLR does fix it for us for now.

* Update pkgconf-nixpkgs-map.nix

Handle `throw`.

* Fixup throw catch

* Add back in libsodium.

* [win] fix Error: CFI instruction used without previous .cfi_startproc

* Fixup windows relocs

* Fix spelling mistake

* Update lock files

* Add BUGLOG

* Bump LLVM. There is no 9 left in nixpkgs.

* ifdLevel 1

* Make libcxxabi mapping work across multiple nixpkgs

* fix if

* fix parens

* ifdLevel 2

* ifdLevel 3

* head.hackage still needed for text-short

See haskell-hvr/text-short#45

* disable c++ as one breaking issue

* ifdLevel 1

* ifdLevel 2

* Use nixpkgs ghc964 to build hadrian when possible

* Update hadrian materialization

* ifdLevel 3

* Update pins

* ifdLevel 2

* ifdLevel 0

* ifdLevel 1

* ifdLevel 2

* ifdLevel 1

* Fix for new git

* ifdLevel 2

* ifdLevel 3

* Use the old nixpkgs-unstable for now

* ifdLevel 1

* ifdLevel 2

* Remove updated libsodium

* Use the old nixpkgs pins for now

* ifdLevel 3

* Put nixpkgs updates back in

* ifdLevel 0

* Bump nixpkgs pins

* ifdLevel 1

* ifdLevel 2

* Fix for TH test

* ifdLevel 3

* Use .dll.a file in th-dlls-minimal

* Add fix for DLL loading using a `.dll.a` file

* Fix typo

* Apply fix to more ghc versions

* Patch remaining GHC versions

* Update BUGLOG

* Revert "Patch remaining GHC versions"

This reverts commit d7b153f.

* Update hackage repo hashes in cabal.project.local

* ifdLevel 1

* Bump nixpkgs pins and add 24.05

* Pin libsodium to nixpkgs 23.11 version for ci

* ifdLevel 2

* Fix libsodium pin

* Pin libsodium for GHA as well

* Update test/default.nix

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* ifdLevel 1

* Only pin libsodium for haskell code in tests

* Update nixpkgs-unstable pin

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Fix musl libsodium tests

* Add 9.6 linker to 8.10 windows

* ifdLevel 0

* Disable darwin for now

* ifdLevel 1

* ifdLevel 2

* ifdLevel 3

* Disable darwin for now

* Revert "Add 9.6 linker to 8.10 windows"

This reverts commit 3ec62f3.

* Use stable-haskell/iserv-proxy?ref=iserv-syms for ghc <9.4

* Enable macOS and ifdLevel 0

* ifdLevel 1

* ifdLevel 2

* Disable failing test

* ifdLevel 3

* Add macOS back

* We only need iserv-proxy for cross compilation (so leave it out of native ci)

* Add materialized spdx file

---------

Co-authored-by: Moritz Angermann <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants