Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > ce6d9aeda3f1b30d4e1e4c3682042d6c > files > 11

ocaml-data-notation-devel-0.0.10-5.mga4.x86_64.rpm

(********************************************************************************)
(*  ODN: Dump data using OCaml notation                                         *)
(*                                                                              *)
(*  Copyright (C) 2009-2011, OCamlCore SARL                                     *)
(*                                                                              *)
(*  This library is free software; you can redistribute it and/or modify it     *)
(*  under the terms of the GNU Lesser General Public License as published by    *)
(*  the Free Software Foundation; either version 2.1 of the License, or (at     *)
(*  your option) any later version, with the OCaml static compilation           *)
(*  exception.                                                                  *)
(*                                                                              *)
(*  This library is distributed in the hope that it will be useful, but         *)
(*  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  *)
(*  or FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more          *)
(*  details.                                                                    *)
(*                                                                              *)
(*  You should have received a copy of the GNU Lesser General Public License    *)
(*  along with this library; if not, write to the Free Software Foundation,     *)
(*  Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA               *)
(********************************************************************************)

(** OASIS types and exceptions
   @author Sylvain Le Gall
  *)

TYPE_CONV_PATH "OASISTypes";;

(** Alias type
  *)
type name               = string with odn;;
type package_name       = string with odn;;
type url                = string with odn;;
type version            = string with odn;;
type version_constraint = string with odn;;
type dirname            = string with odn;;
type filename           = string with odn;;
type prog               = string with odn;;

(** Valid licenses
  *)
type license =
  | AllRightsReserved
  | BSD3
  | BSD4
  | GPL
  | LGPL
  | LGPL_link_exn
  | Other of url
  | PublicDomain 
    with odn
;;

(** Compilation type
  *)
type compiled_object =
  | Byte
  | Native
  | Best 
    with odn
;;

(** Package dependency
  *)
type dependency = 
  | FindlibPackage of package_name * version_constraint option
  | InternalLibrary of name 
    with odn
;;

(** Possible VCS 
  *)
type vcs = 
  | Darcs 
  | Git 
  | Svn 
  | Cvs 
  | Hg 
  | Bzr 
  | Arch 
  | Monotone 
    with odn
;;

(** Available test 
  *)
type expr_test = 
  | TOs_type
  | TSystem
  | TArchitecture
  | TCcomp_type
  | TOCaml_version 
    with odn
;;

(** Boolean expression to express condition on values
  *)
type expr =
  | EBool of bool
  | ENot of expr
  | EAnd of expr * expr
  | EOr of expr * expr
  | EFlag of string
  | ETest of expr_test * string 
    with odn
;;

(** Conditional value
  *)
type 'a conditional =
    (expr * 'a) list
    with odn
;;

(** Library definition 
  *)
type library = 
    {
      lib_build:           bool conditional;
      lib_install:         bool conditional;
      lib_path:            dirname;
      lib_modules:         string list;
      lib_compiled_object: compiled_object;
      lib_build_depends:   dependency list;
      lib_build_tools:     prog list;
      lib_c_sources:       filename list;
      lib_data_files:      (filename * filename) list;
      lib_schema_data:     PropList.Data.t;
    } with odn
;;

(** Executable definition 
  *)
type executable = 
    {
      exec_build:           bool conditional;
      exec_install:         bool conditional;
      exec_main_is:         filename;
      exec_compiled_object: compiled_object;
      exec_build_depends:   dependency list;
      exec_build_tools:     prog list;
      exec_c_sources:       filename list;
      exec_custom:          bool;
      exec_data_files:      (filename * filename) list;
      exec_is:              filename; (* Real executable *)
      exec_schema_data:     PropList.Data.t;
    } with odn
;;

(** Command line flag defintion 
  *)
type flag = 
    {
      flag_description:  string option;
      flag_default:      bool conditional;
      flag_schema_data:  PropList.Data.t;
    } with odn
;;

(** Source repository definition
  *)
type source_repository = 
    {
      src_repo_type:        vcs;
      src_repo_location:    url;
      src_repo_browser:     url option;
      src_repo_module:      string option;
      src_repo_branch:      string option;
      src_repo_tag:         string option;
      src_repo_subdir:      filename option;
      src_repo_schema_data: PropList.Data.t;
    } with odn
;;

(** Test definition
  *)
type test = 
    {
      test_type:               string;
      test_command:            string;
      test_working_directory:  filename option;
      test_run:                bool conditional;
      test_build_tools:        prog list;
      test_schema_data:        PropList.Data.t;
    } with odn
;;

(** OASIS file whole content
  *)
type package = 
    {
      oasis_version:  version;
      ocaml_version:  version_constraint option;
      name:           package_name;
      version:        version;
      license:        license;
      license_file:   filename;
      copyrights:     string list;
      maintainers:    string list;
      authors:        string list;
      homepage:       url option;
      synopsis:       string;
      description:    string option;
      categories:     url list;
      build_depends:  dependency list;
      build_tools:    prog list;
      conf_type:      string;
      build_type:     string;
      install_type:   string;
      files_ab:       filename list;
      plugins:        string list;
      libraries:      (name * library) list;
      executables:    (name * executable) list;
      flags:          (name * flag) list;
      src_repos:      (name * source_repository) list;
      tests:          (name * test) list;
      schema_data:    PropList.Data.t;
    } with odn
;;