On Monday 24 February 2014 15:15:11 Richard W.M. Jones wrote:
On Mon, Feb 24, 2014 at 11:36:29AM +0100, Pino Toscano wrote:
> Introduce a mandatory arch= key in all the entries of index files,
> to
> identify which architecture is each. Adapt the long and JSON list
> outputs to print also this new field.
>
> This introduces an incompatibility with index files created with
> virt-builder < 1.26, as they will be rejected until entries will
> have
> the arch= key added (which is ignored by older virt-builder, so
> adding it will not create backward-compatibility issues).
> ---
>
> builder/index_parser.ml | 9 +++++++++
> builder/index_parser.mli | 1 +
> builder/list_entries.ml | 4 ++++
> builder/test-index.in | 7 +++++++
> builder/test-virt-builder-list.sh | 14 ++++++++++++++
> 5 files changed, 35 insertions(+)
>
> diff --git a/builder/index_parser.ml b/builder/index_parser.ml
> index 2d4a642..de4d72e 100644
> --- a/builder/index_parser.ml
> +++ b/builder/index_parser.ml
> @@ -27,6 +27,7 @@ and entry = {
>
> printable_name : string option; (* the name= field *)
> osinfo : string option;
> file_uri : string;
>
> + arch : string;
>
> signature_uri : string option; (* deprecated, will be
> removed in 1.26 *) checksum_sha512 : string option;
> revision : int;
>
> @@ -43,6 +44,7 @@ and entry = {
>
> let print_entry chan (name, { printable_name = printable_name;
>
> file_uri = file_uri;
>
> + arch = arch;
>
> osinfo = osinfo;
> signature_uri = signature_uri;
> checksum_sha512 = checksum_sha512;
>
> @@ -65,6 +67,7 @@ let print_entry chan (name, { printable_name =
> printable_name;>
> | Some id -> fp "osinfo=%s\n" id
>
> );
> fp "file=%s\n" file_uri;
>
> + fp "arch=%s\n" arch;
>
> (match signature_uri with
>
> | None -> ()
> | Some uri -> fp "sig=%s\n" uri
>
> @@ -179,6 +182,11 @@ let get_index ~prog ~debug ~downloader
> ~sigchecker source =>
> with Not_found ->
>
> eprintf (f_"virt-builder: no 'file' (URI) entry for
> '%s'\n") n;
>
> corrupt_file () in
>
> + let arch =
> + try List.assoc ("arch", None) fields
> + with Not_found ->
> + eprintf (f_"virt-builder: no 'arch' entry for
> '%s'\n") n; + corrupt_file () in
>
> let signature_uri =
>
> try Some (make_absolute_uri (List.assoc ("sig", None)
> fields))
> with Not_found -> None in
>
> @@ -245,6 +253,7 @@ let get_index ~prog ~debug ~downloader
> ~sigchecker source =>
> let entry = { printable_name = printable_name;
>
> osinfo = osinfo;
> file_uri = file_uri;
>
> + arch = arch;
>
> signature_uri = signature_uri;
> checksum_sha512 = checksum_sha512;
> revision = revision;
>
> diff --git a/builder/index_parser.mli b/builder/index_parser.mli
> index 3c679b3..0575dc4 100644
> --- a/builder/index_parser.mli
> +++ b/builder/index_parser.mli
> @@ -21,6 +21,7 @@ and entry = {
>
> printable_name : string option; (* the name= field *)
> osinfo : string option;
> file_uri : string;
>
> + arch : string;
>
> signature_uri : string option; (* deprecated, will be
> removed in 1.26 *) checksum_sha512 : string option;
> revision : int;
>
> diff --git a/builder/list_entries.ml b/builder/list_entries.ml
> index 27ea95e..edf7dfb 100644
> --- a/builder/list_entries.ml
> +++ b/builder/list_entries.ml
> @@ -73,6 +73,7 @@ and list_entries_long ~sources index =
>
> List.iter (
>
> fun (name, { Index_parser.printable_name = printable_name;
>
> + arch = arch;
>
> size = size;
> compressed_size = compressed_size;
> notes = notes;
>
> @@ -83,6 +84,7 @@ and list_entries_long ~sources index =
>
> | None -> ()
> | Some name -> printf "%-24s %s\n" (s_"Full name:")
name;
>
> );
>
> + printf "%-24s %s\n" (s_"Architecture:") arch;
>
> printf "%-24s %s\n" (s_"Minimum/default size:")
(human_size
> size);
> (match compressed_size with
>
> | None -> ()
>
> @@ -168,6 +170,7 @@ and list_entries_json ~sources index =
>
> printf " \"templates\": [\n";
> iteri (
>
> fun i (name, { Index_parser.printable_name = printable_name;
>
> + arch = arch;
>
> size = size;
> compressed_size = compressed_size;
> notes = notes;
>
> @@ -175,6 +178,7 @@ and list_entries_json ~sources index =
>
> printf " {\n";
> printf " \"os-version\": \"%s\",\n" name;
> json_optional_printf_string "full-name" printable_name;
>
> + printf " \"arch\": \"%s\",\n" arch;
>
> printf " \"size\": %Ld,\n" size;
> json_optional_printf_int64 "compressed-size" compressed_size;
> print_notes notes;
>
> diff --git a/builder/test-index.in b/builder/test-index.in
> index 1bca6b8..3efebc4 100644
> --- a/builder/test-index.in
> +++ b/builder/test-index.in
> @@ -1,5 +1,6 @@
>
> [phony-debian]
> name=Phony Debian
>
> +arch=x86_64
>
> file=debian.xz
> format=raw
> size=536870912
>
> @@ -9,6 +10,7 @@ notes=Phony Debian look-alike used for testing.
>
> [phony-fedora]
> name=Phony Fedora
>
> +arch=x86_64
>
> file=fedora.xz
> format=raw
> size=1073741824
>
> @@ -18,6 +20,7 @@ notes=Phony Fedora look-alike used for testing.
>
> [phony-fedora-qcow2]
> name=Phony Fedora qcow2
>
> +arch=x86_64
>
> file=fedora.qcow2.xz
> format=qcow2
> size=1073741824
>
> @@ -27,6 +30,7 @@ notes=Phony Fedora look-alike used for testing.
>
> [phony-fedora-qcow2-uncompressed]
> name=Phony Fedora qcow2 uncompressed
>
> +arch=x86_64
>
> file=fedora.qcow2
> format=qcow2
> size=1073741824
>
> @@ -36,6 +40,7 @@ notes=Phony Fedora look-alike used for testing.
>
> [phony-fedora-no-format]
> name=Phony Fedora
>
> +arch=x86_64
>
> file=fedora.qcow2.xz
> size=1073741824
> expand=/dev/sda2
>
> @@ -44,6 +49,7 @@ notes=Phony Fedora look-alike used for testing.
>
> [phony-ubuntu]
> name=Phony Ubuntu
>
> +arch=x86_64
>
> file=ubuntu.xz
> format=raw
> size=536870912
>
> @@ -52,6 +58,7 @@ notes=Phony Ubuntu look-alike used for testing.
>
> [phony-windows]
> name=Phony Windows
>
> +arch=x86_64
>
> file=windows.xz
> format=raw
> size=536870912
>
> diff --git a/builder/test-virt-builder-list.sh
> b/builder/test-virt-builder-list.sh index 634254d..7174152 100755
> --- a/builder/test-virt-builder-list.sh
> +++ b/builder/test-virt-builder-list.sh
> @@ -46,6 +46,7 @@ Fingerprint: F777 4FB1 AD07 4A7E 8C87 67EA 9173
> 8F73 E1B7 68A0>
> os-version: phony-debian
> Full name: Phony Debian
>
> +Architecture: x86_64
>
> Minimum/default size: 512.0M
>
> Notes:
> @@ -54,6 +55,7 @@ Phony Debian look-alike used for testing.
>
> os-version: phony-fedora
> Full name: Phony Fedora
>
> +Architecture: x86_64
>
> Minimum/default size: 1.0G
>
> Notes:
> @@ -62,6 +64,7 @@ Phony Fedora look-alike used for testing.
>
> os-version: phony-fedora-qcow2
> Full name: Phony Fedora qcow2
>
> +Architecture: x86_64
>
> Minimum/default size: 1.0G
>
> Notes:
> @@ -70,6 +73,7 @@ Phony Fedora look-alike used for testing.
>
> os-version: phony-fedora-qcow2-uncompressed
> Full name: Phony Fedora qcow2 uncompressed
>
> +Architecture: x86_64
>
> Minimum/default size: 1.0G
>
> Notes:
> @@ -78,6 +82,7 @@ Phony Fedora look-alike used for testing.
>
> os-version: phony-fedora-no-format
> Full name: Phony Fedora
>
> +Architecture: x86_64
>
> Minimum/default size: 1.0G
>
> Notes:
> @@ -86,6 +91,7 @@ Phony Fedora look-alike used for testing.
>
> os-version: phony-ubuntu
> Full name: Phony Ubuntu
>
> +Architecture: x86_64
>
> Minimum/default size: 512.0M
>
> Notes:
> @@ -94,6 +100,7 @@ Phony Ubuntu look-alike used for testing.
>
> os-version: phony-windows
> Full name: Phony Windows
>
> +Architecture: x86_64
>
> Minimum/default size: 512.0M
>
> Notes:
> @@ -118,6 +125,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-debian\",
> \"full-name\": \"Phony Debian\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 536870912,
> \"notes\": {
>
> \"C\": \"Phony Debian look-alike used for testing.\"
>
> @@ -127,6 +135,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-fedora\",
> \"full-name\": \"Phony Fedora\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 1073741824,
> \"notes\": {
>
> \"C\": \"Phony Fedora look-alike used for testing.\"
>
> @@ -136,6 +145,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-fedora-qcow2\",
> \"full-name\": \"Phony Fedora qcow2\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 1073741824,
> \"notes\": {
>
> \"C\": \"Phony Fedora look-alike used for testing.\"
>
> @@ -145,6 +155,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-fedora-qcow2-uncompressed\",
> \"full-name\": \"Phony Fedora qcow2 uncompressed\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 1073741824,
> \"notes\": {
>
> \"C\": \"Phony Fedora look-alike used for testing.\"
>
> @@ -154,6 +165,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-fedora-no-format\",
> \"full-name\": \"Phony Fedora\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 1073741824,
> \"notes\": {
>
> \"C\": \"Phony Fedora look-alike used for testing.\"
>
> @@ -163,6 +175,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-ubuntu\",
> \"full-name\": \"Phony Ubuntu\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 536870912,
> \"notes\": {
>
> \"C\": \"Phony Ubuntu look-alike used for testing.\"
>
> @@ -172,6 +185,7 @@ if [ "$json_list" != "{
>
> {
>
> \"os-version\": \"phony-windows\",
> \"full-name\": \"Phony Windows\",
>
> + \"arch\": \"x86_64\",
>
> \"size\": 536870912,
> \"notes\": {
>
> \"C\": \"Phony Windows look-alike used for testing.\"
ACK.
Thanks, pushed.
I'll sign the index once you've committed this.
Remember to update it, before signing it again. ;)
--
Pino Toscano