summaryrefslogtreecommitdiff
path: root/tools/dev/unix-build/Makefile.svn
diff options
context:
space:
mode:
Diffstat (limited to 'tools/dev/unix-build/Makefile.svn')
-rw-r--r--tools/dev/unix-build/Makefile.svn385
1 files changed, 281 insertions, 104 deletions
diff --git a/tools/dev/unix-build/Makefile.svn b/tools/dev/unix-build/Makefile.svn
index 0c6615d..0bdddd5 100644
--- a/tools/dev/unix-build/Makefile.svn
+++ b/tools/dev/unix-build/Makefile.svn
@@ -29,9 +29,13 @@
# | the bot's health after making changes to this file. |
# |______________________________________________________________|
-ENABLE_PYTHON_BINDINGS ?= yes
ENABLE_PERL_BINDINGS ?= yes
-ENABLE_JAVA_BINDINGS ?= no # they don't build with thread-less APR...
+THREADING ?= yes
+ifeq ($(THREADING),yes)
+ENABLE_JAVA_BINDINGS ?= yes
+else
+ENABLE_JAVA_BINDINGS ?= no
+endif
USE_APR_ICONV ?= no # set to yes to use APR iconv instead of GNU iconv
PARALLEL ?= 1
CLEANUP ?= 1
@@ -61,18 +65,21 @@ OBJDIR = $(PWD)/objdir
BDB_MAJOR_VER = 4.7
BDB_VER = $(BDB_MAJOR_VER).25
-APR_VER = 1.4.5
+APR_VER = 1.4.6
APR_ICONV_VER = 1.2.1
-GNU_ICONV_VER = 1.13.1
-APR_UTIL_VER = 1.3.12
-HTTPD_VER = 2.2.19
+GNU_ICONV_VER = 1.14
+APR_UTIL_VER = 1.4.1
+HTTPD_VER = 2.2.22
NEON_VER = 0.29.6
-SERF_VER = 0.7.x
+SERF_VER = 1.2.0
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
+CYRUS_SASL_VER = 2.1.25
+SQLITE_VER = 3071600
+LIBMAGIC_VER = 5.11
+RUBY_VER = 1.8.7-p358
+BZ2_VER = 1.0.6
+PYTHON_VER = 2.7.3
+JUNIT_VER = 4.10
BDB_DIST = db-$(BDB_VER).tar.gz
APR_ICONV_DIST = apr-iconv-$(APR_ICONV_VER).tar.gz
@@ -83,6 +90,9 @@ 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
+BZ2_DIST = bzip2-$(BZ2_VER).tar.gz
+PYTHON_DIST = Python-$(PYTHON_VER).tgz
+JUNIT_DIST = junit-${JUNIT_VER}.jar
DISTFILES = $(DISTDIR)/$(NEON_DIST) \
$(DISTDIR)/$(SERF_DIST) \
@@ -92,7 +102,10 @@ DISTFILES = $(DISTDIR)/$(NEON_DIST) \
$(DISTDIR)/$(GNU_ICONV_DIST) \
$(DISTDIR)/$(CYRUS_SASL_DIST) \
$(DISTDIR)/$(LIBMAGIC_DIST) \
- $(DISTDIR)/$(RUBY_DIST)
+ $(DISTDIR)/$(RUBY_DIST) \
+ $(DISTDIR)/$(BZ2_DIST) \
+ $(DISTDIR)/$(PYTHON_DIST) \
+ $(DISTDIR)/$(JUNIT_DIST)
FETCH_CMD = wget -c
@@ -105,12 +118,16 @@ APR_UTIL_URL = http://svn.apache.org/repos/asf/apr/apr-util
HTTPD_URL = http://archive.apache.org/dist/httpd/$(HTTPD_DIST)
NEON_URL = http://webdav.org/neon/$(NEON_DIST)
#SERF_URL = http://serf.googlecode.com/files/$(SERF_DIST)
-SERF_URL = http://serf.googlecode.com/svn/branches/$(SERF_VER)
+SERF_URL = http://serf.googlecode.com/svn/tags/$(SERF_VER)
SERF_OLD_URL = http://serf.googlecode.com/svn/tags/$(SERF_OLD_VER)
-SQLITE_URL = http://www.sqlite.org/$(SQLITE_DIST)
+SQLITE_URL = http://www.sqlite.org/2013/$(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)
+BZ2_URL = http://bzip.org/$(BZ2_VER)/$(BZ2_DIST)
+PYTHON_URL = http://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST)
+JUNIT_URL = http://cloud.github.com/downloads/KentBeck/junit/$(JUNIT_DIST)
+
BDB_SRCDIR = $(SRCDIR)/db-$(BDB_VER)
APR_SRCDIR = $(SRCDIR)/apr-$(APR_VER)
@@ -125,6 +142,8 @@ 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)
+BZ2_SRCDIR = $(SRCDIR)/bzip2-$(BZ2_VER)
+PYTHON_SRCDIR = $(SRCDIR)/Python-$(PYTHON_VER)
SVN_SRCDIR = $(SVN_WC)
BDB_OBJDIR = $(OBJDIR)/db-$(BDB_VER)
@@ -140,6 +159,8 @@ 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)
+BZ2_OBJDIR = $(OBJDIR)/bzip2-$(BZ2_VER)
+PYTHON_OBJDIR = $(OBJDIR)/python-$(PYTHON_VER)
SVN_OBJDIR = $(OBJDIR)/$(SVN_REL_WC)
# Tweak this for out-of-tree builds. Note that running individual
@@ -151,6 +172,9 @@ ifdef PROFILE
PROFILE_CFLAGS=-pg
endif
+# 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)/ruby/lib:$(PREFIX)/python/lib:$(PREFIX)/svn-$(WC)/lib
+
#######################################################################
# Main targets.
#######################################################################
@@ -160,17 +184,19 @@ 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 \
- ruby-install svn-install svn-bindings-install
+ ruby-install bz2-install python-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 \
httpd-reset neon-reset serf-reset serf-old-reset sqlite-reset \
- cyrus-sasl-reset libmagic-reset ruby-reset svn-reset
+ cyrus-sasl-reset libmagic-reset ruby-reset python-reset \
+ bz2-reset svn-reset
# Use to save disk space.
clean: bdb-clean apr-clean iconv-clean apr-util-clean httpd-clean \
neon-clean serf-clean serf-old-clean sqlite-clean cyrus-sasl-clean \
- libmagic-clean ruby-clean svn-clean
+ libmagic-clean ruby-clean bz2-clean python-clean svn-clean
# Nukes everything (including installed binaries!)
# Use this to start ALL OVER AGAIN! Use with caution!
@@ -276,26 +302,26 @@ $(APR_OBJDIR)/.retrieved:
fi
touch $@
-ifdef THREADING
+ifeq ($(THREADING),yes)
THREADS_FLAG=--enable-threads
else
THREADS_FLAG=--disable-threads
endif
+ifdef POOL_DEBUG
+POOL_DEBUG_FLAG=--enable-pool-debug=all
+endif
+
# configure apr
$(APR_OBJDIR)/.configured: $(APR_OBJDIR)/.retrieved
- cp $(APR_SRCDIR)/build/apr_hints.m4 \
- $(APR_SRCDIR)/build/apr_hints.m4.orig
- cat $(APR_SRCDIR)/build/apr_hints.m4.orig \
- | sed -e '/^.*APR_ADDTO(CPPFLAGS, \[-D_POSIX_THREADS\]).*$$/d' \
- > $(APR_SRCDIR)/build/apr_hints.m4
cd $(APR_SRCDIR) && ./buildconf
cd $(APR_OBJDIR) \
&& env CFLAGS="-O0 -g $(PROFILE_CFLAGS)" GREP="`which grep`" \
$(APR_SRCDIR)/configure \
--prefix=$(PREFIX)/apr \
--enable-maintainer-mode \
- $(THREADS_FLAG)
+ $(THREADS_FLAG) \
+ $(POOL_DEBUG_FLAG)
touch $@
# compile apr
@@ -598,9 +624,19 @@ $(DISTDIR)/$(NEON_DIST):
cd $(DISTDIR) && $(FETCH_CMD) $(NEON_URL)
# retrieve neon
+NEON_SVN_URL=http://svn.webdav.org/repos/projects/neon/trunk
$(NEON_OBJDIR)/.retrieved: $(DISTDIR)/$(NEON_DIST)
[ -d $(NEON_OBJDIR) ] || mkdir -p $(NEON_OBJDIR)
tar -C $(SRCDIR) -zxf $(DISTDIR)/$(NEON_DIST)
+ # fix build with OpenSSL lacking SSLv2 support:
+ cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
+ $(NEON_SVN_URL)/src/ne_openssl.c | patch -p0
+ cd $(NEON_SRCDIR)/src && svn diff -c 1872 \
+ $(NEON_SVN_URL)/src/ne_openssl.c | patch -p0
+ cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
+ $(NEON_SVN_URL)/src/ne_ssl.h | patch -p0
+ cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
+ $(NEON_SVN_URL)/src/ne_session.c | patch -p0
touch $@
# OpenBSD does not have krb5-config in PATH, but the neon port has
@@ -758,7 +794,7 @@ $(SQLITE_OBJDIR)/.retrieved: $(DISTDIR)/$(SQLITE_DIST)
tar -C $(SRCDIR) -zxf $(DISTDIR)/$(SQLITE_DIST)
touch $@
-ifdef THREADING
+ifeq ($(THREADING),yes)
THREADSAFE_FLAG=--enable-threadsafe
else
THREADSAFE_FLAG=--disable-threadsafe
@@ -820,6 +856,14 @@ ifeq ($(UNAME),OpenBSD)
done
chmod +x $(CYRUS_SASL_SRCDIR)/configure
endif
+ # Fixes excessive auth log spam from sasl if broken .la files exist
+ sed 's/SASL_LOG_WARN/SASL_LOG_DEBUG/' \
+ < $(CYRUS_SASL_SRCDIR)/lib/dlopen.c \
+ > $(CYRUS_SASL_SRCDIR)/lib/dlopen.c.patched
+ mv $(CYRUS_SASL_SRCDIR)/lib/dlopen.c.patched \
+ $(CYRUS_SASL_SRCDIR)/lib/dlopen.c
+ # Fix a weird autotools error about missing cmulocal dir
+ (cd $(CYRUS_SASL_SRCDIR)/saslauthd/ && ln -sf ../cmulocal)
touch $@
# configure cyrus-sasl
@@ -919,6 +963,12 @@ $(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST)
tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST)
touch $@
+ifeq ($(THREADING),yes)
+THREADSAFE_FLAG=--enable-pthread
+else
+THREADSAFE_FLAG=--disable-pthread
+endif
+
# configure ruby
$(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved
cd $(RUBY_OBJDIR) \
@@ -926,7 +976,7 @@ $(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved
$(RUBY_SRCDIR)/configure \
--prefix=$(PREFIX)/ruby \
--enable-shared \
- --disable-pthread
+ $(THREADSAFE_FLAG)
touch $@
# compile ruby
@@ -934,12 +984,129 @@ $(RUBY_OBJDIR)/.compiled: $(RUBY_OBJDIR)/.configured
(cd $(RUBY_OBJDIR) && make)
touch $@
-# install ruby and the test-unit gem needed to run SVN bindings tests
+# install ruby
$(RUBY_OBJDIR)/.installed: $(RUBY_OBJDIR)/.compiled
(cd $(RUBY_OBJDIR) && make install)
touch $@
#######################################################################
+# bz2
+#######################################################################
+
+bz2-retrieve: $(BZ2_OBJDIR)/.retrieved
+bz2-compile: $(BZ2_OBJDIR)/.compiled
+bz2-install: $(BZ2_OBJDIR)/.installed
+bz2-reset:
+ $(foreach f, .retrieved .configured .compiled .installed, \
+ rm -f $(BZ2_OBJDIR)/$(f);)
+
+bz2-clean:
+ -(cd $(BZ2_SRCDIR) && make distclean)
+
+# fetch distfile for bz2
+$(DISTDIR)/$(BZ2_DIST):
+ cd $(DISTDIR) && $(FETCH_CMD) $(BZ2_URL)
+
+# retrieve bz2
+$(BZ2_OBJDIR)/.retrieved: $(DISTDIR)/$(BZ2_DIST)
+ [ -d $(BZ2_OBJDIR) ] || mkdir -p $(BZ2_OBJDIR)
+ tar -C $(SRCDIR) -zxf $(DISTDIR)/$(BZ2_DIST)
+ touch $@
+
+# compile bz2
+$(BZ2_OBJDIR)/.compiled: $(BZ2_OBJDIR)/.retrieved
+ (cd $(BZ2_SRCDIR) && make CFLAGS="-g $(PROFILE_CFLAGS) -fPIC")
+ touch $@
+
+# install bz2
+$(BZ2_OBJDIR)/.installed: $(BZ2_OBJDIR)/.compiled
+ (cd $(BZ2_SRCDIR) && make install PREFIX=$(PREFIX)/bz2)
+ touch $@
+
+
+#######################################################################
+# python
+#######################################################################
+
+python-retrieve: $(PYTHON_OBJDIR)/.retrieved
+python-configure: $(PYTHON_OBJDIR)/.configured
+python-compile: $(PYTHON_OBJDIR)/.compiled
+python-install: $(PYTHON_OBJDIR)/.installed
+python-reset:
+ $(foreach f, .retrieved .configured .compiled .installed, \
+ rm -f $(PYTHON_OBJDIR)/$(f);)
+
+python-clean:
+ -(cd $(PYTHON_OBJDIR) && make distclean)
+
+# fetch distfile for python
+$(DISTDIR)/$(PYTHON_DIST):
+ cd $(DISTDIR) && $(FETCH_CMD) $(PYTHON_URL)
+
+# retrieve python
+#
+$(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/$(PYTHON_DIST)
+ [ -d $(PYTHON_OBJDIR) ] || mkdir -p $(PYTHON_OBJDIR)
+ tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PYTHON_DIST)
+ # Make setup.py use our own dependencies instead of system ones
+ sed -e "s#sqlite_inc_paths = \[ '/usr/include',#sqlite_inc_paths = [ '$(PREFIX)/sqlite/include',#" \
+ -e "s#'/usr/include/db4'#'$(PREFIX)/bdb/include'#" \
+ -e "s|\(add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')\)|#\1|" \
+ -e "s|\(add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')\)|#\1|" \
+ -e "s#find_library_file(lib_dirs, 'bz2'#find_library_file(['$(PREFIX)/bz2/lib'] + lib_dirs, 'bz2'#" \
+ < $(PYTHON_SRCDIR)/setup.py \
+ > $(PYTHON_SRCDIR)/setup.py.patched
+ mv $(PYTHON_SRCDIR)/setup.py.patched $(PYTHON_SRCDIR)/setup.py
+ chmod +x $(PYTHON_SRCDIR)/setup.py
+ # Fixes shared library linking on OpenBSD
+ # http://bugs.python.org/issue12560
+ # Also fix compilation error on OpenBSD 5.0 and later (undefined
+ # reference to 'lstat' -- already fixed in hg.python.org/cpython).
+ sed -e '4930s#NetBSD\*|#NetBSD*|OpenBSD*|#' \
+ -e 's#OpenBSD/4\.\[789\]#OpenBSD/*#' \
+ < $(PYTHON_SRCDIR)/configure \
+ > $(PYTHON_SRCDIR)/configure.patched
+ mv $(PYTHON_SRCDIR)/configure.patched $(PYTHON_SRCDIR)/configure
+ chmod +x $(PYTHON_SRCDIR)/configure
+ touch $@
+
+# configure python
+ifdef PROFILE
+PYTHON_PROFILING=--enable-profiling
+endif
+$(PYTHON_OBJDIR)/.configured: $(PYTHON_OBJDIR)/.retrieved
+ cd $(PYTHON_OBJDIR) \
+ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ CPPFLAGS="-I$(PREFIX)/bz2/include" \
+ LDFLAGS="-Wl,-rpath=$(PREFIX)/python/lib -L$(PREFIX)/bz2/lib" \
+ $(PYTHON_SRCDIR)/configure \
+ --prefix=$(PREFIX)/python \
+ --enable-shared \
+ --with-system-expat \
+ --with-dbmliborder=bdb \
+ $(PYTHON_PROFILING)
+ touch $@
+
+# compile python
+$(PYTHON_OBJDIR)/.compiled: $(PYTHON_OBJDIR)/.configured
+ (cd $(PYTHON_OBJDIR) && make)
+ touch $@
+
+# install python
+$(PYTHON_OBJDIR)/.installed: $(PYTHON_OBJDIR)/.compiled
+ (cd $(PYTHON_OBJDIR) && make install)
+ touch $@
+
+
+#######################################################################
+# junit
+#######################################################################
+
+# fetch distfile for junit
+$(DISTDIR)/$(JUNIT_DIST):
+ cd $(DISTDIR) && $(FETCH_CMD) $(JUNIT_URL)
+
+#######################################################################
# svn
#######################################################################
@@ -983,12 +1150,22 @@ $(SVN_OBJDIR)/.retrieved:
fi
touch $@
-ifeq ($(BRANCH_MAJOR),1.6)
+ifeq ($(BRANCH_MAJOR),1.7)
+BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
+SERF_FLAG=--with-serf="$(PREFIX)/serf"
+MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so
+MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so
+LIBMAGIC_FLAG=--with-libmagic=$(PREFIX)/libmagic
+NEON_FLAG=--with-neon="$(PREFIX)/neon"
+JAVAHL_CHECK_TARGET=check-javahl
+else ifeq ($(BRANCH_MAJOR),1.6)
BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
SERF_FLAG=--with-serf="$(PREFIX)/serf"
MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so
MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so
W_NO_SYSTEM_HEADERS=-Wno-system-headers
+NEON_FLAG=--with-neon="$(PREFIX)/neon"
+JAVAHL_CHECK_TARGET=check-javahl
else ifeq ($(BRANCH_MAJOR),1.5)
BDB_FLAG=$(PREFIX)/bdb
SERF_FLAG=--with-serf="$(PREFIX)/serf-old"
@@ -996,49 +1173,22 @@ MOD_DAV_SVN=modules/mod_dav_svn.so
MOD_AUTHZ_SVN=modules/mod_authz_svn.so
DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else ifeq ($(BRANCH_MAJOR),1.4)
-BDB_FLAG=$(PREFIX)/bdb
-MOD_DAV_SVN=modules/mod_dav_svn.so
-MOD_AUTHZ_SVN=modules/mod_authz_svn.so
-DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
-W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else ifeq ($(BRANCH_MAJOR),1.3)
-BDB_FLAG=$(PREFIX)/bdb
-MOD_DAV_SVN=modules/mod_dav_svn.so
-MOD_AUTHZ_SVN=modules/mod_authz_svn.so
-DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
-W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else ifeq ($(BRANCH_MAJOR),1.2)
-BDB_FLAG=$(PREFIX)/bdb
-MOD_DAV_SVN=modules/mod_dav_svn.so
-MOD_AUTHZ_SVN=modules/mod_authz_svn.so
-DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
-W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else ifeq ($(BRANCH_MAJOR),1.1)
-BDB_FLAG=$(PREFIX)/bdb
-MOD_DAV_SVN=modules/mod_dav_svn.so
-MOD_AUTHZ_SVN=modules/mod_authz_svn.so
-DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
-W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else ifeq ($(BRANCH_MAJOR),1.0)
-BDB_FLAG=$(PREFIX)/bdb
-MOD_DAV_SVN=modules/mod_dav_svn.so
-MOD_AUTHZ_SVN=modules/mod_authz_svn.so
-DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
-W_NO_SYSTEM_HEADERS=-Wno-system-headers
-else
+NEON_FLAG=--with-neon="$(PREFIX)/neon"
+JAVAHL_CHECK_TARGET=check-javahl
+else # 1.8
BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
SERF_FLAG=--with-serf="$(PREFIX)/serf"
MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so
MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so
LIBMAGIC_FLAG=--with-libmagic=$(PREFIX)/libmagic
+JAVAHL_CHECK_TARGET=check-all-javahl
endif
ifeq ($(ENABLE_JAVA_BINDINGS),yes)
JAVAHL_FLAG=--enable-javahl=yes --with-jdk --with-jikes=no \
- --with-junit=$(PWD)/junit.jar
+ --with-junit=$(DISTDIR)/$(JUNIT_DIST)
else
- JAVAHL_FLAG=--enable-javahl=no
+ JAVAHL_FLAG=--with-jdk=no
endif
ifdef PROFILE
@@ -1050,26 +1200,20 @@ SVN_WITH_SASL=--with-sasl="$(PREFIX)/cyrus-sasl"
endif
# configure svn
-$(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved
- @if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
- if [ ! -e $(PWD)/junit.jar ]; then \
- echo "Please provide $(PWD)/junit.jar"; \
- exit 1; \
- fi; \
- fi
+$(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST)
cd $(SVN_SRCDIR) && ./autogen.sh
cd $(svn_builddir) && \
env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib" \
- LD_LIBRARY_PATH="$(PREFIX)/bdb/lib:$(PREFIX)/iconv/lib:$$LD_LIBRARY_PATH" \
+ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
GREP="`which grep`" \
- PATH=$(PREFIX)/ruby/bin:$$PATH \
+ PATH=$(PREFIX)/ruby/bin:$(PREFIX)/python/bin:$$PATH \
$(SVN_SRCDIR)/configure \
--enable-maintainer-mode \
--with-ssl \
--prefix="$(SVN_PREFIX)" \
--with-apr="$(PREFIX)/apr" \
--with-apr-util="$(PREFIX)/apr" \
- --with-neon="$(PREFIX)/neon" \
+ $(NEON_FLAG) \
$(SVN_WITH_HTTPD) \
$(SVN_WITH_SASL) \
$(SERF_FLAG) \
@@ -1095,16 +1239,27 @@ $(SVN_OBJDIR)/.installed: $(SVN_OBJDIR)/.compiled
&& make install
touch $@
-$(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed
- if [ $(ENABLE_PYTHON_BINDINGS) = yes ]; then \
- cd $(svn_builddir) \
- && make swig-py; \
- fi
+# SWIG 1.x and 2.x are not compatible. If SWIG 2.x is used to generated .swg
+# files and 1.x is used to build the bindings, the Python bindings fail to
+# load with errors such as "undefined symbol 'SWIG_Python_str_AsChar'".
+# So clean any pre-generated .swg files to make sure everything is done
+# by the same version of SWIG.
+$(SVN_OBJDIR)/.pre-generated-swig-cleaned:
+ -cd $(svn_builddir) \
+ && make extraclean-swig
+ touch $@
+
+$(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed $(SVN_OBJDIR)/.pre-generated-swig-cleaned
+ cd $(svn_builddir) \
+ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make swig-py
cd $(svn_builddir) && \
- PATH=$(PREFIX)/ruby/bin:$$PATH make swig-rb
+ env PATH=$(PREFIX)/ruby/bin:$$PATH \
+ LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) make swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
- && make swig-pl; \
+ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make swig-pl; \
fi
if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
@@ -1113,12 +1268,12 @@ $(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed
touch $@
$(SVN_OBJDIR)/.bindings-installed: $(SVN_OBJDIR)/.bindings-compiled
- if [ $(ENABLE_PYTHON_BINDINGS) = yes ]; then \
- cd $(svn_builddir) \
- && make install-swig-py; \
- fi
+ cd $(svn_builddir) \
+ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make install-swig-py
cd $(svn_builddir) && \
- PATH=$(PREFIX)/ruby/bin:$$PATH make install-swig-rb
+ env PATH=$(PREFIX)/ruby/bin:$$PATH \
+ LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) make install-swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
&& make install-swig-pl-lib; \
@@ -1203,22 +1358,28 @@ endif
echo >>$@.tmp 'RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ /svn-test-work/repositories/$$1'
mv -f $@.tmp $@
-# 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)/ruby/lib:$(PREFIX)/svn-$(WC)/lib
-
.PHONY: libpath
libpath:
- @echo export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH
+ @echo export LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+ "PYTHONPATH=$(SVN_PREFIX)/lib/svn-python"
+#
+# OpenBSD requires an LD_PRELOAD hack to dlopen() libraries linked to
+# libpthread (e.g. libsvn_auth_gnome_keyring.so) into executables that
+# aren't linked to libpthread.
+ifeq ($(UNAME),OpenBSD)
+LIB_PTHREAD_HACK=LD_PRELOAD=libpthread.so
+endif
.PHONY: start-svnserve stop-svnserve start-httpd stop-httpd
-HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \
$(PREFIX)/httpd/bin/apachectl -f $(HTTPD_CHECK_CONF)
HTTPD_START_CMD = $(HTTPD_CMD) -k start
HTTPD_START_CMD_DEBUG = $(HTTPD_START_CMD) -X
HTTPD_STOP_CMD = $(HTTPD_CMD) -k stop; sleep 3
-SVNSERVE_START_CMD = (ls $(PWD)/svnserve-*.pid | while read pidfile; do \
+SVNSERVE_START_CMD = (test -e $(PWD)/svnserve-*.pid && \
+ ls $(PWD)/svnserve-*.pid | while read pidfile; do \
kill `cat "$$pidfile"`; sleep 3; \
rm -f $$pidfile; \
done); \
@@ -1259,7 +1420,8 @@ define do_check
-cd $(svn_builddir) && for fs in fsfs bdb; do \
echo "Begin test: $(subst svn-check-,,$@) x $$fs"; \
test -d "$(RAMDISK)/tmp" && export TMPDIR="$(RAMDISK)/tmp"; \
- make check PARALLEL=$(PARALLEL) CLEANUP=$(CLEANUP) $1 FS_TYPE=$$fs; \
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \
+ make check PARALLEL=$(PARALLEL) CLEANUP=$(CLEANUP) $1 FS_TYPE=$$fs; \
for log in tests.log fails.log; do \
test -f $$log && mv -f $$log $$log.$@-$$fs; \
done; \
@@ -1277,10 +1439,16 @@ svn-check-prepare-ramdisk:
mkdir -p "$(RAMDISK)/tmp"; \
fi
+ifndef NEON_FLAG
+svn-check-neon:
+ @echo Neon is not supported by this build of Subversion, skipping tests
+ @true
+else
svn-check-neon: $(HTTPD_CHECK_CONF) $(SVN_OBJDIR)/.compiled $(SVN_OBJDIR)/.bindings-compiled svn-check-prepare-ramdisk
$(HTTPD_START_CMD)
$(call do_check,BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=neon)
$(HTTPD_STOP_CMD)
+endif
svn-check-serf: $(HTTPD_CHECK_CONF) $(SVN_OBJDIR)/.compiled $(SVN_OBJDIR)/.bindings-compiled svn-check-prepare-ramdisk
$(HTTPD_START_CMD)
@@ -1308,34 +1476,33 @@ svn-check-swig-pl:
-if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
(cd $(svn_builddir) && \
env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ $(LIB_PTHREAD_HACK) \
make check-swig-pl 2>&1) | \
tee $(svn_builddir)/tests.log.bindings.pl; \
fi
svn-check-swig-py:
- -if [ $(ENABLE_PYTHON_BINDINGS) = yes ]; then \
- (cd $(svn_builddir) && \
- env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
- make check-swig-py 2>&1) | \
- tee $(svn_builddir)/tests.log.bindings.py; \
- fi
+ -(cd $(svn_builddir) && \
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make check-swig-py 2>&1) | \
+ tee $(svn_builddir)/tests.log.bindings.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:
- (cd $(svn_builddir)/subversion/bindings/swig/ruby/test && \
+ (cd $(svn_builddir) && \
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) | \
+ $(LIB_PTHREAD_HACK) \
+ make check-swig-rb 2>&1) | \
tee $(svn_builddir)/tests.log.bindings.rb
svn-check-javahl:
-if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
(cd $(svn_builddir) && \
env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
- make check-javahl 2>&1) | \
+ make $(JAVAHL_CHECK_TARGET) 2>&1) | \
tee $(svn_builddir)/tests.log.bindings.javahl; \
fi
@@ -1343,13 +1510,17 @@ svn-check: svn-check-prepare-ramdisk svn-check-local svn-check-svn \
svn-check-neon svn-check-serf svn-check-bindings
.PHONY: sign-email
+ifdef NEON_FLAG
+NEON_STR=ra_neon |
+NEON_VER_LINE=@echo "neon: $(NEON_VER)"
+endif
sign-email:
@echo "Summary: +1 to release"
@echo ""
- @echo "Tested: [bdb | fsfs] x [ra_local | ra_svn | ra_neon | ra_serf]"
+ @echo "Tested: [bdb | fsfs] x [ra_local | ra_svn | $(NEON_STR)ra_serf]"
@echo " swig bindings"
ifeq ($(ENABLE_JAVA_BINDINGS),yes)
- @echo " javahl bindings"
+ @echo " javahl bindings"
endif
@echo ""
@echo "Test results: All passed."
@@ -1366,13 +1537,13 @@ endif
@echo "apr: $(APR_VER)"
@echo "apr-util: $(APR_UTIL_VER)"
@echo "httpd: $(HTTPD_VER)"
- @echo "neon: $(NEON_VER)"
+ $(NEON_VER_LINE)
@echo "serf: $(SERF_VER)"
@echo "cyrus-sasl: $(CYRUS_SASL_VER)"
@echo "sqlite: $(SQLITE_VER)"
@echo "openssl: `openssl version | cut -d' ' -f2`"
@echo "swig: `swig -version | grep Version | cut -d' ' -f3`"
- @echo "python: `python --version 2>&1 | cut -d' ' -f2`"
+ @echo "python: $(PYTHON_VER)"
@echo "perl: `eval \`perl -V:version\`; echo $$version`"
@echo "ruby: $(RUBY_VER)"
ifeq ($(ENABLE_JAVA_BINDINGS),yes)
@@ -1380,3 +1551,9 @@ ifeq ($(ENABLE_JAVA_BINDINGS),yes)
endif
@echo ""
@echo "Signatures:"
+ @echo
+ @echo "subversion-$(TAG).tar.gz"
+ @echo "`cat subversion-$(TAG).tar.gz.asc`"
+ @echo
+ @echo "subversion-$(TAG).tar.bz2"
+ @echo "`cat subversion-$(TAG).tar.bz2.asc`"