From df965f84eaeb579f523bea607f7d39571f40c413 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 1 Jun 2022 10:27:21 +0200 Subject: [PATCH 1/2] protocol_compiler: fix order of hashes in error message --- src/lib_protocol_compiler/compiler.ml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lib_protocol_compiler/compiler.ml b/src/lib_protocol_compiler/compiler.ml index 0a4cdea7611f..f2a7eeac92f1 100644 --- a/src/lib_protocol_compiler/compiler.ml +++ b/src/lib_protocol_compiler/compiler.ml @@ -214,30 +214,31 @@ let main {compile_ml; pack_objects; link_shared} = Arg.usage args_spec usage_msg ; Stdlib.exit 1 in - let announced_hash, protocol = + let stored_hash_opt, protocol = match Lwt_main.run (Tezos_base_unix.Protocol_files.read_dir source_dir) with | Ok (hash, proto) -> (hash, proto) | Error err -> Format.eprintf "Failed to read TEZOS_PROTOCOL: %a" pp_print_trace err ; exit 2 in - let real_hash = Protocol.hash protocol in + let computed_hash = Protocol.hash protocol in if !hash_only then ( - Format.printf "%a@." Protocol_hash.pp real_hash ; + Format.printf "%a@." Protocol_hash.pp computed_hash ; exit 0) ; let hash = - match announced_hash with - | None -> real_hash - | Some hash - when !check_protocol_hash && not (Protocol_hash.equal real_hash hash) -> + match stored_hash_opt with + | None -> computed_hash + | Some stored_hash + when !check_protocol_hash + && not (Protocol_hash.equal computed_hash stored_hash) -> Format.eprintf "Inconsistent hash for protocol in TEZOS_PROTOCOL.@\n\ - Found: %a@\n\ - Expected: %a@." + Computed hash: %a@\n\ + Stored in TEZOS_PROTOCOL: %a@." Protocol_hash.pp - hash + computed_hash Protocol_hash.pp - real_hash ; + stored_hash ; exit 2 | Some hash -> hash in -- GitLab From 7904fbb7b9fc1fdb67fe67a772e517449555d13d Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 9 Jun 2022 12:02:41 +0200 Subject: [PATCH 2/2] Protocol-compiler: Add warning args to proto compiler and use those of manifest --- manifest/main.ml | 9 +++++++++ src/lib_protocol_compiler/compiler.ml | 25 ++++++++++++++---------- src/proto_000_Ps9mPmXa/lib_protocol/dune | 7 ++++++- src/proto_001_PtCJ7pwo/lib_protocol/dune | 7 ++++++- src/proto_002_PsYLVpVv/lib_protocol/dune | 7 ++++++- src/proto_003_PsddFKi3/lib_protocol/dune | 7 ++++++- src/proto_004_Pt24m4xi/lib_protocol/dune | 7 ++++++- src/proto_005_PsBABY5H/lib_protocol/dune | 7 ++++++- src/proto_005_PsBabyM1/lib_protocol/dune | 7 ++++++- src/proto_006_PsCARTHA/lib_protocol/dune | 7 ++++++- src/proto_007_PsDELPH1/lib_protocol/dune | 7 ++++++- src/proto_008_PtEdo2Zk/lib_protocol/dune | 7 ++++++- src/proto_008_PtEdoTez/lib_protocol/dune | 7 ++++++- src/proto_009_PsFLoren/lib_protocol/dune | 7 ++++++- src/proto_010_PtGRANAD/lib_protocol/dune | 7 ++++++- src/proto_011_PtHangz2/lib_protocol/dune | 2 +- src/proto_012_Psithaca/lib_protocol/dune | 2 +- src/proto_013_PtJakart/lib_protocol/dune | 2 +- src/proto_alpha/lib_protocol/dune | 2 +- src/proto_demo_counter/lib_protocol/dune | 2 +- src/proto_demo_noops/lib_protocol/dune | 2 +- src/proto_genesis/lib_protocol/dune | 2 +- 22 files changed, 109 insertions(+), 30 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index c47564e325d4..1d4507e35e51 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -3465,6 +3465,15 @@ include Tezos_raw_protocol_%s.Main final_protocol_versions then E else S "-no-hash-check"); + (match disable_warnings with + | [] -> E + | l -> + H + [ + S "-warning"; + S (Flags.disabled_warnings_to_string l); + ]); + H [S "-warn-error"; S "+a"]; S "."; ]; ] diff --git a/src/lib_protocol_compiler/compiler.ml b/src/lib_protocol_compiler/compiler.ml index f2a7eeac92f1..5f1a0b2fbf6e 100644 --- a/src/lib_protocol_compiler/compiler.ml +++ b/src/lib_protocol_compiler/compiler.ml @@ -23,11 +23,9 @@ (* *) (*****************************************************************************) -let warnings = Defaults.warnings +let default_warnings = Defaults.warnings -let extra_warnings = "-6-7-9-29" - -let warn_error = "-a+8" +let default_warn_error = "-a+8" let () = Clflags.unsafe_string := false @@ -167,8 +165,13 @@ type driver = { link_shared : string -> string list -> unit; } +let parse_options errflag s = + Option.iter Location.(prerr_alert none) (Warnings.parse_options errflag s) + let main {compile_ml; pack_objects; link_shared} = Random.self_init () ; + parse_options false default_warnings ; + parse_options true default_warn_error ; let anonymous = ref [] and static = ref false and register = ref false @@ -201,6 +204,14 @@ let main {compile_ml; pack_objects; link_shared} = Format.printf "%s\n" Tezos_version.Bin_version.version_string ; Stdlib.exit 0), " Display version information" ); + ( "-warning", + Arg.String (fun s -> parse_options false s), + " Enable or disable ocaml warnings according to . This \ + extends the default: " ^ default_warnings ); + ( "-warn-error", + Arg.String (fun s -> parse_options true s), + " Enable or disable ocaml error status according to . \ + This extends the default: " ^ default_warn_error ); ] in let usage_msg = @@ -282,12 +293,6 @@ let main {compile_ml; pack_objects; link_shared} = Clflags.nopervasives := true ; Clflags.no_std_include := true ; Clflags.include_dirs := [Filename.dirname functor_file] ; - let parse_options errflag s = - Option.iter Location.(prerr_alert none) (Warnings.parse_options errflag s) - in - parse_options false warnings ; - parse_options false extra_warnings ; - parse_options true warn_error ; load_embedded_cmis tezos_protocol_env ; let packed_protocol_object = compile_ml ~for_pack functor_file in let register_objects = diff --git a/src/proto_000_Ps9mPmXa/lib_protocol/dune b/src/proto_000_Ps9mPmXa/lib_protocol/dune index e0d08dff55ec..32ac6bee9b9f 100644 --- a/src/proto_000_Ps9mPmXa/lib_protocol/dune +++ b/src/proto_000_Ps9mPmXa/lib_protocol/dune @@ -68,7 +68,12 @@ (deps data.ml services.ml main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_000_Ps9mPmXa_functor) diff --git a/src/proto_001_PtCJ7pwo/lib_protocol/dune b/src/proto_001_PtCJ7pwo/lib_protocol/dune index e19deb1649c8..cf4058affb71 100644 --- a/src/proto_001_PtCJ7pwo/lib_protocol/dune +++ b/src/proto_001_PtCJ7pwo/lib_protocol/dune @@ -266,7 +266,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_001_PtCJ7pwo_functor) diff --git a/src/proto_002_PsYLVpVv/lib_protocol/dune b/src/proto_002_PsYLVpVv/lib_protocol/dune index a7117a6bd443..5b785dd95868 100644 --- a/src/proto_002_PsYLVpVv/lib_protocol/dune +++ b/src/proto_002_PsYLVpVv/lib_protocol/dune @@ -266,7 +266,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_002_PsYLVpVv_functor) diff --git a/src/proto_003_PsddFKi3/lib_protocol/dune b/src/proto_003_PsddFKi3/lib_protocol/dune index fde780ce310f..978f72ec5019 100644 --- a/src/proto_003_PsddFKi3/lib_protocol/dune +++ b/src/proto_003_PsddFKi3/lib_protocol/dune @@ -269,7 +269,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_003_PsddFKi3_functor) diff --git a/src/proto_004_Pt24m4xi/lib_protocol/dune b/src/proto_004_Pt24m4xi/lib_protocol/dune index e2a53e96f538..2936be4bb22e 100644 --- a/src/proto_004_Pt24m4xi/lib_protocol/dune +++ b/src/proto_004_Pt24m4xi/lib_protocol/dune @@ -269,7 +269,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_004_Pt24m4xi_functor) diff --git a/src/proto_005_PsBABY5H/lib_protocol/dune b/src/proto_005_PsBABY5H/lib_protocol/dune index 0cc41ab767b8..c6d8917528ff 100644 --- a/src/proto_005_PsBABY5H/lib_protocol/dune +++ b/src/proto_005_PsBABY5H/lib_protocol/dune @@ -272,7 +272,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_005_PsBABY5H_functor) diff --git a/src/proto_005_PsBabyM1/lib_protocol/dune b/src/proto_005_PsBabyM1/lib_protocol/dune index 6670dd70a3ae..8b6969e9c5f8 100644 --- a/src/proto_005_PsBabyM1/lib_protocol/dune +++ b/src/proto_005_PsBabyM1/lib_protocol/dune @@ -272,7 +272,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_005_PsBabyM1_functor) diff --git a/src/proto_006_PsCARTHA/lib_protocol/dune b/src/proto_006_PsCARTHA/lib_protocol/dune index 335a43c82585..8770d0b3374d 100644 --- a/src/proto_006_PsCARTHA/lib_protocol/dune +++ b/src/proto_006_PsCARTHA/lib_protocol/dune @@ -272,7 +272,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_006_PsCARTHA_functor) diff --git a/src/proto_007_PsDELPH1/lib_protocol/dune b/src/proto_007_PsDELPH1/lib_protocol/dune index 4691c903933a..d0279cc6df2b 100644 --- a/src/proto_007_PsDELPH1/lib_protocol/dune +++ b/src/proto_007_PsDELPH1/lib_protocol/dune @@ -278,7 +278,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_007_PsDELPH1_functor) diff --git a/src/proto_008_PtEdo2Zk/lib_protocol/dune b/src/proto_008_PtEdo2Zk/lib_protocol/dune index 94b5af617b39..e4592dccc26c 100644 --- a/src/proto_008_PtEdo2Zk/lib_protocol/dune +++ b/src/proto_008_PtEdo2Zk/lib_protocol/dune @@ -293,7 +293,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_008_PtEdo2Zk_functor) diff --git a/src/proto_008_PtEdoTez/lib_protocol/dune b/src/proto_008_PtEdoTez/lib_protocol/dune index f425e34138b8..e2cfe23826d0 100644 --- a/src/proto_008_PtEdoTez/lib_protocol/dune +++ b/src/proto_008_PtEdoTez/lib_protocol/dune @@ -293,7 +293,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_008_PtEdoTez_functor) diff --git a/src/proto_009_PsFLoren/lib_protocol/dune b/src/proto_009_PsFLoren/lib_protocol/dune index 53bf1228edcb..c2cb0a47d479 100644 --- a/src/proto_009_PsFLoren/lib_protocol/dune +++ b/src/proto_009_PsFLoren/lib_protocol/dune @@ -302,7 +302,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_009_PsFLoren_functor) diff --git a/src/proto_010_PtGRANAD/lib_protocol/dune b/src/proto_010_PtGRANAD/lib_protocol/dune index 54bab5cdae93..d13d8ab156a2 100644 --- a/src/proto_010_PtGRANAD/lib_protocol/dune +++ b/src/proto_010_PtGRANAD/lib_protocol/dune @@ -317,7 +317,12 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action + (run + %{bin:tezos-protocol-compiler} + -warning -6-7-9-16-29-32-51-68 + -warn-error +a + .))) (library (name tezos_protocol_010_PtGRANAD_functor) diff --git a/src/proto_011_PtHangz2/lib_protocol/dune b/src/proto_011_PtHangz2/lib_protocol/dune index 8aa83538d569..515237f9fad3 100644 --- a/src/proto_011_PtHangz2/lib_protocol/dune +++ b/src/proto_011_PtHangz2/lib_protocol/dune @@ -356,7 +356,7 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action (run %{bin:tezos-protocol-compiler} -warning -51 -warn-error +a .))) (library (name tezos_protocol_011_PtHangz2_functor) diff --git a/src/proto_012_Psithaca/lib_protocol/dune b/src/proto_012_Psithaca/lib_protocol/dune index 0ad6bd4c9d1b..d154bf99c2b4 100644 --- a/src/proto_012_Psithaca/lib_protocol/dune +++ b/src/proto_012_Psithaca/lib_protocol/dune @@ -407,7 +407,7 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action (run %{bin:tezos-protocol-compiler} -warning -51 -warn-error +a .))) (library (name tezos_protocol_012_Psithaca_functor) diff --git a/src/proto_013_PtJakart/lib_protocol/dune b/src/proto_013_PtJakart/lib_protocol/dune index b7b598c60bf7..d57e7c984d5d 100644 --- a/src/proto_013_PtJakart/lib_protocol/dune +++ b/src/proto_013_PtJakart/lib_protocol/dune @@ -604,7 +604,7 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} .))) + (action (run %{bin:tezos-protocol-compiler} -warning -51 -warn-error +a .))) (library (name tezos_protocol_013_PtJakart_functor) diff --git a/src/proto_alpha/lib_protocol/dune b/src/proto_alpha/lib_protocol/dune index 1bd086be3213..782f6786eb2a 100644 --- a/src/proto_alpha/lib_protocol/dune +++ b/src/proto_alpha/lib_protocol/dune @@ -664,7 +664,7 @@ alpha_services.ml alpha_services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} -no-hash-check .))) + (action (run %{bin:tezos-protocol-compiler} -no-hash-check -warn-error +a .))) (library (name tezos_protocol_alpha_functor) diff --git a/src/proto_demo_counter/lib_protocol/dune b/src/proto_demo_counter/lib_protocol/dune index b363b6cd444f..b28cef118083 100644 --- a/src/proto_demo_counter/lib_protocol/dune +++ b/src/proto_demo_counter/lib_protocol/dune @@ -90,7 +90,7 @@ services.ml services.mli main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} -no-hash-check .))) + (action (run %{bin:tezos-protocol-compiler} -no-hash-check -warn-error +a .))) (library (name tezos_protocol_demo_counter_functor) diff --git a/src/proto_demo_noops/lib_protocol/dune b/src/proto_demo_noops/lib_protocol/dune index 025f7be86221..0a8d9d0b42c2 100644 --- a/src/proto_demo_noops/lib_protocol/dune +++ b/src/proto_demo_noops/lib_protocol/dune @@ -62,7 +62,7 @@ (rule (alias runtest_compile_protocol) (deps main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} -no-hash-check .))) + (action (run %{bin:tezos-protocol-compiler} -no-hash-check -warn-error +a .))) (library (name tezos_protocol_demo_noops_functor) diff --git a/src/proto_genesis/lib_protocol/dune b/src/proto_genesis/lib_protocol/dune index fda7cba3820d..254b24e9ddf4 100644 --- a/src/proto_genesis/lib_protocol/dune +++ b/src/proto_genesis/lib_protocol/dune @@ -66,7 +66,7 @@ (deps data.ml services.ml main.ml main.mli (:src_dir TEZOS_PROTOCOL)) - (action (run %{bin:tezos-protocol-compiler} -no-hash-check .))) + (action (run %{bin:tezos-protocol-compiler} -no-hash-check -warn-error +a .))) (library (name tezos_protocol_genesis_functor) -- GitLab