diff --git a/.gitignore b/.gitignore index 352b3fe16..958457cad 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /tezos-webclient /tezos-attacker +/src/.ocamlinit.utils +/src/.ocamlinit.node /src/Makefile.local /src/webclient_static.ml diff --git a/src/Makefile b/src/Makefile index 7446a4d04..63da34e20 100644 --- a/src/Makefile +++ b/src/Makefile @@ -65,6 +65,8 @@ node/updater/proto_environment.cmi: \ @echo OCAMLOPT ${TARGET} $@ @$(OCAMLOPT) -nopervasives -nostdlib -opaque -I tmp -I node/updater -c $< +node/updater/protocol.cmi: node/updater/protocol.cmx + partial-clean:: rm -f node/updater/proto_environment.mli rm -f node/updater/environment_gen @@ -190,6 +192,7 @@ UTILS_PACKAGES := \ calendar \ ezjsonm \ ipaddr.unix \ + lwt.unix \ mtime.os \ nocrypto \ sodium \ @@ -208,6 +211,12 @@ utils.cmxa: ${UTILS_LIB_IMPLS:.ml=.cmx} @echo LINK $(notdir $@) @${OCAMLOPT} ${OCAMLFLAGS} -a -o $@ $^ +utils.top: DEVFLAGS= +utils.top: + ( $(patsubst %, echo "#require \"%\";;" ; ,${UTILS_PACKAGES}) ) > .ocamlinit.utils + ( $(patsubst %, echo "#mod_use \"%\";;" ; ,${MINUTILS_LIB_IMPLS} ${UTILS_LIB_IMPLS}) ) >> .ocamlinit.utils + utop -init .ocamlinit.utils ${OCAMLFLAGS} + ############################################################################ ## Node protocol compiler (also embedded in the main program) ############################################################################ @@ -280,7 +289,6 @@ NODE_LIB_INTFS := \ node/db/store.mli \ node/db/db_proxy.mli \ \ - node/updater/protocol.mli \ node/updater/updater.mli \ node/updater/proto_environment.mli \ node/updater/register.mli \ @@ -319,6 +327,7 @@ NODE_LIB_IMPLS := \ node/db/context.ml \ node/db/db_proxy.ml \ \ + node/updater/protocol.ml \ node/updater/updater.ml \ node/updater/environment.ml \ node/updater/proto_environment.ml \ @@ -390,6 +399,14 @@ ${TZNODE}: minutils.cmxa utils.cmxa compiler.cmxa node.cmxa ${EMBEDDED_NODE_PROT partial-clean:: -rm -f proto/*.cm* proto/*.a +node.top: DEVFLAGS= +node.top: ${MINUTILS_LIB_IMPLS} ${UTILS_LIB_IMPLS} ${COMPILER_LIB_IMPLS} ${NODE_LIB_IMPLS} + ( $(patsubst %, echo "#require \"%\";;" ; ,${NODE_PACKAGES}) ) > .ocamlinit.node + ( $(patsubst %, echo "#mod_use \"%\";;" ; ,${MINUTILS_LIB_IMPLS} ${UTILS_LIB_IMPLS}) ) >> .ocamlinit.node + ( $(patsubst %, echo "open %;;" ; ,Error_monad Hash Utils) ) >> .ocamlinit.node + ( $(patsubst %, echo "#mod_use \"%\";;" ; ,${COMPILER_LIB_IMPLS} ${NODE_LIB_IMPLS}) ) >> .ocamlinit.node + utop -init .ocamlinit.node ${OCAMLFLAGS} + ## Embedded protocol modules .SECONDEXPANSION: diff --git a/src/node/updater/protocol.mli b/src/node/updater/protocol.ml similarity index 100% rename from src/node/updater/protocol.mli rename to src/node/updater/protocol.ml diff --git a/src/utils/logging.ml b/src/utils/logging.ml index 0eb2088b9..fd4674057 100644 --- a/src/utils/logging.ml +++ b/src/utils/logging.ml @@ -95,6 +95,7 @@ type template = Lwt_log.template let default_template = "$(date) - $(section): $(message)" module Output = struct + type t = | Null | Stdout @@ -102,69 +103,70 @@ module Output = struct | File of string | Syslog of Lwt_log.syslog_facility + let to_string : t -> string = function + | Null -> "/dev/null" + | Stdout -> "stdout" + | Stderr -> "stderr" + | File fp -> fp + | Syslog `Auth -> "syslog:auth" + | Syslog `Authpriv -> "syslog:authpriv" + | Syslog `Cron -> "syslog:cron" + | Syslog `Daemon -> "syslog:daemon" + | Syslog `FTP -> "syslog:ftp" + | Syslog `Kernel -> "syslog:kernel" + | Syslog `Local0 -> "syslog:local0" + | Syslog `Local1 -> "syslog:local1" + | Syslog `Local2 -> "syslog:local2" + | Syslog `Local3 -> "syslog:local3" + | Syslog `Local4 -> "syslog:local4" + | Syslog `Local5 -> "syslog:local5" + | Syslog `Local6 -> "syslog:local6" + | Syslog `Local7 -> "syslog:local7" + | Syslog `LPR -> "syslog:lpr" + | Syslog `Mail -> "syslog:mail" + | Syslog `News -> "syslog:news" + | Syslog `Syslog -> "syslog:syslog" + | Syslog `User -> "syslog:user" + | Syslog `UUCP -> "syslog:uucp" + | Syslog `NTP -> "syslog:ntp" + | Syslog `Security -> "syslog:security" + | Syslog `Console -> "syslog:console" + + let of_string : string -> t = function + | "/dev/null" | "null" -> Null + | "stdout" -> Stdout + | "stderr" -> Stderr + | "syslog:auth" -> Syslog `Auth + | "syslog:authpriv" -> Syslog `Authpriv + | "syslog:cron" -> Syslog `Cron + | "syslog:daemon" -> Syslog `Daemon + | "syslog:ftp" -> Syslog `FTP + | "syslog:kernel" -> Syslog `Kernel + | "syslog:local0" -> Syslog `Local0 + | "syslog:local1" -> Syslog `Local1 + | "syslog:local2" -> Syslog `Local2 + | "syslog:local3" -> Syslog `Local3 + | "syslog:local4" -> Syslog `Local4 + | "syslog:local5" -> Syslog `Local5 + | "syslog:local6" -> Syslog `Local6 + | "syslog:local7" -> Syslog `Local7 + | "syslog:lpr" -> Syslog `LPR + | "syslog:mail" -> Syslog `Mail + | "syslog:news" -> Syslog `News + | "syslog:syslog" -> Syslog `Syslog + | "syslog:user" -> Syslog `User + | "syslog:uucp" -> Syslog `UUCP + | "syslog:ntp" -> Syslog `NTP + | "syslog:security" -> Syslog `Security + | "syslog:console" -> Syslog `Console + (* | s when start_with "syslog:" FIXME error or warning. *) + | fp -> + (* TODO check absolute path *) + File fp + let encoding = let open Data_encoding in - conv - (function - | Null -> "/dev/null" - | Stdout -> "stdout" - | Stderr -> "stderr" - | File fp -> fp - | Syslog `Auth -> "syslog:auth" - | Syslog `Authpriv -> "syslog:authpriv" - | Syslog `Cron -> "syslog:cron" - | Syslog `Daemon -> "syslog:daemon" - | Syslog `FTP -> "syslog:ftp" - | Syslog `Kernel -> "syslog:kernel" - | Syslog `Local0 -> "syslog:local0" - | Syslog `Local1 -> "syslog:local1" - | Syslog `Local2 -> "syslog:local2" - | Syslog `Local3 -> "syslog:local3" - | Syslog `Local4 -> "syslog:local4" - | Syslog `Local5 -> "syslog:local5" - | Syslog `Local6 -> "syslog:local6" - | Syslog `Local7 -> "syslog:local7" - | Syslog `LPR -> "syslog:lpr" - | Syslog `Mail -> "syslog:mail" - | Syslog `News -> "syslog:news" - | Syslog `Syslog -> "syslog:syslog" - | Syslog `User -> "syslog:user" - | Syslog `UUCP -> "syslog:uucp" - | Syslog `NTP -> "syslog:ntp" - | Syslog `Security -> "syslog:security" - | Syslog `Console -> "syslog:console") - (function - | "/dev/null" | "null" -> Null - | "stdout" -> Stdout - | "stderr" -> Stderr - | "syslog:auth" -> Syslog `Auth - | "syslog:authpriv" -> Syslog `Authpriv - | "syslog:cron" -> Syslog `Cron - | "syslog:daemon" -> Syslog `Daemon - | "syslog:ftp" -> Syslog `FTP - | "syslog:kernel" -> Syslog `Kernel - | "syslog:local0" -> Syslog `Local0 - | "syslog:local1" -> Syslog `Local1 - | "syslog:local2" -> Syslog `Local2 - | "syslog:local3" -> Syslog `Local3 - | "syslog:local4" -> Syslog `Local4 - | "syslog:local5" -> Syslog `Local5 - | "syslog:local6" -> Syslog `Local6 - | "syslog:local7" -> Syslog `Local7 - | "syslog:lpr" -> Syslog `LPR - | "syslog:mail" -> Syslog `Mail - | "syslog:news" -> Syslog `News - | "syslog:syslog" -> Syslog `Syslog - | "syslog:user" -> Syslog `User - | "syslog:uucp" -> Syslog `UUCP - | "syslog:ntp" -> Syslog `NTP - | "syslog:security" -> Syslog `Security - | "syslog:console" -> Syslog `Console - (* | s when start_with "syslog:" FIXME error or warning. *) - | fp -> - (* TODO check absolute path *) - File fp) - string + conv to_string of_string string let of_string str = try