Skip to content
Snippets Groups Projects
Commit cc6683c2 authored by Daniel Firth's avatar Daniel Firth
Browse files

factor into packages

parent 0d862056
2 merge requests!5v0.11.0 and v0.12.0,!4Compiler: Text -> List Natural
This commit is part of merge request !4. Comments created here will be created in the context of that merge request.
Showing
with 141 additions and 187 deletions
let modPackageList = ../PackageList/modPackageList.dhall
let Modifiers = ../Modifiers/Type.dhall
let PackageSet = ./Type.dhall
let modPackageSet
: Modifiers → PackageSet → PackageSet
= λ(xs : Modifiers) →
λ(ps : PackageSet) →
ps
with packages = modPackageList xs ps.packages
in modPackageSet
{ Type = ./Type.dhall, modPackageSet = ./modPackageSet.dhall }
let PackageSet = ../PackageSet/Type.dhall
let PackageSetExportSettings =
{ packagesDir : Text, packageSetFile : Text, packageSet : PackageSet }
in PackageSetExportSettings
{ Type = ./Type.dhall }
let Policy = < Keep | Pin > in Policy
{ Type = ./Type.dhall }
let Prelude =
env:DHALL_PRELUDE
? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v21.1.0/Prelude/package.dhall
sha256:0fed19a88330e9a8a3fbe1e8442aa11d12e38da51eb12ba8bcb56f3c25d0854a
in Prelude
let HaskellSource = ../HaskellSource/Type.dhall
let HaskellPackage = ../HaskellPackage/package.dhall
let callGit
: ∀(url : Text) →
∀(revision : Text) →
∀(subdir : Text) →
HaskellPackage.Type
= λ(url : Text) →
λ(revision : Text) →
λ(subdir : Text) →
HaskellPackage::{
, source = HaskellSource.FromGit { url, revision, subdir }
}
in callGit
let Version = ../Version/Type.dhall
let HaskellSource = ../HaskellSource/Type.dhall
let HaskellPackage = ../HaskellPackage/package.dhall
let callHackage
: ∀(name : Text) → ∀(version : Version) → HaskellPackage.Type
= λ(name : Text) →
λ(version : Version) →
HaskellPackage::{ source = HaskellSource.FromHackage { name, version } }
in callHackage
let Prelude = ../Prelude.dhall
let Version = ../Version/Type.dhall
let Version/show = ../Version/show.dhall
let HaskellPackage = ../HaskellPackage/package.dhall
let callTarball = ./callTarball.dhall
let callHorizonGitlab
: ∀(name : Text) → Version → ∀(subdir : Text) → HaskellPackage.Type
= λ(name : Text) →
λ(version : Version) →
λ(subdir : Text) →
callTarball
( Prelude.Text.concat
[ "https://gitlab.horizon-haskell.net/haskell/"
, name
, "/-/archive/"
, Version/show version
, "/"
, name
, "-"
, Version/show version
, ".tar.gz"
]
)
subdir
in callHorizonGitlab
let HaskellSource = ../HaskellSource/Type.dhall
let HaskellPackage = ../HaskellPackage/package.dhall
let callTarball
: ∀(url : Text) → ∀(subdir : Text) → HaskellPackage.Type
= λ(url : Text) →
λ(subdir : Text) →
HaskellPackage::{ source = HaskellSource.FromTarball { url, subdir } }
in callTarball
{ callGit = ./callGit.dhall
, callHackage = ./callHackage.dhall
, callTarball = ./callTarball.dhall
, callHorizonGitlab = ./callHorizonGitlab.dhall
}
let Version = List Natural in Version
{ Type = ./Type.dhall, show = ./show.dhall }
let Prelude = ../Prelude.dhall
let Version = ./Type.dhall
let Version/show
: Version → Text
= λ(version : Version) →
Prelude.Text.concatMapSep "." Natural Prelude.Natural.show version
in Version/show
let H =
let Horizon =
./package.dhall
sha256:b27c8370f2ca1cf1b3d3465f5860dc78d67be1615dd9de94f091439c10008fff
sha256:670948c2368f24662dabce3b2944144d77c62d0999151aef4acbb06380a693f7
let H = Horizon.Utils
let P = Horizon.Policy.Type
let packages =
{ Cabal = H.callHackage "Cabal" [ 3, 8, 1, 0 ]
......@@ -83,7 +87,7 @@ let packages =
H.callHackage "optparse-applicative" [ 0, 17, 0, 0 ]
, parsec =
(H.callHackage "parsec" [ 3, 1, 16, 1 ])
with policy = [ H.Policy.Keep ]
with policy = [ P.Keep ]
, pcre-light = H.callHackage "pcre-light" [ 0, 4, 1, 0 ]
, pretty-show = H.callHackage "pretty-show" [ 1, 10 ]
, primitive = H.callHackage "primitive" [ 0, 7, 4, 0 ]
......@@ -151,7 +155,7 @@ let packages =
, xml = H.callHackage "xml" [ 1, 3, 14 ]
}
in H.HorizonExport.MakePackageSet
in Horizon.HorizonExport.Type.MakePackageSet
{ packageSetFile = "initial-packages.nix"
, packagesDir = "pkgs/"
, packageSet = { ghcVersion = [ 9, 4, 4 ], packages = toMap packages }
......
let Prelude =
env:DHALL_PRELUDE
? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v21.1.0/Prelude/package.dhall
sha256:0fed19a88330e9a8a3fbe1e8442aa11d12e38da51eb12ba8bcb56f3c25d0854a
let FilePath = Text
let Directory = Text
let Name = Text
let Version = List Natural
let Revision = Text
let Subdir = Text
let Url = Text
let HaskellSource =
< FromHackage : { name : Name, version : Version }
| FromGit : { url : Url, revision : Revision, subdir : Optional Subdir }
| FromTarball : { url : Url, subdir : Optional Subdir }
>
let Modifiers =
{ Type =
{ doBenchmark : Bool
, doCheck : Bool
, doJailbreak : Bool
, enableProfiling : Bool
, includeBenchmarks : Bool
, includeExecutables : Bool
, includeTests : Bool
}
, default =
{ doBenchmark = False
, doCheck = False
, doJailbreak = True
, enableProfiling = True
, includeBenchmarks = True
, includeExecutables = True
, includeTests = True
}
}
let Attr = λ(a : Type) → { mapKey : Text, mapValue : a }
let Policy = < Keep | Pin >
let Flag
: ∀(x : Type) → Type
= λ(x : Type) → < Disable : x | Enable : x >
let CabalFlag = Flag Text
let HaskellPackage =
{ Type =
{ source : HaskellSource
, modifiers : Modifiers.Type
, policy : List Policy
, flags : List CabalFlag
}
, default =
{ modifiers = Modifiers.default
, flags = [] : List CabalFlag
, policy = [] : List Policy
}
}
let PackageEntry = Attr HaskellPackage.Type
let PackageList = List PackageEntry
let PackageSet = { ghcVersion : Version, packages : PackageList }
let Overlay = PackageSet
let PackageSetExportSettings =
{ packagesDir : Directory
, packageSetFile : FilePath
, packageSet : PackageSet
}
let OverlayExportSettings =
{ packagesDir : Directory, overlayFile : FilePath, overlay : Overlay }
let HorizonExport =
< MakePackageSet : PackageSetExportSettings
| MakeOverlay : OverlayExportSettings
>
let callHackage
: Name → Version → HaskellPackage.Type
= λ(name : Name) →
λ(version : Version) →
HaskellPackage::{ source = HaskellSource.FromHackage { name, version } }
let callGit
: Url → Revision → Optional Subdir → HaskellPackage.Type
= λ(url : Url) →
λ(revision : Revision) →
λ(subdir : Optional Subdir) →
HaskellPackage::{
, source = HaskellSource.FromGit { url, revision, subdir }
}
let callTarball
: Url → Optional Subdir → HaskellPackage.Type
= λ(url : Url) →
λ(subdir : Optional Subdir) →
HaskellPackage::{ source = HaskellSource.FromTarball { url, subdir } }
let Version/show
: Version → Text
= λ(version : Version) →
Prelude.Text.concatMapSep "." Natural Prelude.Natural.show version
let callHorizonGitlab
: Name → Version → Optional Subdir → HaskellPackage.Type
= λ(name : Name) →
λ(version : Version) →
λ(subdir : Optional Subdir) →
callTarball
( Prelude.Text.concat
[ "https://gitlab.horizon-haskell.net/haskell/"
, name
, "/-/archive/"
, Version/show version
, "/"
, name
, "-"
, Version/show version
, ".tar.gz"
]
)
subdir
let modPackageList
: Modifiers.Type → PackageList → PackageList
= λ(xs : Modifiers.Type) →
λ(ps : PackageList) →
Prelude.List.map
PackageEntry
PackageEntry
(λ(x : PackageEntry) → x with mapValue.modifiers = xs)
ps
let modPackageSet
: Modifiers.Type → PackageSet → PackageSet
= λ(xs : Modifiers.Type) →
λ(ps : PackageSet) →
ps
with packages = modPackageList xs ps.packages
in { Attr
, CabalFlag
, Directory
, FilePath
, Flag
, HaskellSource
, HaskellPackage
, HorizonExport
, Modifiers
, Name
, OverlayExportSettings
, Overlay
, PackageEntry
, PackageList
, PackageSetExportSettings
, PackageSet
, Policy
, Revision
, Subdir
, Version
, Url
, callGit
, callHackage
, callTarball
, callHorizonGitlab
, modPackageList
, modPackageSet
}
{ CabalFlag = ./CabalFlag/package.dhall
, Flag = ./Flag/package.dhall
, HaskellSource = ./HaskellSource/package.dhall
, HaskellPackage = ./HaskellPackage/package.dhall
, HorizonExport = ./HorizonExport/package.dhall
, Modifiers = ./Modifiers/package.dhall
, OverlayExportSettings = ./OverlayExportSettings/package.dhall
, PackageList = ./PackageList/package.dhall
, PackageSetExportSettings = ./PackageSetExportSettings/package.dhall
, PackageSet = ./PackageSet/package.dhall
, Policy = ./Policy/package.dhall
, Utils = ./Utils/package.dhall
, Version = ./Version/package.dhall
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment