.. _sect-packages: ******** Packages ******** Idris includes a simple system for building packages from a package description file. These files can be used with the Idris compiler to manage the development process of your Idris programmes and packages. Package Descriptions ==================== A package description includes the following: + A header, consisting of the keyword package followed by the package name. + Fields describing package contents, `` = `` At least one field must be the modules field, where the value is a comma separated list of modules. For example, a library test which has two modules ``foo.idr`` and ``bar.idr`` as source files would be written as follows:: package foo modules = foo, bar Other examples of package files can be found in the ``libs`` directory of the main Idris repository, and in `third-party libraries `_. Other common fields which may be present in an ``ipkg`` file are: + ``sourcedir = ``, which gives the directory (relative to the current directory) which contains the source. Default is the current directory. + ``executable = ``, which gives the name of the executable file to generate. + ``main = ``, which gives the name of the main module, and must be present if the executable field is present. + ``opts = ""``, which allows options (such as other packages) to be passed to Idris. In more advanced cases, particularly to support creating bindings to external ``C`` libraries, the following options are available: + ``makefile = ``, which specifies a ``Makefile``, to be built before the Idris modules, for example to support linking with a ``C`` library. + ``libs = ``, which gives a comma separated list of libraries which must be present for the package to be usable. + ``objs = ``, which gives a comma separated list of additional object files to be installed, perhaps generated by the ``Makefile``. Using Package files =================== Given an Idris package file ``text.ipkg`` it can be used with the Idris compiler as follows: + ``idris --build test.ipkg`` will build all modules in the package + ``idris --install test.ipkg`` will install the package, making it accessible by other Idris libraries and programs. + ``idris --clean test.ipkg`` will delete all intermediate code and executable files generated when building. Once the test package has been installed, the command line option ``--package test`` makes it accessible (abbreviated to ``-p test``). For example:: idris -p test Main.idr