* MANIFEST: Include autogen.sh, autobuild.sh, ocaml-libvirt.spec * Makefile.in: Add EXTRA_DIST to list files which should be in tar.gz, but not committed in GIT * autogen.sh: Re-generate autotools files & run configure * autobuild.sh: Perform a fully automated build from source + RPM build * configure.ac: Generate ocaml-libvirt.spec * ocaml-libvirt.spec.in: Generic RPM specfile --- .gitignore | 1 + MANIFEST | 3 + Makefile.in | 2 +- autobuild.sh | 45 +++++++++++++++++ autogen.sh | 41 ++++++++++++++++ configure.ac | 1 + ocaml-libvirt.spec.in | 126 +++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 218 insertions(+), 1 deletions(-) create mode 100755 autobuild.sh create mode 100755 autogen.sh create mode 100644 ocaml-libvirt.spec.in diff --git a/.gitignore b/.gitignore index 25bceb8..30b240f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ META ocaml-libvirt-*.tar.gz ocaml-libvirt-*.exe +ocaml-libvirt.spec html configure config.log diff --git a/MANIFEST b/MANIFEST index fc82490..31e316f 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,4 +1,6 @@ aclocal.m4 +autobuild.sh +autogen.sh ChangeLog config.guess config.h.in @@ -31,6 +33,7 @@ META.in mlvirsh/.depend mlvirsh/Makefile.in mlvirsh/mlvirsh.ml +ocaml-libvirt.spec.in po/ja.po po/LINGUAS po/Makefile.in diff --git a/Makefile.in b/Makefile.in index c2e1f17..8df009d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -93,7 +93,7 @@ dist: ChangeLog $(MAKE) check-manifest rm -rf $(PACKAGE)-$(VERSION) mkdir $(PACKAGE)-$(VERSION) - tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf - + tar -cf - -T MANIFEST $(PACKAGE).spec | tar -C $(PACKAGE)-$(VERSION) -xf - $(INSTALL) -m 0755 configure $(PACKAGE)-$(VERSION)/ tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/autobuild.sh b/autobuild.sh new file mode 100755 index 0000000..de4505a --- /dev/null +++ b/autobuild.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e +set -v + +# Make things clean. + +test -n "$1" && RESULTS=$1 || RESULTS=results.log +: ${AUTOBUILD_INSTALL_ROOT=$HOME/builder} + +test -f Makefile && make -k distclean || : + +./autogen.sh --prefix="$AUTOBUILD_INSTALL_ROOT" + +# If the MAKEFLAGS envvar does not yet include a -j option, +# add -jN where N depends on the number of processors. +case $MAKEFLAGS in + *-j*) ;; + *) n=$(getconf _NPROCESSORS_ONLN 2> /dev/null) + test "$n" -gt 0 || n=1 + n=$(expr $n + 1) + MAKEFLAGS="$MAKEFLAGS -j$n" + export MAKEFLAGS + ;; +esac + +make +make install + +rm -f *.tar.gz +make dist + +if [ -n "$AUTOBUILD_COUNTER" ]; then + EXTRA_RELEASE=".auto$AUTOBUILD_COUNTER" +else + NOW=`date +"%s"` + EXTRA_RELEASE=".$USER$NOW" +fi + +if [ -f /usr/bin/rpmbuild ]; then + rpmbuild --nodeps \ + --define "extra_release $EXTRA_RELEASE" \ + --define "_sourcedir `pwd`" \ + -ba --clean ocaml-libvirt.spec +fi diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..3f646ba --- /dev/null +++ b/autogen.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +THEDIR=`pwd` +cd $srcdir +DIE=0 + + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have autoconf installed to compile libvirt." + echo "Download the appropriate package for your distribution," + echo "or see http://www.gnu.org/software/autoconf" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "I am going to run ./configure with no arguments - if you wish " + echo "to pass any to it, please specify them on the $0 command line." +fi + +autoreconf -i -f + +cd $THEDIR + +if test x$OBJ_DIR != x; then + mkdir -p "$OBJ_DIR" + cd "$OBJ_DIR" +fi + +$srcdir/configure "$@" && { + echo + echo "Now type 'make' to compile ocaml-libvirt." +} diff --git a/configure.ac b/configure.ac index 8a3d8ad..e8286a1 100644 --- a/configure.ac +++ b/configure.ac @@ -306,6 +306,7 @@ dnl Produce output files. AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([META libvirt/libvirt_version.ml + ocaml-libvirt.spec Makefile Make.rules po/Makefile diff --git a/ocaml-libvirt.spec.in b/ocaml-libvirt.spec.in new file mode 100644 index 0000000..7ba91e6 --- /dev/null +++ b/ocaml-libvirt.spec.in @@ -0,0 +1,126 @@ +%define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0) +%define debug_package %{nil} + +# Select what subpackages to build. +%define build_mlvirsh 1 + +Name: ocaml-libvirt +Version: @PACKAGE_VERSION@ +Release: 1%{?dist}%{?extra_release} +Summary: OCaml binding for libvirt + +Group: Development/Libraries +License: LGPLv2+ +URL: http://libvirt.org/ocaml/ +Source0: http://libvirt.org/sources/ocaml/%{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +ExcludeArch: sparc64 s390 s390x + +BuildRequires: ocaml >= 3.10.0 +BuildRequires: ocaml-ocamldoc +BuildRequires: ocaml-findlib-devel + +BuildRequires: libvirt-devel >= 0.2.1 +BuildRequires: perl +BuildRequires: gawk + +%define _use_internal_dependency_generator 0 +%define __find_requires /usr/lib/rpm/ocaml-find-requires.sh +%define __find_provides /usr/lib/rpm/ocaml-find-provides.sh + +%description +OCaml binding for libvirt. + + +%package devel +Summary: Development files for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + + +%description devel +The %{name}-devel package contains libraries and signature files for +developing applications that use %{name}. + + +%if %build_mlvirsh +%package -n mlvirsh +Summary: OCaml virsh utility +Group: Applications/Emulators +License: GPLv2+ + + +%description -n mlvirsh +OCaml virtualization shell. +%endif + + +%prep +%setup -q + + +%build +CFLAGS="$RPM_OPT_FLAGS" ./configure --libdir=%{_libdir} --prefix=%{_prefix} +make all doc +%if %opt +make opt +strip libvirt/dllmllibvirt.so +%endif + + +%install +# These rules work if the library uses 'ocamlfind install' to install itself. +rm -rf $RPM_BUILD_ROOT +export DESTDIR=$RPM_BUILD_ROOT +export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml +mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs +mkdir -p $RPM_BUILD_ROOT%{_bindir} +%if %opt +make install-opt +%else +make install-byte +%endif + +%if !%build_mlvirsh +rm -f $RPM_BUILD_ROOT%{_bindir}/mlvirsh +%endif + + +%clean +rm -rf $RPM_BUILD_ROOT + + +%files +%defattr(-,root,root,-) +%doc COPYING.LIB README ChangeLog +%{_libdir}/ocaml/libvirt +%if %opt +%exclude %{_libdir}/ocaml/libvirt/*.a +%exclude %{_libdir}/ocaml/libvirt/*.cmxa +%exclude %{_libdir}/ocaml/libvirt/*.cmx +%endif +%exclude %{_libdir}/ocaml/libvirt/*.mli +%{_libdir}/ocaml/stublibs/*.so +%{_libdir}/ocaml/stublibs/*.so.owner + + +%files devel +%defattr(-,root,root,-) +%doc COPYING.LIB README TODO.libvirt ChangeLog html/* +%if %opt +%{_libdir}/ocaml/libvirt/*.a +%{_libdir}/ocaml/libvirt/*.cmxa +%{_libdir}/ocaml/libvirt/*.cmx +%endif +%{_libdir}/ocaml/libvirt/*.mli + + +%if %build_mlvirsh +%files -n mlvirsh +%defattr(-,root,root,-) +%doc COPYING README ChangeLog +%{_bindir}/mlvirsh +%endif + + +%changelog -- 1.7.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list