inspect: ignore /etc/fstab with no entries (RHBZ#1113156).

Just like no /etc/fstab is not an error, having one with no entries
shouldn't be an issue either.

With systemd, this could be a valid setup, with mount points set its own
way.

(cherry picked from commit 3fc6983b1666a32ea6c1b44d88f140e3c84e7201)
mllib: introduce Mkdtemp.temp_dir

Add a simple function to ease the usage of Mkdtemp.mkdtemp.

(cherry picked from commit c8f3e99302e65a0c10bc82df49789d159bf17e5c)
Use Mkdtemp.temp_dir instead of Mkdtemp.mkdtemp

(cherry picked from commit 71ac957d4aedf9560a6b0c75629fea16a32d20c3)
builder: CentOS 7.0

(cherry picked from commit 2ee1fb6472dfcde9cb649a5c2eb4eaffa12f5e2a)
appliance: init: run ldconfig

Run ldconfig early in the init script, so libraries outside standard
library paths but with a proper ld.so configuration file pointing at
them can be found.

(cherry picked from commit 66aa98265dd215dcd4c717e7ef6845fbac859e54)
customize: Update copyright messages.

No functional change.

(cherry picked from commit 82cf3c9d68237a3294f6e83f2b38de4f1414ca7f)
customize: Use Common_utils.error function instead of failwith.

This is just code refactoring.

(cherry picked from commit f913ca5ebcaacbd94a31ed8fac935833447cc0a7)
sysprep: Standard exception handling, taken from virt-builder & virt-v2v.

(cherry picked from commit 9d8ede1ae4b8b926a00c16d0f6ba52d8a6defbd7)
ocaml: Ignore Warning 3: deprecated feature: String.* functions.

In OCaml 4.02, the 'string' type can be made immutable.  All String.*
functions that are concerned with creating or mutating strings now
give a warning like this:

  Warning 3: deprecated feature: String.unsafe_set

Disable this warning since we don't want to turn on immutable strings
yet.

(cherry picked from commit fe9d3f7a903741311cfd0ef0b82607be8ab923df)
tests: regressions: Allow non-exec stack test to be skipped.

Currently fails on aarch64 because of a buggy GCC.

(cherry picked from commit 9cdaaeee40384af47bb581c83407efac39090cb1)
tests: Remove tests/protocol/test-qemudie-launchfail.sh

This test has not been run since 2012 as it depends on specifics of
how supermin and new-style appliances work (see
commit 2d89aef897e633bffba1dffd600b122eacd88fc8).

This commit removes the test entirely.

(cherry picked from commit 00c94d808b0abc825c379ea1f0f2d44827ad120a)
valgrind: Tweak the suppression matching OCaml leak in caml_search_in_path.

In OCaml 4.02 this still leaks, but the stack trace is slightly
different so the old suppression didn't match it.

(cherry picked from commit 83790960d63b78b1c2264777a4d87559d11f3b12)
configure: look for "default-java" as directory for Java

In Debian-based systems, /usr/lib/jvm/default-java is a symlink
pointing to the location of the default Java version.

(cherry picked from commit f4026d779e9736b5446f80d5b4d68eaa13fd07bd)
sparsify: Relax requirement that output device cannot be block device (RHBZ#1122557).

To fix RHBZ#1056290, I prevented virt-sparsify being used if the
output device is a block device.

I have now retested this scenario and it does work (in both copying
and in-place mode), and does not delete the output device, and
therefore we can relax this restriction so only char devices are
banned.

This is useful for oVirt which uses a qcow2 formatted block device to
store virtual machines.

(cherry picked from commit 12b54ef5e3aecd55d228a96dfb0a9ab5c8acdf4a)
tests: lvm: Allow test to be skipped.

(cherry picked from commit 64498034bbc7bce2692597fb8bfbb721e8180543)
tests: hotplug: Allow tests to be skipped.

They don't work on aarch64.

(cherry picked from commit d268de93949c2954fda8f0a1387b740903893481)
daemon: Add extra debugging to umount_all command.

No functional change, just prints some more debug messages.

(cherry picked from commit fc7da04ccd2871a64447dff531ca332decb4bc0d)
virt-resize: Unmount filesystem after testing size.

We were mounting different filesystems on top of each other.  In fact
this is not a problem, but it's nicer to unmount each filesystem
properly after examining it.

(cherry picked from commit 81cafdcfd5932c0adddf22a06b3a770063526133)
tests: builder: Allow test to be skipped.

(cherry picked from commit f18464995f63095d32431202fa2bedc5b60d7a88)
launch: Close file descriptors after fork (RHBZ#1123007).

This refactors existing code to close file descriptors in the recovery
process, and also adds code to close file descriptors between the
fork() and exec() of QEMU or User-Mode Linux.

The reason is to avoid leaking main process file descriptors where the
main process (or other libraries in the main process) are not setting
O_CLOEXEC at all or not setting it atomically.  Python is a particular
culprit.

See also this OpenStack Nova bug report:
https://bugs.launchpad.net/nova/+bug/1313477

Thanks: Qin Zhao for identifying and characterizing the problem in Nova.
(cherry picked from commit 115fcc34325f965ac3723683e4462fc667dcd254)