-@configure_input@
+# @configure_input@
+
+# Enable to build w/o network.
+%global buildnonet 0
Summary: Access and modify virtual machine disk images
Name: 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
BuildRequires: python-devel
BuildRequires: ruby-devel
BuildRequires: rubygem-rake
+BuildRequires: java >= 1.5.0
+BuildRequires: jpackage-utils
+BuildRequires: java-devel
# Runtime requires:
Requires: qemu >= 0.10-7
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 'ocaml-libguestfs-devel'.
-For OCaml bindings, see 'libguestfs-ocaml-devel'.
+For Python bindings, see 'python-libguestfs'.
-For Python bindings, see 'libguestfs-python'.
+For Ruby bindings, see 'ruby-libguestfs'.
-For Ruby bindings, see 'libguestfs-ruby'.
+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
scripts.
-%package ocaml
+%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}
%{!?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}
%{!?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
%build
-%configure
+%if %{buildnonet}
+mkdir repo
+pushd repo
+cp $(find /var/cache/yum/build -name '*.rpm') .
+createrepo .
+popd
+%define extra --with-mirror=file://$(pwd)/repo --with-repo=fedora-12
+%else
+%define extra %nil
+%endif
+
+./configure \
+ --prefix=%{_prefix} --libdir=%{_libdir} \
+ --with-java-home=%{java_home} \
+ --with-qemu="qemu-kvm qemu-system-%{_build_arch} qemu" \
+ --enable-debug-command \
+ %{extra}
# 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir
# not the site dir.
+# Uses javac which is incompatible with parallel make.
make INSTALLDIRS=vendor
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
# Install ruby bindings by hand.
mkdir -p $RPM_BUILD_ROOT%{ruby_sitelib}
mkdir -p $RPM_BUILD_ROOT%{ruby_sitearch}
-install -p -m0644 ruby/lib/libvirt.rb $RPM_BUILD_ROOT%{ruby_sitelib}
-install -p -m0755 ruby/ext/libvirt/_libvirt.so $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
%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
%{_mandir}/man1/guestfish.1*
-%files ocaml
+%files -n ocaml-%{name}
%defattr(-,root,root,-)
+%doc README
%{_libdir}/ocaml/guestfs
%exclude %{_libdir}/ocaml/guestfs/*.a
%exclude %{_libdir}/ocaml/guestfs/*.cmxa
%{_libdir}/ocaml/stublibs/*.so.owner
-%files ocaml-devel
+%files -n ocaml-%{name}-devel
%defattr(-,root,root,-)
%doc ocaml/ex
%{_libdir}/ocaml/guestfs/*.a
%{_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 Apr 24 2009 Richard Jones <rjones@redhat.com> - @VERSION@-1
- New upstream version @VERSION@.
+* 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.