package oasis
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=18b73deef4ed6e9a83337f24b3bbe2ded65268b3ff7309fcc00d25e57e1dc12e
md5=98492f4657c2c5b30e3b1bc945e58419
doc/oasis/OASISTypes/index.html
Module OASISTypes
Package definition
This module contains all the types used to build an OASIS package. A package is described by an '_oasis' file.
Aliases
Standard name.
Name of a package, see package
.
Name of a package, see package
.
Standard URL.
type args = arg list
Command line argument.
Command line arguments.
Package name + path for findlib, made of several findlib name concatenated with '.'.
OASIS package definition
type dependency =
| FindlibPackage of findlib_full * OASISVersion.comparator option
(*External findlib package.
*)| InternalLibrary of name
(*Section library of the given name.
*)
Package dependency.
type vcs =
| Darcs
(*Darcs
*)| Git
(*Git
*)| Svn
(*Subversion
*)| Cvs
(*CVS
*)| Hg
(*Mercurial
*)| Bzr
(*Bazaar
*)| Arch
(*GNU arch
*)| Monotone
(*Monotone
*)| OtherVCS of url
(*Anything else, follow URL for description.
*)
Possible VCS.
type 'a conditional = 'a OASISExpr.choices
Conditional value, last expression that evaluate to true define the value.
type plugin_data_purpose = [
| `Configure
| `Build
| `Install
| `Clean
| `Distclean
| `Install
| `Uninstall
| `Test
| `Doc
| `Extra
| `Other of string
]
Additional data to allow registration of more than one data property per plugin. See OASISPlugin.data_new_property
type 'a plugin = 'a * name * OASISVersion.t option
Plugin definition, plugin type depends on which fields this types is used for.
type all_plugin = plugin_kind plugin
type plugin_data = (all_plugin * plugin_data_purpose * (unit -> unit)) list
Property list storage for plugin data
type custom = {
pre_command : command_line option conditional;
(*Run before.
*)post_command : command_line option conditional;
(*Run after.
*)
}
Set of command lines to run before and after a step.
type common_section = {
cs_name : name;
(*Name of the section.
*)cs_data : PropList.Data.t;
cs_plugin_data : plugin_data;
(*Property list attached to the section.
*)
}
Common attributes for sections.
type build_section = {
bs_build : bool conditional;
(*Build this section.
*)bs_install : bool conditional;
(*Install this section.
*)bs_path : unix_dirname;
(*Top level location of the sources.
*)bs_compiled_object : compiled_object;
(*What kind of compilation.
*)bs_build_depends : dependency list;
(*List of dependencies.
*)bs_build_tools : tool list;
(*List of build tools.
*)bs_interface_patterns : OASISSourcePatterns.t list;
(*Patterns used to locate interface source filesi (.mli).
*)bs_implementation_patterns : OASISSourcePatterns.t list;
(*Patterns used to locate implementation source files (.ml).
*)bs_c_sources : unix_filename list;
(*C sources, relative to
*)bs_path
.bs_data_files : (unix_filename * unix_filename option) list;
(*Data files and their install location, relative to
*)bs_path
.bs_findlib_extra_files : unix_filename list;
(*Extra files to install with findlib.
*)bs_ccopt : args conditional;
(*Options for -ccopt.
*)bs_cclib : args conditional;
(*Options for -cclib.
*)bs_dlllib : args conditional;
(*Options for -dllib.
*)bs_dllpath : args conditional;
(*Options for -dllpath.
*)bs_byteopt : args conditional;
(*Option to pass to ocamlc.
*)bs_nativeopt : args conditional;
(*Option to pass to ocamlopt.
*)
}
Common attributes for Executable and Library sections.
type library = {
lib_modules : string list;
(*List of modules exported by the library.
*)lib_pack : bool;
(*Are we building a packed library?
*)lib_internal_modules : string list;
(*List of modules not-exported by the library, but compiled along.
*)lib_findlib_parent : findlib_name option;
(*Name of the findlib parent, if any.
*)lib_findlib_name : findlib_name option;
(*Findlib name of this library, this name is used to refer to this library in build dependencies.
*)lib_findlib_directory : unix_dirname option;
(*Findlib sub-directory where the library will be installed. This directory is actually relative to the directory of the findlib parent.
*)lib_findlib_containers : findlib_name list;
(*Name of virtual containers (empty findlib package) between findlib parent and findlib name
*)
}
Library definition.
type object_ = {
obj_modules : string list;
obj_findlib_fullname : findlib_name list option;
(*Findlib name of this library, this name is used to refer to this library in build dependencies.
*)obj_findlib_directory : unix_dirname option;
}
Object definition.
type executable = {
exec_custom : bool;
(*Use -custom ocamlc option.
*)exec_main_is : unix_filename;
(*Main file to compile, dependencies should be guessed by build system.
*)
}
Executable definition.
type flag = {
flag_description : string option;
(*Short description.
*)flag_default : bool conditional;
(*Default value.
*)
}
Command line flag definition.
type source_repository = {
src_repo_type : vcs;
(*Repository type.
*)src_repo_location : url;
(*Where to fetch the source, using appropriate VCS tool.
*)src_repo_browser : url option;
(*Where to browse the source, using web browser.
*)src_repo_module : string option;
(*Depending on VCS, which module (e.g. CVS).
*)src_repo_branch : string option;
(*Depending on VCS, which branch (e.g. git).
*)src_repo_tag : string option;
(*Depending on VCS, which tag (e.g. tag for darcs, git or svn).
*)src_repo_subdir : unix_filename option;
(*Depending on VCS, which sub directory (e.g. svn).
*)
}
Source repository definition.
type test = {
test_type : [ `Test ] plugin;
(*Plugin to run the test, default custom.
*)test_command : command_line conditional;
(*Command to run the test, may depend on the plugin meaning.
*)test_custom : custom;
(*Custom command lines to run before and after.
*)test_working_directory : unix_filename option;
(*Which working directorty to chdir in.
*)test_run : bool conditional;
(*Should we run the test.
*)test_tools : tool list;
(*Tools required for this test.
*)
}
Test definition.
type doc_format =
| HTML of unix_filename
(*HTML files and their main entry point (e.g.
*)HTML "index.html"
)| DocText
(*Plain text.
*)| PDF
(*Portable document format.
*)| PostScript
| Info of unix_filename
(*Info files and their main entry point.
*)| DVI
| OtherDoc
(*Anything else.
*)
Document formats.
type doc = {
doc_type : [ `Doc ] plugin;
(*Plugin to build this document, default none.
*)doc_custom : custom;
(*Custom command lines ommand to before and after.
*)doc_build : bool conditional;
(*Build this document.
*)doc_install : bool conditional;
(*Install this document.
*)doc_install_dir : unix_filename;
(*Where to install this document.
*)doc_title : string;
(*What is the title of this document.
*)doc_abstract : string option;
(*Abstract of this document.
*)doc_format : doc_format;
(*Format of this document.
*)doc_data_files : (unix_filename * unix_filename option) list;
(*All data files and where they should be install, by default to doc_install_dir
*)doc_build_tools : tool list;
(*Tools required to generate this document.
*)
}
Document definition.
type section =
| Library of common_section * build_section * library
| Object of common_section * build_section * object_
| Executable of common_section * build_section * executable
| Flag of common_section * flag
| SrcRepo of common_section * source_repository
| Test of common_section * test
| Doc of common_section * doc
All sections and their attributes.
type package = {
oasis_version : OASISVersion.t;
(*OASIS version used to write this package.
*)ocaml_version : OASISVersion.comparator option;
(*OCaml version required for this package.
*)findlib_version : OASISVersion.comparator option;
(*Findlib version required for this package.
*)alpha_features : string list;
(*Alpha features enabled for this package.
*)beta_features : string list;
(*Beta features enabled for this package.
*)name : package_name;
(*Name of this package.
*)version : OASISVersion.t;
(*Version of this package.
*)license : OASISLicense.t;
(*License of this package.
*)license_file : unix_filename option;
(*File containing the license of this package.
*)copyrights : string list;
(*Copyright holders (e.g. companies or people).
*)maintainers : string list;
(*People actually taking care of this package (e.g. subset of copyright holders)
*)homepage : url option;
(*Location of the package homepage.
*)bugreports : url option;
(*Location of the page to report bugs.
*)synopsis : string;
(*Short description of the package.
*)description : OASISText.t option;
(*Long description of the package.
*)categories : url list;
(*List of categories that the package belong to.
*)conf_type : [ `Configure ] plugin;
(*Plugin to configure, default internal.
*)conf_custom : custom;
(*Actions around configure step.
*)build_type : [ `Build ] plugin;
(*Plugin to build, default ocamlbuild.
*)build_custom : custom;
(*Actions around build step.
*)install_type : [ `Install ] plugin;
(*Plugin to install/uninstall, default internal.
*)install_custom : custom;
(*Actions around install step.
*)uninstall_custom : custom;
(*Actions around uninstall step.
*)clean_custom : custom;
(*Actions around clean step.
*)distclean_custom : custom;
(*Actions aroudn distclean step.
*)files_ab : unix_filename list;
(*Files to generate by replacing token in it after configure step.
*)sections : section list;
(*All sections (libraries, executables, tests...).
*)plugins : [ `Extra ] plugin list;
(*Extra plugins applied.
*)disable_oasis_section : unix_filename list;
(*Files which should not have OASIS Section comments and digests
*)schema_data : PropList.Data.t;
plugin_data : plugin_data;
(*Property list attached to this package.
*)
}
OASIS package, what an '_oasis' file contains.
Quickstart questions
ODN functions
TODO: rewrite.
These functions allow to generate setup.ml standalone code, by serializing OCaml data using OCaml notation. They are not exported.
See the OCaml data notation project
val odn_of_unix_dirname : unix_dirname -> OASISDataNotation.t
val odn_of_unix_filename : unix_filename -> OASISDataNotation.t
val odn_of_command_line : (prog * args) -> OASISDataNotation.t
val odn_of_conditional :
('a -> OASISDataNotation.t) ->
'a OASISExpr.choices ->
OASISDataNotation.t
val odn_of_package : package -> OASISDataNotation.t