Yesterday with @infinisil on #nixos, he pointed me to: peti/jailbreak-cabal#7 after a good deal of time wrangling through a package to make it work.
The `nix-build -K` command, is very handy for debugging things like these, again I learnt from infinisil.
And after much experimenting and looking through, it turned out that jailbreaking wasn't working as expected, and its documentation could point it out to avoid future confusion.
webify needs a bump in the cabal file. As the last upstream commit is
two years ago, I think it makes sense to not wait for upstream to merge
the PR [0] and release a new version.
[0] https://github.com/ananthakumaran/webify/pull/27
This makes packages use lapack and blas, which can wrap different
BLAS/LAPACK implementations.
treewide: cleanup from blas/lapack changes
A few issues in the original treewide:
- can’t assume blas64 is a bool
- unused commented code
This closes#79441.
ghcWithPackages is using `ghc-pkg recache` to build its package
database. By doing so, it overrides the `package.cache[.lock]` files.
Details are unclear, but GHC 8.10 changed a bit the behavior.
Previously, it was unconditionally replacing the files by new ones. Now
it tries to open (for modification) the files. These files are symlinks
to another nix derivation, which is hence read-only.
This commit removes the files before running `ghc-pkg recache`, hence it
will just write the new files.
Tested with `haskellPackages.ghcWithPackages` (i.e. GHC 8.8) and
`haskell.packages.ghc8101.ghcWithPackages` (i.e GHC 8.10) with the
following nix file, at the root of the nixpkgs repository:
```
with import ./. {
overlays = [
(
self: super: {
haskellPackages = super.haskell.packages.ghc8101.override {
overrides = selfh: superh: {
th-lift-instances = super.haskell.lib.doJailbreak superh.th-lift-instances;
th-expand-syns = super.haskell.lib.doJailbreak superh.th-expand-syns;
th-reify-many = super.haskell.lib.doJailbreak superh.th-reify-many;
th-orphans = super.haskell.lib.doJailbreak superh.th-orphans;
haskell-src-meta = super.haskell.lib.doJailbreak superh.haskell-src-meta;
};
};
}
)
];
};
haskellPackages.ghcWithPackages(p:[p.PyF])
```
This will test with GHC 8.10. Comment out the `overlays` to test with
GHC 8.8.
The configuration-tensorflow.nix file specified several overrides for version
0.2.x packages, but those packages are no longer included in our package set
because they are so old. (Current versions seem to be in the range of 0.6.x.)
I fixed the evalution errors, but I did not verify whether these packages
actually build with the newer versions.
I checked through haskellPackages looking for packages that were
marked as broken, but successfully built.
I identified these 162 packages that were marked as broken in spite of
building successfully for me with NIXPKGS_ALLOW_BROKEN.
`cabal2nix` fails to evaluate due to attempting to
evaluate `pkgs.haskellPackages.hackage-db_2_1_0`, which
does not exist. However, the default
`pkgs.haskellPackages.hackage-db` is already version 2.1.0,
so the fix is simple: go back to using the default version.
Ping @cdepillabout because purescript is broken.
Ping @kiwi because matterhorn is broken.
Ping @roberth because arion-compose is broken.
Ping @psibi because persistent-postgresql is broken.
- tasty-tap's tests were failing. In
https://github.com/NixOS/nixpkgs/pull/71017 a patch generated from a
PR was applied to fix this.
- That PR has now been merged into tasty-tap and was released with
version 0.1.0.
- tasty-tap is now at version 0.1.0 in nixpkgs and so the patch fails
to apply, breaking the build.
- Removed the patch and removed tasty-tap from list of broken
packages.
Current, the `cabal2nix` derivation contains both the executable, and a wrapper
that adds `nix` and `nix-prefetch-scripts`, which are required for some
features.
However, when calling `callCabal2nix` to create a derivation from a cabal file
at evaluation time,
these features are not actually used, but the huge closure of
`nix-prefetch-scripts` (which includes multiple vcs, as well as python and perl)
still needs to be fetched.
This commit splits cabal2nix into a lightweight version that is a standalone
static binary (`cabal2nix-unwrapped`), and a wrapper that includes the proper
dependencies in the path for full usage of the command line
utility (`cabal2nix`).
This commit also switches to the default ghc, to reduce the likelyhood of
building a different ghc when calling `callCabal2nix`.
If you actually look at the changelog for 1.4.2.1, you'll see that it
mentions that it was only intended for ghc-7.0.4, which is why it has
a dependency on an inconveniently old version of `unix`, which
is *also* hidden behind a flag, so that we can't jailbreak it (per
https://github.com/peti/jailbreak-cabal/issues/15).
So the right thing to do would appear to me to be to override our
default version to 1.4.2.0, until such time as the maintainer makes a
newer release.
`ConfigFile` was collateral damage, so unmark it broken, as well as
`MissingH` itself.
The patchs in question fail to apply against the current versoin, and
thus the package fails to build; `hasktags` is then collateral damage.
Remove reference to the patch and make sure neither package will be
marked broken going forward.
Unfortunately, we cannot compile git-annex with S3 support in an
LTS-15.x environment, because the 'aws' library hasn't updated to
version 3.x of the 'network' library [1]. I tried whether it's
possible to build git-annex with an older version of network, but
the amount of overrides we'd have to configure to accomplish that
got out of hand quickly. So I disabled aws support [2]. If you
need S3 support in git-annex, please help upstream to update
'aws' so that it builds with recent versions of 'network'.
[1] https://github.com/aristidb/aws/issues/264
[2] 1d0459f40e
This includes two layered changes so the gtk2hs packages build on Darwin:
- For `glib`, `gio`, `gtk`, `gtk3`, and `pango`: the fix for version 0.13.8.0
from https://github.com/gtk2hs/gtk2hs/pull/293 . I expect at some point the
referenced fix (or one like it) will be released and and brought into
nixpkgs, at which point the override and patch files here can (in fact must)
be removed.
- For `gtk` and `gtk3`: also apply the required cabal flag cited in
https://github.com/gtk2hs/gtk2hs/issues/249 to specify the Quartz rather than
X11 backend (Quartz is the one that both nixpkgs and macOS support
out-the-box). This override is likely to be wanted indefinitely.
Both modifications are required for a successful build of `gtk` or `gtk3` on
Darwin right now.