Change compiler's requested version
This commit is contained in:
parent
b5f9e2479f
commit
590ddb750f
7
Makefile
7
Makefile
@ -2,6 +2,13 @@
|
|||||||
DEV ?= --dev
|
DEV ?= --dev
|
||||||
PACKAGES:=$(patsubst %.opam,%,$(notdir $(shell find -name *.opam)))
|
PACKAGES:=$(patsubst %.opam,%,$(notdir $(shell find -name *.opam)))
|
||||||
|
|
||||||
|
current_ocaml_version := $(shell ocamlc -version)
|
||||||
|
include scripts/version.sh
|
||||||
|
|
||||||
|
ifneq (${current_ocaml_version},${ocaml_version})
|
||||||
|
$(error Unexpected ocaml version (found: ${current_ocaml_version}, expected: ${ocaml_version}))
|
||||||
|
endif
|
||||||
|
|
||||||
all:
|
all:
|
||||||
@jbuilder build ${DEV} \
|
@jbuilder build ${DEV} \
|
||||||
src/bin_node/main.exe \
|
src/bin_node/main.exe \
|
||||||
|
@ -4,7 +4,7 @@ How to build and run
|
|||||||
Build instructions
|
Build instructions
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
To compile Tezos, you need an OCaml compiler (version 4.04.2) and all
|
To compile Tezos, you need an OCaml compiler (version 4.06.0) and all
|
||||||
the libraries listed in the various ``tezos-*.opam`` files.
|
the libraries listed in the various ``tezos-*.opam`` files.
|
||||||
|
|
||||||
The best way to install all dependencies is by first installing
|
The best way to install all dependencies is by first installing
|
||||||
@ -19,7 +19,7 @@ projects or other versions of Tezos.
|
|||||||
::
|
::
|
||||||
|
|
||||||
opam update
|
opam update
|
||||||
opam switch "tezos" --alias-of 4.04.2
|
opam switch "tezos" --alias-of 4.06.0
|
||||||
|
|
||||||
Note that if you previously created a switch named ``tezos`` but with an
|
Note that if you previously created a switch named ``tezos`` but with an
|
||||||
older OCaml version you need to remove the switch with
|
older OCaml version you need to remove the switch with
|
||||||
|
@ -74,7 +74,7 @@ RUN mkdir ~/.ssh && \
|
|||||||
git config --global user.name "Tezos CI" && \
|
git config --global user.name "Tezos CI" && \
|
||||||
opam init --bare --no-setup --yes \
|
opam init --bare --no-setup --yes \
|
||||||
tezos_deps /home/opam/opam-repository-tezos_deps && \
|
tezos_deps /home/opam/opam-repository-tezos_deps && \
|
||||||
opam switch create --yes tezos ocaml-base-compiler.4.04.2
|
opam switch create --yes tezos ocaml-base-compiler.${ocaml_version}
|
||||||
|
|
||||||
RUN opam install --yes opam-depext
|
RUN opam install --yes opam-depext
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ COPY opam-repository-master opam-repository-master
|
|||||||
COPY opam /usr/local/bin/opam
|
COPY opam /usr/local/bin/opam
|
||||||
RUN apk add --no-cache ocaml build-base m4 tar xz bzip2 curl perl rsync
|
RUN apk add --no-cache ocaml build-base m4 tar xz bzip2 curl perl rsync
|
||||||
RUN cd ./opam-repository-master/compilers && \
|
RUN cd ./opam-repository-master/compilers && \
|
||||||
( ls -1 | grep -v \$(ocamlc --version) | xargs rm -r )
|
( ls -1 | grep -v ${ocaml_version} | xargs rm -r )
|
||||||
RUN opam init --no-setup --yes default ./opam-repository-master
|
RUN opam init --no-setup --yes default ./opam-repository-master
|
||||||
RUN opam install --yes opam-bundle
|
RUN opam install --yes opam-bundle
|
||||||
COPY opam-repository-tezos opam-repository-tezos
|
COPY opam-repository-tezos opam-repository-tezos
|
||||||
|
@ -10,6 +10,7 @@ export OPAMYES=yes
|
|||||||
### Temporary HACK
|
### Temporary HACK
|
||||||
|
|
||||||
## Should be in sync with `opam-unpin.sh`
|
## Should be in sync with `opam-unpin.sh`
|
||||||
|
opam pin add --no-action leveldb git://github.com/chambart/ocaml-leveldb.git#update_4.06
|
||||||
opam pin add --no-action --dev-repo ocplib-json-typed
|
opam pin add --no-action --dev-repo ocplib-json-typed
|
||||||
|
|
||||||
## Unpin package we used to pin...
|
## Unpin package we used to pin...
|
||||||
|
@ -12,7 +12,7 @@ opam pin remove $packages
|
|||||||
### Temporary HACK
|
### Temporary HACK
|
||||||
|
|
||||||
## Should be in sync with `opam-pin.sh`
|
## Should be in sync with `opam-pin.sh`
|
||||||
opam pin remove --no-action sodium
|
opam pin remove --no-action leveldb
|
||||||
opam pin remove --no-action ocplib-json-typed
|
opam pin remove --no-action ocplib-json-typed
|
||||||
|
|
||||||
### End of temporary HACK
|
### End of temporary HACK
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
## `ocaml-verions` should be in sync with
|
## `ocaml-version` should be in sync with `README.rst` and
|
||||||
## `lib.protocol-compiler/tezos-protocol-compiler.opam`
|
## `lib.protocol-compiler/tezos-protocol-compiler.opam`
|
||||||
|
|
||||||
alpine_version=3.6
|
alpine_version=3.6
|
||||||
ocaml_version=4.04.2
|
ocaml_version=4.06.1
|
||||||
leveldb_version=1.18
|
leveldb_version=1.18
|
||||||
opam_version=2.0.0~rc
|
opam_version=2.0.0~rc
|
||||||
opam_tag=2.0.0-rc
|
opam_tag=2.0.0-rc
|
||||||
|
@ -293,7 +293,7 @@ let setup_formatter ppf format verbosity =
|
|||||||
Format.pp_get_formatter_tag_functions ppf (),
|
Format.pp_get_formatter_tag_functions ppf (),
|
||||||
Format.pp_get_print_tags ppf () in
|
Format.pp_get_print_tags ppf () in
|
||||||
begin
|
begin
|
||||||
Format.pp_flush_formatter ppf ;
|
Format.pp_print_flush ppf () ;
|
||||||
Format.pp_set_formatter_out_functions ppf
|
Format.pp_set_formatter_out_functions ppf
|
||||||
{ out_string =
|
{ out_string =
|
||||||
(fun s b a ->
|
(fun s b a ->
|
||||||
@ -302,7 +302,8 @@ let setup_formatter ppf format verbosity =
|
|||||||
else if not !skip then orig_out_functions.out_string s b a) ;
|
else if not !skip then orig_out_functions.out_string s b a) ;
|
||||||
out_spaces = (fun n -> if not !skip then orig_out_functions.out_spaces n) ;
|
out_spaces = (fun n -> if not !skip then orig_out_functions.out_spaces n) ;
|
||||||
out_newline = (fun () -> if not !skip then orig_out_functions.out_newline ()) ;
|
out_newline = (fun () -> if not !skip then orig_out_functions.out_newline ()) ;
|
||||||
out_flush = (fun () -> if not !skip then orig_out_functions.out_flush ()) } ;
|
out_flush = (fun () -> if not !skip then orig_out_functions.out_flush ()) ;
|
||||||
|
out_indent = orig_out_functions.out_indent } ;
|
||||||
let levels = ref [] in
|
let levels = ref [] in
|
||||||
let setup_level (level, op) =
|
let setup_level (level, op) =
|
||||||
if op level verbosity then
|
if op level verbosity then
|
||||||
@ -499,7 +500,7 @@ let setup_formatter ppf format verbosity =
|
|||||||
orig_state
|
orig_state
|
||||||
|
|
||||||
let restore_formatter ppf (out_functions, tag_functions, tags) =
|
let restore_formatter ppf (out_functions, tag_functions, tags) =
|
||||||
Format.pp_flush_formatter ppf ;
|
Format.pp_print_flush ppf () ;
|
||||||
Format.pp_set_formatter_out_functions ppf out_functions ;
|
Format.pp_set_formatter_out_functions ppf out_functions ;
|
||||||
Format.pp_set_formatter_tag_functions ppf tag_functions ;
|
Format.pp_set_formatter_tag_functions ppf tag_functions ;
|
||||||
Format.pp_set_print_tags ppf tags
|
Format.pp_set_print_tags ppf tags
|
||||||
|
@ -120,8 +120,8 @@ let main select_commands =
|
|||||||
Format.printf "@{<error>@{<title>Fatal error@}@} %s." (Printexc.to_string exn) ;
|
Format.printf "@{<error>@{<title>Fatal error@}@} %s." (Printexc.to_string exn) ;
|
||||||
Lwt.return 1
|
Lwt.return 1
|
||||||
end >>= fun retcode ->
|
end >>= fun retcode ->
|
||||||
Format.pp_flush_formatter Format.std_formatter ;
|
Format.pp_print_flush Format.err_formatter () ;
|
||||||
Format.pp_flush_formatter Format.err_formatter ;
|
Format.pp_print_flush Format.std_formatter () ;
|
||||||
Lwt.return retcode
|
Lwt.return retcode
|
||||||
|
|
||||||
(* Where all the user friendliness starts *)
|
(* Where all the user friendliness starts *)
|
||||||
|
@ -23,4 +23,4 @@ build-test: [
|
|||||||
[ "jbuilder" "runtest" "-p" name "-j" jobs ]
|
[ "jbuilder" "runtest" "-p" name "-j" jobs ]
|
||||||
]
|
]
|
||||||
## ocaml-version should be in sync with `script/version.sh`
|
## ocaml-version should be in sync with `script/version.sh`
|
||||||
available: [ ocaml-version = "4.04.2" ]
|
available: [ ocaml-version = "4.06.1" ]
|
@ -86,6 +86,19 @@ sig
|
|||||||
of [x] in [m] disappears.
|
of [x] in [m] disappears.
|
||||||
@before 4.03 Physical equality was not ensured. *)
|
@before 4.03 Physical equality was not ensured. *)
|
||||||
|
|
||||||
|
val update: key -> ('a option -> 'a option) -> 'a t -> 'a t
|
||||||
|
(** [update x f m] returns a map containing the same bindings as
|
||||||
|
[m], except for the binding of [x]. Depending on the value of
|
||||||
|
[y] where [y] is [f (find_opt x m)], the binding of [x] is
|
||||||
|
added, removed or updated. If [y] is [None], the binding is
|
||||||
|
removed if it exists; otherwise, if [y] is [Some z] then [x]
|
||||||
|
is associated to [z] in the resulting map. If [x] was already
|
||||||
|
bound in [m] to a value that is physically equal to [z], [m]
|
||||||
|
is returned unchanged (the result of the function is then
|
||||||
|
physically equal to [m]).
|
||||||
|
@since 4.06.0
|
||||||
|
*)
|
||||||
|
|
||||||
val singleton: key -> 'a -> 'a t
|
val singleton: key -> 'a -> 'a t
|
||||||
(** [singleton x y] returns the one-element map that contains a binding [y]
|
(** [singleton x y] returns the one-element map that contains a binding [y]
|
||||||
for [x].
|
for [x].
|
||||||
@ -184,12 +197,25 @@ sig
|
|||||||
@since 3.12.0
|
@since 3.12.0
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
val min_binding_opt: 'a t -> (key * 'a) option
|
||||||
|
(** Return the smallest binding of the given map
|
||||||
|
(with respect to the [Ord.compare] ordering), or [None]
|
||||||
|
if the map is empty.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val max_binding: 'a t -> (key * 'a)
|
val max_binding: 'a t -> (key * 'a)
|
||||||
(** Same as {!Map.S.min_binding}, but returns the largest binding
|
(** Same as {!Map.S.min_binding}, but returns the largest binding
|
||||||
of the given map.
|
of the given map.
|
||||||
@since 3.12.0
|
@since 3.12.0
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
val max_binding_opt: 'a t -> (key * 'a) option
|
||||||
|
(** Same as {!Map.S.min_binding_opt}, but returns the largest binding
|
||||||
|
of the given map.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val choose: 'a t -> (key * 'a)
|
val choose: 'a t -> (key * 'a)
|
||||||
(** Return one binding of the given map, or raise [Not_found] if
|
(** Return one binding of the given map, or raise [Not_found] if
|
||||||
the map is empty. Which binding is chosen is unspecified,
|
the map is empty. Which binding is chosen is unspecified,
|
||||||
@ -197,6 +223,13 @@ sig
|
|||||||
@since 3.12.0
|
@since 3.12.0
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
val choose_opt: 'a t -> (key * 'a) option
|
||||||
|
(** Return one binding of the given map, or [None] if
|
||||||
|
the map is empty. Which binding is chosen is unspecified,
|
||||||
|
but equal bindings will be chosen for equal maps.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val split: key -> 'a t -> 'a t * 'a option * 'a t
|
val split: key -> 'a t -> 'a t * 'a option * 'a t
|
||||||
(** [split x m] returns a triple [(l, data, r)], where
|
(** [split x m] returns a triple [(l, data, r)], where
|
||||||
[l] is the map with all the bindings of [m] whose key
|
[l] is the map with all the bindings of [m] whose key
|
||||||
@ -212,6 +245,47 @@ sig
|
|||||||
(** [find x m] returns the current binding of [x] in [m],
|
(** [find x m] returns the current binding of [x] in [m],
|
||||||
or raises [Not_found] if no such binding exists. *)
|
or raises [Not_found] if no such binding exists. *)
|
||||||
|
|
||||||
|
|
||||||
|
val find_opt: key -> 'a t -> 'a option
|
||||||
|
(** [find_opt x m] returns [Some v] if the current binding of [x]
|
||||||
|
in [m] is [v], or [None] if no such binding exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_first: (key -> bool) -> 'a t -> key * 'a
|
||||||
|
(** [find_first f m], where [f] is a monotonically increasing function,
|
||||||
|
returns the binding of [m] with the lowest key [k] such that [f k],
|
||||||
|
or raises [Not_found] if no such key exists.
|
||||||
|
|
||||||
|
For example, [find_first (fun k -> Ord.compare k x >= 0) m] will return
|
||||||
|
the first binding [k, v] of [m] where [Ord.compare k x >= 0]
|
||||||
|
(intuitively: [k >= x]), or raise [Not_found] if [x] is greater than any
|
||||||
|
element of [m].
|
||||||
|
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_first_opt: (key -> bool) -> 'a t -> (key * 'a) option
|
||||||
|
(** [find_first_opt f m], where [f] is a monotonically increasing function,
|
||||||
|
returns an option containing the binding of [m] with the lowest key [k]
|
||||||
|
such that [f k], or [None] if no such key exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_last: (key -> bool) -> 'a t -> key * 'a
|
||||||
|
(** [find_last f m], where [f] is a monotonically decreasing function,
|
||||||
|
returns the binding of [m] with the highest key [k] such that [f k],
|
||||||
|
or raises [Not_found] if no such key exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_last_opt: (key -> bool) -> 'a t -> (key * 'a) option
|
||||||
|
(** [find_last_opt f m], where [f] is a monotonically decreasing function,
|
||||||
|
returns an option containing the binding of [m] with the highest key [k]
|
||||||
|
such that [f k], or [None] if no such key exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val map: ('a -> 'b) -> 'a t -> 'b t
|
val map: ('a -> 'b) -> 'a t -> 'b t
|
||||||
(** [map f m] returns a map with same domain as [m], where the
|
(** [map f m] returns a map with same domain as [m], where the
|
||||||
associated value [a] of all bindings of [m] has been
|
associated value [a] of all bindings of [m] has been
|
||||||
|
@ -168,15 +168,35 @@ sig
|
|||||||
(with respect to the [Ord.compare] ordering), or raise
|
(with respect to the [Ord.compare] ordering), or raise
|
||||||
[Not_found] if the set is empty. *)
|
[Not_found] if the set is empty. *)
|
||||||
|
|
||||||
|
val min_elt_opt: t -> elt option
|
||||||
|
(** Return the smallest element of the given set
|
||||||
|
(with respect to the [Ord.compare] ordering), or [None]
|
||||||
|
if the set is empty.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val max_elt: t -> elt
|
val max_elt: t -> elt
|
||||||
(** Same as {!Set.S.min_elt}, but returns the largest element of the
|
(** Same as {!Set.S.min_elt}, but returns the largest element of the
|
||||||
given set. *)
|
given set. *)
|
||||||
|
|
||||||
|
val max_elt_opt: t -> elt option
|
||||||
|
(** Same as {!Set.S.min_elt_opt}, but returns the largest element of the
|
||||||
|
given set.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val choose: t -> elt
|
val choose: t -> elt
|
||||||
(** Return one element of the given set, or raise [Not_found] if
|
(** Return one element of the given set, or raise [Not_found] if
|
||||||
the set is empty. Which element is chosen is unspecified,
|
the set is empty. Which element is chosen is unspecified,
|
||||||
but equal elements will be chosen for equal sets. *)
|
but equal elements will be chosen for equal sets. *)
|
||||||
|
|
||||||
|
val choose_opt: t -> elt option
|
||||||
|
(** Return one element of the given set, or [None] if
|
||||||
|
the set is empty. Which element is chosen is unspecified,
|
||||||
|
but equal elements will be chosen for equal sets.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val split: elt -> t -> t * bool * t
|
val split: elt -> t -> t * bool * t
|
||||||
(** [split x s] returns a triple [(l, present, r)], where
|
(** [split x s] returns a triple [(l, present, r)], where
|
||||||
[l] is the set of elements of [s] that are
|
[l] is the set of elements of [s] that are
|
||||||
@ -192,6 +212,46 @@ sig
|
|||||||
exists.
|
exists.
|
||||||
@since 4.01.0 *)
|
@since 4.01.0 *)
|
||||||
|
|
||||||
|
val find_opt: elt -> t -> elt option
|
||||||
|
(** [find_opt x s] returns the element of [s] equal to [x] (according
|
||||||
|
to [Ord.compare]), or [None] if no such element
|
||||||
|
exists.
|
||||||
|
@since 4.05 *)
|
||||||
|
|
||||||
|
val find_first: (elt -> bool) -> t -> elt
|
||||||
|
(** [find_first f s], where [f] is a monotonically increasing function,
|
||||||
|
returns the lowest element [e] of [s] such that [f e],
|
||||||
|
or raises [Not_found] if no such element exists.
|
||||||
|
|
||||||
|
For example, [find_first (fun e -> Ord.compare e x >= 0) s] will return
|
||||||
|
the first element [e] of [s] where [Ord.compare e x >= 0] (intuitively:
|
||||||
|
[e >= x]), or raise [Not_found] if [x] is greater than any element of
|
||||||
|
[s].
|
||||||
|
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_first_opt: (elt -> bool) -> t -> elt option
|
||||||
|
(** [find_first_opt f s], where [f] is a monotonically increasing function,
|
||||||
|
returns an option containing the lowest element [e] of [s] such that
|
||||||
|
[f e], or [None] if no such element exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_last: (elt -> bool) -> t -> elt
|
||||||
|
(** [find_last f s], where [f] is a monotonically decreasing function,
|
||||||
|
returns the highest element [e] of [s] such that [f e],
|
||||||
|
or raises [Not_found] if no such element exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
|
val find_last_opt: (elt -> bool) -> t -> elt option
|
||||||
|
(** [find_last_opt f s], where [f] is a monotonically decreasing function,
|
||||||
|
returns an option containing the highest element [e] of [s] such that
|
||||||
|
[f e], or [None] if no such element exists.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val of_list: elt list -> t
|
val of_list: elt list -> t
|
||||||
(** [of_list l] creates a set from a list of elements.
|
(** [of_list l] creates a set from a list of elements.
|
||||||
This is usually more efficient than folding [add] over the list,
|
This is usually more efficient than folding [add] over the list,
|
||||||
|
Loading…
Reference in New Issue
Block a user