From 1d4dc0ef2b798676737bb329b9d642d5b8a299cd Mon Sep 17 00:00:00 2001 From: Vincent Balat Date: Thu, 9 May 2024 19:22:09 +0200 Subject: [PATCH] Static linking: Allow accessing sitedata outside module loading phase but during initialisation --- src/lib/eliom_common.server.ml | 9 +-------- src/lib/eliom_common.server.mli | 3 --- src/lib/eliom_registration.server.ml | 2 -- src/lib/eliom_registration.server.mli | 2 -- src/lib/eliom_syntax.server.ml | 3 ++- src/lib/server/eliommod.ml | 12 +++--------- 6 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/lib/eliom_common.server.ml b/src/lib/eliom_common.server.ml index 0023fc339..11ddc0be8 100644 --- a/src/lib/eliom_common.server.ml +++ b/src/lib/eliom_common.server.ml @@ -687,15 +687,8 @@ let verify_all_registered sitedata = | l1, l2 -> raise (Eliom_there_are_unregistered_services (sitedata.site_dir, l1, l2)) -let during_eliom_module_loading, begin_load_eliom_module, end_load_eliom_module = - let during_eliom_module_loading_ = ref false in - ( (fun () -> !during_eliom_module_loading_) - , (fun () -> during_eliom_module_loading_ := true) - , fun () -> during_eliom_module_loading_ := false ) - let global_register_allowed () = if Ocsigen_extensions.during_initialisation () - && during_eliom_module_loading () then Some get_current_sitedata else None @@ -703,7 +696,7 @@ let get_site_data () = match get_sp_option () with | Some sp -> sp.sp_sitedata | None -> - if during_eliom_module_loading () + if Ocsigen_extensions.during_initialisation () then get_current_sitedata () else failwith "get_site_data" diff --git a/src/lib/eliom_common.server.mli b/src/lib/eliom_common.server.mli index 80ea2cafa..56f01799b 100644 --- a/src/lib/eliom_common.server.mli +++ b/src/lib/eliom_common.server.mli @@ -640,9 +640,6 @@ val add_unregistered_na : sitedata -> na_key_serv -> unit val remove_unregistered : sitedata -> Url.path -> unit val remove_unregistered_na : sitedata -> na_key_serv -> unit val verify_all_registered : sitedata -> unit -val during_eliom_module_loading : unit -> bool -val begin_load_eliom_module : unit -> unit -val end_load_eliom_module : unit -> unit val global_register_allowed : unit -> (unit -> sitedata) option val get_site_data : unit -> sitedata diff --git a/src/lib/eliom_registration.server.ml b/src/lib/eliom_registration.server.ml index 987ddd9c8..b0847e0b7 100644 --- a/src/lib/eliom_registration.server.ml +++ b/src/lib/eliom_registration.server.ml @@ -1345,5 +1345,3 @@ let instruction ?xhr_links ?data_timeout ?service_timeout ?persistent_timeout (`Site (Ocsigen_server.Site.repr site)) "" []; Eliommod_pagegen.gen None sitedata - -let end_init = Eliom_common.end_load_eliom_module diff --git a/src/lib/eliom_registration.server.mli b/src/lib/eliom_registration.server.mli index 7ca348394..bd7a337cf 100644 --- a/src/lib/eliom_registration.server.mli +++ b/src/lib/eliom_registration.server.mli @@ -519,5 +519,3 @@ val instruction : -> ?eliommodule_names:string list -> unit -> Ocsigen_server.Site.instruction - -val end_init : unit -> unit diff --git a/src/lib/eliom_syntax.server.ml b/src/lib/eliom_syntax.server.ml index 7b840f6d4..d5ec23ad4 100644 --- a/src/lib/eliom_syntax.server.ml +++ b/src/lib/eliom_syntax.server.ml @@ -37,7 +37,8 @@ let get_global_data, modify_global_data = in let is_site_available () = (* Matches valid states for Eliom_common.get_site_data *) - Eliom_common.(get_sp_option () <> None || during_eliom_module_loading ()) + Eliom_common.( + get_sp_option () <> None || Ocsigen_extensions.during_initialisation ()) in let get () = if is_site_available () diff --git a/src/lib/server/eliommod.ml b/src/lib/server/eliommod.ml index 43fe25354..2c9ac2e78 100644 --- a/src/lib/server/eliommod.ml +++ b/src/lib/server/eliommod.ml @@ -725,24 +725,18 @@ let config_in_tag = ref "" (* the parent tag of the currently handled tag *) let site_init firstmodule = if !firstmodule then ( - Eliom_common.begin_load_eliom_module (); (* I want to be able to define global client values during that phase: *) Eliom_syntax.set_global true; List.iter (fun f -> f ()) !site_init_ref; Eliom_syntax.set_global false; - firstmodule := false; - Eliom_common.end_load_eliom_module ()) + firstmodule := false) let load_eliom_module _sitedata cmo_or_name parent_tag content = let preload () = config := content; - config_in_tag := parent_tag; - Eliom_common.begin_load_eliom_module () - in - let postload () = - Eliom_common.end_load_eliom_module (); - config := [] + config_in_tag := parent_tag in + let postload () = config := [] in try match cmo_or_name with | `Files cmo -> Ocsigen_loader.loadfiles preload postload true cmo