generator: List files generated in a separate file.

This commit is contained in:
Richard W.M. Jones
2010-12-12 23:18:26 +00:00
parent 9aacbe712d
commit dec770f171
5 changed files with 27 additions and 5 deletions

1
.gitignore vendored
View File

@@ -83,6 +83,7 @@ fuse/guestmount
fuse/guestmount.1
fuse/stamp-guestmount.pod
generator/.pod2text.data*
generator/files-generated.txt
generator/generator
generator/stamp-generator
guestfish.1

View File

@@ -52,7 +52,7 @@ SOURCES = \
SOURCES_ML = $(filter %.ml,$(SOURCES))
OBJECTS = $(SOURCES_ML:.ml=.cmo)
EXTRA_DIST = $(SOURCES)
EXTRA_DIST = $(SOURCES) files-generated.txt
OCAMLCFLAGS = -warn-error CDEFLMPSUVYZX
OCAMLCLIBS = unix.cma str.cma

View File

@@ -132,11 +132,15 @@ Run it from the top source directory using the command
output_to "php/extension/php_guestfs_php.h" generate_php_h;
output_to "php/extension/guestfs_php.c" generate_php_c;
(* Generate the list of files generated -- last. *)
printf "generated %d lines of code\n" (get_lines_generated ());
let files = List.sort compare (get_files_generated ()) in
output_to "generator/files-generated.txt"
(fun () -> List.iter (pr "%s\n") files);
(* Always generate this file last, and unconditionally. It's used
* by the Makefile to know when we must re-run the generator.
*)
let chan = open_out "generator/stamp-generator" in
fprintf chan "1\n";
close_out chan;
printf "generated %d lines of code\n" (get_lines_generated ())
close_out chan

View File

@@ -23,9 +23,18 @@ open Printf
open Generator_utils
(* 'pr' prints to the current output file. *)
(* Output channel, 'pr' prints to this. *)
let chan = ref Pervasives.stdout
(* Number of lines generated. *)
let lines = ref 0
(* Name of each file generated. *)
let files = ref []
(* Print-to-current-output function, used everywhere. It has
* printf-like semantics.
*)
let pr fs =
ksprintf
(fun str ->
@@ -35,6 +44,8 @@ let pr fs =
) fs
let output_to filename k =
files := filename :: !files;
let filename_new = filename ^ ".new" in
chan := open_out filename_new;
k ();
@@ -54,3 +65,6 @@ let output_to filename k =
let get_lines_generated () =
!lines
let get_files_generated () =
List.rev !files

View File

@@ -30,3 +30,6 @@ val output_to : string -> (unit -> unit) -> unit
val get_lines_generated : unit -> int
(** Return number of lines of code generated. *)
val get_files_generated : unit -> string list
(** Return names of the files that were generated. *)