Partial Haskell bindings.
[libguestfs.git] / libguestfs.spec.in
index 3a79276..76b8fb2 100644 (file)
@@ -1,5 +1,8 @@
 # @configure_input@
 
+# Enable to build w/o network.
+%global buildnonet 0
+
 Summary:     Access and modify virtual machine disk images
 Name:        libguestfs
 Version:     @VERSION@
@@ -10,6 +13,10 @@ URL:         http://et.redhat.com/~rjones/libguestfs/
 Source0:     http://et.redhat.com/~rjones/libguestfs/files/%{name}-%{version}.tar.gz
 BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}-root
 
+# Currently fails on non-x86 because of this error:
+# "qemu: linux kernel too old to load a ram disk"
+ExclusiveArch: %{ix86} x86_64
+
 # Basic build requirements:
 BuildRequires: /usr/bin/pod2man
 BuildRequires: /usr/bin/pod2text
@@ -19,11 +26,16 @@ BuildRequires: readline-devel
 BuildRequires: qemu >= 0.10-7
 BuildRequires: createrepo
 
+# This is only needed for RHEL 5 because readline-devel doesn't
+# properly depend on it, but doesn't do any harm on other platforms:
+BuildRequires: ncurses-devel
+
 # Build requirements for the appliance:
 # (see 'make-initramfs.sh.in' in the source)
 BuildRequires: kernel, bash, coreutils, lvm2, ntfs-3g, util-linux-ng
 BuildRequires: MAKEDEV, net-tools, augeas-libs, file
 BuildRequires: module-init-tools, procps, strace, iputils
+BuildRequires: grub, dosfstools, ntfsprogs
 
 # These are only required if you want to build the bindings for
 # different languages:
@@ -37,6 +49,12 @@ BuildRequires: perl-ExtUtils-MakeMaker
 BuildRequires: python-devel
 BuildRequires: ruby-devel
 BuildRequires: rubygem-rake
+BuildRequires: java >= 1.5.0
+BuildRequires: jpackage-utils
+BuildRequires: java-devel
+
+# For virt-inspector:
+BuildRequires: perl-Sys-Virt
 
 # Runtime requires:
 Requires:    qemu >= 0.10-7
@@ -66,19 +84,22 @@ programs.
 See also the 'guestfish' package for shell scripting and command line
 access.
 
-For Perl bindings, see 'libguestfs-perl'.
+For Perl bindings, see 'perl-libguestfs'.
 
-For OCaml bindings, see 'libguestfs-ocaml-devel'.
+For OCaml bindings, see 'ocaml-libguestfs-devel'.
 
-For Python bindings, see 'libguestfs-python'.
+For Python bindings, see 'python-libguestfs'.
 
-For Ruby bindings, see 'libguestfs-ruby'.
+For Ruby bindings, see 'ruby-libguestfs'.
+
+For Java bindings, see 'libguestfs-java-devel'.
 
 
 %package devel
 Summary:     Development tools and libraries for %{name}
 Group:       Development/Libraries
 Requires:    %{name} = %{version}-%{release}
+Requires:    pkgconfig
 
 
 %description devel
@@ -100,42 +121,58 @@ modifying virtual machine disk images from the command line and shell
 scripts.
 
 
-%package ocaml
+%package -n virt-inspector
+Summary:     Display OS version, kernel, drivers, etc in a virtual machine
+Group:       Development/Tools
+License:     GPLv2+
+Requires:    %{name} = %{version}-%{release}
+Requires:    guestfish
+Requires:    perl-Sys-Virt
+
+
+%description -n virt-inspector
+Virt-inspector examines a virtual machine and tries to determine the
+version of the OS, the kernel version, what drivers are installed,
+whether the virtual machine is fully virtualized (FV) or
+para-virtualized (PV), what applications are installed and more.
+
+
+%package -n ocaml-%{name}
 Summary:     OCaml bindings for %{name}
 Group:       Development/Libraries
 Requires:    %{name} = %{version}-%{release}
 
 
-%description ocaml
-%{name}-ocaml contains OCaml bindings for %{name}.
+%description -n ocaml-%{name}
+ocaml-%{name} contains OCaml bindings for %{name}.
 
 This is for toplevel and scripting access only.  To compile OCaml
-programs which use %{name} you will also need %{name}-ocaml-devel.
+programs which use %{name} you will also need ocaml-%{name}-devel.
 
 
-%package ocaml-devel
+%package -n ocaml-%{name}-devel
 Summary:     OCaml bindings for %{name}
 Group:       Development/Libraries
