Author: stsp
Date: Mon Jun 27 21:35:57 2011
New Revision: 1140331
URL: http://svn.apache.org/viewvc?rev=1140331&view=rev
Log:
* tools/dev/unix-build/Makefile.svn: Add ruby-1.8.7-p334 as a dependency,
and remove the ENABLE_RUBY_BINDINGS option. This Makefile now always
compiles in support for the ruby bindings.
This mainly works around ruby bindings test failures on OpenBSD if the
sqlite package is installed. Currently, the sqlite version OpenBSD installs
in /usr/local/lib is not compatible with the sqlite version used by
Makefile.svn. This became a problem because we ended up pulling in
-L/usr/local/lib via ruby's linker flags, which libtool ended up
searching before -L$PREFIX/sqlite/lib, so that it also found sqlite
in /usr/local/lib. While Subversion itself was compiled with sqlite
3.7.6.3, the ruby bindings were compiled and run against 3.7.5,
causing test failures since two different library versions were loaded.
I tried to use a newer ruby version (1.9.2) to no avail.
Our bindings seem to only support ruby 1.8 at the moment.
Modified:
subversion/trunk/tools/dev/unix-build/Makefile.svn
Modified: subversion/trunk/tools/dev/unix-build/Makefile.svn
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/dev/unix-build/Makefile.svn?rev=1140331&r1=1140330&r2=1140331&view=diff
==============================================================================
--- subversion/trunk/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/trunk/tools/dev/unix-build/Makefile.svn Mon Jun 27 21:35:57 2011
@@ -30,7 +30,6 @@
# |______________________________________________________________|
ENABLE_PYTHON_BINDINGS ?= yes
-ENABLE_RUBY_BINDINGS ?= yes
ENABLE_PERL_BINDINGS ?= yes
ENABLE_JAVA_BINDINGS ?= no # they don't build with thread-less APR...
USE_APR_ICONV ?= no # set to yes to use APR iconv instead of GNU iconv
@@ -73,6 +72,7 @@ SERF_OLD_VER = 0.3.1
CYRUS_SASL_VER = 2.1.23
SQLITE_VER = 3070603
LIBMAGIC_VER = 5.07
+RUBY_VER = 1.8.7-p334
BDB_DIST = db-$(BDB_VER).tar.gz
APR_ICONV_DIST = apr-iconv-$(APR_ICONV_VER).tar.gz
@@ -82,6 +82,7 @@ SQLITE_DIST = sqlite-autoconf-$(SQLITE_V
CYRUS_SASL_DIST = cyrus-sasl-$(CYRUS_SASL_VER).tar.gz
HTTPD_DIST = httpd-$(HTTPD_VER).tar.bz2
LIBMAGIC_DIST = file-$(LIBMAGIC_VER).tar.gz
+RUBY_DIST = ruby-$(RUBY_VER).tar.gz
DISTFILES = $(DISTDIR)/$(NEON_DIST) \
$(DISTDIR)/$(SERF_DIST) \
@@ -90,7 +91,8 @@ DISTFILES = $(DISTDIR)/$(NEON_DIST) \
$(DISTDIR)/$(APR_ICONV_DIST) \
$(DISTDIR)/$(GNU_ICONV_DIST) \
$(DISTDIR)/$(CYRUS_SASL_DIST) \
- $(DISTDIR)/$(LIBMAGIC_DIST)
+ $(DISTDIR)/$(LIBMAGIC_DIST) \
+ $(DISTDIR)/$(RUBY_DIST)
FETCH_CMD = wget -c
@@ -108,6 +110,7 @@ SERF_OLD_URL = http://serf.googlecode.co
SQLITE_URL = http://www.sqlite.org/$(SQLITE_DIST)
CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST)
LIBMAGIC_URL = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST)
+RUBY_URL = http://ftp.ruby-lang.org/pub/ruby/1.8/$(RUBY_DIST)
BDB_SRCDIR = $(SRCDIR)/db-$(BDB_VER)
APR_SRCDIR = $(SRCDIR)/apr-$(APR_VER)
@@ -121,6 +124,7 @@ SERF_OLD_SRCDIR = $(SRCDIR)/serf-$(SERF_
SQLITE_SRCDIR = $(SRCDIR)/sqlite-autoconf-$(SQLITE_VER)
CYRUS_SASL_SRCDIR = $(SRCDIR)/cyrus-sasl-$(CYRUS_SASL_VER)
LIBMAGIC_SRCDIR = $(SRCDIR)/file-$(LIBMAGIC_VER)
+RUBY_SRCDIR = $(SRCDIR)/ruby-$(RUBY_VER)
SVN_SRCDIR = $(SVN_WC)
BDB_OBJDIR = $(OBJDIR)/db-$(BDB_VER)
@@ -135,6 +139,7 @@ SERF_OLD_OBJDIR = $(OBJDIR)/serf-$(SERF_
SQLITE_OBJDIR = $(OBJDIR)/sqlite-$(SQLITE_VER)
CYRUS_SASL_OBJDIR = $(OBJDIR)/cyrus-sasl-$(CYRUS_SASL_VER)
LIBMAGIC_OBJDIR = $(OBJDIR)/file-$(LIBMAGIC_VER)
+RUBY_OBJDIR = $(OBJDIR)/ruby-$(RUBY_VER)
SVN_OBJDIR = $(OBJDIR)/$(SVN_REL_WC)
# Tweak this for out-of-tree builds. Note that running individual
@@ -155,7 +160,7 @@ endif
all: dirs-create bdb-install apr-install iconv-install apr-util-install \
httpd-install neon-install serf-install serf-old-install \
sqlite-install cyrus-sasl-install libmagic-install \
- svn-install svn-bindings-install
+ ruby-install svn-install svn-bindings-install
# Use these to start a build from the beginning.
reset: dirs-reset bdb-reset apr-reset iconv-reset apr-util-reset \
@@ -888,6 +893,51 @@ $(LIBMAGIC_OBJDIR)/.installed: $(LIBMAGI
(cd $(LIBMAGIC_OBJDIR) && make install)
touch $@
+#######################################################################
+# ruby
+#######################################################################
+
+ruby-retrieve: $(RUBY_OBJDIR)/.retrieved
+ruby-configure: $(RUBY_OBJDIR)/.configured
+ruby-compile: $(RUBY_OBJDIR)/.compiled
+ruby-install: $(RUBY_OBJDIR)/.installed
+ruby-reset:
+ $(foreach f, .retrieved .configured .compiled .installed, \
+ rm -f $(RUBY_OBJDIR)/$(f);)
+
+ruby-clean:
+ -(cd $(RUBY_OBJDIR) && make distclean)
+
+# fetch distfile for ruby
+$(DISTDIR)/$(RUBY_DIST):
+ cd $(DISTDIR) && $(FETCH_CMD) $(RUBY_URL)
+
+# retrieve ruby
+#
+$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST)
+ [ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR)
+ tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST)
+ touch $@
+
+# configure ruby
+$(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved
+ cd $(RUBY_OBJDIR) \
+ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\
+ $(RUBY_SRCDIR)/configure \
+ --prefix=$(PREFIX)/ruby \
+ --enable-shared \
+ --disable-pthread
+ touch $@
+
+# compile ruby
+$(RUBY_OBJDIR)/.compiled: $(RUBY_OBJDIR)/.configured
+ (cd $(RUBY_OBJDIR) && make)
+ touch $@
+
+# install ruby and the test-unit gem needed to run SVN bindings tests
+$(RUBY_OBJDIR)/.installed: $(RUBY_OBJDIR)/.compiled
+ (cd $(RUBY_OBJDIR) && make install)
+ touch $@
#######################################################################
# svn
@@ -1012,6 +1062,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib" \
LD_LIBRARY_PATH="$(PREFIX)/bdb/lib:$(PREFIX)/iconv/lib:$$LD_LIBRARY_PATH" \
GREP="`which grep`" \
+ PATH=$(PREFIX)/ruby/bin:$$PATH \
$(SVN_SRCDIR)/configure \
--enable-maintainer-mode \
--with-ssl \
@@ -1049,10 +1100,8 @@ $(SVN_OBJDIR)/.bindings-compiled: $(SVN_
cd $(svn_builddir) \
&& make swig-py; \
fi
- if [ $(ENABLE_RUBY_BINDINGS) = yes ]; then \
- cd $(svn_builddir) \
- && make swig-rb; \
- fi
+ cd $(svn_builddir) && \
+ PATH=$(PREFIX)/ruby/bin:$$PATH make swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
&& make swig-pl; \
@@ -1068,10 +1117,8 @@ $(SVN_OBJDIR)/.bindings-installed: $(SVN
cd $(svn_builddir) \
&& make install-swig-py; \
fi
- if [ $(ENABLE_RUBY_BINDINGS) = yes ]; then \
- cd $(svn_builddir) \
- && make install-swig-rb; \
- fi
+ cd $(svn_builddir) && \
+ PATH=$(PREFIX)/ruby/bin:$$PATH make install-swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
&& make install-swig-pl-lib; \
@@ -1157,7 +1204,7 @@ endif
mv -f [email protected] $@
# We need this to make sure some targets below pick up the right libraries
-LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/iconv/lib:$(PREFIX)/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sasl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/svn-$(WC)/lib
+LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/iconv/lib:$(PREFIX)/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sasl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/ruby/lib:$(PREFIX)/svn-$(WC)/lib
.PHONY: libpath
libpath:
@@ -1276,14 +1323,13 @@ svn-check-swig-py:
# We add the svn prefix to PATH here because the ruby tests
# attempt to start an svnserve binary found in PATH.
svn-check-swig-rb:
- -if [ $(ENABLE_RUBY_BINDINGS) = yes ]; then \
- (cd $(svn_builddir)/subversion/bindings/swig/ruby/test && \
- env RUBYLIB=$(RUBYLIB) \
- LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
- PATH=$(SVN_PREFIX)/bin:$$PATH \
- ruby run-test.rb --verbose=normal 2>&1) | \
- tee $(svn_builddir)/tests.log.bindings.rb; \
- fi
+ (cd $(svn_builddir)/subversion/bindings/swig/ruby/test && \
+ env RUBYLIB=$(RUBYLIB) \
+ LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ PATH=$(SVN_PREFIX)/bin:$$PATH \
+ $(PREFIX)/ruby/bin/ruby run-test.rb \
+ --verbose=verbose 2>&1) | \
+ tee $(svn_builddir)/tests.log.bindings.rb
svn-check-javahl:
-if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
@@ -1328,7 +1374,7 @@ endif
@echo "swig: `swig -version | grep Version | cut -d' ' -f3`"
@echo "python: `python --version 2>&1 | cut -d' ' -f2`"
@echo "perl: `eval \`perl -V:version\`; echo $$version`"
- @echo "ruby: `ruby --version | cut -d' ' -f2`"
+ @echo "ruby: $(RUBY_VER)"
ifeq ($(ENABLE_JAVA_BINDINGS),yes)
@echo "java: `java -version 2>&1 | grep version | cut -d' ' -f3
| sed -e 's/\"//g'`"
endif