From: Richard Jones Date: Sat, 11 Sep 2010 11:05:03 +0000 (+0100) Subject: generator: Don't use real uuidgen for UUIDs. X-Git-Tag: 1.4.6~16 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=cb65496a89078156e9f6fd36db897e980b82ba0d;p=libguestfs.git generator: Don't use real uuidgen for UUIDs. This was one reason why capitests/tests.c changed every time the generator was run. Cherry picked from commit 451a28349b11fe08cb3f7ca84e58b6e69646707b. --- diff --git a/src/generator.ml b/src/generator.ml index 14e06af..f2cec28 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -361,18 +361,23 @@ and cmd = string list * Apart from that, long descriptions are just perldoc paragraphs. *) -(* Generate a random UUID (used in tests). *) +(* Generate a uuidgen-compatible UUID (used in tests). However to + * avoid having the UUID change every time we rebuild the tests, + * generate it as a function of the contents of the + * generator.ml file. + * + * Originally I thought uuidgen was using RFC 4122, but it doesn't + * appear to. + * + * Note that the format must be 01234567-0123-0123-0123-0123456789ab + *) let uuidgen () = - let chan = open_process_in "uuidgen" in - let uuid = input_line chan in - (match close_process_in chan with - | WEXITED 0 -> () - | WEXITED _ -> - failwith "uuidgen: process exited with non-zero status" - | WSIGNALED _ | WSTOPPED _ -> - failwith "uuidgen: process signalled or stopped by signal" - ); - uuid + let s = Digest.to_hex (Digest.file "src/generator.ml") in + String.sub s 0 8 ^ "-" + ^ String.sub s 8 4 ^ "-" + ^ String.sub s 12 4 ^ "-" + ^ String.sub s 16 4 ^ "-" + ^ String.sub s 20 12 (* These test functions are used in the language binding tests. *)