[PATCH v2 0/2] Added download_blocks API
by Matteo Cafasso
v2:
- Rebase on top of master
Matteo Cafasso (2):
New API: download_blocks
Added download_blocks API test
daemon/sleuthkit.c | 41 ++++++++++++++++++++++++++-
generator/actions.ml | 24 ++++++++++++++++
gobject/Makefile.inc | 2 ++
src/MAX_PROC_NR | 2 +-
tests/tsk/Makefile.am | 1 +
tests/tsk/test-download-blocks.sh | 58 +++++++++++++++++++++++++++++++++++++++
6 files changed, 126 insertions(+), 2 deletions(-)
create mode 100755 tests/tsk/test-download-blocks.sh
--
2.8.1
8 years, 4 months
[PATCH] podcheck: Check tool --help output.
by Richard W.M. Jones
For OCaml tools this does essentially nothing useful because the
--help output is automatically generated from the options, and so
cannot be wrong. However for C tools this is a useful check.
It would be nice to generate C tools --help output, but there isn't
enough information in the getopt data to do that.
This commit also includes fixes to the --help output for a few tools.
---
align/scan.c | 1 +
df/main.c | 4 ++--
edit/edit.c | 26 +++++++++++++-------------
fish/fish.c | 1 +
make-fs/make-fs.c | 20 ++++++++++----------
p2v/main.c | 2 +-
podcheck.pl | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
7 files changed, 74 insertions(+), 27 deletions(-)
diff --git a/align/scan.c b/align/scan.c
index 5f1d98a..e7327ea 100644
--- a/align/scan.c
+++ b/align/scan.c
@@ -87,6 +87,7 @@ usage (int status)
" --help Display brief help\n"
" -P nr_threads Use at most nr_threads\n"
" -q|--quiet No output, just exit code\n"
+ " --uuid Print UUIDs instead of names\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
" -x Trace libguestfs API calls\n"
diff --git a/df/main.c b/df/main.c
index e04b14e..23cdaee 100644
--- a/df/main.c
+++ b/df/main.c
@@ -78,12 +78,12 @@ usage (int status)
" --csv Output as Comma-Separated Values\n"
" -d|--domain guest Add disks from libvirt guest\n"
" --format[=raw|..] Force disk format for -a option\n"
- " -h|--human-readable Human-readable sizes in --long output\n"
+ " -h|--human-readable Print sizes in human-readable format\n"
" --help Display brief help\n"
" -i|--inodes Display inodes\n"
" --one-per-guest Separate appliance per guest\n"
" -P nr_threads Use at most nr_threads\n"
- " --uuid Add UUIDs to --long output\n"
+ " --uuid Print UUIDs instead of names\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
" -x Trace libguestfs API calls\n"
diff --git a/edit/edit.c b/edit/edit.c
index 2d3ccc6..eb9dfbd 100644
--- a/edit/edit.c
+++ b/edit/edit.c
@@ -70,20 +70,20 @@ usage (int status)
" %s [--options] -d domname file [file ...]\n"
" %s [--options] -a disk.img [-a disk.img ...] file [file ...]\n"
"Options:\n"
- " -a|--add image Add image\n"
- " -b|--backup .ext Backup original as original.ext\n"
- " -c|--connect uri Specify libvirt URI for -d option\n"
- " -d|--domain guest Add disks from libvirt guest\n"
- " --echo-keys Don't turn off echo for passphrases\n"
- " -e|--expr expr Non-interactive editing using Perl expr\n"
- " --format[=raw|..] Force disk format for -a option\n"
- " --help Display brief help\n"
- " --keys-from-stdin Read passphrases from stdin\n"
+ " -a|--add image Add image\n"
+ " -b|--backup .ext Backup original as original.ext\n"
+ " -c|--connect uri Specify libvirt URI for -d option\n"
+ " -d|--domain guest Add disks from libvirt guest\n"
+ " --echo-keys Don't turn off echo for passphrases\n"
+ " -e|--edit|--expr expr Non-interactive editing using Perl expr\n"
+ " --format[=raw|..] Force disk format for -a option\n"
+ " --help Display brief help\n"
+ " --keys-from-stdin Read passphrases from stdin\n"
" -m|--mount dev[:mnt[:opts[:fstype]]]\n"
- " Mount dev on mnt (if omitted, /)\n"
- " -v|--verbose Verbose messages\n"
- " -V|--version Display version and exit\n"
- " -x Trace libguestfs API calls\n"
+ " Mount dev on mnt (if omitted, /)\n"
+ " -v|--verbose Verbose messages\n"
+ " -V|--version Display version and exit\n"
+ " -x Trace libguestfs API calls\n"
"For more information, see the manpage %s(1).\n"),
guestfs_int_program_name, guestfs_int_program_name,
guestfs_int_program_name, guestfs_int_program_name);
diff --git a/fish/fish.c b/fish/fish.c
index e639d3d..d2cf359 100644
--- a/fish/fish.c
+++ b/fish/fish.c
@@ -126,6 +126,7 @@ usage (int status)
" --echo-keys Don't turn off echo for passphrases\n"
" -f|--file file Read commands from file\n"
" --format[=raw|..] Force disk format for -a option\n"
+ " --help Display brief help\n"
" -i|--inspector Automatically mount filesystems\n"
" --keys-from-stdin Read passphrases from stdin\n"
" --listen Listen for remote commands\n"
diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c
index 42e7e82..8ece991 100644
--- a/make-fs/make-fs.c
+++ b/make-fs/make-fs.c
@@ -82,16 +82,16 @@ usage (int status)
" %s [--options] input.tar.gz output.img\n"
" %s [--options] directory output.img\n"
"Options:\n"
- " --floppy Make a virtual floppy disk\n"
- " --format=raw|qcow2|.. Set output format\n"
- " --help Display brief help\n"
- " --label=label Filesystem label\n"
- " --partition=mbr|gpt|.. Set partition type\n"
- " --size=size|+size Set size of output disk\n"
- " --type=ext4|.. Set filesystem type\n"
- " -v|--verbose Verbose messages\n"
- " -V|--version Display version and exit\n"
- " -x Trace libguestfs API calls\n"
+ " --floppy Make a virtual floppy disk\n"
+ " -F|--format=raw|qcow2|.. Set output format\n"
+ " --help Display brief help\n"
+ " --label=label Filesystem label\n"
+ " --partition=mbr|gpt|.. Set partition type\n"
+ " -s|--size=size|+size Set size of output disk\n"
+ " -t|--type=ext4|.. Set filesystem type\n"
+ " -v|--verbose Verbose messages\n"
+ " -V|--version Display version and exit\n"
+ " -x Trace libguestfs API calls\n"
"For more information, see the manpage %s(1).\n"),
guestfs_int_program_name, guestfs_int_program_name,
guestfs_int_program_name, guestfs_int_program_name,
diff --git a/p2v/main.c b/p2v/main.c
index 6d6f555..35f0b59 100644
--- a/p2v/main.c
+++ b/p2v/main.c
@@ -86,7 +86,7 @@ usage (int status)
"Options:\n"
" --help Display brief help\n"
" --cmdline=CMDLINE Used to debug command line parsing\n"
- " --colours Use ANSI colour sequences even if not tty\n"
+ " --colors|--colours Use ANSI colour sequences even if not tty\n"
" --iso Running in the ISO environment\n"
" --test-disk=DISK.IMG For testing, use disk as /dev/sda\n"
" -v|--verbose Verbose messages\n"
diff --git a/podcheck.pl b/podcheck.pl
index fca91fb..527a2e4 100755
--- a/podcheck.pl
+++ b/podcheck.pl
@@ -153,6 +153,17 @@ delete $tool_option_exists{"--color"};
delete $tool_option_exists{"--colour"};
delete $tool_option_exists{"--debug-gc"};
+# Run the tool with --help.
+my $help_content;
+open PIPE, "LANG=C $tool --help |"
+ or die "$progname: $tool --help: $!";
+{
+ local $/ = undef;
+ $help_content = <PIPE>;
+}
+close PIPE;
+
+# Do the tests.
my $errors = 0;
# Check each option exists in the manual.
@@ -184,9 +195,43 @@ foreach (sort keys %pod_options) {
}
}
+# Check the tool's --help output mentions all the options. (For OCaml
+# tools this is a waste of time since the --help output is generated,
+# but for C tools it is a genuine test).
+my $help_options_checked = 0;
+
+my %help_options = ();
+$help_options{$_} = 1 foreach ( $help_content =~ /(?<!\w)(-[-\w]+)/g );
+
+# There are some help options which we automatically ignore.
+delete $help_options{"--color"};
+delete $help_options{"--colour"};
+# "[--options]" is used as a placeholder for options in the synopsis
+# text, so ignore it.
+delete $help_options{"--options"};
+
+foreach (sort keys %tool_option_exists) {
+ unless ($ignore{$_}) {
+ unless (exists $help_options{$_}) {
+ $errors++;
+ warn "$progname: $tool: option $_ does not appear in --help output\n"
+ }
+ }
+}
+
+foreach (sort keys %help_options) {
+ unless ($ignore{$_}) {
+ $help_options_checked++;
+ unless (exists $tool_option_exists{$_}) {
+ $errors++;
+ warn "$progname: $tool: unknown option $_ appears in --help output\n"
+ }
+ }
+}
+
exit 1 if $errors > 0;
-printf "$progname: $tool: checked $tool_options_checked tool options against $pod_options_checked documented options\n";
+printf "$progname: $tool: checked $tool_options_checked tool options, $pod_options_checked documented options, $help_options_checked help options\n";
exit 0;
--
2.7.4
8 years, 4 months
[PATCH] v2v: make virsh command quiet if v2v is quiet (RHBZ#1358142)
by Pino Toscano
Pass -q to virsh if virt-v2v was run with -q, to reduce its output in
quiet mode.
Unfortunately this does not currently work in virsh as it should, see
RHBZ#1358179, so only after that bug is fixed this change can actually
take effect.
---
v2v/output_libvirt.ml | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/v2v/output_libvirt.ml b/v2v/output_libvirt.ml
index d1e9346..1f66d6a 100644
--- a/v2v/output_libvirt.ml
+++ b/v2v/output_libvirt.ml
@@ -394,10 +394,12 @@ class output_libvirt oc output_pool = object
(* We copied directly into the final pool directory. However we
* have to tell libvirt.
*)
- let cmd =
- match oc with
- | None -> [ "virsh"; "pool-refresh"; output_pool ]
- | Some uri -> [ "virsh"; "-c"; uri; "pool-refresh"; output_pool ] in
+ let cmd = [ "virsh" ] @
+ (if quiet () then [ "-q" ] else []) @
+ (match oc with
+ | None -> []
+ | Some uri -> [ "-c"; uri; ]) @
+ [ "pool-refresh"; output_pool ] in
if run_command cmd <> 0 then
warning (f_"could not refresh libvirt pool %s") output_pool;
@@ -425,10 +427,12 @@ class output_libvirt oc output_pool = object
);
(* Define the domain in libvirt. *)
- let cmd =
- match oc with
- | None -> [ "virsh"; "define"; tmpfile ]
- | Some uri -> [ "virsh"; "-c"; uri; "define"; tmpfile ] in
+ let cmd = [ "virsh" ] @
+ (if quiet () then [ "-q" ] else []) @
+ (match oc with
+ | None -> []
+ | Some uri -> [ "-c"; uri; ]) @
+ [ "define"; tmpfile ] in
if run_command cmd = 0 then (
try Unix.unlink tmpfile with _ -> ()
) else (
--
2.7.4
8 years, 4 months
[PATCH 0/2] Small improvements to f2fs support
by Pino Toscano
Hi,
easy series to improve the support for f2fs filesystems: while we
should be able to mount them already (if the used kernel has the
support for this filesystem), put in the appliance f2fs-tools, so we
can also create them.
Unfortunately, there isn't much in f2fs-tools, so all that can be done
is simply setting a different label only when creating a filesystem.
Thanks,
Pino Toscano (2):
appliance: add f2fs-tools to the appliance
daemon: mkfs: allow setting labels for f2fs filesystems
appliance/packagelist.in | 1 +
daemon/mkfs.c | 4 ++++
2 files changed, 5 insertions(+)
--
2.7.4
8 years, 4 months
Changing a given image from virtio-blk to virtio-scsi
by Yaniv Kaul
Any idea what 'virt-customize' script I should use to convert from
virtio-blk (vda, vdb...) to virtio-scsi (sda, sdb...) ?
I've tried naively to convince libvirt to use virtio-scsi and still present
it to the guest as 'vd*' - that didn't work (
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source
file='/dev/shm/run/default/images/lago_basic_suite_master_storage_root.qcow2'/>
<backingStore type='file' index='1'>
<format type='raw'/>
<source file='/home/lagostore/phx_repo:el7-base:latest'/>
<backingStore/>
</backingStore>
* <target dev='vda' bus='scsi'/>*
<boot order='1'/>
<alias name='scsi0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
TIA,
Y.
8 years, 4 months
[PATCH v2 1/2] v2v: register also aliases of input/output modules
by Pino Toscano
Extend Modules_list to handle also aliases for input and output modules,
and use this to register the existing aliases.
---
v2v/input_disk.ml | 2 +-
v2v/modules_list.ml | 25 +++++++++++++++++++++----
v2v/modules_list.mli | 8 ++++----
v2v/output_local.ml | 2 +-
v2v/output_rhev.ml | 2 +-
5 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/v2v/input_disk.ml b/v2v/input_disk.ml
index 17ad61d..d21815d 100644
--- a/v2v/input_disk.ml
+++ b/v2v/input_disk.ml
@@ -101,4 +101,4 @@ class input_disk input_format disk = object
end
let input_disk = new input_disk
-let () = Modules_list.register_input_module "disk"
+let () = Modules_list.register_input_module ~alias:"local" "disk"
diff --git a/v2v/modules_list.ml b/v2v/modules_list.ml
index 36a08c0..5649b02 100644
--- a/v2v/modules_list.ml
+++ b/v2v/modules_list.ml
@@ -21,11 +21,28 @@ open Common_utils
let input_modules = ref []
and output_modules = ref []
-let register_input_module name = push_front name input_modules
-and register_output_module name = push_front name output_modules
+let rec register_input_module ?alias name = register ?alias name input_modules
+and register_output_module ?alias name = register ?alias name output_modules
+and register ?alias name l =
+ push_front (name, false) l;
+ (match alias with
+ | None -> ()
+ | Some alias -> push_front (alias, true) l
+ )
-let input_modules () = List.sort compare !input_modules
-and output_modules () = List.sort compare !output_modules
+let list_out ~with_alias l =
+ let l =
+ if with_alias then l
+ else
+ List.filter (
+ fun (_, is_alias) ->
+ not is_alias
+ ) l in
+ let l = List.map fst l in
+ List.sort compare l
+
+let input_modules ?(with_alias = false) () = list_out ~with_alias !input_modules
+and output_modules ?(with_alias = false) () = list_out ~with_alias !output_modules
type conversion_fn =
keep_serial_console:bool ->
diff --git a/v2v/modules_list.mli b/v2v/modules_list.mli
index 0560832..7f0af4b 100644
--- a/v2v/modules_list.mli
+++ b/v2v/modules_list.mli
@@ -18,16 +18,16 @@
(** List of input, output and conversion modules. *)
-val register_input_module : string -> unit
+val register_input_module : ?alias:string -> string -> unit
(** Register an input module by name. *)
-val register_output_module : string -> unit
+val register_output_module : ?alias:string -> string -> unit
(** Register an output module by name. *)
-val input_modules : unit -> string list
+val input_modules : ?with_alias:bool -> unit -> string list
(** Return the list of input modules. *)
-val output_modules : unit -> string list
+val output_modules : ?with_alias:bool -> unit -> string list
(** Return the list of output modules. *)
type conversion_fn =
diff --git a/v2v/output_local.ml b/v2v/output_local.ml
index 47da929..ccd52f2 100644
--- a/v2v/output_local.ml
+++ b/v2v/output_local.ml
@@ -61,4 +61,4 @@ class output_local dir = object
end
let output_local = new output_local
-let () = Modules_list.register_output_module "local"
+let () = Modules_list.register_output_module ~alias:"disk" "local"
diff --git a/v2v/output_rhev.ml b/v2v/output_rhev.ml
index e45043b..90ac307 100644
--- a/v2v/output_rhev.ml
+++ b/v2v/output_rhev.ml
@@ -282,4 +282,4 @@ object
end
let output_rhev = new output_rhev
-let () = Modules_list.register_output_module "rhev"
+let () = Modules_list.register_output_module ~alias:"ovirt" "rhev"
--
2.7.4
8 years, 4 months
[PATCH] tests: Implement script to check documented tool options match actual options.
by Richard W.M. Jones
podcheck.pl is run as part of the tests to perform various
checks on the documentation and the tool.
Currently we check only that the documented options matches the
options that the tool implements and vice versa. This commit would
also allow us (in future) to check --help, --long-options,
--short-options, --version output.
This commit includes scripts to run the tests and various fixes to the
manual pages to ensure that the tests pass.
---
Makefile.am | 1 +
align/Makefile.am | 4 +-
align/test-virt-alignment-scan-docs.sh | 22 +++
builder/Makefile.am | 2 +
builder/test-virt-builder-docs.sh | 25 ++++
builder/virt-builder.pod | 4 +-
cat/Makefile.am | 6 +-
cat/test-docs.sh | 26 ++++
cat/virt-cat.pod | 4 +-
cat/virt-ls.pod | 4 +-
customize/Makefile.am | 7 +-
customize/test-virt-customize-docs.sh | 25 ++++
df/Makefile.am | 4 +-
df/test-virt-df-docs.sh | 22 +++
df/virt-df.pod | 10 +-
dib/Makefile.am | 7 +
dib/test-virt-dib-docs.sh | 22 +++
diff/Makefile.am | 6 +-
diff/test-virt-diff-docs.sh | 23 ++++
edit/Makefile.am | 7 +-
edit/test-virt-edit-docs.sh | 22 +++
edit/virt-edit.pod | 20 +--
fish/Makefile.am | 2 +
fish/guestfish.pod | 42 +++---
fish/test-docs.sh | 26 ++++
format/Makefile.am | 10 +-
format/test-virt-format-docs.sh | 22 +++
format/virt-format.pod | 10 +-
fuse/Makefile.am | 2 +
fuse/guestmount.pod | 40 +++---
fuse/test-docs.sh | 26 ++++
get-kernel/Makefile.am | 7 +
get-kernel/test-virt-get-kernel-docs.sh | 22 +++
make-fs/Makefile.am | 6 +-
make-fs/test-virt-make-fs-docs.sh | 22 +++
make-fs/virt-make-fs.pod | 20 +--
podcheck.pl | 228 ++++++++++++++++++++++++++++++++
rescue/Makefile.am | 4 +-
rescue/test-virt-rescue-docs.sh | 22 +++
rescue/virt-rescue.pod | 16 +--
resize/Makefile.am | 12 +-
resize/test-virt-resize-docs.sh | 23 ++++
resize/virt-resize.pod | 36 ++---
sparsify/Makefile.am | 10 +-
sparsify/test-virt-sparsify-docs.sh | 23 ++++
sparsify/virt-sparsify.pod | 8 +-
sysprep/Makefile.am | 6 +-
sysprep/test-virt-sysprep-docs.sh | 25 ++++
v2v/Makefile.am | 2 +
v2v/test-v2v-docs.sh | 23 ++++
v2v/virt-v2v.pod | 32 ++---
51 files changed, 859 insertions(+), 141 deletions(-)
create mode 100755 align/test-virt-alignment-scan-docs.sh
create mode 100755 builder/test-virt-builder-docs.sh
create mode 100755 cat/test-docs.sh
create mode 100755 customize/test-virt-customize-docs.sh
create mode 100755 df/test-virt-df-docs.sh
create mode 100755 dib/test-virt-dib-docs.sh
create mode 100755 diff/test-virt-diff-docs.sh
create mode 100755 edit/test-virt-edit-docs.sh
create mode 100755 fish/test-docs.sh
create mode 100755 format/test-virt-format-docs.sh
create mode 100755 fuse/test-docs.sh
create mode 100755 get-kernel/test-virt-get-kernel-docs.sh
create mode 100755 make-fs/test-virt-make-fs-docs.sh
create mode 100755 podcheck.pl
create mode 100755 rescue/test-virt-rescue-docs.sh
create mode 100755 resize/test-virt-resize-docs.sh
create mode 100755 sparsify/test-virt-sparsify-docs.sh
create mode 100755 sysprep/test-virt-sysprep-docs.sh
create mode 100755 v2v/test-v2v-docs.sh
diff --git a/Makefile.am b/Makefile.am
index edaa642..4b5babb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -222,6 +222,7 @@ EXTRA_DIST = \
logo/virt-builder.svg \
m4/.gitignore \
ocaml-link.sh \
+ podcheck.pl \
tests/automake2junit.ml \
tmp/.gitignore \
update-bugs.sh \
diff --git a/align/Makefile.am b/align/Makefile.am
index 833739a..edae4b9 100644
--- a/align/Makefile.am
+++ b/align/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
test-virt-alignment-scan.sh \
+ test-virt-alignment-scan-docs.sh \
test-virt-alignment-scan-guests.sh \
virt-alignment-scan.pod
@@ -92,7 +93,8 @@ stamp-virt-alignment-scan.pod: virt-alignment-scan.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS =
+TESTS = \
+ test-virt-alignment-scan-docs.sh
if ENABLE_APPLIANCE
TESTS += \
diff --git a/align/test-virt-alignment-scan-docs.sh b/align/test-virt-alignment-scan-docs.sh
new file mode 100755
index 0000000..ab877c6
--- /dev/null
+++ b/align/test-virt-alignment-scan-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-alignment-scan.pod virt-alignment-scan
diff --git a/builder/Makefile.am b/builder/Makefile.am
index 2581c5a..328775c 100644
--- a/builder/Makefile.am
+++ b/builder/Makefile.am
@@ -27,6 +27,7 @@ EXTRA_DIST = \
test-simplestreams/streams/v1/index.json \
test-simplestreams/streams/v1/net.cirros-cloud_released_download.json \
test-virt-builder.sh \
+ test-virt-builder-docs.sh \
test-virt-builder-list.sh \
test-virt-builder-list-simplestreams.sh \
test-virt-builder-planner.sh \
@@ -249,6 +250,7 @@ yajl_tests_LINK = \
$(yajl_tests_THEOBJECTS) -o $@
TESTS = \
+ test-virt-builder-docs.sh \
test-virt-builder-list.sh \
test-virt-index-validate.sh \
$(SLOW_TESTS)
diff --git a/builder/test-virt-builder-docs.sh b/builder/test-virt-builder-docs.sh
new file mode 100755
index 0000000..83e2f49
--- /dev/null
+++ b/builder/test-virt-builder-docs.sh
@@ -0,0 +1,25 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-builder.pod virt-builder \
+ --insert $srcdir/../customize/customize-synopsis.pod:__CUSTOMIZE_SYNOPSIS__ \
+ --insert $srcdir/../customize/customize-options.pod:__CUSTOMIZE_OPTIONS__ \
+ --ignore=--check-signatures,--no-check-signatures
diff --git a/builder/virt-builder.pod b/builder/virt-builder.pod
index bf53538..831c59f 100644
--- a/builder/virt-builder.pod
+++ b/builder/virt-builder.pod
@@ -324,9 +324,9 @@ alternate home directory:
=item B<--list> [os-version]
-=item B<--list --list-format> format [os-version]
+=item B<--list> B<--list-format> format [os-version]
-=item B<--list --long> [os-version]
+=item B<--list> B<--long> [os-version]
List all the available templates if no guest is specified, or only for the
specified one.
diff --git a/cat/Makefile.am b/cat/Makefile.am
index 1a3482b..a2ca16f 100644
--- a/cat/Makefile.am
+++ b/cat/Makefile.am
@@ -18,6 +18,7 @@
include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
+ test-docs.sh \
test-virt-cat.sh \
virt-cat.pod \
test-virt-filesystems.sh \
@@ -201,8 +202,11 @@ stamp-virt-ls.pod: virt-ls.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-if ENABLE_APPLIANCE
TESTS = \
+ test-docs.sh
+
+if ENABLE_APPLIANCE
+TESTS += \
test-virt-cat.sh \
test-virt-filesystems.sh \
test-virt-log.sh \
diff --git a/cat/test-docs.sh b/cat/test-docs.sh
new file mode 100755
index 0000000..a0ffc61
--- /dev/null
+++ b/cat/test-docs.sh
@@ -0,0 +1,26 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-cat.pod virt-cat
+$srcdir/../podcheck.pl virt-filesystems.pod virt-filesystems
+$srcdir/../podcheck.pl virt-log.pod virt-log
+$srcdir/../podcheck.pl virt-ls.pod virt-ls \
+ --ignore=--checksums,--extra-stat,--time,--uid
diff --git a/cat/virt-cat.pod b/cat/virt-cat.pod
index acd43e0..87b0e13 100644
--- a/cat/virt-cat.pod
+++ b/cat/virt-cat.pod
@@ -126,9 +126,9 @@ security problem with malicious guests (CVE-2010-3851).
Read key or passphrase parameters from stdin. The default is
to try to read passphrases from the user by opening F</dev/tty>.
-=item B<-m dev[:mountpoint[:options[:fstype]]]>
+=item B<-m> dev[:mountpoint[:options[:fstype]]]
-=item B<--mount dev[:mountpoint[:options[:fstype]]]>
+=item B<--mount> dev[:mountpoint[:options[:fstype]]]
Mount the named partition or logical volume on the given mountpoint.
diff --git a/cat/virt-ls.pod b/cat/virt-ls.pod
index b90fb51..4957075 100644
--- a/cat/virt-ls.pod
+++ b/cat/virt-ls.pod
@@ -357,9 +357,9 @@ L</RECURSIVE LONG LISTING> above.
Read key or passphrase parameters from stdin. The default is
to try to read passphrases from the user by opening F</dev/tty>.
-=item B<-m dev[:mountpoint[:options[:fstype]]]>
+=item B<-m> dev[:mountpoint[:options[:fstype]]]
-=item B<--mount dev[:mountpoint[:options[:fstype]]]>
+=item B<--mount> dev[:mountpoint[:options[:fstype]]]
Mount the named partition or logical volume on the given mountpoint.
diff --git a/customize/Makefile.am b/customize/Makefile.am
index 938eae7..0fc064b 100644
--- a/customize/Makefile.am
+++ b/customize/Makefile.am
@@ -22,6 +22,7 @@ EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
customize_main.ml \
test-virt-customize.sh \
+ test-virt-customize-docs.sh \
virt-customize.pod
CLEANFILES = \
@@ -191,8 +192,12 @@ stamp-virt-customize.pod: virt-customize.pod $(top_srcdir)/customize/customize-s
TESTS_ENVIRONMENT = $(top_builddir)/run --test
+TESTS = \
+ test-virt-customize-docs.sh
+
if ENABLE_APPLIANCE
-TESTS = test-virt-customize.sh
+TESTS += \
+ test-virt-customize.sh
endif
check-valgrind:
diff --git a/customize/test-virt-customize-docs.sh b/customize/test-virt-customize-docs.sh
new file mode 100755
index 0000000..c5e2ebf
--- /dev/null
+++ b/customize/test-virt-customize-docs.sh
@@ -0,0 +1,25 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-customize.pod virt-customize \
+ --insert $srcdir/../customize/customize-synopsis.pod:__CUSTOMIZE_SYNOPSIS__ \
+ --insert $srcdir/../customize/customize-options.pod:__CUSTOMIZE_OPTIONS__ \
+ --ignore=--dryrun
diff --git a/df/Makefile.am b/df/Makefile.am
index 2cf487d..74a0391 100644
--- a/df/Makefile.am
+++ b/df/Makefile.am
@@ -20,6 +20,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
README \
test-virt-df.sh \
+ test-virt-df-docs.sh \
test-virt-df-guests.sh \
virt-df.pod
@@ -95,7 +96,8 @@ stamp-virt-df.pod: virt-df.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS =
+TESTS = \
+ test-virt-df-docs.sh
if ENABLE_APPLIANCE
TESTS += \
diff --git a/df/test-virt-df-docs.sh b/df/test-virt-df-docs.sh
new file mode 100755
index 0000000..f4f582c
--- /dev/null
+++ b/df/test-virt-df-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-df.pod virt-df
diff --git a/df/virt-df.pod b/df/virt-df.pod
index 6419237..57f9fd0 100644
--- a/df/virt-df.pod
+++ b/df/virt-df.pod
@@ -76,20 +76,20 @@ not do this with unrelated guest disks.>
Display brief help.
-=item B<-a> file
+=item B<-a> FILE
-=item B<--add> file
+=item B<--add> FILE
-Add I<file> which should be a disk image from a virtual machine. If
+Add C<FILE> which should be a disk image from a virtual machine. If
the virtual machine has multiple block devices, you must supply all of
them with separate I<-a> options.
The format of the disk image is auto-detected. To override this and
force a particular format use the I<--format=..> option.
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
diff --git a/dib/Makefile.am b/dib/Makefile.am
index 9b986cc..7d39d89 100644
--- a/dib/Makefile.am
+++ b/dib/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
+ test-virt-dib-docs.sh \
virt-dib.pod
CLEANFILES = *~ *.annot *.cmi *.cmo *.cmx *.cmxa *.o virt-dib
@@ -96,6 +97,12 @@ virt_dib_LINK = \
$(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \
$(OBJECTS) -o $@
+# Tests.
+
+TESTS_ENVIRONMENT = $(top_builddir)/run --test
+
+TESTS = test-virt-dib-docs.sh
+
# Manual pages and HTML files for the website.
man_MANS = virt-dib.1
diff --git a/dib/test-virt-dib-docs.sh b/dib/test-virt-dib-docs.sh
new file mode 100755
index 0000000..11d7e1e
--- /dev/null
+++ b/dib/test-virt-dib-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-dib.pod virt-dib
diff --git a/diff/Makefile.am b/diff/Makefile.am
index 13e86c7..9421771 100644
--- a/diff/Makefile.am
+++ b/diff/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
test-virt-diff.sh \
+ test-virt-diff-docs.sh \
virt-diff.pod
CLEANFILES = \
@@ -82,8 +83,11 @@ stamp-virt-diff.pod: virt-diff.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-if ENABLE_APPLIANCE
TESTS = \
+ test-virt-diff-docs.sh
+
+if ENABLE_APPLIANCE
+TESTS += \
test-virt-diff.sh
endif ENABLE_APPLIANCE
diff --git a/diff/test-virt-diff-docs.sh b/diff/test-virt-diff-docs.sh
new file mode 100755
index 0000000..f1262d6
--- /dev/null
+++ b/diff/test-virt-diff-docs.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-diff.pod virt-diff \
+ --ignore=--checksums,--dir-link,--dir-nlink,--dir-nlinks,--dir-time,--extra-stat,--time,--uid,--xattr
diff --git a/edit/Makefile.am b/edit/Makefile.am
index eb36142..b4dd8a1 100644
--- a/edit/Makefile.am
+++ b/edit/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
test-virt-edit.sh \
+ test-virt-edit-docs.sh \
virt-edit.pod
CLEANFILES = \
@@ -85,6 +86,10 @@ stamp-virt-edit.pod: virt-edit.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
+TESTS = \
+ test-virt-edit-docs.sh
+
if ENABLE_APPLIANCE
-TESTS = test-virt-edit.sh
+TESTS += \
+ test-virt-edit.sh
endif ENABLE_APPLIANCE
diff --git a/edit/test-virt-edit-docs.sh b/edit/test-virt-edit-docs.sh
new file mode 100755
index 0000000..85794ce
--- /dev/null
+++ b/edit/test-virt-edit-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-edit.pod virt-edit
diff --git a/edit/virt-edit.pod b/edit/virt-edit.pod
index a4fa02b..bc0199a 100644
--- a/edit/virt-edit.pod
+++ b/edit/virt-edit.pod
@@ -70,15 +70,15 @@ them with separate I<-a> options.
The format of the disk image is auto-detected. To override this and
force a particular format use the I<--format=..> option.
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
-=item B<-b> extension
+=item B<-b> EXTENSION
-=item B<--backup> extension
+=item B<--backup> EXTENSION
Create a backup of the original file I<in the guest disk image>.
The backup has the original filename with C<extension> added.
@@ -90,9 +90,9 @@ so you would write:
By default, no backup file is made.
-=item B<-c URI>
+=item B<-c> URI
-=item B<--connect URI>
+=item B<--connect> URI
If using libvirt, connect to the given I<URI>. If omitted, then we
connect to the default libvirt hypervisor.
@@ -100,9 +100,9 @@ connect to the default libvirt hypervisor.
If you specify guest block devices directly, then libvirt is not used
at all.
-=item B<-d> guest
+=item B<-d> GUEST
-=item B<--domain> guest
+=item B<--domain> GUEST
Add all the disks from the named libvirt guest. Domain UUIDs can be
used instead of names.
@@ -158,9 +158,9 @@ security problem with malicious guests (CVE-2010-3851).
Read key or passphrase parameters from stdin. The default is
to try to read passphrases from the user by opening F</dev/tty>.
-=item B<-m dev[:mountpoint[:options[:fstype]]]>
+=item B<-m> dev[:mountpoint[:options[:fstype]]]
-=item B<--mount dev[:mountpoint[:options[:fstype]]]>
+=item B<--mount> dev[:mountpoint[:options[:fstype]]]
Mount the named partition or logical volume on the given mountpoint.
diff --git a/fish/Makefile.am b/fish/Makefile.am
index a4f5983..aa0ef74 100644
--- a/fish/Makefile.am
+++ b/fish/Makefile.am
@@ -285,6 +285,7 @@ TESTS = \
test-add-domain.sh \
test-add-uri.sh \
test-d.sh \
+ test-docs.sh \
test-escapes.sh \
test-events.sh \
test-invalid-params.sh \
@@ -323,6 +324,7 @@ EXTRA_DIST += \
test-alloc.sh \
test-copy.sh \
test-d.sh \
+ test-docs.sh \
test-edit.sh \
test-escapes.sh \
test-events.sh \
diff --git a/fish/guestfish.pod b/fish/guestfish.pod
index 257c659..b914449 100644
--- a/fish/guestfish.pod
+++ b/fish/guestfish.pod
@@ -156,15 +156,15 @@ Displays general help on options.
Lists all available guestfish commands.
-=item B<-h cmd>
+=item B<-h> CMD
-=item B<--cmd-help cmd>
+=item B<--cmd-help> CMD
Displays detailed help on a single command C<cmd>.
-=item B<-a image>
+=item B<-a> IMAGE
-=item B<--add image>
+=item B<--add> IMAGE
Add a block device or virtual machine image to the shell.
@@ -175,15 +175,15 @@ Using this flag is mostly equivalent to using the C<add> command,
with C<readonly:true> if the I<--ro> flag was given, and
with C<format:...> if the I<--format=...> flag was given.
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L</ADDING REMOTE STORAGE>.
-=item B<-c URI>
+=item B<-c> URI
-=item B<--connect URI>
+=item B<--connect> URI
When used in conjunction with the I<-d> option, this specifies
the libvirt URI to use. The default is to use the default libvirt
@@ -194,9 +194,9 @@ connection.
If using the I<--listen> option and a csh-like shell, use this option.
See section L</REMOTE CONTROL AND CSH> below.
-=item B<-d libvirt-domain>
+=item B<-d> LIBVIRT-DOMAIN
-=item B<--domain libvirt-domain>
+=item B<--domain> LIBVIRT-DOMAIN
Add disks from the named libvirt domain. If the I<--ro> option is
also used, then any libvirt domain can be used. However in write
@@ -215,11 +215,11 @@ echoing off so you cannot see what you are typing. If you are not
worried about Tempest attacks and there is no one else in the room
you can specify this flag to see what you are typing.
-=item B<-f file>
+=item B<-f> FILE
-=item B<--file file>
+=item B<--file> FILE
-Read commands from C<file>. To write pure guestfish
+Read commands from C<FILE>. To write pure guestfish
scripts, use:
#!/usr/bin/guestfish -f
@@ -295,9 +295,9 @@ L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
Connect to a live virtual machine.
(Experimental, see L<guestfs(3)/ATTACHING TO RUNNING DAEMONS>).
-=item B<-m dev[:mountpoint[:options[:fstype]]]>
+=item B<-m> dev[:mountpoint[:options[:fstype]]]
-=item B<--mount dev[:mountpoint[:options[:fstype]]]>
+=item B<--mount> dev[:mountpoint[:options[:fstype]]]
Mount the named partition or logical volume on the given mountpoint.
@@ -335,13 +335,13 @@ or if libguestfs misidentifies a filesystem.
Enable QEMU user networking in the guest.
-=item B<-N [filename=]type>
+=item B<-N> [FILENAME=]TYPE
-=item B<--new [filename=]type>
+=item B<--new> [FILENAME=]TYPE
-=item B<-N help>
+=item B<-N> B<help>
-Prepare a fresh disk image formatted as "type". This is an
+Prepare a fresh disk image formatted as C<TYPE>. This is an
alternative to the I<-a> option: whereas I<-a> adds an existing disk,
I<-N> creates a preformatted disk with a filesystem and adds it.
See L</PREPARED DISK IMAGES> below.
@@ -383,7 +383,9 @@ interactive shell.
Disable progress bars.
-=item B<--remote[=pid]>
+=item B<--remote>
+
+=item B<--remote=>PID
Send remote commands to C<$GUESTFISH_PID> or C<pid>. See section
L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
diff --git a/fish/test-docs.sh b/fish/test-docs.sh
new file mode 100755
index 0000000..07ba9f8
--- /dev/null
+++ b/fish/test-docs.sh
@@ -0,0 +1,26 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl guestfish.pod guestfish \
+ --insert $srcdir/guestfish-actions.pod:__ACTIONS__ \
+ --insert $srcdir/guestfish-commands.pod:__FISH_COMMANDS__ \
+ --insert $srcdir/guestfish-prepopts.pod:__PREPOPTS__ \
+ --ignore=-D
diff --git a/format/Makefile.am b/format/Makefile.am
index cc0489b..9951ba1 100644
--- a/format/Makefile.am
+++ b/format/Makefile.am
@@ -18,6 +18,8 @@
include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
+ test-virt-format-docs.sh \
+ test-virt-format.sh \
virt-format.pod
CLEANFILES = \
@@ -81,11 +83,13 @@ stamp-virt-format.pod: virt-format.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
+TESTS = \
+ test-virt-format-docs.sh
+
if ENABLE_APPLIANCE
-TESTS = test-virt-format.sh
+TESTS += \
+ test-virt-format.sh
endif ENABLE_APPLIANCE
check-valgrind:
$(MAKE) VG="$(top_builddir)/run @VG@" check
-
-EXTRA_DIST += test-virt-format.sh
diff --git a/format/test-virt-format-docs.sh b/format/test-virt-format-docs.sh
new file mode 100755
index 0000000..f00456a
--- /dev/null
+++ b/format/test-virt-format-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-format.pod virt-format
diff --git a/format/virt-format.pod b/format/virt-format.pod
index 2f83203..11b4409 100644
--- a/format/virt-format.pod
+++ b/format/virt-format.pod
@@ -35,11 +35,11 @@ partitions, filesystems, etc. The most commonly used options are:
=over 4
-=item I<--filesystem=[ext3|ntfs|vfat|...]>
+=item B<--filesystem=[ext3|ntfs|vfat|...]>
Create an empty filesystem (C<ext3>, C<ntfs> etc) inside the partition.
-=item I<--lvm[=/dev/VG/LV]>
+=item B<--lvm[=/dev/VG/LV]>
Create a Linux LVM2 logical volume on the disk. When used with
I<--filesystem>, the filesystem is created inside the LV.
@@ -73,9 +73,9 @@ force a particular format use the I<--format=..> option.
B<Any existing data on the disk is erased.>
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
@@ -112,7 +112,7 @@ If you have untrusted raw-format guest disk images, you should use
this option to specify the disk format. This avoids a possible
security problem with malicious guests (CVE-2010-3851).
-=item B<--label=LABEL>
+=item B<--label=>LABEL
Set the filesystem label.
diff --git a/fuse/Makefile.am b/fuse/Makefile.am
index 1fad440..da0e636 100644
--- a/fuse/Makefile.am
+++ b/fuse/Makefile.am
@@ -20,6 +20,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
guestmount.pod \
guestunmount.pod \
+ test-docs.sh \
test-fuse-umount-race.sh \
test-guestunmount-not-mounted.sh
@@ -131,6 +132,7 @@ stamp-guestunmount.pod: guestunmount.pod
# Tests.
TESTS = \
+ test-docs.sh \
test-guestunmount-fd \
test-guestunmount-not-mounted.sh
diff --git a/fuse/guestmount.pod b/fuse/guestmount.pod
index be075e5..b75b971 100644
--- a/fuse/guestmount.pod
+++ b/fuse/guestmount.pod
@@ -155,32 +155,32 @@ race-free program.
=over 4
-=item B<-a image>
+=item B<-a> IMAGE
-=item B<--add image>
+=item B<--add> IMAGE
Add a block device or virtual machine image.
The format of the disk image is auto-detected. To override this and
force a particular format use the I<--format=..> option.
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
-=item B<-c URI>
+=item B<-c> URI
-=item B<--connect URI>
+=item B<--connect> URI
When used in conjunction with the I<-d> option, this specifies
the libvirt URI to use. The default is to use the default libvirt
connection.
-=item B<-d libvirt-domain>
+=item B<-d> LIBVIRT-DOMAIN
-=item B<--domain libvirt-domain>
+=item B<--domain> LIBVIRT-DOMAIN
Add disks from the named libvirt domain. If the I<--ro> option is
also used, then any libvirt domain can be used. However in write
@@ -188,7 +188,7 @@ mode, only libvirt domains which are shut down can be named here.
Domain UUIDs can be used instead of names.
-=item B<--dir-cache-timeout N>
+=item B<--dir-cache-timeout> N
Set the readdir cache timeout to I<N> seconds, the default being 60
seconds. The readdir cache [actually, there are several
@@ -207,7 +207,7 @@ echoing off so you cannot see what you are typing. If you are not
worried about Tempest attacks and there is no one else in the room
you can specify this flag to see what you are typing.
-=item B<--fd=FD>
+=item B<--fd=>FD
Specify a pipe or eventfd file descriptor. When the mountpoint is
ready to be used, guestmount writes a single byte to this file
@@ -254,9 +254,9 @@ to try to read passphrases from the user by opening F</dev/tty>.
Connect to a live virtual machine.
(Experimental, see L<guestfs(3)/ATTACHING TO RUNNING DAEMONS>).
-=item B<-m dev[:mountpoint[:options[:fstype]]>
+=item B<-m> dev[:mountpoint[:options[:fstype]]
-=item B<--mount dev[:mountpoint[:options[:fstype]]]>
+=item B<--mount> dev[:mountpoint[:options[:fstype]]]
Mount the named partition or logical volume on the given mountpoint
B<in the guest> (this has nothing to do with mountpoints in the host).
@@ -292,9 +292,9 @@ is unmounted. If you specify this option, then we don't attempt to
sync the disk. See the discussion of autosync in the L<guestfs(3)>
manpage.
-=item B<-o option>
+=item B<-o> OPTION
-=item B<--option option>
+=item B<--option> OPTION
Pass extra options to FUSE.
@@ -308,26 +308,26 @@ Some potentially useful FUSE options:
=over 4
-=item B<-o allow_other>
+=item B<-o> B<allow_other>
Allow other users to see the filesystem.
-=item B<-o attr_timeout=N>
+=item B<-o> B<attr_timeout=N>
Enable attribute caching by FUSE, and set the timeout to I<N> seconds.
-=item B<-o kernel_cache>
+=item B<-o> B<kernel_cache>
Allow the kernel to cache files (reduces the number of reads
that have to go through the L<guestfs(3)> API). This is generally
a good idea if you can afford the extra memory usage.
-=item B<-o uid=N> B<-o gid=N>
+=item B<-o> B<uid=N> B<-o> B<gid=N>
Use these options to map all UIDs and GIDs inside the guest filesystem
to the chosen values.
-=item B<-o use_ino>
+=item B<-o> B<use_ino>
Preserve inode numbers from the underlying filesystem.
@@ -342,7 +342,7 @@ some software.
=back
-=item B<--pid-file filename>
+=item B<--pid-file> FILENAME
Write the PID of the guestmount worker process to C<filename>.
diff --git a/fuse/test-docs.sh b/fuse/test-docs.sh
new file mode 100755
index 0000000..93bca2d
--- /dev/null
+++ b/fuse/test-docs.sh
@@ -0,0 +1,26 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl guestmount.pod guestmount
+
+# guestunmount doesn't implement bash completion, so we cannot
+# test it at the moment. XXX
+#$srcdir/../podcheck.pl guestunmount.pod guestunmount
diff --git a/get-kernel/Makefile.am b/get-kernel/Makefile.am
index 7cefdd6..d0077f1 100644
--- a/get-kernel/Makefile.am
+++ b/get-kernel/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
$(SOURCES_ML) $(SOURCES_C) \
+ test-virt-get-kernel-docs.sh \
virt-get-kernel.pod
CLEANFILES = *~ *.annot *.cmi *.cmo *.cmx *.cmxa *.o virt-get-kernel
@@ -93,6 +94,12 @@ virt_get_kernel_LINK = \
$(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \
$(OBJECTS) -o $@
+# Tests.
+
+TESTS_ENVIRONMENT = $(top_builddir)/run --test
+
+TESTS = test-virt-get-kernel-docs.sh
+
# Manual pages and HTML files for the website.
man_MANS += virt-get-kernel.1
diff --git a/get-kernel/test-virt-get-kernel-docs.sh b/get-kernel/test-virt-get-kernel-docs.sh
new file mode 100755
index 0000000..ab8d67f
--- /dev/null
+++ b/get-kernel/test-virt-get-kernel-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-get-kernel.pod virt-get-kernel
diff --git a/make-fs/Makefile.am b/make-fs/Makefile.am
index f7d9734..2bec12f 100644
--- a/make-fs/Makefile.am
+++ b/make-fs/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
test-virt-make-fs.sh \
+ test-virt-make-fs-docs.sh \
virt-make-fs.pod
CLEANFILES = \
@@ -76,8 +77,11 @@ stamp-virt-make-fs.pod: virt-make-fs.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-if ENABLE_APPLIANCE
TESTS = \
+ test-virt-make-fs-docs.sh
+
+if ENABLE_APPLIANCE
+TESTS += \
test-virt-make-fs.sh
endif ENABLE_APPLIANCE
diff --git a/make-fs/test-virt-make-fs-docs.sh b/make-fs/test-virt-make-fs-docs.sh
new file mode 100755
index 0000000..70581d7
--- /dev/null
+++ b/make-fs/test-virt-make-fs-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-make-fs.pod virt-make-fs --ignore=--debug
diff --git a/make-fs/virt-make-fs.pod b/make-fs/virt-make-fs.pod
index 4f50e11..68bf294 100644
--- a/make-fs/virt-make-fs.pod
+++ b/make-fs/virt-make-fs.pod
@@ -129,13 +129,13 @@ Create a virtual floppy disk.
Currently this preselects the size (1440K), partition type (MBR) and
filesystem type (VFAT). In future it may also choose the geometry.
-=item B<--size=E<lt>NE<gt>>
+=item B<--size=>N
-=item B<--size=+E<lt>NE<gt>>
+=item B<--size=+>N
-=item B<-s E<lt>NE<gt>>
+=item B<-s> N
-=item B<-s +E<lt>NE<gt>>
+=item B<-s> B<+>N
Use the I<--size> (or I<-s>) option to choose the size of the output
image.
@@ -159,17 +159,17 @@ produce filesystems containing precisely the free space requested.
(It is much more expensive and time-consuming to produce a filesystem
which has precisely the desired free space).
-=item B<--format=E<lt>fmtE<gt>>
+=item B<--format=>FMT
-=item B<-F E<lt>fmtE<gt>>
+=item B<-F> FMT
Choose the output disk image format.
The default is C<raw> (raw sparse disk image).
-=item B<--type=E<lt>fsE<gt>>
+=item B<--type=>FS
-=item B<-t E<lt>fsE<gt>>
+=item B<-t> FS
Choose the output filesystem type.
@@ -178,13 +178,13 @@ The default is C<ext2>.
Any filesystem which is supported read-write by libguestfs can be used
here.
-=item B<--label=E<lt>LABELE<gt>>
+=item B<--label=>LABEL
Set the filesystem label.
=item B<--partition>
-=item B<--partition=E<lt>parttypeE<gt>>
+=item B<--partition=>PARTTYPE
If specified, this flag adds an MBR partition table to the output disk
image.
diff --git a/podcheck.pl b/podcheck.pl
new file mode 100755
index 0000000..fca91fb
--- /dev/null
+++ b/podcheck.pl
@@ -0,0 +1,228 @@
+#!/usr/bin/env perl
+# podcheck.pl
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use warnings;
+use strict;
+
+use Pod::Usage;
+use Getopt::Long;
+use Pod::Man;
+
+=head1 NAME
+
+podcheck.pl - Compare man page and tools to check all arguments are documented
+
+=head1 SYNOPSIS
+
+ podcheck.pl virt-foo.pod ./virt-foo [--ignore=--arg,--arg,...]
+
+=head1 DESCRIPTION
+
+This script compares a manual page (eg. C<virt-foo.pod>) and the
+corresponding tool (eg. C<./virt-foo>) and checks that each command
+line argument is documented in the manual, and that there is no rogue
+documentation for arguments which do not exist. It works by running
+the tool with the standard C<--long-options> and C<--short-options>
+parameters and comparing their output with the man page.
+
+You can also ignore options, in case this script gets things wrong or
+if there are options that you don't intend to document.
+
+=head1 OPTIONS
+
+=over 4
+
+=cut
+
+my $help;
+
+=item B<--help>
+
+Display brief help.
+
+=cut
+
+my $ignore = "";
+
+=item B<--ignore=--arg,--arg,...>
+
+Ignore the comma-separated list of arguments given.
+
+=cut
+
+my @inserts;
+
+=item B<--insert filename:__PATTERN__>
+
+This works like the L<podwrapper.pl(1)> I<--insert> option and should be
+used where the POD includes patterns which podwrapper would substitute.
+
+=cut
+
+my @verbatims;
+
+=item B<--verbatim filename:__PATTERN__>
+
+This works like the podwrapper I<--verbatim> option and should be
+used where the POD includes patterns which podwrapper would substitute.
+
+=cut
+
+# Clean up the program name.
+my $progname = $0;
+$progname =~ s{.*/}{};
+
+# Parse options.
+GetOptions ("help|?" => \$help,
+ "ignore=s" => \$ignore,
+ "insert=s" => \@inserts,
+ "verbatim=s" => \@verbatims,
+ ) or pod2usage (2);
+pod2usage (1) if $help;
+
+die "$progname: missing argument: podcheck.pl input.pod tool\n"
+ unless @ARGV == 2;
+my $input = $ARGV[0];
+my $tool = $ARGV[1];
+
+my %ignore = ();
+$ignore{$_} = 1 foreach (split /,/, $ignore);
+
+# Open the man page and slurp it in.
+my $content = read_whole_file ($input);
+
+# Perform @inserts.
+foreach (@inserts) {
+ my @a = split /:/, $_, 2;
+ die "$progname: $input: no colon in parameter of --insert\n" unless @a >= 2;
+ my $replacement = read_whole_file ($a[0]);
+ my $oldcontent = $content;
+ $content =~ s/$a[1]/$replacement/ge;
+ die "$progname: $input: could not find pattern '$a[1]' in input file\n"
+ if $content eq $oldcontent;
+}
+
+# Perform @verbatims.
+foreach (@verbatims) {
+ my @a = split /:/, $_, 2;
+ die "$progname: $input: no colon in parameter of --verbatim\n" unless @a >= 2;
+ my $replacement = read_verbatim_file ($a[0]);
+ my $oldcontent = $content;
+ $content =~ s/$a[1]/$replacement/ge;
+ die "$progname: $input: could not find pattern '$a[1]' in input file\n"
+ if $content eq $oldcontent;
+}
+
+# Run the tool with --long-options and --short-options.
+my @tool_options = ();
+open PIPE, "$tool --long-options |"
+ or die "$progname: $tool --long-options: $!";
+while (<PIPE>) {
+ chomp;
+ push @tool_options, $_;
+}
+close PIPE;
+open PIPE, "$tool --short-options |"
+ or die "$progname: $tool --short-options: $!";
+while (<PIPE>) {
+ chomp;
+ push @tool_options, $_;
+}
+close PIPE;
+
+my %tool_option_exists = ();
+$tool_option_exists{$_} = 1 foreach @tool_options;
+
+# There are some tool options which we automatically ignore.
+delete $tool_option_exists{"--color"};
+delete $tool_option_exists{"--colour"};
+delete $tool_option_exists{"--debug-gc"};
+
+my $errors = 0;
+
+# Check each option exists in the manual.
+my $tool_options_checked = 0;
+
+foreach (sort keys %tool_option_exists) {
+ unless ($ignore{$_}) {
+ $tool_options_checked++;
+ unless ($content =~ /^=item.*B<$_(?:=.*)?>/m) {
+ $errors++;
+ warn "$progname: $input does not define $_\n";
+ }
+ }
+}
+
+# Check there are no extra options defined in the manual which
+# don't exist in the tool.
+my $pod_options_checked = 0;
+
+my %pod_options = ();
+$pod_options{$_} = 1 foreach ( $content =~ /^=item.*B<(-[-\w]+)(?:=.*)?>/gm );
+foreach (sort keys %pod_options) {
+ unless ($ignore{$_}) {
+ $pod_options_checked++;
+ unless (exists $tool_option_exists{$_}) {
+ $errors++;
+ warn "$progname: $input defines option $_ which does not exist in the tool\n"
+ }
+ }
+}
+
+exit 1 if $errors > 0;
+
+printf "$progname: $tool: checked $tool_options_checked tool options against $pod_options_checked documented options\n";
+
+exit 0;
+
+sub read_whole_file
+{
+ my $input = shift;
+ local $/ = undef;
+
+ open FILE, $input or die "$progname: $input: $!";
+ $_ = <FILE>;
+ close FILE;
+ $_;
+}
+
+sub read_verbatim_file
+{
+ my $input = shift;
+ my $r = "";
+
+ open FILE, $input or die "$progname: $input: $!";
+ while (<FILE>) {
+ $r .= " $_";
+ }
+ close FILE;
+ $r;
+}
+
+=head1 SEE ALSO
+
+L<podwrapper.pl(1)>,
+libguestfs.git/README.
+
+=head1 AUTHOR
+
+Richard W.M. Jones.
+
+=head1 COPYRIGHT
+
+Copyright (C) 2016 Red Hat Inc.
diff --git a/rescue/Makefile.am b/rescue/Makefile.am
index 144a255..1568730 100644
--- a/rescue/Makefile.am
+++ b/rescue/Makefile.am
@@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
test-virt-rescue.pl \
+ test-virt-rescue-docs.sh \
test-virt-rescue-suggest.sh \
virt-rescue.pod
@@ -83,7 +84,8 @@ stamp-virt-rescue.pod: virt-rescue.pod
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS =
+TESTS = \
+ test-virt-rescue-docs.sh
if ENABLE_APPLIANCE
TESTS += \
diff --git a/rescue/test-virt-rescue-docs.sh b/rescue/test-virt-rescue-docs.sh
new file mode 100755
index 0000000..bdf647b
--- /dev/null
+++ b/rescue/test-virt-rescue-docs.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-rescue.pod virt-rescue
diff --git a/rescue/virt-rescue.pod b/rescue/virt-rescue.pod
index 00f03aa..f2cfef0 100644
--- a/rescue/virt-rescue.pod
+++ b/rescue/virt-rescue.pod
@@ -108,24 +108,24 @@ use to make scripted changes to guests, use L<guestfish(1)>.
Display brief help.
-=item B<-a> file
+=item B<-a> FILE
-=item B<--add> file
+=item B<--add> FILE
-Add I<file> which should be a disk image from a virtual machine. If
+Add C<FILE> which should be a disk image from a virtual machine. If
the virtual machine has multiple block devices, you must supply all of
them with separate I<-a> options.
The format of the disk image is auto-detected. To override this and
force a particular format use the I<--format=..> option.
-=item B<-a URI>
+=item B<-a> URI
-=item B<--add URI>
+=item B<--add> URI
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
-=item B<--append kernelopts>
+=item B<--append> KERNELOPTS
Pass additional options to the rescue kernel.
@@ -170,9 +170,9 @@ If you have untrusted raw-format guest disk images, you should use
this option to specify the disk format. This avoids a possible
security problem with malicious guests (CVE-2010-3851).
-=item B<-m MB>
+=item B<-m> MB
-=item B<--memsize MB>
+=item B<--memsize> MB
Change the amount of memory allocated to the rescue system. The
default is set by libguestfs and is small but adequate for running
diff --git a/resize/Makefile.am b/resize/Makefile.am
index cf2f9cf..9a725d3 100644
--- a/resize/Makefile.am
+++ b/resize/Makefile.am
@@ -19,8 +19,9 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
- virt-resize.pod \
- test-virt-resize.pl
+ test-virt-resize.pl \
+ test-virt-resize-docs.sh \
+ virt-resize.pod
CLEANFILES = *~ *.annot *.cmi *.cmo *.cmx *.cmxa *.o virt-resize
@@ -115,9 +116,12 @@ CLEANFILES += \
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS =
+TESTS = \
+ test-virt-resize-docs.sh
+
if ENABLE_APPLIANCE
-TESTS += test-virt-resize.pl
+TESTS += \
+ test-virt-resize.pl
endif
check-valgrind:
diff --git a/resize/test-virt-resize-docs.sh b/resize/test-virt-resize-docs.sh
new file mode 100755
index 0000000..407b486
--- /dev/null
+++ b/resize/test-virt-resize-docs.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-resize.pod virt-resize \
+ --ignore=--LVexpand,--lv-expand,--lvexpand,--dryrun
diff --git a/resize/virt-resize.pod b/resize/virt-resize.pod
index 5693fa1..aa01849 100644
--- a/resize/virt-resize.pod
+++ b/resize/virt-resize.pod
@@ -271,11 +271,11 @@ command line. Doing so will give an error.
Display help.
-=item B<--align-first auto>
+=item B<--align-first> B<auto>
-=item B<--align-first never>
+=item B<--align-first> B<never>
-=item B<--align-first always>
+=item B<--align-first> B<always>
Align the first partition for improved performance (see also the
I<--alignment> option).
@@ -293,7 +293,7 @@ I<--align-first always> means we always align the first partition (if
it needs to be aligned). For some guests this will break the
bootloader, making the guest unbootable.
-=item B<--alignment N>
+=item B<--alignment> N
Set the alignment of partitions to C<N> sectors. The default in
virt-resize E<lt> 1.13.19 was 64 sectors, and after that is 128
@@ -344,7 +344,7 @@ option.
Enable debugging messages.
-=item B<--delete part>
+=item B<--delete> PART
Delete the named partition. It would be more accurate to describe
this as "don't copy it over", since virt-resize doesn't do in-place
@@ -357,7 +357,7 @@ unbootable.
You can give this option multiple times.
-=item B<--expand part>
+=item B<--expand> PART
Expand the named partition so it uses up all extra space (space left
over after any other resize changes that you request have been done).
@@ -402,7 +402,7 @@ XFS filesystems, if libguestfs was compiled with support for XFS.
Note that you cannot use I<--expand> and I<--shrink> together.
-=item B<--format> raw
+=item B<--format> B<raw>
Specify the format of the input disk image. If this flag is not
given then it is auto-detected from the image itself.
@@ -413,7 +413,7 @@ ensure the format is always specified.
Note that this option I<does not> affect the output format.
See L</QCOW2 AND NON-SPARSE RAW FORMATS>.
-=item B<--ignore part>
+=item B<--ignore> PART
Ignore the named partition. Effectively this means the partition is
allocated on the destination disk, but the content is not copied
@@ -422,7 +422,7 @@ blank (all zero bytes).
You can give this option multiple times.
-=item B<--LV-expand logvol>
+=item B<--LV-expand> LOGVOL
This takes the logical volume and, as a final step, expands it to fill
all the space available in its volume group. A typical usage,
@@ -453,7 +453,7 @@ L</MACHINE READABLE OUTPUT> below.
=item B<-n>
-=item B<--dryrun>
+=item B<--dry-run>
Print a summary of what would be done, but don't do anything.
@@ -498,7 +498,7 @@ You have to use this option if you want to resize a Windows
guest multiple times without booting into Windows between each
resize.
-=item B<--output-format> raw
+=item B<--output-format> B<raw>
Specify the format of the output disk image. If this flag is not
given then it is auto-detected from the image itself.
@@ -517,12 +517,12 @@ L</QCOW2 AND NON-SPARSE RAW FORMATS>.
Don't print the summary.
-=item B<--resize part=size>
+=item B<--resize> PART=SIZE
Resize the named partition (expanding or shrinking it) so that it has
the given size.
-C<size> can be expressed as an absolute number followed by
+C<SIZE> can be expressed as an absolute number followed by
b/K/M/G to mean bytes, Kilobytes, Megabytes, or Gigabytes;
or as a percentage of the current size;
or as a relative number or percentage.
@@ -553,7 +553,7 @@ error (see also I<--resize-force>).
You can give this option multiple times.
-=item B<--resize-force part=size>
+=item B<--resize-force> PART=SIZE
This is the same as I<--resize> except that it will let you decrease
the size of any partition. Generally this means you will lose any
@@ -563,7 +563,7 @@ easily recreate it such as a swap partition).
See also the I<--ignore> option.
-=item B<--shrink part>
+=item B<--shrink> PART
Shrink the named partition until the overall disk image fits in the
destination. The named partition B<must> contain a filesystem or PV
@@ -581,11 +581,11 @@ gigabyte of free space.
Note that you cannot use I<--expand> and I<--shrink> together.
-=item B<--unknown-filesystems ignore>
+=item B<--unknown-filesystems> B<ignore>
-=item B<--unknown-filesystems warn>
+=item B<--unknown-filesystems> B<warn>
-=item B<--unknown-filesystems error>
+=item B<--unknown-filesystems> B<error>
Configure the behaviour of virt-resize when asking to expand a
filesystem, and neither libguestfs has the support it, nor virt-resize
diff --git a/sparsify/Makefile.am b/sparsify/Makefile.am
index 5293fbf..f8d2641 100644
--- a/sparsify/Makefile.am
+++ b/sparsify/Makefile.am
@@ -19,9 +19,10 @@ include $(top_srcdir)/subdir-rules.mk
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
- virt-sparsify.pod \
test-virt-sparsify.sh \
- test-virt-sparsify-in-place.sh
+ test-virt-sparsify-docs.sh \
+ test-virt-sparsify-in-place.sh \
+ virt-sparsify.pod
CLEANFILES = *~ *.annot *.cmi *.cmo *.cmx *.cmxa *.o virt-sparsify
@@ -119,8 +120,11 @@ CLEANFILES += \
TESTS_ENVIRONMENT = $(top_builddir)/run --test
-if ENABLE_APPLIANCE
TESTS = \
+ test-virt-sparsify-docs.sh
+
+if ENABLE_APPLIANCE
+TESTS += \
test-virt-sparsify.sh \
test-virt-sparsify-in-place.sh
endif ENABLE_APPLIANCE
diff --git a/sparsify/test-virt-sparsify-docs.sh b/sparsify/test-virt-sparsify-docs.sh
new file mode 100755
index 0000000..9a16b43
--- /dev/null
+++ b/sparsify/test-virt-sparsify-docs.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-sparsify.pod virt-sparsify \
+ --ignore=--inplace
diff --git a/sparsify/virt-sparsify.pod b/sparsify/virt-sparsify.pod
index 0e89268..177cd03 100644
--- a/sparsify/virt-sparsify.pod
+++ b/sparsify/virt-sparsify.pod
@@ -119,13 +119,13 @@ in place by doing:
Display help.
-=item B<--check-tmpdir ignore>
+=item B<--check-tmpdir> B<ignore>
-=item B<--check-tmpdir continue>
+=item B<--check-tmpdir> B<continue>
-=item B<--check-tmpdir warn>
+=item B<--check-tmpdir> B<warn>
-=item B<--check-tmpdir fail>
+=item B<--check-tmpdir> B<fail>
Check if L</TMPDIR> or I<--tmp> directory has enough space to complete
the operation. This is just an estimate.
diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am
index 66e2ceb..a000735 100644
--- a/sysprep/Makefile.am
+++ b/sysprep/Makefile.am
@@ -21,6 +21,7 @@ EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
script1.sh script2.sh script3.sh script4.sh \
test-virt-sysprep.sh \
+ test-virt-sysprep-docs.sh \
test-virt-sysprep-passwords.sh \
test-virt-sysprep-script.sh \
virt-sysprep.pod
@@ -178,8 +179,11 @@ TESTS_ENVIRONMENT = \
PATH=$(abs_top_builddir)/fuse:$(PATH) \
$(top_builddir)/run --test
-if ENABLE_APPLIANCE
TESTS = \
+ test-virt-sysprep-docs.sh
+
+if ENABLE_APPLIANCE
+TESTS += \
test-virt-sysprep.sh \
test-virt-sysprep-passwords.sh
diff --git a/sysprep/test-virt-sysprep-docs.sh b/sysprep/test-virt-sysprep-docs.sh
new file mode 100755
index 0000000..c87bbb6
--- /dev/null
+++ b/sysprep/test-virt-sysprep-docs.sh
@@ -0,0 +1,25 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-sysprep.pod virt-sysprep \
+ --insert sysprep-extra-options.pod:__EXTRA_OPTIONS__ \
+ --insert sysprep-operations.pod:__OPERATIONS__ \
+ --ignore=--dryrun,--dump-pod,--dump-pod-options,--no-selinux-relabel
diff --git a/v2v/Makefile.am b/v2v/Makefile.am
index 6529f13..8fd013d 100644
--- a/v2v/Makefile.am
+++ b/v2v/Makefile.am
@@ -254,6 +254,7 @@ CLEANFILES += \
TESTS_ENVIRONMENT = $(top_builddir)/run --test
TESTS = \
+ test-v2v-docs.sh \
test-v2v-i-ova-formats.sh \
test-v2v-i-ova-gz.sh \
test-v2v-i-ova-subfolders.sh \
@@ -332,6 +333,7 @@ EXTRA_DIST += \
test-v2v-cdrom.sh \
test-v2v-cdrom.xml \
test-v2v-copy-to-local.sh \
+ test-v2v-docs.sh \
test-v2v-floppy.expected \
test-v2v-floppy.sh \
test-v2v-floppy.xml \
diff --git a/v2v/test-v2v-docs.sh b/v2v/test-v2v-docs.sh
new file mode 100755
index 0000000..a88c10c
--- /dev/null
+++ b/v2v/test-v2v-docs.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2016 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+export LANG=C
+set -e
+
+$srcdir/../podcheck.pl virt-v2v.pod virt-v2v \
+ --ignore=--dcPath,--debug-overlay,--ic,--if,--no-trim,--oa,--oc,--of,--on,--os,--vmtype
diff --git a/v2v/virt-v2v.pod b/v2v/virt-v2v.pod
index 91a517e..d06094c 100644
--- a/v2v/virt-v2v.pod
+++ b/v2v/virt-v2v.pod
@@ -291,7 +291,7 @@ Save the overlay file(s) created during conversion. This option is
only used for debugging virt-v2v and may be removed in a future
version.
-=item B<-i disk>
+=item B<-i> B<disk>
Set the input method to I<disk>.
@@ -301,7 +301,7 @@ usually adequate but you can get finer control (eg. of memory and
vCPUs) by using I<-i libvirtxml> instead. Only guests that use a single
disk can be imported this way.
-=item B<-i libvirt>
+=item B<-i> B<libvirt>
Set the input method to I<libvirt>. This is the default.
@@ -309,7 +309,7 @@ In this mode you have to specify a libvirt guest name or UUID on the
command line. You may also specify a libvirt connection URI (see
I<-ic>).
-=item B<-i libvirtxml>
+=item B<-i> B<libvirtxml>
Set the input method to I<libvirtxml>.
@@ -318,11 +318,11 @@ This file is read in order to get metadata about the source guest
(such as its name, amount of memory), and also to locate the input
disks. See L</MINIMAL XML FOR -i libvirtxml OPTION> below.
-=item B<-i local>
+=item B<-i> B<local>
This is the same as I<-i disk>.
-=item B<-i ova>
+=item B<-i> B<ova>
Set the input method to I<ova>.
@@ -406,16 +406,16 @@ a faulty guest (one with no disks).
This option is not compatible with I<-o glance> for technical reasons.
-=item B<-o disk>
+=item B<-o> B<disk>
This is the same as I<-o local>.
-=item B<-o glance>
+=item B<-o> B<glance>
Set the output method to OpenStack Glance. In this mode the converted
guest is uploaded to Glance. See L</OUTPUT TO GLANCE> below.
-=item B<-o libvirt>
+=item B<-o> B<libvirt>
Set the output method to I<libvirt>. This is the default.
@@ -424,7 +424,7 @@ may also specify a libvirt connection URI (see I<-oc>).
See L</OUTPUT TO LIBVIRT> below.
-=item B<-o local>
+=item B<-o> B<local>
Set the output method to I<local>.
@@ -442,7 +442,7 @@ and a libvirt XML file is created containing guest metadata:
where C<name> is the guest name.
-=item B<-o null>
+=item B<-o> B<null>
Set the output method to I<null>.
@@ -450,11 +450,11 @@ The guest is converted and copied (unless you also specify
I<--no-copy>), but the results are thrown away and no metadata is
written.
-=item B<-o ovirt>
+=item B<-o> B<ovirt>
This is the same as I<-o rhev>.
-=item B<-o qemu>
+=item B<-o> B<qemu>
Set the output method to I<qemu>.
@@ -465,7 +465,7 @@ shell script are written to the directory specified by I<-os>.
When using this output mode, you can also specify the I<--qemu-boot>
option which boots the guest under qemu immediately.
-=item B<-o rhev>
+=item B<-o> B<rhev>
Set the output method to I<rhev>.
@@ -476,7 +476,7 @@ into RHEV. You have to do that manually later using the UI.
See L</OUTPUT TO RHEV> below.
-=item B<-o vdsm>
+=item B<-o> B<vdsm>
Set the output method to I<vdsm>.
@@ -485,9 +485,9 @@ data domain must be given:
F</rhev/data-center/E<lt>data-center-uuidE<gt>/E<lt>data-domain-uuidE<gt>>.
This mode is only used when virt-v2v runs under VDSM control.
-=item B<-oa sparse>
+=item B<-oa> B<sparse>
-=item B<-oa preallocated>
+=item B<-oa> B<preallocated>
Set the output file allocation mode. The default is C<sparse>.
--
2.7.4
8 years, 4 months
[PATCH] fish, fuse: Remove bogus '?' from short options.
by Richard W.M. Jones
I don't believe this has any use or meaning. Currently the tools
don't process -?, eg:
$ guestfish -\?
Try `guestfish --help' for more information.
Therefore I believe this is erroneous.
---
fish/fish.c | 2 +-
fuse/guestmount.c | 2 +-
fuse/guestunmount.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/fish/fish.c b/fish/fish.c
index 49e1aaa..e639d3d 100644
--- a/fish/fish.c
+++ b/fish/fish.c
@@ -182,7 +182,7 @@ main (int argc, char *argv[])
enum { HELP_OPTION = CHAR_MAX + 1 };
- static const char *options = "a:c:d:Df:h::im:nN:rv?Vwx";
+ static const char *options = "a:c:d:Df:h::im:nN:rvVwx";
static const struct option long_options[] = {
{ "add", 1, 0, 'a' },
{ "cmd-help", 2, 0, 'h' },
diff --git a/fuse/guestmount.c b/fuse/guestmount.c
index 4461c65..a5a5d37 100644
--- a/fuse/guestmount.c
+++ b/fuse/guestmount.c
@@ -149,7 +149,7 @@ main (int argc, char *argv[])
/* The command line arguments are broadly compatible with (a subset
* of) guestfish. Thus we have to deal mainly with -a, -m and --ro.
*/
- static const char *options = "a:c:d:im:no:rv?Vwx";
+ static const char *options = "a:c:d:im:no:rvVwx";
static const struct option long_options[] = {
{ "add", 1, 0, 'a' },
{ "connect", 1, 0, 'c' },
diff --git a/fuse/guestunmount.c b/fuse/guestunmount.c
index dc9428c..ba753ef 100644
--- a/fuse/guestunmount.c
+++ b/fuse/guestunmount.c
@@ -76,7 +76,7 @@ main (int argc, char *argv[])
{
enum { HELP_OPTION = CHAR_MAX + 1 };
- static const char *options = "qv?V";
+ static const char *options = "qvV";
static const struct option long_options[] = {
{ "fd", 1, 0, 0 },
{ "help", 0, 0, HELP_OPTION },
--
2.7.4
8 years, 4 months
[PATCH 1/2] v2v: register also aliases of input/output modules
by Pino Toscano
This makes them visible in the help text of -i and -o.
---
v2v/input_disk.ml | 5 ++++-
v2v/output_local.ml | 5 ++++-
v2v/output_rhev.ml | 5 ++++-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/v2v/input_disk.ml b/v2v/input_disk.ml
index 17ad61d..508f16a 100644
--- a/v2v/input_disk.ml
+++ b/v2v/input_disk.ml
@@ -101,4 +101,7 @@ class input_disk input_format disk = object
end
let input_disk = new input_disk
-let () = Modules_list.register_input_module "disk"
+let () =
+ Modules_list.register_input_module "disk";
+ (* Alias *)
+ Modules_list.register_input_module "local"
diff --git a/v2v/output_local.ml b/v2v/output_local.ml
index 47da929..f2945ec 100644
--- a/v2v/output_local.ml
+++ b/v2v/output_local.ml
@@ -61,4 +61,7 @@ class output_local dir = object
end
let output_local = new output_local
-let () = Modules_list.register_output_module "local"
+let () =
+ Modules_list.register_output_module "local";
+ (* Alias *)
+ Modules_list.register_output_module "disk"
diff --git a/v2v/output_rhev.ml b/v2v/output_rhev.ml
index e45043b..bec5f44 100644
--- a/v2v/output_rhev.ml
+++ b/v2v/output_rhev.ml
@@ -282,4 +282,7 @@ object
end
let output_rhev = new output_rhev
-let () = Modules_list.register_output_module "rhev"
+let () =
+ Modules_list.register_output_module "rhev";
+ (* Alias *)
+ Modules_list.register_output_module "ovirt"
--
2.7.4
8 years, 4 months