-Requires:    %{name}-ocaml = %{version}-%{release}
+Requires:    ocaml-%{name} = %{version}-%{release}
 
 
-%description ocaml-devel
-%{name}-ocaml-devel contains development libraries
+%description -n ocaml-%{name}-devel
+ocaml-%{name}-devel contains development libraries
 required to use the OCaml bindings for %{name}.
 
 
-%package perl
+%package -n perl-%{name}
 Summary:     Perl bindings for %{name}
 Group:       Development/Libraries
 Requires:    %{name} = %{version}-%{release}
 Requires:    perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
 
 
-%description perl
-%{name}-perl contains Perl bindings for %{name}.
+%description -n perl-%{name}
+perl-%{name} contains Perl bindings for %{name}.
 
 
-%package python
+%package -n python-%{name}
 Summary:     Python bindings for %{name}
 Group:       Development/Libraries
 Requires:    %{name} = %{version}-%{release}
@@ -143,11 +180,11 @@ Requires:    %{name} = %{version}-%{release}
 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
 
-%description python
-%{name}-python contains Python bindings for %{name}.
+%description -n python-%{name}
+python-%{name} contains Python bindings for %{name}.
 
 
-%package ruby
+%package -n ruby-%{name}
 Summary:     Ruby bindings for %{name}
 Group:       Development/Libraries
 Requires:    %{name} = %{version}-%{release}
