mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
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.
221 lines
5.2 KiB
Makefile
221 lines
5.2 KiB
Makefile
# libguestfs
|
|
# Copyright (C) 2009-2011 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
include $(top_srcdir)/subdir-rules.mk
|
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
|
|
|
# Basic source for the library.
|
|
SUBDIRS = gnulib/lib images generator src examples po
|
|
|
|
if ENABLE_DAEMON
|
|
SUBDIRS += daemon
|
|
endif
|
|
if ENABLE_APPLIANCE
|
|
SUBDIRS += appliance
|
|
endif
|
|
|
|
# Tests and the test-tool.
|
|
SUBDIRS += gnulib/tests capitests regressions test-tool
|
|
|
|
# Guestfish.
|
|
SUBDIRS += fish
|
|
|
|
# virt-tools in C.
|
|
SUBDIRS += cat df inspector rescue
|
|
|
|
# Language bindings.
|
|
if HAVE_PERL
|
|
SUBDIRS += perl perl/examples
|
|
endif
|
|
if HAVE_OCAML
|
|
SUBDIRS += ocaml ocaml/examples
|
|
endif
|
|
if HAVE_PYTHON
|
|
SUBDIRS += python python/examples
|
|
endif
|
|
if HAVE_RUBY
|
|
SUBDIRS += ruby ruby/examples
|
|
endif
|
|
if HAVE_JAVA
|
|
SUBDIRS += java
|
|
endif
|
|
if HAVE_HASKELL
|
|
SUBDIRS += haskell
|
|
endif
|
|
if HAVE_PHP
|
|
SUBDIRS += php
|
|
endif
|
|
|
|
# Unconditional because nothing is built yet.
|
|
SUBDIRS += csharp
|
|
|
|
# virt-resize 2.0 is written in OCaml.
|
|
if HAVE_OCAML
|
|
if HAVE_OCAML_PCRE
|
|
SUBDIRS += resize
|
|
endif
|
|
endif
|
|
|
|
# Perl tools and guestmount.
|
|
if HAVE_TOOLS
|
|
SUBDIRS += tools
|
|
endif
|
|
|
|
if HAVE_FUSE
|
|
SUBDIRS += fuse
|
|
endif
|
|
|
|
# po-docs must come after tools, inspector.
|
|
if HAVE_PO4A
|
|
SUBDIRS += po-docs
|
|
endif
|
|
|
|
EXTRA_DIST = \
|
|
$(generator_built) \
|
|
html/pod.css \
|
|
BUGS HACKING RELEASE-NOTES ROADMAP TODO \
|
|
libguestfs.pc libguestfs.pc.in \
|
|
recipes/LICENSE \
|
|
recipes/README \
|
|
recipes/*.html \
|
|
recipes/*.sh \
|
|
recipes/*.example \
|
|
html/recipes.css \
|
|
make-recipes.sh \
|
|
contrib/README \
|
|
bindtests \
|
|
.gitignore \
|
|
m4/.gitignore \
|
|
libtool-kill-dependency_libs.sh \
|
|
autogen.sh \
|
|
bugs-in-changelog.sh \
|
|
update-bugs.sh \
|
|
logo/fish.svg logo/fish.png
|
|
|
|
# Recipes web page.
|
|
html/recipes.html: $(wildcard recipes/*.sh) $(wildcard recipes/*.html) $(wildcard recipes/*.example) Makefile make-recipes.sh
|
|
mkdir -p html
|
|
rm -f $@ $@-t
|
|
sh make-recipes.sh recipes/*.sh > $@-t
|
|
mv $@-t $@
|
|
|
|
HTMLFILES = \
|
|
html/guestfs.3.html \
|
|
html/guestfs-examples.3.html \
|
|
html/guestfs-ocaml.3.html \
|
|
html/guestfs-perl.3.html \
|
|
html/guestfs-python.3.html \
|
|
html/guestfs-ruby.3.html \
|
|
html/guestfish.1.html \
|
|
html/guestmount.1.html \
|
|
html/virt-cat.1.html \
|
|
html/virt-copy-in.1.html \
|
|
html/virt-copy-out.1.html \
|
|
html/virt-df.1.html \
|
|
html/virt-edit.1.html \
|
|
html/virt-filesystems.1.html \
|
|
html/virt-inspector.1.html \
|
|
html/virt-list-filesystems.1.html \
|
|
html/virt-list-partitions.1.html \
|
|
html/virt-ls.1.html \
|
|
html/virt-make-fs.1.html \
|
|
html/virt-rescue.1.html \
|
|
html/virt-resize.1.html \
|
|
html/virt-tar.1.html \
|
|
html/virt-tar-in.1.html \
|
|
html/virt-tar-out.1.html \
|
|
html/virt-win-reg.1.html \
|
|
html/recipes.html \
|
|
html/pod.css html/recipes.css
|
|
|
|
TEXTFILES = BUGS README RELEASE-NOTES ROADMAP TODO
|
|
|
|
WEBSITEDIR = $(HOME)/d/redhat/websites/libguestfs
|
|
|
|
website: $(HTMLFILES) $(TEXTFILES)
|
|
cp $(HTMLFILES) $(WEBSITEDIR)
|
|
for f in $(TEXTFILES); do cp $$f $(WEBSITEDIR)/$$f.txt; done
|
|
cd $(WEBSITEDIR) && \
|
|
date=`date +%F`; \
|
|
sed -e "s/SUBST_VERSION/$(VERSION)/" \
|
|
-e "s/SUBST_DATE/$$date/" \
|
|
< index.html.in > index.html
|
|
|
|
# When doing 'make dist' update a few files automatically.
|
|
dist-hook:
|
|
$(top_srcdir)/build-aux/gitlog-to-changelog > ChangeLog
|
|
cp ChangeLog $(distdir)/ChangeLog
|
|
$(top_srcdir)/update-bugs.sh > BUGS-t
|
|
mv BUGS-t BUGS
|
|
cp BUGS $(distdir)/BUGS
|
|
git log --pretty="format:%an" | sort -u | \
|
|
grep -v rjones | \
|
|
grep -v "Richard Jones" \
|
|
> AUTHORS-t
|
|
mv AUTHORS-t AUTHORS
|
|
cp AUTHORS $(distdir)/AUTHORS
|
|
|
|
# Update the list of translatable files in po/POTFILES.in.
|
|
all-local:
|
|
cd $(srcdir); \
|
|
find $(DIST_SUBDIRS) \
|
|
-name '*.c' -o -name '*.pl' -o -name '*.pm' | \
|
|
grep -v '^perl/blib/' | \
|
|
grep -v '^capitests/' | \
|
|
grep -v '^daemon/lib/' | \
|
|
grep -v '^daemon/tests/' | \
|
|
grep -v '^examples/' | \
|
|
grep -v '^gnulib/' | \
|
|
grep -v '^perl/examples/' | \
|
|
grep -v '/guestfs_protocol.c' | \
|
|
grep -v '/rc_protocol.c' | \
|
|
grep -v 'appliance/debian/root' | \
|
|
grep -v '^po-docs/' | \
|
|
LC_ALL=C sort | \
|
|
sed 's,^\./,,' > po/POTFILES.in
|
|
|
|
# Pkgconfig.
|
|
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
|
pkgconfig_DATA = libguestfs.pc
|
|
|
|
# Make clean.
|
|
|
|
CLEANFILES = \
|
|
pod2htm?.tmp \
|
|
html/*.html
|
|
|
|
# If you don't want to run all of the tests ('make check') then this
|
|
# will just run libguestfs-test-tool for a quick check. Note this
|
|
# is NOT a substitute for proper testing!
|
|
|
|
quickcheck:
|
|
test-tool/run-test-tool-locally
|
|
|
|
# Make binary distribution.
|
|
|
|
BINTMPDIR = /tmp/libguestfs-bin
|
|
bindist:
|
|
rm -rf $(BINTMPDIR)
|
|
mkdir $(BINTMPDIR)
|
|
$(MAKE)
|
|
$(MAKE) DESTDIR=$(BINTMPDIR) install
|
|
-find $(BINTMPDIR) -type d -exec rmdir --ignore-fail-on-non-empty {} \;
|
|
(cd $(BINTMPDIR) && tar cf - .) | \
|
|
gzip -c -9 > libguestfs-$(VERSION)-$(DISTRO)-$(host_cpu).tar.gz
|