Richard W.M. Jones wrote:
...
Subject: [PATCH 3/3] Add 'virt-rescue' command.
This command runs a "rescue appliance" against a virtual machine
or disk image. This is useful for making ad-hoc interactive
...
diff --git a/rescue/Makefile.am b/rescue/Makefile.am
...
+if HAVE_RESCUE
+
+man_MANS = virt-rescue.1
I have a vague memory that recent automake generates
better rules if you spell the above like this:
dist_man1_MANS = virt-rescue.1
+noinst_DATA = @top_builddir(a)/html/virt-rescue.1.html
IMHO, it's better to avoid automake's obsolescent @VAR@ notation.
Instead, use $(VAR). There's even a syntax-check rule for this,
but it's currently disabled.
+virt-rescue.1: virt-rescue.pl
+ $(POD2MAN) \
+ --section 1 \
+ -c "Virtualization Support" \
+ --release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
+ $< > $@
Don't redirect directly to $@, in case the command fails
without removing the incomplete result. This idiom ensures
that it is updated atomically:
$< > $@-t && mv $@-t $@
+@top_builddir(a)/html/virt-rescue.1.html: virt-rescue.pl
+ mkdir -p @top_builddir@/html
+ cd @top_builddir@ && pod2html \
+ --css 'pod.css' \
+ --title 'virt-rescue, run a rescue shell on a virtual machine' \
+ --htmldir html \
+ --outfile html/virt-rescue.1.html \
+ rescue/$<
+
+install-data-hook:
+ mkdir -p $(DESTDIR)$(bindir)
+ install -m 0755 virt-rescue.pl $(DESTDIR)$(bindir)/virt-rescue
+
+endif
diff --git a/rescue/run-rescue-locally b/rescue/run-rescue-locally
...
+my $path = $0;
+
+# Follow symlinks until we get to the real file
+while(-l $path) {
+ my $link = readlink($path);
You'll want to handle the case in which readlink fails
and returns "undef".
+ if(File::Spec->file_name_is_absolute($link)) {
+ $path = $link;
+ } else {
+ $path = File::Spec->catfile(dirname($path), $link);
+ }