Correctly free memory in RHashtable binding for OCaml & Python.
[libguestfs.git] / libguestfs.spec.in
index c9bdde6..0aaa10b 100644 (file)
@@ -1,6 +1,6 @@
 # @configure_input@
 
-%global mirror http://hakodate/mirrors/fedora/10/Fedora/x86_64/os/
+#%global mirror http://hakodate/mirrors/fedora/10/Fedora/x86_64/os/
 
 Summary:     Access and modify virtual machine disk images
 Name:        libguestfs
@@ -12,10 +12,26 @@ 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
 
+# Basic build requirements:
 BuildRequires: /usr/bin/pod2man
 BuildRequires: /usr/bin/pod2text
-BuildRequires: febootstrap
-
+BuildRequires: febootstrap >= 1.5
+BuildRequires: augeas-devel >= 0.5.0
+BuildRequires: readline-devel
+BuildRequires: qemu
+
+# These are only required if you want to build the bindings for
+# different languages:
+BuildRequires: ocaml
+BuildRequires: ocaml-findlib-devel
+BuildRequires: perl-devel
+BuildRequires: perl-Test-Simple
+BuildRequires: perl-Test-Pod
+BuildRequires: perl-Test-Pod-Coverage
+BuildRequires: perl-ExtUtils-MakeMaker
+BuildRequires: python-devel
+
+# Runtime requires:
 Requires:    qemu
 
 
@@ -43,6 +59,12 @@ programs.
 See also the 'guestfish' package for shell scripting and command line
 access.
 
+For Perl bindings, see 'libguestfs-perl'.
+
+For OCaml bindings, see 'libguestfs-ocaml-devel'.
+
+For Python bindings, see 'libguestfs-python'.
+
 
 %package devel
 Summary:     Development tools and libraries for %{name}
@@ -69,34 +91,115 @@ modifying virtual machine disk images from the command line and shell
 scripts.
 
 
+%package ocaml
+Summary:     OCaml bindings for %{name}
+Group:       Development/Libraries
+Requires:    %{name} = %{version}-%{release}
+
+
+%description ocaml
+%{name}-ocaml 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.
+
+
+%package ocaml-devel
+Summary:     OCaml bindings for %{name}
+Group:       Development/Libraries
+Requires:    %{name}-ocaml = %{version}-%{release}
+
+
+%description ocaml-devel
+%{name}-ocaml-devel contains development libraries
+required to use the OCaml bindings for %{name}.
+
+
+%package perl
+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}.
+
+
+%package python
+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}.
+
+
 %prep
 %setup -q
 
 
 %build
-%configure --with-mirror=%{mirror}
-make
+#%configure --with-mirror=%{mirror}
+%configure
+
+# 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir
+# not the site dir.
+make INSTALLDIRS=vendor
+
+
+%check
+test -n "$QUICK_RPMBUILD" || make check
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
+
 make DESTDIR=$RPM_BUILD_ROOT install
 
 rm $RPM_BUILD_ROOT%{_libdir}/libguestfs.a
 rm $RPM_BUILD_ROOT%{_libdir}/libguestfs.la
 
 # Clean up the examples/ directory which will get installed in %doc.
-pushd examples
+# Note we can't delete the original examples/Makefile because that
+# will be needed by the check section later in the RPM build.
+cp -a examples ex
+pushd ex
 make clean
 rm Makefile*
 rm -rf .deps .libs
 popd
 
+# Same for ocaml/examples.
+cp -a ocaml/examples ocaml/ex
+pushd ocaml/ex
+make clean
+rm Makefile*
+popd
+
+find $RPM_BUILD_ROOT -name perllocal.pod -delete
+find $RPM_BUILD_ROOT -name .packlist -delete
+
+rm $RPM_BUILD_ROOT%{python_sitearch}/libguestfsmod.a
+rm $RPM_BUILD_ROOT%{python_sitearch}/libguestfsmod.la
+
+mkdir -p $RPM_BUILD_ROOT%{python_sitelib}
+mv $RPM_BUILD_ROOT%{python_sitearch}/guestfs.py* \
+  $RPM_BUILD_ROOT%{python_sitelib}/
+
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+
 %files
 %defattr(-,root,root,-)
 %doc COPYING
@@ -106,16 +209,55 @@ rm -rf $RPM_BUILD_ROOT
 
 %files devel
 %defattr(-,root,root,-)
-%doc HACKING README examples
+%doc 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
 
 
 %files -n guestfish
 %defattr(-,root,root,-)
+%doc html/guestfish.1.html html/pod.css
 %{_bindir}/guestfish
+%{_mandir}/man1/guestfish.1*
+
+
+%files ocaml
+%defattr(-,root,root,-)
+%{_libdir}/ocaml/guestfs
+%exclude %{_libdir}/ocaml/guestfs/*.a
+%exclude %{_libdir}/ocaml/guestfs/*.cmxa
+%exclude %{_libdir}/ocaml/guestfs/*.cmx
+%exclude %{_libdir}/ocaml/guestfs/*.mli
+%{_libdir}/ocaml/stublibs/*.so
+%{_libdir}/ocaml/stublibs/*.so.owner
+
+
+%files ocaml-devel
+%defattr(-,root,root,-)
+%doc ocaml/ex
+%{_libdir}/ocaml/guestfs/*.a
+%{_libdir}/ocaml/guestfs/*.cmxa
+%{_libdir}/ocaml/guestfs/*.cmx
+%{_libdir}/ocaml/guestfs/*.mli
+
+
+%files perl
+%defattr(-,root,root,-)
+%doc perl/examples
+%{perl_vendorarch}/*
+%{_mandir}/man3/Sys::Guestfs.3pm*
+
+
+%files python
+%defattr(-,root,root,-)
+%{python_sitearch}/*
+%{python_sitelib}/*.py
+%{python_sitelib}/*.pyc
+%{python_sitelib}/*.pyo
 
 
 %changelog