appliance: Use a temporary file when processing packagelist.in.
[libguestfs.git] / generator / generator_main.ml
index 1aa15d0..4ef9ba5 100644 (file)
@@ -23,6 +23,7 @@ open Printf
 
 open Generator_pr
 open Generator_structs
+open Generator_api_versions
 
 open Generator_c
 open Generator_xdr
@@ -72,15 +73,18 @@ Run it from the top source directory using the command
      perror "lock: HACKING" exn;
      exit 1);
 
+  (* Read the API versions file. *)
+  load_api_versions "src/api-support/added";
+
   output_to "src/guestfs_protocol.x" generate_xdr;
-  output_to "src/guestfs-structs.h" generate_structs_h;
-  output_to "src/guestfs-actions.h" generate_actions_h;
+  output_to "src/guestfs.h" generate_guestfs_h;
   output_to "src/guestfs-internal-actions.h" generate_internal_actions_h;
   output_to "src/actions.c" generate_client_actions;
   output_to "src/bindtests.c" generate_bindtests;
   output_to "src/guestfs-structs.pod" generate_structs_pod;
   output_to "src/guestfs-actions.pod" generate_actions_pod;
   output_to "src/guestfs-availability.pod" generate_availability_pod;
+  output_to "src/errnostring_gperf.gperf" generate_errnostring_gperf;
   output_to "src/errnostring.c" generate_errnostring_c;
   output_to "src/errnostring.h" generate_errnostring_h;
   output_to "src/MAX_PROC_NR" generate_max_proc_nr;
@@ -91,6 +95,7 @@ Run it from the top source directory using the command
   output_to "daemon/optgroups.c" generate_daemon_optgroups_c;
   output_to "daemon/optgroups.h" generate_daemon_optgroups_h;
   output_to "capitests/tests.c" generate_tests;
+  output_to "fish/cmds_gperf.gperf" generate_fish_cmds_gperf;
   output_to "fish/cmds.c" generate_fish_cmds;
   output_to "fish/completion.c" generate_fish_completion;
   output_to "fish/guestfish-commands.pod" generate_fish_commands_pod;
@@ -127,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