Enable callers of "add_firstboot_script" to pass an (optional) priority parameter. With this, groups of scripts can be formed with well-defined (lexicographical) ordering between the groups. Within a group, the usual order of registration persists.
Suggested-by: Richard W.M. Jones <[email protected]> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1788823 Signed-off-by: Laszlo Ersek <[email protected]> --- mlcustomize/firstboot.mli | 16 ++++++++++++---- mlcustomize/firstboot.ml | 9 +++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/mlcustomize/firstboot.mli b/mlcustomize/firstboot.mli index fb30886184cc..e6a0d1f70102 100644 --- a/mlcustomize/firstboot.mli +++ b/mlcustomize/firstboot.mli @@ -16,16 +16,24 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -val add_firstboot_script : Guestfs.guestfs -> string -> string -> string -> unit - (** [add_firstboot_script g root name content] adds a firstboot - script called [name] containing [content]. +val default_prio : int + +val add_firstboot_script : Guestfs.guestfs -> string -> ?prio:int -> string -> + string -> unit + (** [add_firstboot_script g root prio name content] adds a firstboot + script called [name] containing [content] with priority [prio]. [content] is the contents of the script, {b not} a filename. The actual name of the script on the guest filesystem is made of [name] with all characters but alphanumeric replaced with dashes. - The scripts are run in the order they are registered. + Within a given priority, the scripts are run in the order they are + registered. A group of scripts with a numerically lower priority is run + before a group with a numerically greater priority. If [prio] is omitted, + it is taken as [default_prio], that is, 5000. If [prio] is smaller than 0 + or greater than 9999, an Assert_failure is raised (the [prio] parameter + is not expected to depend on external data). For Linux guests using SELinux you should make sure the filesystem is relabelled after calling this. *) diff --git a/mlcustomize/firstboot.ml b/mlcustomize/firstboot.ml index c3ebfd910d0b..18dc04efa2e6 100644 --- a/mlcustomize/firstboot.ml +++ b/mlcustomize/firstboot.ml @@ -345,12 +345,17 @@ end let script_count = ref 0 -let add_firstboot_script (g : Guestfs.guestfs) root name content = +let default_prio = 5000 + +let add_firstboot_script (g : Guestfs.guestfs) root ?(prio = default_prio) name + content = + assert (prio >= 0 && prio <= 9999); let typ = g#inspect_get_type root in let distro = g#inspect_get_distro root in let major = g#inspect_get_major_version root in incr script_count; - let filename = sprintf "%04d-%s" !script_count (sanitize_name name) in + let filename = sprintf "%04d-%04d-%s" prio !script_count + (sanitize_name name) in match typ, distro with | "linux", _ -> Linux.install_service g root distro major; base-commit: 60efc5407552c12688a5e99b7a54d23d5990aa8f -- 2.19.1.3.g30247aa5d201 _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
