ligo/scripts/gen_genesis.ml
Pietro Abate cd25bb4160 Shell: Worker initialization in error monad
Co-authored-by: Pietro Abate <pietro.abate@tezcore.com>
Co-authored-by: Raphaël Proust <code@bnwr.net>
Co-authored-by: Mathias Bourgoin <mathias.bourgoin@tezcore.com>
2019-01-02 23:38:02 +00:00

67 lines
2.1 KiB
OCaml

#use "topfind";;
#thread;;
#require "threads";;
#require "stringext";;
#require "lwt";;
#require "lwt.unix";;
#require "zarith";;
#require "re";;
#require "hacl";;
#require "calendar";;
#mod_use "../src/lib_stdlib/tzString.ml";;
#mod_use "../src/lib_stdlib/option.ml";;
#mod_use "../src/lib_stdlib/tzList.ml";;
#mod_use "../src/lib_stdlib/utils.ml";;
#mod_use "../src/lib_crypto/base58.ml";;
open Lwt.Infix;;
let prefix = "BLockGenesisGenesisGenesisGenesisGenesis"
let rec genesis () =
let date =
Lwt_main.run
(Lwt_process.pread_line (Lwt_process.shell "TZ='AAA+1' date +%FT%TZ")) in
let suffix = String.sub Digest.(to_hex (string date)) 0 5 in
match Base58.raw_decode (prefix ^ suffix ^ "crcCRC") with
| None -> genesis ()
| Some p ->
let p = String.sub p 0 (String.length p - 4) in
Base58.safe_encode p, date
let genesis, date = genesis ()
let () =
Lwt_main.run @@
let stream = Lwt_io.lines_of_file "alphanet_version" in
Lwt_stream.to_list stream >>= function
| [] | _ :: _ :: _ -> failwith "bad alphanet_version file"
| [ line ] -> match String.split_on_char 'Z' line with
| [ _ ; branch ] ->
let contents = if String.trim branch = "" then date else date ^ branch in
Lwt_io.lines_to_file "alphanet_version" (Lwt_stream.of_list [ contents ])
| _ -> failwith "bad alphanet_version file"
let sed =
Format.sprintf
"sed -i.old \
-e 's/Time.of_notation_exn \"[^\\\"]*\"/Time.of_notation_exn \"%s\"/' \
-e 's/BLockGenesisGenesisGenesisGenesisGenesis.........../%s/' \
../src/bin_node/node_run_command.ml"
date
genesis
let () =
Lwt_main.run (Lwt_process.exec (Lwt_process.shell sed) >>= fun _ ->
Lwt_unix.unlink "../src/bin_node/node_run_command.ml.old")
let sed =
Format.sprintf
"sed -E -i.old \
-e 's/name = \"(TEZOS[_A-Z]+)[^\"]*\" ;/name = \"\\1%s\" ;/' \
../src/lib_shell/distributed_db_message.ml"
date
let () =
Lwt_main.run (Lwt_process.exec (Lwt_process.shell sed) >>= fun _ ->
Lwt_unix.unlink "../src/lib_shell/distributed_db_message.ml.old")