First tries to convert a string into a legal name.
If that fails, defaults to making it a simple name (e.g., Lean.Name.mkSimple
).
Currently used for package and target names taken from the CLI.
Equations
- Lake.stringToLegalOrSimpleName s = if Lean.Name.isAnonymous (String.toName s) = true then Lean.Name.mkSimple s else String.toName s
Instances For
Defaults #
The default setting for a PackageConfig
's buildDir
option.
Equations
- Lake.defaultBuildDir = { toString := "build" }
Instances For
The default setting for a PackageConfig
's leanLibDir
option.
Equations
- Lake.defaultLeanLibDir = { toString := "lib" }
Instances For
The default setting for a PackageConfig
's nativeLibDir
option.
Equations
- Lake.defaultNativeLibDir = { toString := "lib" }
Instances For
The default setting for a PackageConfig
's binDir
option.
Equations
- Lake.defaultBinDir = { toString := "bin" }
Instances For
The default setting for a PackageConfig
's irDir
option.
Equations
- Lake.defaultIrDir = { toString := "ir" }
Instances For
PackageConfig #
A Package
's declarative configuration.
- packagesDir : Lake.FilePath
- buildType : Lake.BuildType
- leanOptions : Array Lake.LeanOption
- moreServerOptions : Array Lake.LeanOption
- backend : Lake.Backend
- name : Lake.Name
The
Name
of the package. - manifestFile : Option Lake.FilePath
This field is deprecated.
The path of a package's manifest file, which stores the exact versions of its resolved dependencies.
Defaults to
defaultManifestFile
(i.e.,lake-manifest.json
). An
Array
of target names to build whenever the package is used.- precompileModules : Bool
Whether to compile each of the package's module into a native shared library that is loaded whenever the module is imported. This speeds up evaluation of metaprograms and enables the interpreter to run functions marked
@[extern]
.Defaults to
false
. Deprecated in favor of
moreGlobalServerArgs
. Additional arguments to pass to the Lean language server (i.e.,lean --server
) launched bylake serve
, both for this package and also for any packages browsed from this one in the same session.Additional arguments to pass to the Lean language server (i.e.,
lean --server
) launched bylake serve
, both for this package and also for any packages browsed from this one in the same session.- srcDir : Lake.FilePath
The directory containing the package's Lean source files. Defaults to the package's directory.
(This will be passed to
lean
as the-R
option.) - buildDir : Lake.FilePath
The directory to which Lake should output the package's build results. Defaults to
defaultLakeDir / defaultBuildDir
(i.e.,.lake/build
). - leanLibDir : Lake.FilePath
The build subdirectory to which Lake should output the package's binary Lean libraries (e.g.,
.olean
,.ilean
files). Defaults todefaultLeanLibDir
(i.e.,lib
). - nativeLibDir : Lake.FilePath
The build subdirectory to which Lake should output the package's native libraries (e.g.,
.a
,.so
,.dll
files). Defaults todefaultNativeLibDir
(i.e.,lib
). - binDir : Lake.FilePath
The build subdirectory to which Lake should output the package's binary executable. Defaults to
defaultBinDir
(i.e.,bin
). - irDir : Lake.FilePath
The build subdirectory to which Lake should output the package's intermediary results (e.g.,
.c
and.o
files). Defaults todefaultIrDir
(i.e.,ir
). The URL of the GitHub repository to upload and download releases of this package. If
none
(the default), for downloads, Lake uses the URL the package was download from (if it is a dependency) and for uploads, usesgh
's default.The URL of the GitHub repository to upload and download releases of this package. If
none
(the default), for downloads, Lake uses the URL the package was download from (if it is a dependency) and for uploads, usesgh
's default.A custom name for the build archive for the GitHub cloud release. If
none
(the default), Lake usesbuildArchive
, which defaults to{(pkg-)name}-{System.Platform.target}.tar.gz
.- buildArchive : String
A custom name for the build archive for the GitHub cloud release. Defaults to
{(pkg-)name}-{System.Platform.target}.tar.gz
. - preferReleaseBuild : Bool
Whether to prefer downloading a prebuilt release (from GitHub) rather than building this package from the source when this package is used as a dependency.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Package #
Equations
Instances For
Equations
- (_ : Nonempty (Lake.OpaquePostUpdateHook pkg)) = (_ : Nonempty (Lake.OpaquePostUpdateHook.nonemptyType pkg).val)
A Lake package -- its location plus its configuration.
- dir : Lake.FilePath
The path to the package's directory.
- relDir : Lake.FilePath
The path to the package's directory relative to the workspace.
- config : Lake.PackageConfig
The package's user-defined configuration.
- configEnv : Lean.Environment
The elaboration environment of the package's configuration file.
- leanOpts : Lean.Options
The Lean
Options
the package configuration was elaborated with. - configFile : Lake.FilePath
The path to the package's configuration file.
- relManifestFile : Lake.FilePath
The path to the package's JSON manifest of remote dependencies (relative to
dir
). The URL to this package's Git remote.
- opaqueDeps : Array Lake.OpaquePackage
(Opaque references to) the package's direct dependencies.
- leanLibConfigs : Lake.OrdNameMap Lake.LeanLibConfig
Lean library configurations for the package.
- leanExeConfigs : Lake.OrdNameMap Lake.LeanExeConfig
Lean binary executable configurations for the package.
- externLibConfigs : Lake.DNameMap (Lake.ExternLibConfig self.config.name)
External library targets for the package.
- opaqueTargetConfigs : Lake.DNameMap (Lake.OpaqueTargetConfig self.config.name)
(Opaque references to) targets defined in the package.
The names of the package's targets to build by default (i.e., on a bare
lake build
of the package).- scripts : Lake.NameMap Lake.Script
Scripts for the package.
- defaultScripts : Array Lake.Script
The names of the package's scripts run by default (i.e., on a bare
lake run
of the package). - postUpdateHooks : Array (Lake.OpaquePostUpdateHook self.config.name)
Post-
lake update
hooks for the package.
Instances For
Equations
Equations
- Lake.OpaquePackage.unsafeMk = unsafeCast
Instances For
Equations
- Lake.OpaquePackage.unsafeGet = unsafeCast
Instances For
Equations
- Lake.OpaquePackage.instInhabitedOpaquePackage = { default := Lake.OpaquePackage.mk default }
Equations
- Lake.instHashablePackage = { hash := fun (pkg : Lake.Package) => hash pkg.config.name }
Equations
- Lake.instBEqPackage = { beq := fun (p1 p2 : Lake.Package) => p1.config.name == p2.config.name }
Equations
Instances For
Equations
Instances For
The package's name.
Equations
- Lake.Package.name self = self.config.name
Instances For
A package with a name known at type-level.
- dir : Lake.FilePath
- relDir : Lake.FilePath
- config : Lake.PackageConfig
- configEnv : Lean.Environment
- leanOpts : Lean.Options
- configFile : Lake.FilePath
- relManifestFile : Lake.FilePath
- opaqueDeps : Array Lake.OpaquePackage
- leanLibConfigs : Lake.OrdNameMap Lake.LeanLibConfig
- leanExeConfigs : Lake.OrdNameMap Lake.LeanExeConfig
- externLibConfigs : Lake.DNameMap (Lake.ExternLibConfig self.toPackage.config.name)
- opaqueTargetConfigs : Lake.DNameMap (Lake.OpaqueTargetConfig self.toPackage.config.name)
- scripts : Lake.NameMap Lake.Script
- defaultScripts : Array Lake.Script
- postUpdateHooks : Array (Lake.OpaquePostUpdateHook self.toPackage.config.name)
- name_eq : Lake.Package.name self.toPackage = name
Instances For
Equations
- Lake.instCoeOutNPackagePackage = { coe := Lake.NPackage.toPackage }
Equations
- Lake.instCoeDepPackageNPackageName = { coe := { toPackage := pkg, name_eq := (_ : Lake.Package.name pkg = Lake.Package.name pkg) } }
The type of a post-update hooks monad.
IO
equipped with logging ability and information about the Lake configuration.
Equations
- Lake.PostUpdateFn pkgName = (Lake.NPackage pkgName → Lake.LakeT Lake.LogIO PUnit)
Instances For
- fn : Lake.PostUpdateFn pkgName
Instances For
Equations
- Lake.instInhabitedPostUpdateHook = { default := { fn := default } }
Equations
- Lake.OpaquePostUpdateHook.unsafeGet = unsafeCast
Instances For
Equations
- Lake.OpaquePostUpdateHook.instCoeOpaquePostUpdateHookPostUpdateHook = { coe := Lake.OpaquePostUpdateHook.get }
Equations
- Lake.OpaquePostUpdateHook.unsafeMk = unsafeCast
Instances For
Equations
- Lake.OpaquePostUpdateHook.instInhabitedOpaquePostUpdateHook = { default := Lake.OpaquePostUpdateHook.mk default }
Equations
- Lake.OpaquePostUpdateHook.instCoePostUpdateHookOpaquePostUpdateHook = { coe := Lake.OpaquePostUpdateHook.mk }
- pkg : Lake.Name
- fn : Lake.PostUpdateFn self.pkg
Instances For
The package's direct dependencies.
Equations
- Lake.Package.deps self = Array.map (fun (x : Lake.OpaquePackage) => Lake.OpaquePackage.get x) self.opaqueDeps
Instances For
The path to the package's Lake directory relative to dir
(e.g., .lake
).
Equations
Instances For
The full path to the package's Lake directory (i.e, dir
joined with relLakeDir
).
Equations
- Lake.Package.lakeDir self = self.dir / Lake.Package.relLakeDir self
Instances For
The path for storing the package's remote dependencies relative to dir
(i.e., packagesDir
).
Equations
- Lake.Package.relPkgsDir self = self.config.toWorkspaceConfig.packagesDir
Instances For
The package's dir
joined with its relPkgsDir
.
Equations
- Lake.Package.pkgsDir self = self.dir / Lake.Package.relPkgsDir self
Instances For
The path to the package's JSON manifest of remote dependencies.
Equations
- Lake.Package.manifestFile self = self.dir / self.relManifestFile
Instances For
The package's dir
joined with its buildDir
configuration.
Equations
- Lake.Package.buildDir self = self.dir / self.config.buildDir
Instances For
The package's extraDepTargets
configuration.
Equations
- Lake.Package.extraDepTargets self = self.config.extraDepTargets
Instances For
The package's platformIndependent
configuration.
Equations
- Lake.Package.platformIndependent self = self.config.toLeanConfig.platformIndependent
Instances For
The package's releaseRepo
/releaseRepo?
configuration.
Equations
- Lake.Package.releaseRepo? self = HOrElse.hOrElse self.config.releaseRepo fun (x : Unit) => self.config.releaseRepo?
Instances For
The package's buildArchive
/buildArchive?
configuration.
Equations
- Lake.Package.buildArchive self = self.config.buildArchive
Instances For
The package's lakeDir
joined with its buildArchive
.
Equations
- Lake.Package.buildArchiveFile self = Lake.Package.lakeDir self / { toString := Lake.Package.buildArchive self }
Instances For
The package's preferReleaseBuild
configuration.
Equations
- Lake.Package.preferReleaseBuild self = self.config.preferReleaseBuild
Instances For
The package's precompileModules
configuration.
Equations
- Lake.Package.precompileModules self = self.config.precompileModules
Instances For
The package's moreGlobalServerArgs
configuration.
Equations
- Lake.Package.moreGlobalServerArgs self = self.config.moreGlobalServerArgs
Instances For
The package's moreServerOptions
configuration appended to its leanOptions
configuration.
Equations
- Lake.Package.moreServerOptions self = self.config.toLeanConfig.leanOptions ++ self.config.toLeanConfig.moreServerOptions
Instances For
The package's buildType
configuration.
Equations
- Lake.Package.buildType self = self.config.toLeanConfig.buildType
Instances For
The package's backend
configuration.
Equations
- Lake.Package.backend self = self.config.toLeanConfig.backend
Instances For
The package's leanOptions
configuration.
Equations
- Lake.Package.leanOptions self = self.config.toLeanConfig.leanOptions
Instances For
The package's moreLeanArgs
configuration appended to its leanOptions
configuration.
Equations
- Lake.Package.moreLeanArgs self = Array.map (fun (x : Lake.LeanOption) => Lake.LeanOption.asCliArg x) self.config.toLeanConfig.leanOptions ++ self.config.toLeanConfig.moreLeanArgs
Instances For
The package's weakLeanArgs
configuration.
Equations
- Lake.Package.weakLeanArgs self = self.config.toLeanConfig.weakLeanArgs
Instances For
The package's moreLeancArgs
configuration.
Equations
- Lake.Package.moreLeancArgs self = self.config.toLeanConfig.moreLeancArgs
Instances For
The package's weakLeancArgs
configuration.
Equations
- Lake.Package.weakLeancArgs self = self.config.toLeanConfig.weakLeancArgs
Instances For
The package's moreLinkArgs
configuration.
Equations
- Lake.Package.moreLinkArgs self = self.config.toLeanConfig.moreLinkArgs
Instances For
The package's weakLinkArgs
configuration.
Equations
- Lake.Package.weakLinkArgs self = self.config.toLeanConfig.weakLinkArgs
Instances For
The package's dir
joined with its srcDir
configuration.
Equations
- Lake.Package.srcDir self = self.dir / self.config.srcDir
Instances For
The package's root directory for lean
(i.e., srcDir
).
Equations
- Lake.Package.rootDir self = Lake.Package.srcDir self
Instances For
The package's buildDir
joined with its leanLibDir
configuration.
Equations
- Lake.Package.leanLibDir self = Lake.Package.buildDir self / self.config.leanLibDir
Instances For
The package's buildDir
joined with its nativeLibDir
configuration.
Equations
- Lake.Package.nativeLibDir self = Lake.Package.buildDir self / self.config.nativeLibDir
Instances For
The package's buildDir
joined with its binDir
configuration.
Equations
- Lake.Package.binDir self = Lake.Package.buildDir self / self.config.binDir
Instances For
The package's buildDir
joined with its irDir
configuration.
Equations
- Lake.Package.irDir self = Lake.Package.buildDir self / self.config.irDir
Instances For
Whether the given module is considered local to the package.
Equations
- Lake.Package.isLocalModule mod self = Lake.RBArray.any (fun (lib : Lake.LeanLibConfig) => Lake.LeanLibConfig.isLocalModule mod lib) self.leanLibConfigs
Instances For
Whether the given module is in the package (i.e., can build it).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Remove the package's build outputs (i.e., delete its build directory).
Equations
- One or more equations did not get rendered due to their size.