Documentation

Lake.DSL.Package

Package Declarations #

DSL definitions for packages and hooks.

The name given to the definition created by the package syntax.

Equations
Instances For

    Defines the configuration of a Lake package. Has many forms:

    package «pkg-name»
    package «pkg-name» { /- config opts -/ }
    package «pkg-name» where /- config opts -/
    

    There can only be one package declaration per Lake configuration file. The defined package configuration will be available for reference as _package.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Declare a post-lake update hook for the package. Runs the monadic action is after a successful lake update execution in this package or one of its downstream dependents.

      Example

      This feature enables Mathlib to synchronize the Lean toolchain and run cache get after a lake update:

      lean_exe cache
      post_update pkg do
        let wsToolchainFile := (← getRootPackage).dir / "lean-toolchain"
        let mathlibToolchain ← IO.FS.readFile <| pkg.dir / "lean-toolchain"
        IO.FS.writeFile wsToolchainFile mathlibToolchain
        let exeFile ← runBuild cache.build >>= (·.await)
        let exitCode ← env exeFile.toString #["get"]
        if exitCode ≠ 0 then
          error s!"{pkg.name}: failed to fetch cache"
      
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For