Commit Graph

109 Commits

Author SHA1 Message Date
Richard W.M. Jones
fae8d7cafb New APIs: Implement Linux filesystem capabilities.
This adds the following new APIs:
 - cap_get_file
 - cap_set_file
2012-11-22 16:45:32 +00:00
Richard W.M. Jones
3636c5fcff tests: Replace 'make extra-tests' with individual tests.
'make extra-tests' was a monolithic set of tests that did all sorts of
things: valgrind, tests over local guests, tests with upstream qemu,
tests with upstream libvirt, tests with the appliance attach method.

This made it hard to perform individual tests, eg. just valgrind
testing.  It was also hard to maintain because the tests were not
located in the same directories as the programs and sometimes
duplicated tests that were run elsewhere.

This commit splits up 'make extra-tests' into 5 separate targets:

 make check-valgrind              # run a subset of tests under valgrind
 make check-valgrind-local-guests # test under valgrind with local guests
 make check-with-appliance        # test with attach-method == appliance
 make check-with-upstream-qemu    # test with an alternate/upstream qemu
 make check-with-upstream-libvirt # test with an alternate/upstream libvirt

(You can also still run 'make extra-tests' which is now simply
a rule that runs the above 5 targets in order).

This replaces everything that was in the tests/extra directory,
so that has now gone.
2012-11-13 15:26:29 +00:00
Richard W.M. Jones
b3bf53714b libvirt >= 0.10.2 required for libvirt backend. 2012-09-24 21:25:31 +01:00
Richard W.M. Jones
05beac65e5 rescue: Add an expect-driven test for the virt-rescue command.
This command was not tested at all.  As a result we didn't notice that
it was broken for a long time (RHBZ#853159).

This adds a test that drives the command through a pty.  It uses the
perl 'Expect' module, although this is not required.
2012-09-04 14:43:26 +01:00
Richard W.M. Jones
3ed3e23ed0 Copy the kernel so that libvirt can add an SELinux label to it. NB. This requires febootstrap >= 3.20 with --copy-kernel flag. 2012-08-31 16:17:24 +01:00
Richard W.M. Jones
c2ac512f12 docs: Revise README file. 2012-08-25 17:28:37 -04:00
Richard W.M. Jones
9f59d11625 launch: libvirt: Minimum libvirt version is now 0.10.0. 2012-08-21 12:29:25 +01:00
Richard W.M. Jones
1e17a32060 Replace podwrapper shell script with custom Perl script.
This uses Pod::Simple so it properly parses the input POD and can
generate proper custom output as required specifically by libguestfs.

One immediate benefit is that links between and within manual pages
now work mostly correctly.
2012-07-16 22:53:01 +01:00
Richard W.M. Jones
7996e08824 qemu or qemu-kvm >= 1.1.0 is required.
Earlier versions of qemu contained a bug in the qcow2 code which
causes qemu to segfault when shutting down and flushing its internal
cache, and this can result in data loss.
2012-07-04 16:17:44 +01:00
Richard W.M. Jones
199cc2853c Require febootstrap >= 3.17. 2012-06-14 09:57:28 +01:00
Richard W.M. Jones
69e2616b6c Require febootstrap >= 3.16. 2012-06-13 11:27:50 +01:00
Richard W.M. Jones
0c0a7d0d86 appliance: Add support for virtio-scsi.
This requires febootstrap >= 3.15.
2012-06-12 21:16:32 +01:00
Richard W.M. Jones
295d6af48d Require QEMU >= 1.0.
QEMU 1.0 was released at the end of 2011.

Remove all the cruft about detecting broken -machine type which
was only required for QEMU 0.15.

This also reverts commit 30ecbf3ec2.
Even on ARM you can pass -machine accel=kvm:tcg and qemu does the
right thing, so I'm not sure why we wanted to disable that.
2012-06-12 16:02:10 +01:00
Richard W.M. Jones
4f671c829e ppc64: Update README with notes about ppc64 support. 2012-06-08 19:36:34 +01:00
Richard W.M. Jones
eb29a9424c arm: Add configure flag '--with-qemu-options'.
This flag allows extra QEMU options to be passed on the command line.

This is useful mainly on arm (see the notes in the updated README
file).
2012-05-12 17:21:24 +01:00
Richard W.M. Jones
a50db3be60 doc: Add a note about compiling under clang. 2012-05-11 13:50:56 +01:00
Richard W.M. Jones
027fefd517 Add gettext support for OCaml tools (virt-resize, virt-sparsify, virt-sysprep).
Note that this support is optional: To enable it, install the
ocaml-gettext library from
http://forge.ocamlcore.org/projects/ocaml-gettext .  If this library
is not installed, then configure detects this and inserts dummy
gettext functions that do nothing.
2012-05-01 09:39:35 +01:00
Richard W.M. Jones
4b86f1ad03 debian: Suggest 'apt-get build-dep' to install dependencies. 2012-04-04 12:46:40 +01:00
Richard W.M. Jones
a14021078b Remove debian/ subdirectory. 2012-03-22 10:05:12 +00:00
Richard W.M. Jones
2c9c0525eb build: Make netpbm and icoutils into proper optional dependencies.
Netpbm and icoutils (wrestool) have always been dependencies.  Since
they are not always present, make these into optional dependencies
(which they were, sort of, before).

Also document these dependencies in the README file.
2012-03-07 18:36:46 +00:00
Richard W.M. Jones
08840bab44 Tempus fugit.
Update all copyright dates to 2012.
2012-01-18 22:05:02 +00:00
Richard W.M. Jones
c55bad93fb Add 'make extra-tests' rule and run extra tests.
These tests are optional, and require a special environment and
tools to run.
2011-11-24 15:51:16 +00:00
Richard W.M. Jones
22998927f9 virt-sysprep: Don't use xmlstarlet.
Use virt-inspector --xpath option instead.
2011-11-03 13:09:54 +00:00
Richard W.M. Jones
ffbafadcb8 resize: Remove requirement for ocaml Pcre library.
This library is not available in RHEL 6, and in any case removing the
dependency is a simple change.
2011-11-03 10:46:50 +00:00
Richard W.M. Jones
9e382f1ae3 virt-sysprep: Switch to using guestmount, add more features.
This switches virt-sysprep to use guestmount instead of guestfish.
This makes the script a little bit easier to modify for sysadmins.

This commit also adds:

 - dhcp-client-state
 - dhcp-server-state
 - logfiles
 - random-seed
 - smolt-uuid
 - yum-uuid

SELinux relabelling, and a section on security in the manual page.
2011-10-13 22:36:56 +01:00
Richard W.M. Jones
c155330f04 Add systemtap/DTrace probes.
Mainly this is a documentation change.  However a sample of
DTrace-compatible userspace probes are also added.
2011-10-10 13:26:15 +01:00
Richard W.M. Jones
41cd0e302d Require PCRE library.
This library is widely available in distros.
2011-07-25 11:13:21 +01:00
Richard W.M. Jones
f91c6f217f Refresh README file.
Update and verify the list of requirements, by checking it against
both configure.ac and the Fedora specfile.

Remove some obsolete sections that covered historical ground.
2011-07-13 15:03:04 +01:00
Richard W.M. Jones
9116f0eb01 virt-win-reg: Add --unsafe-printable-strings option.
This also requires hivex >= 1.2.7.
2011-05-17 17:05:01 +01:00
Richard W.M. Jones
33a2c184e1 Remove local LIBGUESTFS_PATH detection from guestfish and guestmount.
Remove the hack that let you run ./fish/guestfish or
./fuse/guestmount.  You now have to do:

  ./run ./fish/guestfish
or
  ./run ./fuse/guestmount

to run these programs without installing.
2011-04-16 08:32:48 +01:00
Richard W.M. Jones
5790f5bfaf Remove ad-hoc run*locally scripts, replace with './run'
Remove all the run*locally scripts and replace with a single top level
./run shell script.
2011-04-16 08:32:44 +01:00
Richard W.M. Jones
9e56040cd3 README: virtio-serial is required. 2011-04-12 19:35:27 +01:00
Richard W.M. Jones
ca03635a4c Rewrite virt-resize in OCaml.
This is a fairly straightforward translation of Perl virt-resize into
OCaml.  It is bug-for-bug and feature-for-feature identical to the
Perl version, except as noted below.

The motivation is to have a more solid, high-level, statically safe
compiled language to go forwards with fixing some of the harder bugs
in virt-resize.  In particular contracts between different parts of
the program are now handled by statically typed structures checked at
compile time, instead of the very ad-hoc unchecked hash tables used by
the Perl version.

OCaml and the ocaml-pcre library (Perl-Compatible Regular Expressions
bindings for OCaml) are required.

Extra features in this version:

- 32 bit hosts are now supported.

- We try hard to handle the case where the target disk is not "clean"
  (ie. all zeroes).  It usually works for this case, whereas the
  previous version would usually fail.  However it is still
  recommended that the system administrator creates a fresh blank disk
  for the target before running the program.

- User messages are a bit more verbose and helpful.  You can turn
  these off with the -q (--quiet) option.

There is one lost feature:

- Ability to specify >= T (terabytes) sizes in command line size
  expressions has been removed.  This probably didn't work in the Perl
  version.

Other differences:

- The first partition on the target is no longer aligned; instead we
  place it at the same sector as on the source.  I suspect that
  aligning it was causing the bootloader failures.

- Because it's easier, we do more sanity checking on the source disk.
  This might lead to more failures, but they'd be failures you'd want
  to know about.

- The order in which operations are performed has been changed to make
  it more logical.  The user should not notice any functional
  difference, but debug messages will be quite a bit different.

- virt-resize is a compiled binary, not a script.
2011-04-09 14:28:22 +01:00
Nikita A Menkovich
5eaffede90 mkisofs is obsolete. Require genisoimage everywhere instead. 2011-04-02 11:04:47 +01:00
Richard W.M. Jones
b8e1dee73a Add /etc/libguestfs-tools.conf configuration file.
This allows the default for --ro or --rw to be controlled for the
three tools guestfish, guestmount and virt-rescue.
2011-03-31 15:42:13 +01:00
Richard W.M. Jones
d82d6f0633 README: Note that getfacl, getfattr are optional dependencies. 2011-03-28 17:18:24 +01:00
Richard W.M. Jones
bc93d2ba38 README: Note that po4a is mandatory if compiling from git. 2011-01-15 14:56:25 +00:00
Richard W.M. Jones
84fbe21855 docs: Refresh README file. 2010-12-19 21:52:46 +00:00
Richard W.M. Jones
0d267d6cd5 README: Advise using febootstrap >= 3.3. 2010-12-12 23:02:30 +00:00
Richard W.M. Jones
6d75ce8e6c appliance: Change to using febootstrap 3.x supermin appliance.
This removes all support for building the ordinary / old
style appliance using febootstrap 2.x, debootstrap, debirf,
fakeroot and fakechroot.

Instead this uses febootstrap 3.x to build the supermin appliance
in a simpler cross-distro manner.
2010-12-05 11:23:23 +00:00
Richard W.M. Jones
e1aca6323e build: Centralize all POD manipulation in 'podwrapper.sh' script. 2010-11-24 20:12:08 +00:00
Richard W.M. Jones
951ea0e189 build: virt-make-fs requires String::ShellQuote, add to configure. 2010-11-24 11:29:10 +00:00
Richard W.M. Jones
22a50e4e3b inspect: Detect if db_dump and db_load programs are available.
If db_dump is not available then disable RPM application detection.

Note these utilities have odd names on Debian.
2010-11-24 09:41:41 +00:00
Richard W.M. Jones
4220b7a641 Update README to reflect Perl modules that are really still required. 2010-11-23 15:56:13 +00:00
Richard W.M. Jones
f6c4026f85 build: xml-light is no longer required (thanks Maxim Koltsov).
At some point we removed the last thing that required
xml-light, but were still testing for it at various places
in the build.  This removes all traces.
2010-11-11 18:03:12 +00:00
Richard Jones
7509c91a71 fish: Use core add-domain API to implement '-d' option.
This also makes libxml2 and libvirt into optional dependencies.
If they are missing then the core API will print an error, as
will the '-d' option to guestfish.
2010-11-11 11:24:13 +00:00
Richard Jones
a0b4caa082 lib: Make pcre, libmagic and hivex libraries optional.
This change makes these libraries optional.  If they are not
available at compile time then certain core API features will
be disabled (see below).

This also changes PCRE detection to use pkg-config instead
of the ad hoc autoconf checks.

The large inspect.c file has been split out into separate
function-specific files.

  file-architecture: requires pcre & libmagic
  inspection: requires pcre & hivex
2010-11-10 10:52:12 +00:00
Richard Jones
b52183b549 lib: Augeas (client side) is not needed by the library.
However it is used by the daemon.
2010-11-10 10:34:48 +00:00
Richard W.M. Jones
2066805a5d lib: Expose errno through new API guestfs_last_errno.
If either the daemon sends back an errno, or a system call
fails in the library, save the errno in the handle and then
make it available to callers through the guestfs_last_errno
function.
2010-11-03 18:48:56 +00:00
Matthew Booth
38af2eaceb Call febootstrap-supermin-helper using the new -u and -g options
Use febootstrap-supermin-helper's new -u and -g command line options to setuid,
rather than doing it in libguestfs.

This resolves an issue with the generation of the cached appliance checksum. The
checksum was being generated by a call to febootstrap-supermin-helper through
popen(). Unfortunately, a bash misfeature meant that euid would be reset to uid,
and the checksum was generated for uid, not euid. When virt-v2v is writing to a
RHEV target, uid == 0 and euid == 36, which resulted in a cached appliance being
created for root with permissions for uid 36.

Note this requires febootstrap 2.10.
2010-10-28 16:17:38 +01:00