diff options
Diffstat (limited to 'tools/dev/unix-build/Makefile.svn')
-rw-r--r-- | tools/dev/unix-build/Makefile.svn | 385 |
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`" |