@@ -157,20 +194,79 @@ Provides:    ruby(guestfs) = %{version}
 %{!?ruby_sitelib: %define ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")}
 %{!?ruby_sitearch: %define ruby_sitearch %(ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']")}
 
-%description ruby
-%{name}-ruby contains Ruby bindings for %{name}.
+%description -n ruby-%{name}
+ruby-%{name} contains Ruby bindings for %{name}.
+
+
+%package java
+Summary:     Java bindings for %{name}
+Group:       Development/Libraries
+Requires:    %{name} = %{version}-%{release}
+Requires:    java >= 1.5.0
+Requires:    jpackage-utils
+
+%description java
+%{name}-java contains Java bindings for %{name}.
+
+If you want to develop software in Java which uses %{name}, then
+you will also need %{name}-java-devel.
+
+
+%package java-devel
+Summary:     Java development package for %{name}
+Group:       Development/Libraries
+Requires:    %{name} = %{version}-%{release}
+Requires:    %{name}-java = %{version}-%{release}
+
+%description java-devel
+%{name}-java-devel contains the tools for developing Java software
+using %{name}.
+
+See also %{name}-javadoc.
+
+
+%package javadoc
+Summary:     Java documentation for %{name}
+Group:       Development/Libraries
+Requires:    %{name} = %{version}-%{release}
+Requires:    %{name}-java = %{version}-%{release}
+Requires:    jpackage-utils
+
+%description javadoc
+%{name}-javadoc contains the Java documentation for %{name}.
 
 
 %prep
 %setup -q
 
+mkdir -p daemon/m4
+
 
 %build
-%configure
+%if %{buildnonet}
+mkdir repo
+find /var/cache/yum/build -type f -name '*.rpm' -print0 | xargs -0 cp -t repo
+createrepo repo
+%define extra --with-mirror=file://$(pwd)/repo --with-repo=fedora-12
+%else
+%define extra %nil
+%endif
+
+./configure \
+  --prefix=%{_prefix} --libdir=%{_libdir} \
+  --mandir=%{_mandir} \
+  --with-java-home=%{java_home} \
+  --with-qemu="qemu-kvm qemu-system-%{_build_arch} qemu" \
+  --enable-debug-command \
+  %{extra}
+
+# This ensures that /usr/sbin/chroot is on the path.  Not needed
+# except for RHEL 5, it shouldn't do any harm on other platforms.
+export PATH=/usr/sbin:$PATH
 
 # 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir
 # not the site dir.
-make INSTALLDIRS=vendor
+make INSTALLDIRS=vendor %{?_smp_mflags}
 
 
 %check
@@ -204,6 +300,7 @@ popd
 
 find $RPM_BUILD_ROOT -name perllocal.pod -delete
 find $RPM_BUILD_ROOT -name .packlist -delete
+find $RPM_BUILD_ROOT -name '*.bs' -delete
 
 rm $RPM_BUILD_ROOT%{python_sitearch}/libguestfsmod.a
 rm $RPM_BUILD_ROOT%{python_sitearch}/libguestfsmod.la
@@ -220,6 +317,13 @@ mkdir -p $RPM_BUILD_ROOT%{ruby_sitearch}
 install -p -m0644 ruby/lib/guestfs.rb $RPM_BUILD_ROOT%{ruby_sitelib}
 install -p -m0755 ruby/ext/guestfs/_guestfs.so $RPM_BUILD_ROOT%{ruby_sitearch}
 
+# Remove static-linked Java bindings.
+rm $RPM_BUILD_ROOT%{_libdir}/libguestfs_jni.a
+rm $RPM_BUILD_ROOT%{_libdir}/libguestfs_jni.la
+
+# Generator shouldn't be executable when we distribute it.
+chmod -x src/generator.ml
+
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -239,24 +343,32 @@ rm -rf $RPM_BUILD_ROOT
 
 %files devel
 %defattr(-,root,root,-)
-%doc HACKING TODO README ex html/guestfs.3.html html/pod.css
+%doc ChangeLog HACKING TODO README ex html/guestfs.3.html html/pod.css
 %doc src/generator.ml
 %{_libdir}/libguestfs.so
 %{_mandir}/man3/guestfs.3*
 %{_includedir}/guestfs.h
 %{_includedir}/guestfs-actions.h
 %{_includedir}/guestfs-structs.h
+%{_libdir}/pkgconfig/libguestfs.pc
 
 
 %files -n guestfish
 %defattr(-,root,root,-)
-%doc html/guestfish.1.html html/pod.css
+%doc html/guestfish.1.html html/pod.css recipes/
 %{_bindir}/guestfish
 %{_mandir}/man1/guestfish.1*
 
 
-%files ocaml
+%files -n virt-inspector
 %defattr(-,root,root,-)
+%{_bindir}/virt-inspector
+%{_mandir}/man1/virt-inspector.1*
+
+
+%files -n ocaml-%{name}
+%defattr(-,root,root,-)
+%doc README
 %{_libdir}/ocaml/guestfs
 %exclude %{_libdir}/ocaml/guestfs/*.a
 %exclude %{_libdir}/ocaml/guestfs/*.cmxa
@@ -266,7 +378,7 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/ocaml/stublibs/*.so.owner
 
 
-%files ocaml-devel
+%files -n ocaml-%{name}-devel
 %defattr(-,root,root,-)
 %doc ocaml/ex
 %{_libdir}/ocaml/guestfs/*.a
@@ -275,31 +387,73 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/ocaml/guestfs/*.mli
 
 
-%files perl
+%files -n perl-%{name}
 %defattr(-,root,root,-)
 %doc perl/examples
 %{perl_vendorarch}/*
 %{_mandir}/man3/Sys::Guestfs.3pm*
 
 
-%files python
+%files -n python-%{name}
 %defattr(-,root,root,-)
+%doc README
 %{python_sitearch}/*
 %{python_sitelib}/*.py
 %{python_sitelib}/*.pyc
 %{python_sitelib}/*.pyo
 
 
-%files ruby
+%files -n ruby-%{name}
 %defattr(-,root,root,-)
+%doc README
 %{ruby_sitelib}/guestfs.rb
 %{ruby_sitearch}/_guestfs.so
 
 
+%files java
+%defattr(-,root,root,-)
+%doc README
+%{_libdir}/libguestfs_jni*.so.*
+%{_datadir}/java/*.jar
+
+
+%files java-devel
+%defattr(-,root,root,-)
+%doc README
+%{_libdir}/libguestfs_jni*.so
+
+
+%files javadoc
+%defattr(-,root,root,-)
+%doc README
+%{_datadir}/javadoc/%{name}-java-%{version}
+
+
 %changelog
-* Thu Apr 16 2009 Richard Jones <rjones@redhat.com> - @VERSION@-1
+* Fri May  8 2009 Richard Jones <rjones@redhat.com> - @VERSION@-1
 - New upstream version @VERSION@.
 
+* Fri May  8 2009 Richard Jones <rjones@redhat.com> - 1.0.21-2
+- New upstream version 1.0.21.
+
+* Thu May  7 2009 Richard Jones <rjones@redhat.com> - 1.0.20-2
+- New upstream version 1.0.20.
+
+* Thu May  7 2009 Richard Jones <rjones@redhat.com> - 1.0.19-1
+- New upstream version 1.0.19.
+
+* Tue Apr 28 2009 Richard Jones <rjones@redhat.com> - 1.0.15-1
+- New upstream version 1.0.15.
+
+* Fri Apr 24 2009 Richard Jones <rjones@redhat.com> - 1.0.12-1
+- New upstream version 1.0.12.
+
+* Wed Apr 22 2009 Richard Jones <rjones@redhat.com> - 1.0.6-1
+- New upstream version 1.0.6.
+
+* Mon Apr 20 2009 Richard Jones <rjones@redhat.com> - 1.0.2-1
+- New upstream version 1.0.2.
+
 * Thu Apr 16 2009 Richard Jones <rjones@redhat.com> - 0.9.9-12
 - Multiple fixes to get it to scratch build in Koji.