-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #422 from tweag/feat/nix-bump-pin
Bump Nix/CI, drop support for GHC 8.10, and add support for GHC 9.4 and 9.6
- Loading branch information
Showing
15 changed files
with
247 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,11 @@ | ||
let | ||
# NixOS/Nixpkgs master 2022-11-27 | ||
rev = "a115bb9bd56831941be3776c8a94005867f316a7"; | ||
sha256 = "1501jzl4661qwr45b9ip7c7bpmbl94816draybhh60s9wgxn068d"; | ||
# NixOS/Nixpkgs master on 2024-02-01 | ||
rev = "a6fefb39e18b6ff828c04d59ea26d4988135bb88"; | ||
sha256 = "sha256-lsnvxt/1KCUgrV8KURXdZXRo+mLUZdc7o5H0MvYFOHQ="; | ||
in | ||
import (fetchTarball { | ||
inherit sha256; | ||
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz"; | ||
}) | ||
import ( | ||
fetchTarball { | ||
inherit sha256; | ||
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz"; | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
builtins.import ./shell.nix { ghcAttr = "ghc90"; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
builtins.import ./shell.nix { ghcAttr = "ghc92"; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
builtins.import ./shell.nix { ghcAttr = "ghc94"; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,137 @@ | ||
{ pkgs ? import ./nixpkgs.nix { }, ghc ? pkgs.haskell.compiler.ghc8107 }: | ||
{ | ||
pkgs ? import ./nixpkgs.nix { }, | ||
ghcAttr ? "ghc96", | ||
RVersion ? "4.2.3", | ||
}: | ||
let | ||
inherit (pkgs) | ||
cabal-install | ||
fetchpatch | ||
fetchurl | ||
haskell | ||
python3 | ||
rPackages | ||
rWrapper | ||
stdenv | ||
zeromq | ||
zlib | ||
; | ||
|
||
with pkgs; | ||
inherit (pkgs.lib) lists strings versions; | ||
|
||
let | ||
# Uncomment the line below to build HaskellR against a version of R with | ||
# Set enableStrictBarrier to true to build HaskellR against a version of R with | ||
# the --enable-strict-barrier configure flag enabled for better memory | ||
# diagnostics. | ||
R = (pkgs.R.override { enableStrictBarrier = false; }).overrideAttrs ( | ||
# Pin R to a specific version to avoid breaking changes in the R API. | ||
finalAttrs: prevAttrs: { | ||
version = RVersion; | ||
src = fetchurl { | ||
url = "https://cran.r-project.org/src/base/R-${versions.major finalAttrs.version}/R-${finalAttrs.version}.tar.gz"; | ||
hash = builtins.getAttr RVersion { | ||
"4.0.0" = "sha256-Br6wKRtWmXhITrDctdIzlmXsdFc3vftOhz56WnVJKUA="; | ||
"4.0.1" = "sha256-lf4kpNjY+PiIRgyPX+QxHOxlbnoXItIzIYvAOGG8bzI="; | ||
"4.0.2" = "sha256-07zqs2TaCHZiXkCXgItCUSOV/fQSkvSRWrH9JXwbvnU="; | ||
"4.0.3" = "sha256-CZg6injV+2vEXSexxV+bpSZfePpUpVwTrmkfh8W7ng0="; | ||
"4.0.4" = "sha256-Uj8n1pdEoIyPC9Xh5sPYmk2yntmDOIunCWOjzTpKgC4="; | ||
"4.0.5" = "sha256-Cj7geap3LhMf5UNTEatif8vMtaUMq8VCkub2IEbx/+8="; | ||
"4.1.0" = "sha256-6OaJWdcoLKFHNg/JZEram9FhureBurFNM7iZmpUYJ4E="; | ||
"4.1.1" = "sha256-UV4DJldSJX0LcDbzgPguQrRu2Ec/VPJce2ftJbu902Q="; | ||
"4.1.2" = "sha256-IDYiXp9yB9TOCX5Ulyrs2qi0DX2ZEc0mSR+sWg+rOK8="; | ||
"4.1.3" = "sha256-Ff9bMzxhCUBgsqUunB2OxVzELdAp45yiKr2qkJUm/tY="; | ||
"4.2.0" = "sha256-OOq3cZt60JU4jwaqCQxaKyAnkZRd5g0+K7DqsfUJdIg="; | ||
"4.2.1" = "sha256-TVLbSG0nhI5UYT1O6XetlS7AjOF4B+G1JbEM1ENsZD8="; | ||
"4.2.2" = "sha256-D/YrQuxRr6VxPK7nxP3noMRZQLo5vvjFyUh/7wyVPfU="; | ||
"4.2.3" = "sha256-VeSpptQ74xTiwD0CZqb6VESv3OULMDv8O4Kzl5UW4HQ="; | ||
"4.3.0" = "sha256-RdzEi2zyfTYQIPd/3ho5IJ6Ze4FAKzZjyhwBAFampgk="; | ||
"4.3.1" = "sha256-jdC/JPECPG9hjDsxc4PSkbSklPQNc7mDrCL/6pnkupk="; | ||
"4.3.2" = "sha256-s/V2CsLu6AJqPw7vyyW0dyPZeAOO7o6ER2IJTIYMRSo="; | ||
}; | ||
}; | ||
|
||
# R = pkgs.R.override { enableStrictBarrier = true; }; | ||
|
||
# XXX Workaround https://ghc.haskell.org/trac/ghc/ticket/11042. | ||
libHack = | ||
if stdenv.isDarwin | ||
then { DYLD_LIBRARY_PATH = [ "${R}/lib/R/lib" ]; } | ||
else { LD_LIBRARY_PATH = [ "${R}/lib/R" ]; } | ||
; | ||
patches = | ||
prevAttrs.patches or [ ] | ||
# R: 4.0.4 -> 4.1.0 | ||
# See https://github.com/NixOS/nixpkgs/commit/9a88197fe7825f486052e3a9eca4a68192335978 | ||
++ | ||
lists.optionals | ||
( | ||
RVersion == "4.1.0" | ||
&& strings.hasInfix "--without-recommended-packages" (prevAttrs.preConfigure or "") | ||
) | ||
[ | ||
(fetchpatch { | ||
name = "fix-tests-without-recommended-packages.patch"; | ||
url = "https://github.com/wch/r-source/commit/7715c67cabe13bb15350cba1a78591bbb76c7bac.patch"; | ||
# this part of the patch reverts something that was committed after R 4.1.0, so ignore it. | ||
excludes = [ "tests/Pkgs/xDir/pkg/DESCRIPTION" ]; | ||
hash = "sha256-iguLndCIuKuCxVCi/4NSu+9RzBx5JyeHx3K6IhpYshQ="; | ||
}) | ||
(fetchpatch { | ||
name = "use-codetools-conditionally.patch"; | ||
url = "https://github.com/wch/r-source/commit/7543c28b931db386bb254e58995973493f88e30d.patch"; | ||
hash = "sha256-+yHXB5AItFyQjSxfogxk72DrSDGiBh7OiLYFxou6Xlk="; | ||
}) | ||
] | ||
# R: 4.1.3 -> 4.2.0 | ||
# See: https://github.com/NixOS/nixpkgs/commit/5eb9f35c44d30153ff1df2105ed73e148a79a3ee | ||
++ lists.optionals (RVersion == "4.2.0" || RVersion == "4.2.1") [ | ||
(fetchpatch { | ||
name = "test-reg-packages.patch"; | ||
url = "https://raw.githubusercontent.com/NixOS/nixpkgs/5eb9f35c44d30153ff1df2105ed73e148a79a3ee/pkgs/applications/science/math/R/test-reg-packages.patch"; | ||
hash = "sha256-FUzrenAFvD8GL1/RMG8DRRx+ITcEkDkRGKTVyAhyKqA="; | ||
}) | ||
]; | ||
|
||
python3Env = python3.withPackages (ps: with ps; [ | ||
ipython | ||
jupyter_client | ||
notebook | ||
]); | ||
postPatch = | ||
prevAttrs.postPatch or "" | ||
# Nixpkgs ships with curl >= 8.x, which is not compatible with R pre-4.3. However, in the release notes for R | ||
# 4.3 (https://stat.ethz.ch/pipermail/r-announce/2023/000691.html), it is mentioned that despite the major | ||
# version change for curl, the API is still compatible with the previous version. Therefore, we can patch the | ||
# check for curl 7.x. This fixes the following error: | ||
# error: libcurl >= 7.28.0 library and headers are required with support for https | ||
# We must patch the ./configure script and the ./m4/R.m4 file to make this work. | ||
+ strings.optionalString (strings.versionOlder RVersion "4.3.0") '' | ||
substituteInPlace \ | ||
./configure \ | ||
./m4/R.m4 \ | ||
--replace-fail \ | ||
"#if LIBCURL_VERSION_MAJOR > 7" \ | ||
"#if LIBCURL_VERSION_MAJOR < 7" \ | ||
--replace-fail \ | ||
"#elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28" \ | ||
"#elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28 || LIBCURL_VERSION_MAJOR == 8" | ||
''; | ||
} | ||
); | ||
|
||
rEnv = rWrapper.override { | ||
packages = with rPackages; [ | ||
# ggplot2 is required for ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb | ||
ggplot2 | ||
]; | ||
inherit R; | ||
# ggplot2 is required for ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb | ||
packages = with rPackages; [ ggplot2 ]; | ||
}; | ||
in | ||
|
||
haskell.lib.buildStackProject ({ | ||
python3Env = python3.withPackages ( | ||
ps: with ps; [ | ||
ipython | ||
jupyter_client | ||
notebook | ||
] | ||
); | ||
in | ||
haskell.lib.buildStackProject { | ||
name = "HaskellR"; | ||
inherit ghc; | ||
ghc = pkgs.haskell.compiler.${ghcAttr}; | ||
buildInputs = [ | ||
zeromq | ||
zlib | ||
cabal-install | ||
python3Env | ||
rEnv | ||
zeromq | ||
zlib | ||
]; | ||
LANG = "en_US.UTF-8"; | ||
} // libHack) | ||
# NOTE: Workaround https://ghc.haskell.org/trac/ghc/ticket/11042. | ||
${(strings.optionalString stdenv.isDarwin "DY") + "LD_LIBRARY_PATH"} = [ | ||
("${R}/lib/R" + (strings.optionalString stdenv.isDarwin "/lib")) | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
resolver: lts-21.25 | ||
|
||
packages: | ||
- examples | ||
- H | ||
- IHaskell | ||
- inline-r | ||
|
||
extra-deps: | ||
- ghc-parser-0.2.6.0 | ||
- ihaskell-0.11.0.0 | ||
- ihaskell-blaze-0.3.0.1 | ||
- ipython-kernel-0.11.0.0 | ||
|
||
nix: | ||
shell-file: ./shell-lts-21.nix | ||
path: ["nixpkgs=./nixpkgs.nix"] |
Oops, something went wrong.