./devel/ocaml-oasis, Build system for OCaml projects

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.4.10nb2, Package name: ocaml-oasis-0.4.10nb2, Maintainer: jaapb

OASIS is a tool to integrate a configure, build and install system in your
OCaml project. It helps to create standard entry points in your build system
and allows external tools to analyse your project easily.

Note that this package contains the development tools, i.e. what is needed
to add OASIS support to a project. It is not usually needed to build or package
projects that use OASIS.


Required to run:
[lang/ocaml] [devel/ocaml-findlib] [devel/ocamlify] [devel/ocamlmod]

Required to build:
[pkgtools/cwrappers] [devel/ocamlbuild]

Master sites:

SHA1: 23eb81fd18632d92cad61a5adda8ef6fe0f5b391
RMD160: e02cc1eb3943f98ff9da7add9ac60dc597982206
Filesize: 385.48 KB

Version history: (Expand)


CVS history: (Expand)


   2018-01-10 17:53:15 by Jaap Boender | Files touched by this commit (107) | Package updated
Log message:
Recursive revbump associated with the update to OCaml 4.06.
   2017-09-08 11:51:27 by Jaap Boender | Files touched by this commit (113) | Package updated
Log message:
Recursive revbump associated with update of ocaml to 4.05
   2017-07-11 12:07:55 by Jaap Boender | Files touched by this commit (4) | Package updated
