diff --git a/configuration/common.nix b/configuration/common.nix index 0c213cc6ba395c89de8d56596cbb2eee02a5699a..83bcd10d2486b8980e84f3bacbd082543611eb03 100644 --- a/configuration/common.nix +++ b/configuration/common.nix @@ -62,6 +62,17 @@ final: prev: { ]; }); + llvm-hs-pure = overrideCabal + prev.llvm-hs-pure + (_: + { + patches = [ + ./patches/llvm-hs-pure-01.patch + ]; + }); + + llvm-hs = addPkgconfigDepend prev.llvm-hs pkgs.llvm_15; + postgresql-syntax = overrideCabal prev.postgresql-syntax (_: diff --git a/configuration/patches/llvm-hs-pure-01.patch b/configuration/patches/llvm-hs-pure-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..5c8d22ec664c95393b64bde37fb051592c6c4b02 --- /dev/null +++ b/configuration/patches/llvm-hs-pure-01.patch @@ -0,0 +1,18 @@ +commit af0b103ced22302ab04b11301380c88dbd7bc138 +Author: Ellis Kesterton <erk4@st-andrews.ac.uk> +Date: Sun Dec 24 12:05:23 2023 +0000 + + Update to base 4.19 + +diff --git a/src/LLVM/Prelude.hs b/src/LLVM/Prelude.hs +index 1fe0e08..60737d2 100644 +--- a/src/LLVM/Prelude.hs ++++ b/src/LLVM/Prelude.hs +@@ -30,6 +30,7 @@ import Prelude hiding ( + minimum, maximum, sum, product, all, any, and, or, + concatMap, + elem, notElem, ++ unzip, + ) + import Data.Data (Data, Typeable) + import GHC.Generics (Generic) diff --git a/horizon.dhall b/horizon.dhall index a8cbb7e7295b0f45462c90a0e51f2f184ae9f9cc..bb04b69403650b843aac73b90fd2568b77d7c568 100644 --- a/horizon.dhall +++ b/horizon.dhall @@ -364,6 +364,16 @@ let packages = , linear-base = H.callHackage "linear-base" "0.4.0" , linear-generics = H.callHackage "linear-generics" "0.2.2" , list-transformer = H.callHackage "list-transformer" "1.1.0" + , llvm-hs = + H.callGit + "https://github.com/llvm-hs/llvm-hs" + "5bca2c1a2a3aa98ecfb19181e7a5ebbf3e212b76" + (Some "llvm-hs/") + , llvm-hs-pure = + H.callGit + "https://github.com/llvm-hs/llvm-hs" + "5bca2c1a2a3aa98ecfb19181e7a5ebbf3e212b76" + (Some "llvm-hs-pure/") , lockfree-queue = H.callHackage "lockfree-queue" "0.2.4" , log-base = H.callHackage "log-base" "0.12.0.1" , log-effectful = diff --git a/horizon.lock b/horizon.lock index 7ba8d61417b43bb50c8685932147300f1893c3eb..78f28b48f15c4edaf39fc5147e5a7a320494d37e 100644 --- a/horizon.lock +++ b/horizon.lock @@ -1150,6 +1150,14 @@ , mapValue = "c1864bce656723a3fec4ef5d7ec8c37cab959938da675b74b0d6013df277b72d" } +, { mapKey = "llvm-hs" + , mapValue = + "5edeb371b0a6dea1d5531af4fb942d5edf8c0b1b45ffbd9089324e3a382a52a0" + } +, { mapKey = "llvm-hs-pure" + , mapValue = + "bd7f0934b44aceb8d88763f5ffeee776d0186fc56c0c62cd0f2dc0b346b420de" + } , { mapKey = "lockfree-queue" , mapValue = "d5e06d5f3481122033dbf71f0c272be3a59ed40bf711569e9901fa4e6b228e17" diff --git a/overlay.nix b/overlay.nix index dbdab8d2e74d4b8399308714d350633f82038f8f..52442b36552bd8f3517ab1cf7a983815c40013e6 100644 --- a/overlay.nix +++ b/overlay.nix @@ -577,6 +577,10 @@ final: prev: with pkgs.haskell.lib; { list-transformer = final.callPackage (./pkgs/list-transformer.nix) { }; + llvm-hs = final.callPackage (./pkgs/llvm-hs.nix) { }; + + llvm-hs-pure = final.callPackage (./pkgs/llvm-hs-pure.nix) { }; + lockfree-queue = final.callPackage (./pkgs/lockfree-queue.nix) { }; log-base = final.callPackage (./pkgs/log-base.nix) { }; diff --git a/pkgs/llvm-hs-pure.nix b/pkgs/llvm-hs-pure.nix new file mode 100644 index 0000000000000000000000000000000000000000..f1a9da6c4413eaafdca85a944980351905839290 --- /dev/null +++ b/pkgs/llvm-hs-pure.nix @@ -0,0 +1,36 @@ +{ mkDerivation, attoparsec, base, bytestring, containers, fail +, fetchgit, lib, mtl, tasty, tasty-hunit, tasty-quickcheck +, template-haskell, transformers, unordered-containers +}: +mkDerivation { + pname = "llvm-hs-pure"; + version = "15.0.0"; + src = fetchgit { + url = "https://github.com/llvm-hs/llvm-hs"; + sha256 = "00jqisfaf0dq6zckp6xh3cg92yx32dbzx7p1x7dc8sa870iy7rgf"; + rev = "5bca2c1a2a3aa98ecfb19181e7a5ebbf3e212b76"; + fetchSubmodules = true; + }; + postUnpack = "sourceRoot+=/llvm-hs-pure/; echo source root reset to $sourceRoot"; + isLibrary = true; + isExecutable = false; + enableSeparateDataOutput = false; + libraryHaskellDepends = [ + attoparsec base bytestring containers fail mtl template-haskell + transformers unordered-containers + ]; + testHaskellDepends = [ + base containers mtl tasty tasty-hunit tasty-quickcheck transformers + ]; + enableLibraryProfiling = true; + enableExecutableProfiling = true; + doHaddock = true; + jailbreak = true; + doCheck = false; + doBenchmark = false; + hyperlinkSource = false; + homepage = "http://github.com/llvm-hs/llvm-hs/"; + description = "Pure Haskell LLVM functionality (no FFI)"; + license = lib.licenses.bsd3; + broken = false; +} \ No newline at end of file diff --git a/pkgs/llvm-hs.nix b/pkgs/llvm-hs.nix new file mode 100644 index 0000000000000000000000000000000000000000..7b28324aa07fcda90af7b0fa998207c5d2b81eee --- /dev/null +++ b/pkgs/llvm-hs.nix @@ -0,0 +1,41 @@ +{ mkDerivation, Cabal, QuickCheck, array, attoparsec, base +, bytestring, containers, directory, exceptions, fetchgit, lib +, llvm-hs-pure, mtl, pretty-show, process, tasty, tasty-hunit +, tasty-quickcheck, template-haskell, temporary, transformers +, utf8-string +}: +mkDerivation { + pname = "llvm-hs"; + version = "15.0.0"; + src = fetchgit { + url = "https://github.com/llvm-hs/llvm-hs"; + sha256 = "00jqisfaf0dq6zckp6xh3cg92yx32dbzx7p1x7dc8sa870iy7rgf"; + rev = "5bca2c1a2a3aa98ecfb19181e7a5ebbf3e212b76"; + fetchSubmodules = true; + }; + postUnpack = "sourceRoot+=/llvm-hs/; echo source root reset to $sourceRoot"; + isLibrary = true; + isExecutable = false; + enableSeparateDataOutput = false; + setupHaskellDepends = [ base Cabal containers ]; + libraryHaskellDepends = [ + array attoparsec base bytestring containers exceptions llvm-hs-pure + mtl template-haskell transformers utf8-string + ]; + testHaskellDepends = [ + base bytestring containers directory llvm-hs-pure mtl pretty-show + process QuickCheck tasty tasty-hunit tasty-quickcheck temporary + transformers + ]; + enableLibraryProfiling = true; + enableExecutableProfiling = true; + doHaddock = true; + jailbreak = true; + doCheck = false; + doBenchmark = false; + hyperlinkSource = false; + homepage = "http://github.com/llvm-hs/llvm-hs/"; + description = "General purpose LLVM bindings"; + license = lib.licenses.bsd3; + broken = false; +} \ No newline at end of file