[libvirt] [PATCH 2/2] Add files for performing automated builds

Daniel P. Berrange berrange at redhat.com
Wed Mar 2 13:57:11 UTC 2011


* 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




More information about the libvir-list mailing list