Log message:
Updated package to latest version, 0.4.10. Changes include:

  * Version 0.4.10

  * Quick followup release to use OASIS 0.4.10 to generate the setup.ml because
    the setup.ml of OASIS 0.4.9 was generated with 0.4.8 that contains a bug.

  * New releases will be generated using the version released to catch earlier
    the kind of bug with destdir that has appeared in 0.4.8.
    (See [issue 1007](https://github.com/ocaml/oasis/issues/107))

  * Version 0.4.9

  * Major changes:
    * Plugin "omake":
      * Use correctly sorted internal library deps for OCAML_LIBS
        (Closes: #1736)
      * Delay the interpretation of $(CMXS_ENABLED) for the install suffixes.
        Also, take the environment variable "destdir" into account when
        installing data files.
      * Do not install the component modules of a packed library, but the
        packed module. (Close: #1737)
      * Solve ocamlmklib instability, re-enable test "OMake/Complex".
        (Closes: #1739)
      * Only link those libraries into executables that are really needed.
        (Closes: #1747).
      * Fix problems with the automatic addition of deps when building
        executables on platforms with case-insensitive file system.
      * Make OMake tests optional since it is complex to install OMake 0.10.2
        with OPAM.

  * Minor changes:
    * Make sure --destdir is really used when installing (Closes: #107).
    * Try to register only when a glob pattern matches at least one file (#102)
    * Clean up setup.cmt after compiling setup.exe
    * By default, use Github for bug reporting (Closes: #97)
    * Simplify conditional expressions (Close: #95)
    * Document CLISubCommand.register, CLISubCommand.default_fspecs

  * Version 0.4.8

  * Major changes:

    * Fix various problems of parsing present in OASIS 0.4.7:
      * Only issue a warning when extraneous blanks are present. (Closes: #1665)
      * Fixes ocamlbuild plugin argument handling bug. (Closes: #1659)
      * Re-add MyOCamlbuildBase.env_filename.
      * Script to test reverse build depends (Closes: #1672).

    * Enable creation of OASIS plugin and OASIS command line plugin:
      * Add examples/plugins to demonstrate how to build plugins.
      * Update HACKING.md.
      * Ensure they work, using a test.

    * Plugin "omake":
      * Workaround for a problem in omake-0.9.8.6: variables accumulated
        via foreach cannot be private.
      * Passing the title string down to ocamldoc
      * Fix compilation of pack-level mli's.
      * Move definition of some variables in subdirectories to use them
        correctly (OCAMLINCLUDES, OCAMLPACKS and a few others)

    Thanks to Gerd Stolpmann for these contributions.

    * Improve CI/tests:
      * Split quickstart tests out of the main tests, because it fails too
        often and often need to be disabled.
      * Reorganize test/ directories.
      * Use OCaml 4.04 for Travis-CI.
      * Reorganize my CI scripts in src/tools/ci.
      * Get rid of ardivink and switch to OPAM for travis and jenkins builders.

    * Create 2 branches (opam/unstable and opam/testing) to provide pinning
      capabilities to OPAM:
      * It allows OPAM to track the development version of OASIS
      * Update information in README.md
      * Add a makefile target to allow to create opam/ in a local copy for
        testing a locally hacked version of OASIS.
      * Setup auto-generation of opam/unstable branch and auto-promotion of
        opam/unstable to opam/testing when integration tests have succeeded.

  * Minor changes:
    * Quick hack to solve #1674 and allow to use flambda, upstream notified of
      the problem. (Closes: #1674)
    * Use OASISFormat 0.4 for OASIS itself:
      * Use source_patterns feature to precisely locate .mlify files.
      * Use markdown to generate standard files.
      * Add BugReports to generated README in StdFiles.

  * Version 0.4.7

  * Drop support for OASISFormat 0.2 and 0.1.

    As per the version policy in HACKING.md, this change syncs with OASIS
    version in Debian. Debian Jessie has OASIS v0.4.4, so it is possible to
    drop support for older version.

  * Provide stable API in setup.ml using BaseCompat.

    This change introduces BaseCompat and opens by default the version
    matching OASISFormat in setup.ml. This allows to make changes to OASIS
    and still provides a stable API in setup.ml. The only side effect is that
    it requires to update the setup.ml of DynRun at every major version updates.

    Unfortunately, providing compatibility for ALL changes is an hard task.
    Users are welcome to file bugs whenever their customized setup.ml breaks
    because of an incompatible change.

  * Plugin "omake":

    This new plugin provides build, doc and install capabilities using
    OMake. Some features are not supported, like Object sections.
    It requires 'OCamlVersion: >= 4.01'.

    Example:
      OASISFormat:  0.4
      OCamlVersion: >= 4.01
      [...]
      BuildTools:   omake
      BuildType:    omake (0.4)

      Library simplelib
        [...]

      Document simplelib
        BuildTools+:     ocamldoc
        [...]

    Thanks to Gerd Stolpmann for this huge contribution.

  * Create OASIFileSystem and use it in OASISContext.t.srcfs.

    The new module OASISFileSystem is a filesystem abstraction layer that
    allows to better represents (through types) where the files are (e.g.
    source or build directory).

    The very first use of it is to add in OASISContext.t as srcfs. The
    filesystem object is itself limited to only use
    OASISContext.source_filename, which allows to use types to enforce
    location of files.

    The various default_filename across the code are now typed according to
    their location (e.g. "setup.log" and "setup.data" are
    OASISContext.source_filename). The only way to actually open, read and
    write the corresponding file is to apply methods provided in OASISFileSystem
    object.

    This change also delays enough the evaluation of the location of
    "setup.log" and "setup.data", which solves the bug 1473.
    (Closes: #1473)

  * Improve automatic tests:
    * Use OPAM to install dependencies.
    * Use Travis to test and compile with all major OCaml version since 3.12.1
      on Linux.
    * Use AppVeyor to compile on Cygwin.
    * Test for dynamic mode mode compilation on Cygwin with AppVeyor.
    * Rename test files to reflect what files they are testing.
    * Split test/data/TestFull/* tests to reflect what plugins/files they are
      testing.
    * Add some badges for build status on Travis and AppVeyor in README.md.
    * Test the parsing of examples/oasis/*.oasis files.
    * Check all examples are tested, add examples/ocamlbuild tests.
    * Check that all examples use the latest version of OASIS.
    * Disable test 'external source rebuild' which tends to be flaky.
    * Refactor TestFull to remove boilerplates and make it more readable.
    * Create a test function to check all subdirectories are listed and tested,
      add tests for the missing ones.
    * Reduce the number of skipped tests.
    * Refine constraint to produce .cmt to >=4.01.

  * Trim down the dependencies:
    * Stop depending on ocaml-data-notation and type_conv.
    * Create a trim down, internval version of ocaml-data-notation. The
      conversion functions  need to be manually written -- not perfect
      but a good way to drop the dependency and still be compatible with OCaml
      3.12.1.
    * Stop depending on ocaml-gettext, this was never really used.
    * Get rid of camlp4:
      * Replace most genlex parser, by standard yacc/lex parsers.
      * Replace OASISRecDescParser by OASISAst_parser using ocamlyacc.
        (Closes: #298)
      * The "flag(...)" in expression is now case sensitive, to avoid \ 
conflict
        with the "Flag ..." section.
      * Some parts still use Genlex, but don't need camlp4 anymore.
    * Trimming down the dependencies allows to make it easier to port OASIS on
      other platforms (like Windows) where some former dependencies were tricky
      to compile (like camlp4).

  * Stop using -install-lib-dir on Windows.

    This change prevents the use of -install-lib-dir on Windows, for OCaml
    version greater than 3.11.1. The bug in ocamlbuild has been fixed in OCaml
    3.11.1 [1]. This is a bit a shot in the dark, since testing on Windows is
    not setup.

    [1]: https://github.com/ocaml/ocamlbuild/commit/79cf4029b

  * Minor changes:
    * Consistently use choices type in OASISExpr module.
    * Make OCamlbuild plugin not assume that dynamic linking is supported.
      (Patch: #1536) (Closes: #1251)
    * Improve setup.log parsing, by using Genlex.
    * Enforce using a published version of OASIS to generate its own setup.ml,
      provide explanations in HACKING.md.
    * Fix problem reading files on Cygwin (esp. setup.log), reported size after
      an append doesn't reflect the real size of the file in some cases.
    * Always compile src/tools/* and move dist.ml there.
    * Refactor string version comparison into its own sub-module.
    * Fix missing rules for headache.
    * Remove unused userconf library.
    * Pass -thread to C files as well.
    * Don't use $< in explicit DevFiles build rule (BSD make compatibility).
    * Example to override cc when compiling C source files.
    * Remove the need for Bytes altogether.
    * Add fields "Tags" and "BugReports" to export them to OPAM.
    * Big documentation cleanup (`\_oasis` synopsis, doc/*).
    * Reformat source files using ocp-indent and start to use merlin.
    * Allow to use a string when testing values in `\_oasis`, for example it is
      now possible to use expression like 'ocaml_version("4.02.1")'
    * Improve OASISVersion.comparator_reduce. Now, it transforms the given
      comparator into its disjunctive form and order the version number.
    * Rename all executables so that their names match OCaml policy for module.
    * Move all executables into their own directories to prevent dependencies
      leak.
    * Transform tools into executables.
    * Always compile executables to check they still work.

  * Features:

    * no_automatic_syntax (alpha): don't disable the -package injection logic.

    * compiled_setup_ml (alpha):
      * Fix the configure file when using the compiled_setup_ml feature and
        improve the Makefile.
      * Recompile when needed while executing the configure script.

    * findlib_directory (beta, new):

      Findlib allows to specify a "directory" in a META file. This can \ 
be used
      to store some files of the library in sub-directories. This change
      allows to set and use this "directory" field.

      The InternalInstall plugin now handles installing files in
      sub-directories.  However there is no flag to specify this when using
      `ocamlfind install`, so we use a standard file installation, with a
      best-guess computation of the target directory.

      The META plugin can now set the "directory" field according to \ 
what has
      been set in the `_oasis` file. Note that, for nested package the install
      directory is relative to the install directory of the parent package.

      Example:
        BetaFeatures: findlib_directory
        Plugins: META(0.4)

        Library library
          [...]
          FindlibDirectory: lib

      Thanks to Gabriel Radanne for this contribution. (Closes: #1305)

    * findlib_extra_files (beta, new):

      This change allows to use a new `_oasis` field 'FindlibExtraFiles' to
      install extra files along the matching library/object in findlib.

      Example:
        BetaFeatures: findlib_extra_files

        Library library
          [...]
          FindlibName: foobar
          FindlibExtraFiles: myfile.txt

      In this case `myfile.txt` will be installed in the same directory as the
      'foobar' package.

      Thanks to Evgenii Lepikhin for the contribution. (Closes: #802)

    * source_patterns (alpha, new):

      This change allows to override the built-in source files search. It uses
      user-provided 'InterfacePatterns' and 'ImplementationPatterns' fields and
      a small DSL to define how to find a file matching a given module. The
      fields can be defined at the top level or in the Library section.

      The DSL is based on Genlex and Buffer.add_substitute. It has two
      functions `capitalize_file` and `uncapitalize_file` and one variable
      `module`.

      Example:
        AlphaFeatures: source_patterns

        Library library
          [...]
          Modules: FooBar
          InterfacePatterns+: ${module}.eliomi
          ImplementationPatterns+:  ${module}.eliom

      It is particularly useful to get rid of the warnings like:
      W: Cannot find source file matching module [...]

      Thanks to Petter Urkedal for this contribution.

Thanks to Spiros Eliopoulos, Paul Snively, Jeremie Dimino, Christopher
Zimmermann, Christophe Troestler, Max Mouratov, Jacques-Pascal Deplaix, Geoff
Shannon, Simon Cruanes, Vladimir Brankov, Gabriel Radanne, Evgenii Lepikhin,
Petter Urkedal, Gerd Stolpmann and Anton Bachin for their contributions.
   2016-12-30 12:17:03 by Jaap Boender | Files touched by this commit (89) | Package updated
Log message:
Recursive revbump associated with ocaml update to 4.04.
   2016-06-17 12:25:52 by Jaap Boender | Files touched by this commit (1) | Package updated
Log message:
Updated package to work with new mk/ocaml.mk. No upstream changes.
   2016-05-06 17:54:40 by Jaap Boender | Files touched by this commit (1)
Log message:
Committed correct PLIST
   2016-05-05 18:06:52 by Jaap Boender | Files touched by this commit (3) | Package updated
Log message:
Updated package to version 0.4.6. Changes include:
  * (0.4.6) Major changes:
   * Create patch functions to mimic the new String.lowercase_ascii,
     String.uppercase_ascii, String.capitalize_ascii and
     String.uncapitalize_ascii found in OCaml 4.03.0
   * Disable tests depending on not yet buildable units with OCaml 4.03.0 (e.g.
     expect which depends on batteries, which doesn't yet compile)
   * Minimal version of OCaml is now 3.12.1. (Debian Wheezy version)

  * (0.4.5) Major changes:
    * Build and install annotation files.
    * Use builtin bin_annot and annot tags.
    * Tag .mly files on the same basis as .ml and .mli files
      (required by menhir).
    * Remove 'program' constraint from C-dependencies.
      Currently, when a library has C-sources and e.g. an executable
      depends on that library, then changing the C-sources and running
      '-build' does not yield a rebuild of the library.
      By adding these dependencies (rather removing the constraint),
      it seems to work fine.
  * Minor changes:
    * Add tests tag if --enable-tests.
    * Remove ocaml 4.02 warnings.
    * Fix the automatic use of -syntax for OCamlVersion >= 3.12.1.
    * Use the right ocamlfind binary to get all supported packages.
      The name of the ocamlfind binary should be read from the configuration.
      This is especially useful when cross-compiling.
  * Features:
    * no_automatic_syntax (alpha): Disable the automatic inclusion
      of -syntax camlp4o for packages that matches the internal heuristic
      (if a dependency ends with a .syntax or is a well known syntax).
    * compiled_setup_ml (alpha): Fix a bug using multiple arguments
      to the configure script.
  Thanks to Christopher Zimmermann, Jerome Vouillon, Tomohiro Matsuyama
  and Christoph Höger for their pull requests and to help release this version.
   2016-02-06 14:45:24 by Jaap Boender | Files touched by this commit (1) | Package updated
Log message:
Updated package to work with new mk/ocaml.mk.