Jim Meyering
2009-Nov-12 10:35 UTC
[Libguestfs] [PATCH libguestfs] build: revive the ocaml package tests
This reinstates the autogen.sh-based test for the two required ocaml packages. I've tested it by running autoconf.sh first with neither of the two packages installed, then with only ocaml-xml-light installed. In both cases, autogen.sh failed as required. When both were installed, it worked as expected.>From 825d855b225c7c76371c72eae4d505a32c374007 Mon Sep 17 00:00:00 2001From: Jim Meyering <meyering at redhat.com> Date: Thu, 12 Nov 2009 11:34:08 +0100 Subject: [PATCH libguestfs] build: revive the ocaml package tests * autogen.sh: Generalize the ocaml-package-existence test. Remove the git-related part of the old test. --- autogen.sh | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/autogen.sh b/autogen.sh index 9c73a2d..b31ec7b 100755 --- a/autogen.sh +++ b/autogen.sh @@ -42,6 +42,32 @@ if [ ! -z "$BUILDDIR" ]; then CONFIGUREDIR=.. fi +# Ensure that an ocaml package is present for build-from sources. +# This is *not* for anything that is required at configure-time +# when configure is run from a distribution tarball. From those, +# nothing ocaml-related is required. +# ocamlfind cannot detect the presence of -devel packages directly, +# so if $pkg ends in -devel, first check for the base package, and +# if that's found, check for the existence of $base.cmxa in the +# resulting directory. +require_ocaml_pkg() +{ + pkg=$1 + case $pkg in + *-devel) + local base=${pkg%%-devel} + local dir=$(ocamlfind query "$base") || return 1 + test -f "$dir/$base.cmxa" || return 1 + ;; + *) ocamlfind query "$pkg" > /dev/null 2>&1 || return 1;; + esac + return 0 +} + +{ require_ocaml_pkg xml-light && require_ocaml_pkg xml-light-devel; } \ + || { echo "you must have ocaml, ocamlfind, ocaml-xml-light" \ + "and ocaml-xml-light-devel" >&2; exit 1; } + # If no arguments were specified and configure has run before, use the previous # arguments if [ $# == 0 -a -x ./config.status ]; then -- 1.6.5.2.372.gc0502
Richard W.M. Jones
2009-Nov-12 10:38 UTC
[Libguestfs] [PATCH libguestfs] build: revive the ocaml package tests
On Thu, Nov 12, 2009 at 11:35:47AM +0100, Jim Meyering wrote:> This reinstates the autogen.sh-based test for the two > required ocaml packages. > > I've tested it by running autoconf.sh first with neither > of the two packages installed, then with only ocaml-xml-light > installed. In both cases, autogen.sh failed as required. > When both were installed, it worked as expected. > > >From 825d855b225c7c76371c72eae4d505a32c374007 Mon Sep 17 00:00:00 2001 > From: Jim Meyering <meyering at redhat.com> > Date: Thu, 12 Nov 2009 11:34:08 +0100 > Subject: [PATCH libguestfs] build: revive the ocaml package tests > > * autogen.sh: Generalize the ocaml-package-existence test. > Remove the git-related part of the old test. > --- > autogen.sh | 26 ++++++++++++++++++++++++++ > 1 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/autogen.sh b/autogen.sh > index 9c73a2d..b31ec7b 100755 > --- a/autogen.sh > +++ b/autogen.sh > @@ -42,6 +42,32 @@ if [ ! -z "$BUILDDIR" ]; then > CONFIGUREDIR=.. > fi > > +# Ensure that an ocaml package is present for build-from sources. > +# This is *not* for anything that is required at configure-time > +# when configure is run from a distribution tarball. From those, > +# nothing ocaml-related is required. > +# ocamlfind cannot detect the presence of -devel packages directly, > +# so if $pkg ends in -devel, first check for the base package, and > +# if that's found, check for the existence of $base.cmxa in the > +# resulting directory. > +require_ocaml_pkg() > +{ > + pkg=$1 > + case $pkg in > + *-devel) > + local base=${pkg%%-devel} > + local dir=$(ocamlfind query "$base") || return 1 > + test -f "$dir/$base.cmxa" || return 1 > + ;; > + *) ocamlfind query "$pkg" > /dev/null 2>&1 || return 1;; > + esac > + return 0 > +} > + > +{ require_ocaml_pkg xml-light && require_ocaml_pkg xml-light-devel; } \ > + || { echo "you must have ocaml, ocamlfind, ocaml-xml-light" \ > + "and ocaml-xml-light-devel" >&2; exit 1; } > + > # If no arguments were specified and configure has run before, use the previous > # arguments > if [ $# == 0 -a -x ./config.status ]; then > -- > 1.6.5.2.372.gc0502Yes, this looks fine. ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
Possibly Parallel Threads
- [PATCH libguestfs] build: die early if we lack ocaml, ocamlfind or ocaml-xml-light
- [PATCH libguestfs] build: make autogen.sh update .git-module-status, as it should
- [PATCH hivex 02/14] maint: remove unnecessary test-before-free
- "make distcheck" failure
- GNOME + Firefox - Mouse froze - what key combination to revive?