[Libguestfs] [PATCH] builder: add a mandatory 'arch' key in index files
Pino Toscano
ptoscano at redhat.com
Mon Feb 24 15:21:01 UTC 2014
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
More information about the Libguestfs
mailing list