hivex: Fix Ruby bindings for 1.9; let the user explicitly choose ruby, rake
authorHilko Bengen <bengen@hilluzination.de>
Wed, 7 Dec 2011 20:41:29 +0000 (21:41 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 9 Dec 2011 10:05:36 +0000 (10:05 +0000)
configure.ac
generator/generator.ml
ruby/Makefile.am
ruby/Rakefile.in
ruby/run-ruby-tests

index 8651c7b..33c09db 100644 (file)
@@ -312,8 +312,19 @@ AM_CONDITIONAL([HAVE_PYTHON],
     [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"])
 
 dnl Check for Ruby and rake (optional, for Ruby bindings).
-AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
-AC_CHECK_PROG([RAKE],[rake],[rake],[no])
+AC_ARG_ENABLE([ruby],
+        AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
+        [],
+        [enable_ruby=yes])
+AS_IF([test "x$enable_ruby" != "xno"],
+        [
+        AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
+        AC_CHECK_PROG([RAKE],[rake],[rake],[no])
+        AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
+        AC_SUBST(RAKE)
+        ])
+AM_CONDITIONAL([HAVE_RUBY],
+    [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
 
 AM_CONDITIONAL([HAVE_RUBY],
     [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
index 065c25d..dd13d6a 100755 (executable)
@@ -3265,6 +3265,14 @@ and generate_ruby_c () =
 #define RARRAY_LEN(r) (RARRAY((r))->len)
 #endif
 
+#ifndef RSTRING_LEN
+#define RSTRING_LEN(r) (RSTRING((r))->len)
+#endif
+
+#ifndef RSTRING_PTR
+#define RSTRING_PTR(r) (RSTRING((r))->ptr)
+#endif
+
 static VALUE m_hivex;                  /* hivex module */
 static VALUE c_hivex;                  /* hive_h handle */
 static VALUE e_Error;                  /* used for all errors */
@@ -3287,8 +3295,8 @@ get_value (VALUE valv, hive_set_value *val)
 
   val->key = StringValueCStr (key);
   val->t = NUM2ULL (type);
-  val->len = RSTRING (value)->len;
-  val->value = RSTRING (value)->ptr;
+  val->len = RSTRING_LEN (value);
+  val->value = RSTRING_PTR (value);
 }
 
 static hive_set_value *
index b323d7e..efc2211 100644 (file)
@@ -40,14 +40,15 @@ if HAVE_RUBY
 TESTS = run-ruby-tests
 
 TESTS_ENVIRONMENT = \
-       LD_LIBRARY_PATH=$(top_builddir)/src/.libs
+       LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
+       RUBY=$(RUBY) RAKE=$(RAKE)
 
 all:
-       rake build
-       rake rdoc
+       $(RAKE) build
+       $(RAKE) rdoc
 
-RUBY_SITELIB := $(shell ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
-RUBY_SITEARCH := $(shell ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']")
+RUBY_SITELIB := $(shell $(RUBY) -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
+RUBY_SITEARCH := $(shell $(RUBY) -rrbconfig -e "puts Config::CONFIG['sitearchdir']")
 
 install:
        $(MKDIR_P) $(DESTDIR)$(RUBY_SITELIB)
index 2587476..4cb2d67 100644 (file)
@@ -38,7 +38,7 @@ CLOBBER.include [ "@builddir@/config.save", "@builddir@/ext/**/mkmf.log",
 # Build locally
 
 file MAKEFILE => EXT_CONF do |t|
-     unless sh "top_srcdir=$(pwd)/@top_srcdir@; top_builddir=$(pwd)/@top_builddir@; export ARCHFLAGS=\"-arch $(uname -m)\"; mkdir -p @builddir@/ext/hivex; cd @builddir@/ext/hivex; ruby #{EXT_CONF} --with-_hivex-include=$top_srcdir/lib --with-_hivex-lib=$top_builddir/lib/.libs"
+     unless sh "top_srcdir=$(pwd)/@top_srcdir@; top_builddir=$(pwd)/@top_builddir@; export ARCHFLAGS=\"-arch $(uname -m)\"; mkdir -p @builddir@/ext/hivex; cd @builddir@/ext/hivex; @RUBY@ #{EXT_CONF} --with-_hivex-include=$top_srcdir/lib --with-_hivex-lib=$top_builddir/lib/.libs"
          $stderr.puts "Failed to run extconf"
          break
      end
index 1596c87..74afb9f 100755 (executable)
@@ -24,6 +24,6 @@ export LD_LIBRARY_PATH=../lib/.libs
 # is bound to fail because they all use a single test image file).
 
 for f in tests/tc_*.rb; do
-    echo rake test "$@" TEST="$f"
-    rake test "$@" TEST="$f"
+    echo $RAKE test "$@" TEST="$f"
+    $RAKE test "$@" TEST="$f"
 done