From 31759b5e49b0f0023c6e5d25b025320ef0c4e09a Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 17:39:17 +0000 Subject: [PATCH 01/19] nixpkgs: bump pinned version --- nixpkgs.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixpkgs.nix b/nixpkgs.nix index c5f229f0..0f4614ba 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -1,7 +1,7 @@ let - # NixOS/Nixpkgs master 2022-11-27 - rev = "a115bb9bd56831941be3776c8a94005867f316a7"; - sha256 = "1501jzl4661qwr45b9ip7c7bpmbl94816draybhh60s9wgxn068d"; + # NixOS/Nixpkgs master 2023-11-29 + rev = "28952798b6803c0f5e4d2b154cbdcb37c80dd15d"; + sha256 = "sha256-nGqnojVDm2TI27Ypq+X5DpvFHILRhbmOJSjA+T8EwR4="; in import (fetchTarball { inherit sha256; From dd4c8c82f6e0895608a482af9669c262e4dd0336 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 17:42:38 +0000 Subject: [PATCH 02/19] ci: bump versions of actions --- .github/workflows/workflow.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 906cba9e..655057d6 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -12,13 +12,13 @@ jobs: run: | choco install -y haskell-stack choco install -y r --version 4.0.0 - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - name: Get Stack snapshot install directory id: stack-snapshot run: | stack path --snapshot-install-root echo "::set-output name=dir::$(stack path --snapshot-install-root)" - - uses: actions/cache@v1 + - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} key: ${{ steps.stack-snapshot.outputs.dir }}-${{ hashFiles('**/*.cabal') }} @@ -37,8 +37,8 @@ jobs: stack_yaml: [stack.yaml, stack-lts-18.yaml, stack-lts-19.yaml] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 - - uses: cachix/install-nix-action@v15 + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v24 with: nix_path: nixpkgs=./nixpkgs.nix - name: Install Stack @@ -52,7 +52,7 @@ jobs: [ ${{ matrix.stack_yaml }} = stack.yaml ] || mv ${{ matrix.stack_yaml }} stack.yaml stack --nix path --snapshot-install-root echo "::set-output name=dir::$(stack --nix path --snapshot-install-root)" - - uses: actions/cache@v2 + - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} key: ${{ steps.stack-snapshot.outputs.dir }}-${{ hashFiles('**/*.cabal') }} From 820de456aaa4a17b2e5beafea50ebd32f15fede6 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 17:53:39 +0000 Subject: [PATCH 03/19] ci: refactor deprecated GitHub set-output commands --- .github/workflows/workflow.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 655057d6..e3f8c2c4 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -15,9 +15,11 @@ jobs: - uses: actions/checkout@v4 - name: Get Stack snapshot install directory id: stack-snapshot + # NOTE: `stack path` must run at least once prior to caching to ensure the directory + # exists and is populated. run: | stack path --snapshot-install-root - echo "::set-output name=dir::$(stack path --snapshot-install-root)" + echo "dir=$(stack path --snapshot-install-root)" > "${GITHUB_OUTPUT}" - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} @@ -46,12 +48,14 @@ jobs: nix-env -f. -iA nixpkgs.stack - name: Get Stack snapshot install directory id: stack-snapshot + # NOTE: `stack path` must run at least once prior to caching to ensure the directory + # exists and is populated. + # NOTE: The renaming of the stack.yaml file is a workaround for + # https://github.com/commercialhaskell/stack/issues/5028. run: | - # XXX Workaround - # https://github.com/commercialhaskell/stack/issues/5028. [ ${{ matrix.stack_yaml }} = stack.yaml ] || mv ${{ matrix.stack_yaml }} stack.yaml stack --nix path --snapshot-install-root - echo "::set-output name=dir::$(stack --nix path --snapshot-install-root)" + echo "dir=$(stack --nix path --snapshot-install-root)" > "${GITHUB_OUTPUT}" - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} From e27cb73cd1d25af68a4e56e40351b460596ca730 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 17:56:56 +0000 Subject: [PATCH 04/19] ci: simplify cache keys (taken from #420) --- .github/workflows/workflow.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index e3f8c2c4..bda4fe24 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -23,9 +23,8 @@ jobs: - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} - key: ${{ steps.stack-snapshot.outputs.dir }}-${{ hashFiles('**/*.cabal') }} - restore-keys: | - ${{ runner.os }}-stack- + key: ${{ runner.os }}-stack-${{ hashFiles('**/*.cabal') }} + restore-keys: ${{ runner.os }}-stack- - name: Build run: | stack build inline-r H ` @@ -59,9 +58,8 @@ jobs: - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} - key: ${{ steps.stack-snapshot.outputs.dir }}-${{ hashFiles('**/*.cabal') }} - restore-keys: | - ${{ steps.stack-snapshot.outputs.dir }} + key: ${{ runner.os }}-stack-${{ hashFiles('**/*.cabal') }} + restore-keys: ${{ runner.os }}-stack- - name: Build run: | stack --nix build From faa448603c880dc78e47e928a26b909868b86dc8 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 18:12:08 +0000 Subject: [PATCH 05/19] ci: don't fail fast; produce logs for all runners --- .github/workflows/workflow.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index bda4fe24..8dee173b 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -33,6 +33,7 @@ jobs: test: name: Build & Test - ${{ matrix.os }} - ${{ matrix.stack_yaml }} strategy: + fail-fast: false matrix: os: [ubuntu-latest, macos-latest] stack_yaml: [stack.yaml, stack-lts-18.yaml, stack-lts-19.yaml] From c254dd499d38785cf0e34e9d8f891056f526ac82 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Wed, 29 Nov 2023 18:24:24 +0000 Subject: [PATCH 06/19] ci: fix cache path variable export on Windows --- .github/workflows/workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 8dee173b..ef1e2274 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -19,7 +19,7 @@ jobs: # exists and is populated. run: | stack path --snapshot-install-root - echo "dir=$(stack path --snapshot-install-root)" > "${GITHUB_OUTPUT}" + "dir=$(stack path --snapshot-install-root)" | Out-File -FilePath $env:GITHUB_OUTPUT -Append - uses: actions/cache@v3 with: path: ${{ steps.stack-snapshot.outputs.dir }} From 757e8e74fbd8065503f01a1cc12fbb1e8999c876 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Mon, 4 Dec 2023 19:40:41 +0000 Subject: [PATCH 07/19] shell.nix: Pin R to prevent API breakage --- shell.nix | 102 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 37 deletions(-) diff --git a/shell.nix b/shell.nix index 53f2f8b9..1af57793 100644 --- a/shell.nix +++ b/shell.nix @@ -1,43 +1,71 @@ -{ pkgs ? import ./nixpkgs.nix { }, ghc ? pkgs.haskell.compiler.ghc8107 }: - -with pkgs; - +{ + pkgs ? import ./nixpkgs.nix {}, + ghc ? pkgs.haskell.compiler.ghc8107, +}: let - # Uncomment the line below to build HaskellR against a version of R with + callPackage = pkgs.lib.flip pkgs.callPackage {inherit R;}; + # 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 = "4.2.3"; + src = pkgs.fetchurl { + url = "https://cran.r-project.org/src/base/R-${pkgs.lib.versions.major finalAttrs.version}/R-${finalAttrs.version}.tar.gz"; + sha256 = "sha256-VeSpptQ74xTiwD0CZqb6VESv3OULMDv8O4Kzl5UW4HQ="; + }; + } + ); +in +callPackage ( + { + fetchurl, + haskell, + lib, + python3, + rPackages, + rWrapper, + stdenv, + zeromq, + R, + zlib, + }: + let + # NOTE: 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"];}; - # 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" ]; } - ; - - python3Env = python3.withPackages (ps: with ps; [ - ipython - jupyter_client - notebook - ]); + python3Env = python3.withPackages ( + ps: + with ps; [ + ipython + jupyter_client + notebook + ] + ); - rEnv = rWrapper.override { - packages = with rPackages; [ + rEnv = rWrapper.override { + inherit R; # ggplot2 is required for ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb - ggplot2 - ]; - }; -in - -haskell.lib.buildStackProject ({ - name = "HaskellR"; - inherit ghc; - buildInputs = [ - zeromq - zlib - python3Env - rEnv - ]; - LANG = "en_US.UTF-8"; -} // libHack) + packages = with rPackages; [ggplot2]; + }; + in + haskell.lib.buildStackProject ( + { + name = "HaskellR"; + inherit ghc; + buildInputs = [ + zeromq + zlib + python3Env + rEnv + ]; + LANG = "en_US.UTF-8"; + } + // libHack + ) +) From 797e48d4e5a73615204001db52b8479f2572ceaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Facundo=20Dom=C3=ADnguez?= Date: Tue, 19 Dec 2023 21:48:51 +0000 Subject: [PATCH 08/19] Remove bare calls to unsafeCoerce --- inline-r/src/Language/R/HExp.hs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/inline-r/src/Language/R/HExp.hs b/inline-r/src/Language/R/HExp.hs index 91bcc9a3..028b402a 100644 --- a/inline-r/src/Language/R/HExp.hs +++ b/inline-r/src/Language/R/HExp.hs @@ -336,12 +336,12 @@ peekHExp s = do <*> (coerceAnySome <$> R.cdr su) R.Special -> coerce $ return Special R.Builtin -> coerce $ return Builtin - R.Char -> unsafeCoerce $ Char (Vector.unsafeFromSEXP su) - R.Logical -> unsafeCoerce $ Logical (Vector.unsafeFromSEXP su) - R.Int -> unsafeCoerce $ Int (Vector.unsafeFromSEXP su) - R.Real -> unsafeCoerce $ Real (Vector.unsafeFromSEXP su) - R.Complex -> unsafeCoerce $ Complex (Vector.unsafeFromSEXP su) - R.String -> unsafeCoerce $ String (Vector.unsafeFromSEXP su) + R.Char -> coerce $ return $ Char (Vector.unsafeFromSEXP su) + R.Logical -> coerce $ return $ Logical (Vector.unsafeFromSEXP su) + R.Int -> coerce $ return $ Int (Vector.unsafeFromSEXP su) + R.Real -> coerce $ return $ Real (Vector.unsafeFromSEXP su) + R.Complex -> coerce $ return $ Complex (Vector.unsafeFromSEXP su) + R.String -> coerce $ return $ String (Vector.unsafeFromSEXP su) R.DotDotDot -> unimplemented $ "peekHExp: " ++ show (R.typeOf s) R.Vector -> coerce $ Vector <$> (fromIntegral <$> R.trueLength (coerceAny su)) @@ -363,7 +363,7 @@ peekHExp s = do peekElemOff (castPtr $ R.unsafeSEXPToVectorPtr s) 2) <*> (coerceAny <$> R.sexp <$> peekElemOff (castPtr $ R.unsafeSEXPToVectorPtr s) 3) - R.Raw -> unsafeCoerce $ Raw (Vector.unsafeFromSEXP su) + R.Raw -> coerce $ return $ Raw (Vector.unsafeFromSEXP su) R.S4 -> coerce $ S4 <$> (coerceAnySome <$> R.tag su) _ -> unimplemented $ "peekHExp: " ++ show (R.typeOf s) From c3edb3720afcbe3bbf906589cbf1018cbb378243 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 16:23:25 +0000 Subject: [PATCH 09/19] nix: introduce shells for each Stackage LTS --- shell-lts-18.nix | 5 ++ shell-lts-19.nix | 5 ++ shell.nix | 129 ++++++++++++++++++++++++++-------------------- stack-lts-18.yaml | 2 +- stack-lts-19.yaml | 2 +- 5 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 shell-lts-18.nix create mode 100644 shell-lts-19.nix diff --git a/shell-lts-18.nix b/shell-lts-18.nix new file mode 100644 index 00000000..016269b5 --- /dev/null +++ b/shell-lts-18.nix @@ -0,0 +1,5 @@ +let + pkgs = import ./nixpkgs.nix { }; + ghc = pkgs.haskell.compiler.ghc810; +in +builtins.import ./shell.nix { inherit pkgs ghc; } diff --git a/shell-lts-19.nix b/shell-lts-19.nix new file mode 100644 index 00000000..69607c93 --- /dev/null +++ b/shell-lts-19.nix @@ -0,0 +1,5 @@ +let + pkgs = import ./nixpkgs.nix { }; + ghc = pkgs.haskell.compiler.ghc90; +in +builtins.import ./shell.nix { inherit pkgs ghc; } diff --git a/shell.nix b/shell.nix index 1af57793..212d80b3 100644 --- a/shell.nix +++ b/shell.nix @@ -1,71 +1,86 @@ { - pkgs ? import ./nixpkgs.nix {}, - ghc ? pkgs.haskell.compiler.ghc8107, + pkgs ? import ./nixpkgs.nix { }, + ghc ? pkgs.haskell.compiler.ghc92, + RVersion ? "4.2.3", }: let - callPackage = pkgs.lib.flip pkgs.callPackage {inherit R;}; + inherit (pkgs) + fetchurl + haskell + python3 + rPackages + rWrapper + stdenv + zeromq + zlib + ; + + inherit (pkgs.lib) versions; + # 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 ( + R = (pkgs.R.override { enableStrictBarrier = false; }).overrideAttrs ( # Pin R to a specific version to avoid breaking changes in the R API. finalAttrs: prevAttrs: { - version = "4.2.3"; - src = pkgs.fetchurl { - url = "https://cran.r-project.org/src/base/R-${pkgs.lib.versions.major finalAttrs.version}/R-${finalAttrs.version}.tar.gz"; - sha256 = "sha256-VeSpptQ74xTiwD0CZqb6VESv3OULMDv8O4Kzl5UW4HQ="; + 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="; + }; }; } ); -in -callPackage ( - { - fetchurl, - haskell, - lib, - python3, - rPackages, - rWrapper, - stdenv, - zeromq, - R, - zlib, - }: - let - # NOTE: 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"];}; - python3Env = python3.withPackages ( - ps: - with ps; [ - ipython - jupyter_client - notebook - ] - ); + rEnv = rWrapper.override { + inherit R; + # ggplot2 is required for ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb + packages = with rPackages; [ ggplot2 ]; + }; - rEnv = rWrapper.override { - inherit R; - # ggplot2 is required for ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb - packages = with rPackages; [ggplot2]; - }; - in - haskell.lib.buildStackProject ( - { - name = "HaskellR"; - inherit ghc; - buildInputs = [ - zeromq - zlib - python3Env - rEnv - ]; - LANG = "en_US.UTF-8"; - } - // libHack - ) + # NOTE: 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" ]; }; + + python3Env = python3.withPackages ( + ps: with ps; [ + ipython + jupyter_client + notebook + ] + ); +in +haskell.lib.buildStackProject ( + { + name = "HaskellR"; + inherit ghc; + buildInputs = [ + zeromq + zlib + python3Env + rEnv + ]; + LANG = "en_US.UTF-8"; + } + // libHack ) diff --git a/stack-lts-18.yaml b/stack-lts-18.yaml index 1b632d1c..5cdae114 100644 --- a/stack-lts-18.yaml +++ b/stack-lts-18.yaml @@ -10,5 +10,5 @@ extra-deps: - ihaskell-blaze-0.3.0.1 nix: - shell-file: ./shell.nix + shell-file: ./shell-lts-18.nix path: ["nixpkgs=./nixpkgs.nix"] diff --git a/stack-lts-19.yaml b/stack-lts-19.yaml index 6595e99a..0583f542 100644 --- a/stack-lts-19.yaml +++ b/stack-lts-19.yaml @@ -10,5 +10,5 @@ extra-deps: - ihaskell-blaze-0.3.0.1 nix: - shell-file: ./shell.nix + shell-file: ./shell-lts-19.nix path: ["nixpkgs=./nixpkgs.nix"] From 6a090b12d99e14576cd41b13460fed60a8a0be4d Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 18:54:48 +0000 Subject: [PATCH 10/19] nix: bump pin to 2024-02-01 --- nixpkgs.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixpkgs.nix b/nixpkgs.nix index 0f4614ba..77d7ba2e 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -1,7 +1,7 @@ let - # NixOS/Nixpkgs master 2023-11-29 - rev = "28952798b6803c0f5e4d2b154cbdcb37c80dd15d"; - sha256 = "sha256-nGqnojVDm2TI27Ypq+X5DpvFHILRhbmOJSjA+T8EwR4="; + # NixOS/Nixpkgs master on 2024-02-01 + rev = "a6fefb39e18b6ff828c04d59ea26d4988135bb88"; + sha256 = "sha256-lsnvxt/1KCUgrV8KURXdZXRo+mLUZdc7o5H0MvYFOHQ="; in import (fetchTarball { inherit sha256; From df88b3b2abb71d2e1e074745b445befcb3029003 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 18:55:17 +0000 Subject: [PATCH 11/19] nix: patches for older versions of R --- shell.nix | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index 212d80b3..7168fe16 100644 --- a/shell.nix +++ b/shell.nix @@ -5,6 +5,7 @@ }: let inherit (pkgs) + fetchpatch fetchurl haskell python3 @@ -15,7 +16,7 @@ let zlib ; - inherit (pkgs.lib) versions; + inherit (pkgs.lib) lists strings versions; # Set enableStrictBarrier to true to build HaskellR against a version of R with # the --enable-strict-barrier configure flag enabled for better memory @@ -46,6 +47,60 @@ let "4.3.2" = "sha256-s/V2CsLu6AJqPw7vyyW0dyPZeAOO7o6ER2IJTIYMRSo="; }; }; + + 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="; + }) + ]; + + 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" + ''; } ); From 6bd2c591ea96e8f26b8bf56806c2bc12dba898d9 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 19:40:02 +0000 Subject: [PATCH 12/19] update Stackage LTS 20; add Stackage LTS 21 and 22 --- .github/workflows/workflow.yaml | 13 ++++++++--- shell-lts-20.nix | 5 +++++ shell-lts-21.nix | 5 +++++ shell.nix | 2 +- stack-lts-20.yaml | 14 ++++++++++++ stack-lts-20.yaml.lock | 19 ++++++++++++++++ stack-lts-21.yaml | 17 ++++++++++++++ stack-lts-21.yaml.lock | 40 +++++++++++++++++++++++++++++++++ stack.yaml | 2 +- stack.yaml.lock | 8 +++---- 10 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 shell-lts-20.nix create mode 100644 shell-lts-21.nix create mode 100644 stack-lts-20.yaml create mode 100644 stack-lts-20.yaml.lock create mode 100644 stack-lts-21.yaml create mode 100644 stack-lts-21.yaml.lock diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index ef1e2274..772adc0c 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -35,8 +35,15 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest] - stack_yaml: [stack.yaml, stack-lts-18.yaml, stack-lts-19.yaml] + os: + - macos-latest + - ubuntu-latest + stack_yaml: + - stack.yaml + - stack-lts-18.yaml + - stack-lts-19.yaml + - stack-lts-20.yaml + - stack-lts-21.yaml runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -72,6 +79,6 @@ jobs: if: ${{ runner.os == 'Linux' }} run: | stack --nix install - export PATH=~/.local/bin:$PATH + export PATH="$HOME/.local/bin:$PATH" stack --nix exec -- ihaskell install stack --nix exec -- jupyter nbconvert --to notebook --execute --inplace ./IHaskell/examples/tutorial-ihaskell-inline-r.ipynb diff --git a/shell-lts-20.nix b/shell-lts-20.nix new file mode 100644 index 00000000..6c1b24d5 --- /dev/null +++ b/shell-lts-20.nix @@ -0,0 +1,5 @@ +let + pkgs = import ./nixpkgs.nix { }; + ghc = pkgs.haskell.compiler.ghc92; +in +builtins.import ./shell.nix { inherit pkgs ghc; } diff --git a/shell-lts-21.nix b/shell-lts-21.nix new file mode 100644 index 00000000..9725453b --- /dev/null +++ b/shell-lts-21.nix @@ -0,0 +1,5 @@ +let + pkgs = import ./nixpkgs.nix { }; + ghc = pkgs.haskell.compiler.ghc94; +in +builtins.import ./shell.nix { inherit pkgs ghc; } diff --git a/shell.nix b/shell.nix index 7168fe16..1a91a570 100644 --- a/shell.nix +++ b/shell.nix @@ -1,6 +1,6 @@ { pkgs ? import ./nixpkgs.nix { }, - ghc ? pkgs.haskell.compiler.ghc92, + ghc ? pkgs.haskell.compiler.ghc96, RVersion ? "4.2.3", }: let diff --git a/stack-lts-20.yaml b/stack-lts-20.yaml new file mode 100644 index 00000000..e75a1b15 --- /dev/null +++ b/stack-lts-20.yaml @@ -0,0 +1,14 @@ +resolver: lts-20.26 + +packages: +- examples +- H +- IHaskell +- inline-r + +extra-deps: +- ihaskell-blaze-0.3.0.1 + +nix: + shell-file: ./shell-lts-20.nix + path: ["nixpkgs=./nixpkgs.nix"] diff --git a/stack-lts-20.yaml.lock b/stack-lts-20.yaml.lock new file mode 100644 index 00000000..a2edf554 --- /dev/null +++ b/stack-lts-20.yaml.lock @@ -0,0 +1,19 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: +- completed: + hackage: ihaskell-blaze-0.3.0.1@sha256:57f0e79758d084da3a662d0909ba2b01e469200029fed495fc208ba5f59024fd,2161 + pantry-tree: + sha256: 69fee7554a6410e45011c89d9e9547d18e2798e4f01ebd0426573b05e0e21696 + size: 223 + original: + hackage: ihaskell-blaze-0.3.0.1 +snapshots: +- completed: + sha256: 5a59b2a405b3aba3c00188453be172b85893cab8ebc352b1ef58b0eae5d248a2 + size: 650475 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/26.yaml + original: lts-20.26 diff --git a/stack-lts-21.yaml b/stack-lts-21.yaml new file mode 100644 index 00000000..306f0ea0 --- /dev/null +++ b/stack-lts-21.yaml @@ -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"] diff --git a/stack-lts-21.yaml.lock b/stack-lts-21.yaml.lock new file mode 100644 index 00000000..bd107998 --- /dev/null +++ b/stack-lts-21.yaml.lock @@ -0,0 +1,40 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: +- completed: + hackage: ghc-parser-0.2.6.0@sha256:0b0cbceb3bd2762cef201dc54ae302d7918bed23b2f85ffd99c1c8b6a9df32b6,1579 + pantry-tree: + sha256: 02bb412e738063631d10750648b5c432d5df99599eaeff5050d92df6416df102 + size: 903 + original: + hackage: ghc-parser-0.2.6.0 +- completed: + hackage: ihaskell-0.11.0.0@sha256:beff2321a5d753d8d74509b6b1f4aebc9b466e32bb91d028dc60e08658184625,6729 + pantry-tree: + sha256: 40e8d35f3a061ee0f22825f72c42edfd2352a9a05a4ac85190b6e13a00c23aff + size: 2939 + original: + hackage: ihaskell-0.11.0.0 +- completed: + hackage: ihaskell-blaze-0.3.0.1@sha256:57f0e79758d084da3a662d0909ba2b01e469200029fed495fc208ba5f59024fd,2161 + pantry-tree: + sha256: 69fee7554a6410e45011c89d9e9547d18e2798e4f01ebd0426573b05e0e21696 + size: 223 + original: + hackage: ihaskell-blaze-0.3.0.1 +- completed: + hackage: ipython-kernel-0.11.0.0@sha256:4e1c174037c4088b0113663d17c443fb6612e0f7639d28152c1e237816972550,2676 + pantry-tree: + sha256: 56fb92a6761881b39a0a2e2835e9d6fecd0ad15310c2a5c854ea2abcc9e78ecd + size: 792 + original: + hackage: ipython-kernel-0.11.0.0 +snapshots: +- completed: + sha256: a81fb3877c4f9031e1325eb3935122e608d80715dc16b586eb11ddbff8671ecd + size: 640086 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/25.yaml + original: lts-21.25 diff --git a/stack.yaml b/stack.yaml index 33dad3bd..ac41197c 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-20.11 +resolver: lts-22.8 packages: - examples diff --git a/stack.yaml.lock b/stack.yaml.lock index e58e29b7..f7581dda 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -13,7 +13,7 @@ packages: hackage: ihaskell-blaze-0.3.0.1 snapshots: - completed: - sha256: adbc602422dde10cc330175da7de8609e70afc41449a7e2d6e8b1827aa0e5008 - size: 649342 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/11.yaml - original: lts-20.11 + sha256: 56ef9e03804cb4827866e762dc9752eeb392adda8f4811690da110dd9a165b9e + size: 714105 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/8.yaml + original: lts-22.8 From aa91aaf3a5b08bf072318bce1d667d2ef88ff812 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 19:40:31 +0000 Subject: [PATCH 13/19] inline-r: guard against API change in unix 2.8+ --- inline-r/tests/Test/Event.hs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inline-r/tests/Test/Event.hs b/inline-r/tests/Test/Event.hs index 329b6576..58dae207 100644 --- a/inline-r/tests/Test/Event.hs +++ b/inline-r/tests/Test/Event.hs @@ -82,7 +82,11 @@ tests = testGroup "events" withSystemTempFile "inline-r-" $ \path h -> do hPutStrLn h "hello" hClose h +#if MIN_VERSION_unix(2,8,0) + fd <- openFd path ReadOnly defaultFileFlags{ nonBlock = True } +#else fd <- openFd path ReadOnly Nothing defaultFileFlags{ nonBlock = True } +#endif action fd closeFd fd #endif From c7f1658a716aae47935ce6865b3413df2ddfc8fc Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 20:15:54 +0000 Subject: [PATCH 14/19] ci: attempt to cache nix workflows; bump actions/cache --- .github/workflows/workflow.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 772adc0c..930a1317 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -20,7 +20,7 @@ jobs: run: | stack path --snapshot-install-root "dir=$(stack path --snapshot-install-root)" | Out-File -FilePath $env:GITHUB_OUTPUT -Append - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ steps.stack-snapshot.outputs.dir }} key: ${{ runner.os }}-stack-${{ hashFiles('**/*.cabal') }} @@ -47,9 +47,8 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@v24 - with: - nix_path: nixpkgs=./nixpkgs.nix + - uses: DeterminateSystems/nix-installer-action@main + - uses: DeterminateSystems/magic-nix-cache-action@main - name: Install Stack run: | nix-env -f. -iA nixpkgs.stack @@ -63,7 +62,7 @@ jobs: [ ${{ matrix.stack_yaml }} = stack.yaml ] || mv ${{ matrix.stack_yaml }} stack.yaml stack --nix path --snapshot-install-root echo "dir=$(stack --nix path --snapshot-install-root)" > "${GITHUB_OUTPUT}" - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ steps.stack-snapshot.outputs.dir }} key: ${{ runner.os }}-stack-${{ hashFiles('**/*.cabal') }} From f5712ccadf879cc5687f7a91e5d32ba7cca440ff Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 20:26:30 +0000 Subject: [PATCH 15/19] ci: only run on master and PRs against master --- .github/workflows/workflow.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 930a1317..b1a04265 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -1,7 +1,11 @@ name: Continuous integration on: - - push - - pull_request + push: + branches: + - master + pull_request: + branches: + - master jobs: build: From 9e9d6f0e060257b1b91e0ad6df3b4f88d221dace Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 23:02:09 +0000 Subject: [PATCH 16/19] nix: switch to attribute name for GHC toolchain selection --- nixpkgs.nix | 10 ++++++---- shell-lts-18.nix | 6 +----- shell-lts-19.nix | 6 +----- shell-lts-20.nix | 6 +----- shell-lts-21.nix | 6 +----- shell.nix | 40 ++++++++++++++++++---------------------- 6 files changed, 28 insertions(+), 46 deletions(-) diff --git a/nixpkgs.nix b/nixpkgs.nix index 77d7ba2e..217e0408 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -3,7 +3,9 @@ let 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"; + } +) diff --git a/shell-lts-18.nix b/shell-lts-18.nix index 016269b5..720e51ee 100644 --- a/shell-lts-18.nix +++ b/shell-lts-18.nix @@ -1,5 +1 @@ -let - pkgs = import ./nixpkgs.nix { }; - ghc = pkgs.haskell.compiler.ghc810; -in -builtins.import ./shell.nix { inherit pkgs ghc; } +builtins.import ./shell.nix { ghcAttr = "ghc810"; } diff --git a/shell-lts-19.nix b/shell-lts-19.nix index 69607c93..80ff12ef 100644 --- a/shell-lts-19.nix +++ b/shell-lts-19.nix @@ -1,5 +1 @@ -let - pkgs = import ./nixpkgs.nix { }; - ghc = pkgs.haskell.compiler.ghc90; -in -builtins.import ./shell.nix { inherit pkgs ghc; } +builtins.import ./shell.nix { ghcAttr = "ghc90"; } diff --git a/shell-lts-20.nix b/shell-lts-20.nix index 6c1b24d5..c02b3a02 100644 --- a/shell-lts-20.nix +++ b/shell-lts-20.nix @@ -1,5 +1 @@ -let - pkgs = import ./nixpkgs.nix { }; - ghc = pkgs.haskell.compiler.ghc92; -in -builtins.import ./shell.nix { inherit pkgs ghc; } +builtins.import ./shell.nix { ghcAttr = "ghc92"; } diff --git a/shell-lts-21.nix b/shell-lts-21.nix index 9725453b..6f56f41c 100644 --- a/shell-lts-21.nix +++ b/shell-lts-21.nix @@ -1,5 +1 @@ -let - pkgs = import ./nixpkgs.nix { }; - ghc = pkgs.haskell.compiler.ghc94; -in -builtins.import ./shell.nix { inherit pkgs ghc; } +builtins.import ./shell.nix { ghcAttr = "ghc94"; } diff --git a/shell.nix b/shell.nix index 1a91a570..93e68288 100644 --- a/shell.nix +++ b/shell.nix @@ -1,10 +1,11 @@ { pkgs ? import ./nixpkgs.nix { }, - ghc ? pkgs.haskell.compiler.ghc96, + ghcAttr ? "ghc96", RVersion ? "4.2.3", }: let inherit (pkgs) + cabal-install fetchpatch fetchurl haskell @@ -110,13 +111,6 @@ let packages = with rPackages; [ ggplot2 ]; }; - # NOTE: 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" ]; }; - python3Env = python3.withPackages ( ps: with ps; [ ipython @@ -125,17 +119,19 @@ let ] ); in -haskell.lib.buildStackProject ( - { - name = "HaskellR"; - inherit ghc; - buildInputs = [ - zeromq - zlib - python3Env - rEnv - ]; - LANG = "en_US.UTF-8"; - } - // libHack -) +haskell.lib.buildStackProject { + name = "HaskellR"; + ghc = pkgs.haskell.compiler.${ghcAttr}; + buildInputs = [ + cabal-install + python3Env + rEnv + zeromq + zlib + ]; + LANG = "en_US.UTF-8"; + # 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")) + ]; +} From 5b4d10150f3dfec35919dede114a1a18434e4489 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 1 Feb 2024 23:02:21 +0000 Subject: [PATCH 17/19] ci: use long-flags for nix commands --- .github/workflows/workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index b1a04265..c06f3e7d 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -55,7 +55,7 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@main - name: Install Stack run: | - nix-env -f. -iA nixpkgs.stack + nix-env --file ./nixpkgs.nix --install --attr stack - name: Get Stack snapshot install directory id: stack-snapshot # NOTE: `stack path` must run at least once prior to caching to ensure the directory From a0b83f06436447df9bc7d0cb1d1cc1e23180bd95 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Mon, 5 Feb 2024 15:30:09 +0000 Subject: [PATCH 18/19] drop support for GHC 8.10.7 --- .github/workflows/workflow.yaml | 1 - shell-lts-18.nix | 1 - stack-lts-18.yaml | 14 -------------- stack-lts-18.yaml.lock | 19 ------------------- 4 files changed, 35 deletions(-) delete mode 100644 shell-lts-18.nix delete mode 100644 stack-lts-18.yaml delete mode 100644 stack-lts-18.yaml.lock diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index c06f3e7d..70f5580d 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -44,7 +44,6 @@ jobs: - ubuntu-latest stack_yaml: - stack.yaml - - stack-lts-18.yaml - stack-lts-19.yaml - stack-lts-20.yaml - stack-lts-21.yaml diff --git a/shell-lts-18.nix b/shell-lts-18.nix deleted file mode 100644 index 720e51ee..00000000 --- a/shell-lts-18.nix +++ /dev/null @@ -1 +0,0 @@ -builtins.import ./shell.nix { ghcAttr = "ghc810"; } diff --git a/stack-lts-18.yaml b/stack-lts-18.yaml deleted file mode 100644 index 5cdae114..00000000 --- a/stack-lts-18.yaml +++ /dev/null @@ -1,14 +0,0 @@ -resolver: lts-18.28 - -packages: -- examples -- H -- IHaskell -- inline-r - -extra-deps: -- ihaskell-blaze-0.3.0.1 - -nix: - shell-file: ./shell-lts-18.nix - path: ["nixpkgs=./nixpkgs.nix"] diff --git a/stack-lts-18.yaml.lock b/stack-lts-18.yaml.lock deleted file mode 100644 index 8331cd73..00000000 --- a/stack-lts-18.yaml.lock +++ /dev/null @@ -1,19 +0,0 @@ -# This file was autogenerated by Stack. -# You should not edit this file by hand. -# For more information, please see the documentation at: -# https://docs.haskellstack.org/en/stable/lock_files - -packages: -- completed: - pantry-tree: - sha256: 69fee7554a6410e45011c89d9e9547d18e2798e4f01ebd0426573b05e0e21696 - size: 223 - hackage: ihaskell-blaze-0.3.0.1@sha256:57f0e79758d084da3a662d0909ba2b01e469200029fed495fc208ba5f59024fd,2161 - original: - hackage: ihaskell-blaze-0.3.0.1 -snapshots: -- completed: - sha256: 428ec8d5ce932190d3cbe266b9eb3c175cd81e984babf876b64019e2cbe4ea68 - size: 590100 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/28.yaml - original: lts-18.28 From 648604a061c0b6e6b8ebe9c3e91b2a6c49fc6e49 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Mon, 5 Feb 2024 15:30:44 +0000 Subject: [PATCH 19/19] ci: run on all PRs --- .github/workflows/workflow.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml index 70f5580d..6db01e72 100644 --- a/.github/workflows/workflow.yaml +++ b/.github/workflows/workflow.yaml @@ -4,8 +4,6 @@ on: branches: - master pull_request: - branches: - - master jobs: build: