[Pkg-ocaml-maint-commits] [jbuilder] 02/07: New upstream version 1.0~beta13
Stéphane Glondu
glondu at moszumanska.debian.org
Thu Oct 12 09:12:27 UTC 2017
This is an automated email from the git hooks/post-receive script.
glondu pushed a commit to branch master
in repository jbuilder.
commit 9b859742648829ab2c8f211d6583ad98511a0a03
Author: Stephane Glondu <steph at glondu.net>
Date: Thu Oct 12 10:15:29 2017 +0200
New upstream version 1.0~beta13
---
CHANGES.md | 9 +++++++++
appveyor.yml | 4 ++--
bin/main.ml | 6 +++---
install_ocaml.cmd | 36 ++++++++++++++++++++++++++++++++++++
jbuilder.opam | 2 +-
src/gen_rules.ml | 26 +++++++++++++++++++++++++-
src/odoc.ml | 43 ++++++++++++++++++++++++++++++++++++++++++-
src/odoc.mli | 2 ++
src/ordered_set_lang.ml | 5 ++++-
src/path.ml | 4 ++++
src/path.mli | 3 +++
11 files changed, 131 insertions(+), 9 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 80c7437..bd6fb55 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,12 @@
+1.0+beta13 (05/09/2017)
+-----------------------
+
+- Generate toplevel html index for documentation (#224, Thomas Gazagnaire)
+
+- Fix recompilation of native artifacts. Regression introduced in the last
+ version (1.0+beta12) when digests replaces timestamps for checking staleness
+ (#238, David Allsopp)
+
1.0+beta12 (18/08/2017)
-----------------------
diff --git a/appveyor.yml b/appveyor.yml
index 6cfc496..7830c5c 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,8 +1,8 @@
# AppVeyor config using https://github.com/Chris00/ocaml-appveyor
install:
- - appveyor DownloadFile "https://raw.githubusercontent.com/Chris00/ocaml-appveyor/master/install_ocaml.cmd" -FileName "C:\install_ocaml.cmd"
- - C:\install_ocaml.cmd
+ - cd "%APPVEYOR_BUILD_FOLDER%"
+ - install_ocaml.cmd
build_script:
- cd "%APPVEYOR_BUILD_FOLDER%"
diff --git a/bin/main.ml b/bin/main.ml
index 87f4856..b48ab19 100644
--- a/bin/main.ml
+++ b/bin/main.ml
@@ -857,7 +857,7 @@ let subst =
; `P {|Substitute $(b,%%ID%%) strings in source files, in a similar fashion to
what topkg does in the default configuration.|}
; `P {|This command is only meant to be called when a user pins a package to
- its development version. Especially it replaces $(b,1.0+beta12) strings
+ its development version. Especially it replaces $(b,1.0+beta13) strings
by the version obtained from the vcs. Currently only git is supported and
the version is obtained from the output of:|}
; `Pre {| \$ git describe --always --dirty|}
@@ -865,7 +865,7 @@ let subst =
the defatult configuration:|}
; var "NAME" "the name of the package"
; var "VERSION" "output of $(b,git describe --always --dirty)"
- ; var "VERSION_NUM" "same as $(b,1.0+beta12) but with a potential leading \
+ ; var "VERSION_NUM" "same as $(b,1.0+beta13) but with a potential leading \
'v' or 'V' dropped"
; var "VCS_COMMIT_ID" "commit hash from the vcs"
; opam "maintainer"
@@ -953,7 +953,7 @@ let all =
let default =
let doc = "composable build system for OCaml" in
( Term.(ret (const (fun _ -> `Help (`Pager, None)) $ common))
- , Term.info "jbuilder" ~doc ~version:"1.0+beta12"
+ , Term.info "jbuilder" ~doc ~version:"1.0+beta13"
~man:
[ `S "DESCRIPTION"
; `P {|Jbuilder is a build system designed for OCaml projects only. It
diff --git a/install_ocaml.cmd b/install_ocaml.cmd
new file mode 100644
index 0000000..372ec8e
--- /dev/null
+++ b/install_ocaml.cmd
@@ -0,0 +1,36 @@
+REM Download and install OCaml and flexlink (unless it was already done).
+REM Prepare the environment variables,... to use it. OCaml is installed
+REM at %OCAMLROOT%
+REM
+REM If you are using Cygwin, install it in C:\cygwin first and then
+REM execute this script. Execute bash with the option "-l".
+
+REM set OCAMLROOT=%PROGRAMFILES%/OCaml
+set OCAMLROOT=C:/PROGRA~1/OCaml
+
+set OCAMLURL=https://github.com/Chris00/ocaml-appveyor/releases/download/0.1/ocaml-4.03.zip
+
+REM Cygwin is always installed on AppVeyor. Its path must come
+REM before the one of Git but after those of MSCV and OCaml.
+set Path=C:\cygwin\bin;%Path%
+
+call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64
+
+set Path=%OCAMLROOT%\bin;%OCAMLROOT%\bin\flexdll;%Path%
+set CAML_LD_LIBRARY_PATH=%OCAMLROOT%/lib/stublibs
+
+set CYGWINBASH=C:\cygwin\bin\bash.exe
+
+if not exist "%OCAMLROOT%/bin/ocaml.exe" (
+ echo Downloading OCaml...
+ appveyor DownloadFile "%OCAMLURL%" -FileName "C:\PROGRA~1\ocaml.zip"
+ %CYGWINBASH% -lc "cd /cygdrive/c/Program\ Files && unzip -q ocaml.zip"
+ del C:\PROGRA~1\ocaml.zip
+)
+
+if exist %CYGWINBASH% (
+ REM Make sure that "link" is the MSVC one and not the Cynwin one.
+ %CYGWINBASH% -lc "eval $(/cygdrive/c/Program\ Files/OCaml/tools/msvs-promote-path)"> ~/.bash_profile"
+)
+
+set <NUL /p=Ready to use OCaml & ocamlc -version
diff --git a/jbuilder.opam b/jbuilder.opam
index 86d2cac..0db02df 100644
--- a/jbuilder.opam
+++ b/jbuilder.opam
@@ -1,4 +1,4 @@
-version: "1.0+beta12"
+version: "1.0+beta13"
opam-version: "1.2"
maintainer: "opensource at janestreet.com"
authors: ["Jane Street Group, LLC <opensource at janestreet.com>"]
diff --git a/src/gen_rules.ml b/src/gen_rules.ml
index 699013c..022a63e 100644
--- a/src/gen_rules.ml
+++ b/src/gen_rules.ml
@@ -86,6 +86,12 @@ module Gen(P : Params) = struct
else
fun x -> x
in
+ let objs (cm, _, _, _) =
+ if mode = Mode.Byte then
+ []
+ else
+ List.map ~f:(Path.change_extension ~ext:ctx.ext_obj) cm
+ in
SC.add_rule sctx
(Build.fanout4
(dep_graph >>>
@@ -100,6 +106,8 @@ module Gen(P : Params) = struct
(Ocaml_flags.get flags mode)
(SC.expand_and_eval_set sctx ~scope ~dir lib.library_flags ~standard:[])
>>>
+ Build.dyn_paths (Build.arr objs)
+ >>>
Build.run ~context:ctx (Dep compiler)
~extra_targets:(
match mode with
@@ -376,6 +384,8 @@ module Gen(P : Params) = struct
let src = lib_archive lib ~dir ~ext:(Mode.compiled_lib_ext Native) in
let dst = lib_archive lib ~dir ~ext:".cmxs" in
let build =
+ Build.dyn_paths (Build.arr (fun () -> [lib_archive lib ~dir ~ext:ctx.ext_lib]))
+ >>>
Ocaml_flags.get flags Native
>>>
Build.run ~context:ctx
@@ -440,8 +450,21 @@ module Gen(P : Params) = struct
~mode
[String.capitalize_ascii name]))
in
+ let objs (libs, cm) =
+ if mode = Mode.Byte then
+ []
+ else
+ let libs =
+ let f = function
+ | Lib.Internal (dir, lib) -> Some (Path.relative dir (lib.name ^ ctx.ext_lib))
+ | External _ -> None
+ in
+ List.filter_map ~f libs
+ in
+ libs @ List.map ~f:(Path.change_extension ~ext:ctx.ext_obj) cm
+ in
SC.add_rule sctx
- (libs_and_cm
+ ((libs_and_cm >>> Build.dyn_paths (Build.arr objs))
&&&
Build.fanout
(Ocaml_flags.get flags mode)
@@ -726,6 +749,7 @@ Add it to your jbuild file to remove this warning.
let () =
SC.add_rules sctx (Js_of_ocaml_rules.setup_separate_compilation_rules sctx)
let () = Odoc.setup_css_rule sctx
+ let () = Odoc.setup_toplevel_index_rule sctx
(* +-----------------------------------------------------------------+
| META |
diff --git a/src/odoc.ml b/src/odoc.ml
index 6aa401c..7e4ef03 100644
--- a/src/odoc.ml
+++ b/src/odoc.ml
@@ -112,6 +112,8 @@ let doc_dir ~context = Path.relative context.Context.build_dir "_doc"
let css_file ~doc_dir = doc_dir ++ "odoc.css"
+let toplevel_index ~doc_dir = doc_dir ++ "index.html"
+
let setup_library_rules sctx (lib : Library.t) ~dir ~modules ~requires
~(dep_graph:Ocamldep.dep_graph) =
Option.iter lib.public ~f:(fun public ->
@@ -164,6 +166,7 @@ let setup_library_rules sctx (lib : Library.t) ~dir ~modules ~requires
in
Alias.add_deps (SC.aliases sctx) (Alias.doc ~dir)
(css_file ~doc_dir
+ :: toplevel_index ~doc_dir
:: lib_index_html
:: html_files))
@@ -175,4 +178,42 @@ let setup_css_rule sctx =
~dir:context.build_dir
~extra_targets:[css_file ~doc_dir]
(get_odoc sctx)
- [ A "css"; A "-o"; Path doc_dir ]);
+ [ A "css"; A "-o"; Path doc_dir ])
+
+let sp = Printf.sprintf
+
+let setup_toplevel_index_rule sctx =
+ let packages =
+ String_map.fold ~f:(fun ~key ~data pkgs ->
+ let name = sp {|<a href="%s/index.html">%s</a>|} key key in
+ let pkg = match data.Package.version_from_opam_file with
+ | None -> name
+ | Some v -> sp {|%s <span class="version">%s</span>|} name v
+ in
+ sp "<li>%s</li>" pkg :: pkgs
+ ) ~init:[] (SC.packages sctx)
+ |> List.rev
+ in
+ let packages = String.concat ~sep:"\n " packages in
+ let html =
+ sp {|<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>index</title>
+ <link rel="stylesheet" href="./odoc.css"/>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width,initial-scale=1.0"/>
+ </head>
+ <body>
+ <div class="by-name">
+ <h2>OCaml package documentation</h2>
+ <ol>
+ %s
+ </ol>
+ </body>
+ </html>
+|} packages
+ in
+ let context = SC.context sctx in
+ let doc_dir = doc_dir ~context in
+ SC.add_rule sctx @@ Build.write_file (toplevel_index ~doc_dir) html
diff --git a/src/odoc.mli b/src/odoc.mli
index ec088f7..cbd8082 100644
--- a/src/odoc.mli
+++ b/src/odoc.mli
@@ -13,3 +13,5 @@ val setup_library_rules
-> unit
val setup_css_rule : Super_context.t -> unit
+
+val setup_toplevel_index_rule: Super_context.t -> unit
diff --git a/src/ordered_set_lang.ml b/src/ordered_set_lang.ml
index 415bc52..7a7797d 100644
--- a/src/ordered_set_lang.ml
+++ b/src/ordered_set_lang.ml
@@ -82,9 +82,12 @@ module Unexpanded = struct
let open Ast in
match t with
| Element s -> Element s
- | Special (l, s) -> Special (l, s)
| Union [Special (_, "include"); Element fn] ->
Include (Sexp.Of_sexp.string fn)
+ | Union [Special (loc, "include"); _]
+ | Special (loc, "include") ->
+ Loc.fail loc "(:include expects a single element (do you need to quote the filename?)"
+ | Special (l, s) -> Special (l, s)
| Union l ->
Union (List.map l ~f:map)
| Diff (l, r) ->
diff --git a/src/path.ml b/src/path.ml
index 5e66310..a260a4c 100644
--- a/src/path.ml
+++ b/src/path.ml
@@ -411,3 +411,7 @@ let rm_rf =
match Unix.lstat fn with
| exception Unix.Unix_error(ENOENT, _, _) -> ()
| _ -> loop fn
+
+let change_extension ~ext t =
+ let t = try Filename.chop_extension t with Not_found -> t in
+ t ^ ext
diff --git a/src/path.mli b/src/path.mli
index e2a45fe..57bed82 100644
--- a/src/path.mli
+++ b/src/path.mli
@@ -101,3 +101,6 @@ val rmdir : t -> unit
val unlink : t -> unit
val unlink_no_err : t -> unit
val rm_rf : t -> unit
+
+(** Changes the extension of the filename (or adds an extension if there was none) *)
+val change_extension : ext:string -> t -> t
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/jbuilder.git
More information about the Pkg-ocaml-maint-commits
mailing list