diff options
Diffstat (limited to 'tools/dev/unix-build/Makefile.svn')
-rw-r--r-- | tools/dev/unix-build/Makefile.svn | 435 |
1 files changed, 304 insertions, 131 deletions
diff --git a/tools/dev/unix-build/Makefile.svn b/tools/dev/unix-build/Makefile.svn index 2c0561c..b00a074 100644 --- a/tools/dev/unix-build/Makefile.svn +++ b/tools/dev/unix-build/Makefile.svn @@ -45,6 +45,8 @@ EXCLUSIVE_WC_LOCKS ?= 1 USE_HTTPV1 ?= no USE_AUTHZ_SHORT_CIRCUIT ?= no RAMDISK ?= /ramdisk +MAKE_JOBS ?= 4 +SVN_CHECK_FS_BACKENDS ?= fsfs bdb PWD = $(shell pwd) UNAME = $(shell uname) @@ -71,6 +73,12 @@ endif # 2.2 endif # 2.3 endif # 2.4 +ifeq ($(UNAME),OpenBSD) +# Pick the correct base compiler (ie. clang rather than ancient gcc 4.2.1) +CC = cc +CXX = c++ +endif + TAG ?= none ifeq ($(TAG),none) BRANCH ?= trunk @@ -94,14 +102,15 @@ APR_VER = 1.5.2 APR_ICONV_VER = 1.2.1 GNU_ICONV_VER = 1.15 APR_UTIL_VER = 1.5.4 -HTTPD_VER = 2.2.32 +PCRE_VER = 8.41 +HTTPD_VER = 2.4.37 NEON_VER = 0.30.2 SERF_VER = 1.3.9 SERF_OLD_VER = 0.3.1 CYRUS_SASL_VER = 2.1.25 SQLITE_VER = 3160200 LIBMAGIC_VER = 5.30 -RUBY_VER = 2.4.2 +RUBY_VER = 2.4.4 BZ2_VER = 1.0.6 PYTHON_VER = 2.7.13 JUNIT_VER = 4.10 @@ -114,6 +123,7 @@ GNU_ICONV_DIST = libiconv-$(GNU_ICONV_VER).tar.gz NEON_DIST = neon-$(NEON_VER).tar.gz SQLITE_DIST = sqlite-autoconf-$(SQLITE_VER).tar.gz CYRUS_SASL_DIST = cyrus-sasl-$(CYRUS_SASL_VER).tar.gz +PCRE_DIST = pcre-$(PCRE_VER).tar.gz HTTPD_DIST = httpd-$(HTTPD_VER).tar.gz LIBMAGIC_DIST = file-$(LIBMAGIC_VER).tar.gz RUBY_DIST = ruby-$(RUBY_VER).tar.gz @@ -126,12 +136,13 @@ LZ4_DIST = lz4-$(LZ4_VER).tar.gz SHA256_${BDB_DIST} = f14fd96dd38915a1d63dcb94a63fbb8092334ceba6b5060760427096f631263e SHA256_${APR_ICONV_DIST} = 19381959d50c4a5f3b9c84d594a5f9ffb3809786919b3058281f4c87e1f4b245 SHA256_${GNU_ICONV_DIST} = ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 -SHA256_${HTTPD_DIST} = b6e1528779f99c301d6438d89ae892a311619b43a39f16297f9eabd4a8d16cb8 +SHA256_${PCRE_DIST} = 244838e1f1d14f7e2fa7681b857b3a8566b74215f28133f14a8f5e59241b682c +SHA256_${HTTPD_DIST} = aa97a834a32d51974be8d8a013b561e28d327387cb1da2c3c2762acd0146aabd SHA256_${NEON_DIST} = db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca SHA256_${CYRUS_SASL_DIST} = 418c16e6240a4f9b637cbe3d62937b9675627bad27c622191d47de8686fe24fe SHA256_${SQLITE_DIST} = 65cc0c3e9366f50c0679c5ccd31432cea894bc4a3e8947dabab88c8693263615 SHA256_${LIBMAGIC_DIST} = 694c2432e5240187524c9e7cf1ec6acc77b47a0e19554d34c14773e43dbbf214 -SHA256_${RUBY_DIST} = 93b9e75e00b262bc4def6b26b7ae8717efc252c47154abb7392e54357e6c8c9c +SHA256_${RUBY_DIST} = 254f1c1a79e4cc814d1e7320bc5bdd995dc57e08727d30a767664619a9c8ae5a SHA256_${BZ2_DIST} = a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd SHA256_${PYTHON_DIST} = a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1 SHA256_${JUNIT_DIST} = 36a747ca1e0b86f6ea88055b8723bb87030d627766da6288bf077afdeeb0f75a @@ -154,6 +165,7 @@ endef DISTFILES = $(DISTDIR)/$(NEON_DIST) \ $(DISTDIR)/$(SERF_DIST) \ $(DISTDIR)/$(SQLITE_DIST) \ + $(DISTDIR)/$(PCRE_DIST) \ $(DISTDIR)/$(HTTPD_DIST) \ $(DISTDIR)/$(APR_ICONV_DIST) \ $(DISTDIR)/$(GNU_ICONV_DIST) \ @@ -170,20 +182,22 @@ FETCH_CMD = wget -c SUBVERSION_REPOS_URL = https://svn.apache.org/repos/asf/subversion BDB_URL = http://download.oracle.com/berkeley-db/$(BDB_DIST) APR_URL = https://svn.apache.org/repos/asf/apr/apr -APR_ICONV_URL = https://www.apache.org/dist/apr/$(APR_ICONV_DIST) +APR_ICONV_URL = https://archive.apache.org/dist/apr/$(APR_ICONV_DIST) GNU_ICONV_URL = https://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST) APR_UTIL_URL = https://svn.apache.org/repos/asf/apr/apr-util +PCRE_URL = https://ftp.pcre.org/pub/pcre/$(PCRE_DIST) HTTPD_URL = https://archive.apache.org/dist/httpd/$(HTTPD_DIST) -NEON_URL = http://webdav.org/neon/$(NEON_DIST) +#NEON_URL = http://webdav.org/neon/$(NEON_DIST) +NEON_URL = http://ftp.openbsd.org/pub/OpenBSD/distfiles/$(NEON_DIST) SERF_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_VER) SERF_OLD_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_OLD_VER) SQLITE_URL = https://www.sqlite.org/2017/$(SQLITE_DIST) -CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST) +CYRUS_SASL_URL = https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-${CYRUS_SASL_VER}/$(CYRUS_SASL_DIST) LIBMAGIC_URL = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST) RUBY_URL = https://cache.ruby-lang.org/pub/ruby/2.4/$(RUBY_DIST) -BZ2_URL = http://bzip.org/$(BZ2_VER)/$(BZ2_DIST) +BZ2_URL = https://stsp.name/distfiles/$(BZ2_DIST) PYTHON_URL = https://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST) -JUNIT_URL = https://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST) +JUNIT_URL = https://stsp.name/distfiles/$(JUNIT_DIST) GETTEXT_URL = https://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST) LZ4_URL = https://github.com/lz4/lz4/archive/v$(LZ4_VER).tar.gz @@ -193,6 +207,7 @@ APR_SRCDIR = $(SRCDIR)/apr-$(APR_VER) APR_ICONV_SRCDIR = $(SRCDIR)/apr-iconv-$(APR_ICONV_VER) GNU_ICONV_SRCDIR = $(SRCDIR)/libiconv-$(GNU_ICONV_VER) APR_UTIL_SRCDIR = $(SRCDIR)/apr-util-$(APR_UTIL_VER) +PCRE_SRCDIR = $(SRCDIR)/pcre-$(PCRE_VER) HTTPD_SRCDIR = $(SRCDIR)/httpd-$(HTTPD_VER) NEON_SRCDIR = $(SRCDIR)/neon-$(NEON_VER) SERF_SRCDIR = $(SRCDIR)/serf-$(SERF_VER) @@ -212,6 +227,7 @@ APR_OBJDIR = $(OBJDIR)/apr-$(APR_VER) APR_ICONV_OBJDIR = $(OBJDIR)/apr-iconv-$(APR_ICONV_VER) GNU_ICONV_OBJDIR = $(OBJDIR)/libiconv-$(GNU_ICONV_VER) APR_UTIL_OBJDIR = $(OBJDIR)/apr-util-$(APR_UTIL_VER) +PCRE_OBJDIR = $(OBJDIR)/pcre-$(PCRE_VER) HTTPD_OBJDIR = $(OBJDIR)/httpd-$(HTTPD_VER) NEON_OBJDIR = $(OBJDIR)/neon-$(NEON_VER) SERF_OBJDIR = $(OBJDIR)/serf-$(SERF_VER) @@ -238,6 +254,10 @@ endif # We need this to make sure some targets below pick up the right libraries LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/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 +# We need this to make sure some targets below pick up the right pkg-config files +PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgconfig:$(PREFIX)/neon/lib/pkgconfig:$(PREFIX)/serf/lib/pkgconfig:$(PREFIX)/sqlite/lib/pkgconfig:$(PREFIX)/ruby/lib/pkgconfig:$(PREFIX)/python/lib/pkgconfig:$(PREFIX)/lz4/lib/pkgconfig + + ####################################################################### # Main targets. ####################################################################### @@ -245,19 +265,19 @@ LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/lib:$(PREFIX)/iconv/lib:$(PR .PHONY: all reset clean nuke fetch all: dirs-create bdb-install apr-install iconv-install apr-util-install \ - httpd-install neon-install serf-install serf-old-install \ + pcre-install httpd-install neon-install serf-install serf-old-install \ sqlite-install cyrus-sasl-install libmagic-install \ ruby-install bz2-install python-install gettext-install \ lz4-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 python-reset \ + pcre-reset httpd-reset neon-reset serf-reset serf-old-reset \ + sqlite-reset cyrus-sasl-reset libmagic-reset ruby-reset python-reset \ bz2-reset gettext-reset lz4-reset svn-reset # Use to save disk space. -clean: bdb-clean apr-clean iconv-clean apr-util-clean httpd-clean \ +clean: bdb-clean apr-clean iconv-clean apr-util-clean pcre-clean httpd-clean \ neon-clean serf-clean serf-old-clean sqlite-clean cyrus-sasl-clean \ libmagic-clean ruby-clean bz2-clean python-clean gettext-clean \ lz4-clean svn-clean @@ -331,6 +351,7 @@ $(BDB_OBJDIR)/.retrieved: $(DISTDIR)/$(BDB_DIST) $(BDB_OBJDIR)/.configured: $(BDB_OBJDIR)/.retrieved cd $(BDB_SRCDIR)/build_unix \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ ../dist/configure \ --prefix=$(PREFIX)/bdb \ --enable-debug @@ -338,7 +359,7 @@ $(BDB_OBJDIR)/.configured: $(BDB_OBJDIR)/.retrieved # compile bdb $(BDB_OBJDIR)/.compiled: $(BDB_OBJDIR)/.configured - (cd $(BDB_SRCDIR)/build_unix && env MAKEFLAGS= make) + (cd $(BDB_SRCDIR)/build_unix && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install bdb @@ -388,6 +409,8 @@ $(APR_OBJDIR)/.configured: $(APR_OBJDIR)/.retrieved $(BDB_OBJDIR)/.installed cd $(APR_SRCDIR) && ./buildconf cd $(APR_OBJDIR) \ && env CFLAGS="-O0 -g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ + CC=$(CC) CXX=$(CXX) \ $(APR_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ --enable-maintainer-mode \ @@ -397,7 +420,7 @@ $(APR_OBJDIR)/.configured: $(APR_OBJDIR)/.retrieved $(BDB_OBJDIR)/.installed # compile apr $(APR_OBJDIR)/.compiled: $(APR_OBJDIR)/.configured - (cd $(APR_OBJDIR) && env MAKEFLAGS= make) + (cd $(APR_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install apr @@ -436,7 +459,9 @@ $(APR_ICONV_OBJDIR)/.configured: $(APR_ICONV_OBJDIR)/.retrieved \ $(APR_OBJDIR)/.installed cd $(APR_ICONV_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(APR_ICONV_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ --with-apr=$(PREFIX)/apr @@ -445,7 +470,7 @@ $(APR_ICONV_OBJDIR)/.configured: $(APR_ICONV_OBJDIR)/.retrieved \ # compile apr-iconv $(APR_ICONV_OBJDIR)/.compiled: $(APR_ICONV_OBJDIR)/.configured (cd $(APR_ICONV_OBJDIR) \ - && env MAKEFLAGS= make CPPFLAGS="-D_OSD_POSIX" CFLAGS="-g -O0 $(PROFILE_CFLAGS)") + && env MAKEFLAGS= make CPPFLAGS="-D_OSD_POSIX" CFLAGS="-g -O0 $(PROFILE_CFLAGS)" -j${MAKE_JOBS}) touch $@ # install apr-iconv @@ -520,6 +545,8 @@ $(GNU_ICONV_OBJDIR)/.configured: $(GNU_ICONV_OBJDIR)/.retrieved ${MAKE} -f Makefile.devel lib/aliases.h cd $(GNU_ICONV_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(GNU_ICONV_SRCDIR)/configure \ --prefix=$(PREFIX)/iconv \ --enable-extra-encodings @@ -527,7 +554,7 @@ $(GNU_ICONV_OBJDIR)/.configured: $(GNU_ICONV_OBJDIR)/.retrieved # compile gnu-iconv $(GNU_ICONV_OBJDIR)/.compiled: $(GNU_ICONV_OBJDIR)/.configured - (cd $(GNU_ICONV_OBJDIR) && env MAKEFLAGS= make) + (cd $(GNU_ICONV_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install gnu-iconv @@ -590,7 +617,9 @@ $(APR_UTIL_OBJDIR)/.configured: $(APR_UTIL_OBJDIR)/.retrieved \ cd $(APR_UTIL_SRCDIR) && ./buildconf --with-apr=$(APR_SRCDIR) cd $(APR_UTIL_OBJDIR) \ && env LD_LIBRARY_PATH=$(PREFIX)/bdb/lib \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ $(APR_UTIL_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ @@ -602,7 +631,7 @@ $(APR_UTIL_OBJDIR)/.configured: $(APR_UTIL_OBJDIR)/.retrieved \ # compile apr-util $(APR_UTIL_OBJDIR)/.compiled: $(APR_UTIL_OBJDIR)/.configured - (cd $(APR_UTIL_OBJDIR) && env MAKEFLAGS= make) + (cd $(APR_UTIL_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install apr-util @@ -611,6 +640,53 @@ $(APR_UTIL_OBJDIR)/.installed: $(APR_UTIL_OBJDIR)/.compiled touch $@ ####################################################################### +# pcre +####################################################################### + +pcre-retrieve: $(PCRE_OBJDIR)/.retrieved +pcre-configure: $(PCRE_OBJDIR)/.configured +pcre-compile: $(PCRE_OBJDIR)/.compiled +pcre-install: $(PCRE_OBJDIR)/.installed +pcre-reset: + $(foreach f, .retrieved .configured .compiled .installed, \ + rm -f $(PCRE_OBJDIR)/$(f);) + +pcre-clean: + -(cd $(PCRE_OBJDIR) && env MAKEFLAGS= make clean) + +# fetch distfile for pcre +$(DISTDIR)/$(PCRE_DIST): + cd $(DISTDIR) && $(FETCH_CMD) $(PCRE_URL) + +# retrieve pcre +$(PCRE_OBJDIR)/.retrieved: $(DISTDIR)/$(PCRE_DIST) + $(call do_check_sha256,$(PCRE_DIST)) + [ -d $(PCRE_OBJDIR) ] || mkdir -p $(PCRE_OBJDIR) + tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PCRE_DIST) + touch $@ + +# configure pcre +$(PCRE_OBJDIR)/.configured: $(PCRE_OBJDIR)/.retrieved + cd $(PCRE_OBJDIR) \ + && env CFLAGS="-g $(PROFILE_CFLAGS)" \ + CC=$(CC) CXX=$(CXX) \ + GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ + $(PCRE_SRCDIR)/configure \ + --prefix=$(PREFIX)/pcre + touch $@ + +# compile pcre +$(PCRE_OBJDIR)/.compiled: $(PCRE_OBJDIR)/.configured + (cd $(PCRE_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) + touch $@ + +# install pcre +$(PCRE_OBJDIR)/.installed: $(PCRE_OBJDIR)/.compiled + (cd $(PCRE_OBJDIR) && env MAKEFLAGS= make install) + touch $@ + +####################################################################### # httpd ####################################################################### @@ -625,113 +701,72 @@ httpd-reset: httpd-clean: -(cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make clean) - -rm ${HTTPD_OBJDIR}/chil-engine.diff - -rm ${HTTPD_OBJDIR}/ssl-set-state.diff - -rm ${HTTPD_OBJDIR}/acinclude.diff + rm -f $(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff + rm -f $(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff # fetch distfile for httpd $(DISTDIR)/$(HTTPD_DIST): cd $(DISTDIR) && $(FETCH_CMD) $(HTTPD_URL) -$(HTTPD_OBJDIR)/chil-engine.diff: +$(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff: mkdir -p $(dir $@) - echo > $@.tmp '--- modules/ssl/ssl_engine_init.c.orig Mon Apr 14 13:20:57 2014' - echo >>$@.tmp '+++ modules/ssl/ssl_engine_init.c Mon Apr 14 13:21:22 2014' - echo >>$@.tmp '@@ -406,9 +406,11 @@ void ssl_init_Engine(server_rec *s, apr_pool_t *p)' - echo >>$@.tmp ' ssl_die();' - echo >>$@.tmp ' }' - echo >>$@.tmp ' ' - echo >>$@.tmp '+#ifdef ENGINE_CTRL_CHIL_SET_FORKCHECK' - echo >>$@.tmp ' if (strEQ(mc->szCryptoDevice, "chil")) {' - echo >>$@.tmp ' ENGINE_ctrl(e, ENGINE_CTRL_CHIL_SET_FORKCHECK, 1, 0, 0);' - echo >>$@.tmp ' }' - echo >>$@.tmp '+#endif' - echo >>$@.tmp ' ' - echo >>$@.tmp ' if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {' - echo >>$@.tmp ' ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,' + echo > $@.tmp '--- modules/ssl/ssl_engine_init.c.orig Sun Dec 16 13:34:14 2018' + echo >> $@.tmp '+++ modules/ssl/ssl_engine_init.c Sun Dec 16 13:34:59 2018' + echo >> $@.tmp '@@ -1492,7 +1492,7 @@' + echo >> $@.tmp ' X509_STORE_CTX *sctx;' + echo >> $@.tmp ' X509_STORE *store = SSL_CTX_get_cert_store(mctx->ssl_ctx);' + echo >> $@.tmp ' ' + echo >> $@.tmp '-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL' + echo >> $@.tmp '+#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(LIBRESSL_VERSION_NUMBER)' + echo >> $@.tmp ' /* For OpenSSL >=1.1.1, turn on client cert support which is' + echo >> $@.tmp ' * otherwise turned off by default (by design).' + echo >> $@.tmp ' * https://github.com/openssl/openssl/issues/6933 */' mv -f $@.tmp $@ -$(HTTPD_OBJDIR)/ssl-set-state.diff: - mkdir -p $(dir $@) - echo > $@.tmp '--- modules/ssl/ssl_toolkit_compat.h.orig Fri Feb 3 10:47:33 2017' - echo >>$@.tmp '+++ modules/ssl/ssl_toolkit_compat.h Fri Feb 3 10:52:17 2017' - echo >>$@.tmp '@@ -84,7 +84,9 @@' - echo >>$@.tmp ' #define SSL_get_state(ssl) SSL_state(ssl)' - echo >>$@.tmp ' #endif' - echo >>$@.tmp ' ' - echo >>$@.tmp '+#ifndef HAVE_SSL_SET_STATE' - echo >>$@.tmp ' #define SSL_set_state(ssl,val) (ssl)->state = val' - echo >>$@.tmp '+#endif' - echo >>$@.tmp ' ' - echo >>$@.tmp ' #define MODSSL_BIO_CB_ARG_TYPE const char' - echo >>$@.tmp ' #define MODSSL_CRYPTO_CB_ARG_TYPE const char' - mv -f $@.tmp $@ - -$(HTTPD_OBJDIR)/acinclude.diff: - mkdir -p $(dir $@) - echo >$@.tmp '--- acinclude.m4.orig Fri Feb 3 11:05:08 2017' - echo >>$@.tmp '+++ acinclude.m4 Fri Feb 3 11:05:15 2017' - echo >>$@.tmp '@@ -455,6 +455,7 @@' - echo >>$@.tmp ' AC_CHECK_HEADERS([openssl/engine.h])' - echo >>$@.tmp ' AC_CHECK_FUNCS([SSLeay_version SSL_CTX_new], [], [liberrors="yes"])' - echo >>$@.tmp ' AC_CHECK_FUNCS([ENGINE_init ENGINE_load_builtin_engines])' - echo >>$@.tmp '+ AC_CHECK_FUNCS(SSL_set_state)' - echo >>$@.tmp ' else' - echo >>$@.tmp ' AC_CHECK_FUNCS([SSLC_library_version SSL_CTX_new], [], [liberrors="yes"])' - echo >>$@.tmp ' AC_CHECK_FUNCS(SSL_set_state)' - mv -f $@.tmp $@ +$(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff: + cd $(HTTPD_OBJDIR) && $(FETCH_CMD) https://stsp.name/mod-proxy-no-threads-2.4.diff # retrieve httpd $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$(HTTPD_DIST) \ - $(HTTPD_OBJDIR)/chil-engine.diff $(HTTPD_OBJDIR)/ssl-set-state.diff \ - $(HTTPD_OBJDIR)/acinclude.diff + $(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff \ + $(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff $(call do_check_sha256,$(HTTPD_DIST)) [ -d $(HTTPD_OBJDIR) ] || mkdir -p $(HTTPD_OBJDIR) tar -C $(SRCDIR) -zxf $(DISTDIR)/$(HTTPD_DIST) - cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/chil-engine.diff - cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/ssl-set-state.diff - cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/acinclude.diff - cp $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h \ - $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h.orig - sed '/^#define HAVE_SSL_RAND_EGD/d' \ - < $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h.orig \ - > $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h - cp $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c \ - $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig - sed 's/^\(#if (OPENSSL_VERSION_NUMBER >= 0x00908000)\)$$/\1 \&\& !defined(OPENSSL_NO_COMP)/' \ - < $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig \ - > $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c - cp $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_init.c \ - $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_init.c.orig - $(foreach f, ssl_engine_init.c ssl_util_ssl.c ssl_util_ssl.h, \ - cp $(HTTPD_SRCDIR)/modules/ssl/${f} $(HTTPD_SRCDIR)/modules/ssl/${f}.orig; \ - sed 's/SSL_CTX_use_certificate_chain/_SSL_CTX_use_certificate_chain/' \ - < $(HTTPD_SRCDIR)/modules/ssl/${f}.orig \ - > $(HTTPD_SRCDIR)/modules/ssl/${f};\ - ) + (cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff) + (cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff) + (cd $(HTTPD_SRCDIR) && svn diff -cr1849590 https://svn.apache.org/repos/asf/httpd/httpd/trunk | patch -p0) + (cd $(HTTPD_SRCDIR) && svn diff -cr1663375 https://svn.apache.org/repos/asf/httpd/httpd/trunk | patch -p0) touch $@ # configure httpd $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJDIR)/.retrieved \ - $(APR_UTIL_OBJDIR)/.installed - cd $(HTTPD_SRCDIR) && ./buildconf + $(APR_UTIL_OBJDIR)/.installed $(PCRE_OBJDIR)/.installed + cd $(HTTPD_SRCDIR) && ./buildconf \ + --with-apr="$(PREFIX)/apr/bin/apr-1-config" \ + --with-apr-util="$(PREFIX)/apr/bin/apu-1-config" cd $(HTTPD_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(HTTPD_SRCDIR)/configure \ --prefix=$(PREFIX)/httpd \ - --enable-maintainer-mode \ + --with-mpm=prefork \ --enable-ssl \ --enable-dav \ --enable-proxy \ - --with-mpm=prefork \ - --with-apr="$(PREFIX)/apr" \ - --with-apr-util="$(PREFIX)/apr" + --disable-md \ + --disable-http2 \ + --disable-brotli \ + --with-apr="$(PREFIX)/apr/bin/apr-1-config" \ + --with-apr-util="$(PREFIX)/apr/bin/apu-1-config" \ + --with-pcre="$(PREFIX)/pcre" touch $@ # compile httpd $(HTTPD_OBJDIR)/.compiled: $(HTTPD_OBJDIR)/.configured - (cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make) + (cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install httpd @@ -745,19 +780,28 @@ $(HTTPD_CONF): echo > $@.tmp '# httpd config for use with mod_dav_svn' echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"' echo >>$@.tmp 'Listen localhost:8080' + echo >>$@.tmp 'LoadModule unixd_module modules/mod_unixd.so' + echo >>$@.tmp 'LoadModule alias_module modules/mod_alias.so' + echo >>$@.tmp 'LoadModule access_compat_module modules/mod_access_compat.so' + echo >>$@.tmp 'LoadModule authn_core_module modules/mod_authn_core.so' + echo >>$@.tmp 'LoadModule authn_file_module modules/mod_authn_file.so' + echo >>$@.tmp 'LoadModule authz_core_module modules/mod_authz_core.so' + echo >>$@.tmp 'LoadModule authz_user_module modules/mod_authz_user.so' + echo >>$@.tmp 'LoadModule authz_groupfile_module modules/mod_authz_groupfile.so' + echo >>$@.tmp 'LoadModule auth_basic_module modules/mod_auth_basic.so' + echo >>$@.tmp 'LoadModule dav_module modules/mod_dav.so' echo >>$@.tmp 'LoadModule dav_svn_module modules/svn-$(WC)/mod_dav_svn.so' echo >>$@.tmp 'LoadModule authz_svn_module modules/svn-$(WC)/mod_authz_svn.so' echo >>$@.tmp 'DocumentRoot "$(PREFIX)/httpd/htdocs"' echo >>$@.tmp '<Directory />' echo >>$@.tmp ' Options FollowSymLinks' echo >>$@.tmp ' AllowOverride None' - echo >>$@.tmp ' Order deny,allow' - echo >>$@.tmp ' Deny from all' + echo >>$@.tmp ' Require all denied' echo >>$@.tmp '</Directory>' echo >>$@.tmp '<Location /repos>' echo >>$@.tmp ' DAV svn' echo >>$@.tmp ' SVNPath /tmp/svn-sandbox/repos' - echo >>$@.tmp ' Allow from localhost' + echo >>$@.tmp ' Require ip localhost' echo >>$@.tmp '</Location>' mv -f $@.tmp $@ @@ -802,6 +846,8 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDIR)/.retrieved fi cd $(NEON_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(NEON_SRCDIR)/configure \ PATH=$(NEON_OBJDIR):$$PATH \ --prefix=$(PREFIX)/neon \ @@ -812,7 +858,7 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDIR)/.retrieved # compile neon $(NEON_OBJDIR)/.compiled: $(NEON_OBJDIR)/.configured - (cd $(NEON_OBJDIR) && env MAKEFLAGS= make) + (cd $(NEON_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install neon @@ -860,11 +906,13 @@ $(SERF_OBJDIR)/.retrieved: $(SERF_OBJDIR)/.compiled: $(SERF_OBJDIR)/.retrieved \ $(APR_UTIL_OBJDIR)/.installed cd $(SERF_SRCDIR) && \ - scons DEBUG=1 \ + scons -j${MAKE_JOBS} DEBUG=1 \ CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ APR=$(PREFIX)/apr \ APU=$(PREFIX)/apr \ - PREFIX=$(PREFIX)/serf + PREFIX=$(PREFIX)/serf \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) touch $@ # install serf @@ -905,6 +953,7 @@ $(SERF_OLD_OBJDIR)/.compiled: $(SERF_OLD_OBJDIR)/.retrieved \ $(APR_UTIL_OBJDIR)/.installed cd $(SERF_OLD_SRCDIR) && \ env CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ ./serfmake --with-apr=$(PREFIX)/apr \ --prefix=$(PREFIX)/serf-old \ build @@ -956,6 +1005,8 @@ endif $(SQLITE_OBJDIR)/.configured: $(SQLITE_OBJDIR)/.retrieved cd $(SQLITE_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ + CC=$(CC) CXX=$(CXX) \ $(SQLITE_SRCDIR)/configure \ --prefix=$(PREFIX)/sqlite \ $(THREADSAFE_FLAG) @@ -963,7 +1014,7 @@ $(SQLITE_OBJDIR)/.configured: $(SQLITE_OBJDIR)/.retrieved # compile sqlite $(SQLITE_OBJDIR)/.compiled: $(SQLITE_OBJDIR)/.configured - (cd $(SQLITE_OBJDIR) && env MAKEFLAGS= make) + (cd $(SQLITE_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install sqlite @@ -1025,7 +1076,9 @@ $(CYRUS_SASL_OBJDIR)/.configured: $(CYRUS_SASL_OBJDIR)/.retrieved \ cd $(CYRUS_SASL_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" \ CPPFLAGS="-I/usr/include/kerberosV" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(CYRUS_SASL_SRCDIR)/configure \ --with-dbpath=$(PREFIX)/cyrus-sasl/etc/sasldb2 \ --with-plugindir=$(PREFIX)/cyrus-sasl/lib/sasl2 \ @@ -1037,7 +1090,7 @@ $(CYRUS_SASL_OBJDIR)/.configured: $(CYRUS_SASL_OBJDIR)/.retrieved \ --prefix=$(PREFIX)/cyrus-sasl touch $@ -# compile cyrus-sasl +# compile cyrus-sasl (ignore MAKE_JOBS; multiple jobs cause random build failures) $(CYRUS_SASL_OBJDIR)/.compiled: $(CYRUS_SASL_OBJDIR)/.configured (cd $(CYRUS_SASL_OBJDIR) && env MAKEFLAGS= make) touch $@ @@ -1077,6 +1130,8 @@ $(LIBMAGIC_OBJDIR)/.retrieved: $(DISTDIR)/$(LIBMAGIC_DIST) $(LIBMAGIC_OBJDIR)/.configured: $(LIBMAGIC_OBJDIR)/.retrieved cd $(LIBMAGIC_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(LIBMAGIC_SRCDIR)/configure \ --enable-fsect-man5 \ --prefix=$(PREFIX)/libmagic @@ -1084,7 +1139,7 @@ $(LIBMAGIC_OBJDIR)/.configured: $(LIBMAGIC_OBJDIR)/.retrieved # compile libmagic $(LIBMAGIC_OBJDIR)/.compiled: $(LIBMAGIC_OBJDIR)/.configured - (cd $(LIBMAGIC_OBJDIR) && env MAKEFLAGS= make) + (cd $(LIBMAGIC_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install libmagic @@ -1111,13 +1166,54 @@ ruby-clean: $(DISTDIR)/$(RUBY_DIST): cd $(DISTDIR) && $(FETCH_CMD) $(RUBY_URL) +$(RUBY_OBJDIR)/openssl_missing.patch: + mkdir -p $(dir $@) + echo > $@.tmp 'Index: ext/openssl/openssl_missing.h' + echo >> $@.tmp '--- ext/openssl/openssl_missing.h.orig' + echo >> $@.tmp '+++ ext/openssl/openssl_missing.h' + echo >> $@.tmp '@@ -119,6 +119,9 @@ void ossl_HMAC_CTX_free(HMAC_CTX *);' + echo >> $@.tmp ' #if !defined(HAVE_X509_STORE_SET_EX_DATA)' + echo >> $@.tmp ' # define X509_STORE_set_ex_data(x, idx, data) \' + echo >> $@.tmp ' CRYPTO_set_ex_data(&(x)->ex_data, (idx), (data))' + echo >> $@.tmp '+#endif' + echo >> $@.tmp '+' + echo >> $@.tmp '+#if !defined(HAVE_X509_STORE_GET_EX_NEW_INDEX)' + echo >> $@.tmp ' # define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \' + echo >> $@.tmp ' CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, (l), (p), \' + echo >> $@.tmp ' (newf), (dupf), (freef))' + echo >> $@.tmp '@@ -192,6 +195,7 @@ void ossl_X509_REQ_get0_signature(const X509_REQ *, co' + echo >> $@.tmp ' #endif' + echo >> $@.tmp ' ' + echo >> $@.tmp ' #if !defined(HAVE_OPAQUE_OPENSSL)' + echo >> $@.tmp '+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL' + echo >> $@.tmp ' #define IMPL_PKEY_GETTER(_type, _name) \' + echo >> $@.tmp ' static inline _type *EVP_PKEY_get0_##_type(EVP_PKEY *pkey) { \' + echo >> $@.tmp ' return pkey->pkey._name; }' + echo >> $@.tmp '@@ -243,6 +247,7 @@ IMPL_PKEY_GETTER(EC_KEY, ec)' + echo >> $@.tmp ' #undef IMPL_PKEY_GETTER' + echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR2' + echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR3' + echo >> $@.tmp '+#endif' + echo >> $@.tmp ' #endif /* HAVE_OPAQUE_OPENSSL */' + echo >> $@.tmp ' ' + echo >> $@.tmp ' #if defined(HAVE_AUTHENTICATED_ENCRYPTION) && !defined(EVP_CTRL_AEAD_GET_TAG)' + mv -f $@.tmp $@ + +ifeq ($(UNAME),OpenBSD) +RUBY_SSL_EX_NEW_DATA_PATCH = sed -i -e '/^have_func("X509_STORE_set_ex_data")$$/ { p; s/^.*$$/\have_func("X509_STORE_get_ex_new_index")/; }' +else +RUBY_SSL_EX_NEW_DATA_PATCH = true +endif + # retrieve ruby # -$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) +$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) $(RUBY_OBJDIR)/openssl_missing.patch $(call do_check_sha256,$(RUBY_DIST)) [ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR) tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST) -which ghead && sed -i -e "s/head -c/ghead -c/" $(RUBY_SRCDIR)/configure + $(RUBY_SSL_EX_NEW_DATA_PATCH) $(RUBY_SRCDIR)/ext/openssl/extconf.rb + cd $(RUBY_SRCDIR) && patch -p0 < $(RUBY_OBJDIR)/openssl_missing.patch touch $@ ifeq ($(THREADING),yes) @@ -1130,6 +1226,8 @@ endif $(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved cd $(RUBY_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(RUBY_SRCDIR)/configure \ --prefix=$(PREFIX)/ruby \ --enable-shared \ @@ -1140,7 +1238,7 @@ $(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved --without-gmp touch $@ -# compile ruby +# compile ruby (ignore MAKE_JOBS; multiple jobs cause random build failures) $(RUBY_OBJDIR)/.compiled: $(RUBY_OBJDIR)/.configured (cd $(RUBY_OBJDIR) && env MAKEFLAGS= make) touch $@ @@ -1177,7 +1275,8 @@ $(BZ2_OBJDIR)/.retrieved: $(DISTDIR)/$(BZ2_DIST) # compile bz2 $(BZ2_OBJDIR)/.compiled: $(BZ2_OBJDIR)/.retrieved - (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CFLAGS="-g $(PROFILE_CFLAGS) -fPIC") + (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CC=$(CC) CXX=$(CXX) \ + CFLAGS="-g $(PROFILE_CFLAGS) -fPIC" -j${MAKE_JOBS}) touch $@ # install bz2 @@ -1237,9 +1336,11 @@ $(PYTHON_OBJDIR)/.configured: $(PYTHON_OBJDIR)/.retrieved \ $(BZ2_OBJDIR)/.installed cd $(PYTHON_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ CPPFLAGS="-I$(PREFIX)/bz2/include" \ LDFLAGS="-Wl,-rpath=$(PREFIX)/python/lib -L$(PREFIX)/bz2/lib" \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(PYTHON_SRCDIR)/configure \ --prefix=$(PREFIX)/python \ --enable-shared \ @@ -1253,7 +1354,7 @@ $(PYTHON_OBJDIR)/.compiled: $(PYTHON_OBJDIR)/.configured (cd $(PYTHON_OBJDIR) && \ env MAKEFLAGS= \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ - make) + make -j${MAKE_JOBS}) touch $@ # install python @@ -1306,7 +1407,9 @@ $(GETTEXT_OBJDIR)/.retrieved: $(DISTDIR)/$(GETTEXT_DIST) $(GETTEXT_OBJDIR)/.configured: $(GETTEXT_OBJDIR)/.retrieved cd $(GETTEXT_SRCDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ LDFLAGS="-L$(PREFIX)/iconv/lib" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(GETTEXT_SRCDIR)/configure \ --prefix=$(PREFIX)/gettext \ --with-libiconv-prefix=$(PREFIX)/iconv \ @@ -1324,7 +1427,7 @@ $(GETTEXT_OBJDIR)/.configured: $(GETTEXT_OBJDIR)/.retrieved # compile gettext $(GETTEXT_OBJDIR)/.compiled: $(GETTEXT_OBJDIR)/.configured - (cd $(GETTEXT_SRCDIR) && env MAKEFLAGS= make) + (cd $(GETTEXT_SRCDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install gettext @@ -1365,7 +1468,8 @@ $(LZ4_OBJDIR)/.configured: $(LZ4_OBJDIR)/.retrieved # compile lz4 $(LZ4_OBJDIR)/.compiled: $(LZ4_OBJDIR)/.configured (cd $(LZ4_SRCDIR)/lib && \ - env MAKEFLAGS= $(MAKE) PREFIX=$(PREFIX)/lz4) + env MAKEFLAGS= $(MAKE) CC=$(CC) CXX=$(CXX) \ + -j${MAKE_JOBS} PREFIX=$(PREFIX)/lz4) touch $@ # install lz4 @@ -1467,6 +1571,7 @@ SERF_FLAG=--with-serf="$(PREFIX)/serf" # serf >= 1.3.0 is built with scons and no longer sets up rpath linker flags, # so we have to do that ourselves :( SERF_LDFLAG=-Wl,-rpath,$(PREFIX)/serf/lib -Wl,-rpath,$(PREFIX)/bdb/lib +LZ4_LDFLAG=-Wl,-rpath,$(PREFIX)/lz4/lib MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so MOD_DONTDOTHAT=modules/svn-$(WC)/mod_dontdothat.so @@ -1492,6 +1597,17 @@ SVN_WITH_HTTPD=--with-apxs="$(PREFIX)/httpd/bin/apxs" \ SVN_WITH_SASL=--with-sasl="$(PREFIX)/cyrus-sasl" endif +# On OpenBSD, MExtUtils -e ldopts outputs -L/usr/local/lib, which can +# cause us to link Perl bindings against the wrong set of SVN libraries. +# As a workaround, we patch the configure script after it has been generated. +ifeq ($(UNAME),OpenBSD) +SWIG_PL_INCLUDES_HACK= sed -i 's^\($$PERL -MExtUtils::Embed -e ccopts\)^\1 | sed -e s@-I/usr/local/include@@^' $(svn_builddir)/configure +SWIG_PL_LINK_HACK= sed -i 's^\($$PERL -MExtUtils::Embed -e ldopts\)^\1 | sed -e s@-L/usr/local/lib@@^' $(svn_builddir)/configure +else +SWIG_PL_INCLUDES_HACK=true +SWIG_PL_LINK_HACK=true +endif + $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ $(APR_OBJDIR)/.installed $(APR_UTIL_OBJDIR)/.installed \ $(BDB_OBJDIR)/.installed $(SQLITE_OBJDIR)/.installed \ @@ -1500,11 +1616,15 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ $(SERF_OBJDIR)/.installed $(SERF_OLD_OBJDIR)/.installed \ $(RUBY_OBJDIR)/.installed $(PYTHON_OBJDIR)/.installed cd $(SVN_SRCDIR) && ./autogen.sh + $(SWIG_PL_INCLUDES_HACK) + $(SWIG_PL_LINK_HACK) cd $(svn_builddir) && \ - env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib $(SERF_LDFLAG) -L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \ + env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib $(SERF_LDFLAG) $(LZ4_LDFLAG) -L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \ + CC=$(CC) CXX=$(CXX) \ CFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \ CXXFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ GREP="`which grep`" \ PATH=$(PREFIX)/ruby/bin:$(PREFIX)/python/bin:$(PREFIX)/gettext/bin:$$PATH \ $(SVN_SRCDIR)/configure \ @@ -1533,7 +1653,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ # compile svn $(SVN_OBJDIR)/.compiled: $(SVN_OBJDIR)/.configured cd $(svn_builddir) \ - && env MAKEFLAGS= make EXTRA_CFLAGS="$(PROFILE_CFLAGS) $(W_NO_SYSTEM_HEADERS)" + && env MAKEFLAGS= make -j${MAKE_JOBS} EXTRA_CFLAGS="$(PROFILE_CFLAGS) $(W_NO_SYSTEM_HEADERS)" touch $@ # install svn @@ -1552,17 +1672,30 @@ $(SVN_OBJDIR)/.pre-generated-swig-cleaned: && env MAKEFLAGS= make clean-swig touch $@ + +# On OpenBSD, Perl's LDDLFLAGS include -L/usr/local/lib, which can cause +# us to link Perl bindings against the wrong set of SVN libraries. +# We manually fix up the generated Makefile.PL to work around this issue. +ifeq ($(UNAME),OpenBSD) +MAKEFILE_PL_LDDLFLAGS_HACK= sed -i 's@^WriteMakefile@$$config{LDDLFLAGS} =~ s+-L/usr/local/lib++; WriteMakefile@' \ + $(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL +else +MAKEFILE_PL_LDDLFLAGS_HACK=true +endif + $(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed $(SVN_OBJDIR)/.pre-generated-swig-cleaned cd $(svn_builddir) \ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make swig-py + env MAKEFLAGS= make -j${MAKE_JOBS} swig-py cd $(svn_builddir) && \ env PATH=$(PREFIX)/ruby/bin:$$PATH \ - LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make swig-rb + LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make -j${MAKE_JOBS} swig-rb if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \ + cd $(svn_builddir) && make $(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL; \ + $(MAKEFILE_PL_LDDLFLAGS_HACK); \ cd $(svn_builddir) \ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make swig-pl; \ + env MAKEFLAGS= make -j${MAKE_JOBS} swig-pl; \ fi if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ @@ -1576,13 +1709,15 @@ $(SVN_OBJDIR)/.bindings-installed: $(SVN_OBJDIR)/.bindings-compiled env MAKEFLAGS= make install-swig-py cd $(svn_builddir) && \ env PATH=$(PREFIX)/ruby/bin:$$PATH \ - LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make install-swig-rb + LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) MAKEFLAGS= make install-swig-rb if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ - && env MAKEFLAGS= make install-swig-pl-lib; \ - cd subversion/bindings/swig/perl/native \ - && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \ - && env MAKEFLAGS= make install; \ + && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ + make install-swig-pl-lib; \ + cd subversion/bindings/swig/perl/native \ + && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \ + && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ + make install; \ fi if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ @@ -1620,6 +1755,16 @@ $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS) echo > $@.tmp '# httpd config for make check' echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"' echo >>$@.tmp 'Listen localhost:$(HTTPD_CHECK_PORT)' + echo >>$@.tmp 'LoadModule unixd_module modules/mod_unixd.so' + echo >>$@.tmp 'LoadModule alias_module modules/mod_alias.so' + echo >>$@.tmp 'LoadModule access_compat_module modules/mod_access_compat.so' + echo >>$@.tmp 'LoadModule authn_core_module modules/mod_authn_core.so' + echo >>$@.tmp 'LoadModule authn_file_module modules/mod_authn_file.so' + echo >>$@.tmp 'LoadModule authz_core_module modules/mod_authz_core.so' + echo >>$@.tmp 'LoadModule authz_user_module modules/mod_authz_user.so' + echo >>$@.tmp 'LoadModule authz_groupfile_module modules/mod_authz_groupfile.so' + echo >>$@.tmp 'LoadModule auth_basic_module modules/mod_auth_basic.so' + echo >>$@.tmp 'LoadModule dav_module modules/mod_dav.so' echo >>$@.tmp 'LoadModule dav_svn_module $(MOD_DAV_SVN)' echo >>$@.tmp 'LoadModule authz_svn_module $(MOD_AUTHZ_SVN)' echo >>$@.tmp 'LoadModule dontdothat_module $(MOD_DONTDOTHAT)' @@ -1628,8 +1773,7 @@ $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS) echo >>$@.tmp '<Directory />' echo >>$@.tmp ' Options FollowSymLinks' echo >>$@.tmp ' AllowOverride None' - echo >>$@.tmp ' Order deny,allow' - echo >>$@.tmp ' Allow from all' + echo >>$@.tmp ' Require all granted' echo >>$@.tmp '</Directory>' echo >>$@.tmp '<Location /svn-test-work/repositories>' echo >>$@.tmp ' DAV svn' @@ -1661,11 +1805,26 @@ ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes) echo >>$@.tmp ' SVNPathAuthz short_circuit' endif echo >>$@.tmp '</Location>' + echo >>$@.tmp '<Location /svn-test-work/local_tmp/trojan>' + echo >>$@.tmp ' DAV svn' + echo >>$@.tmp ' SVNPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp/trojan' + echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz' + echo >>$@.tmp ' AuthType Basic' + echo >>$@.tmp ' AuthName "Subversion Repository"' + echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)' + echo >>$@.tmp ' Require valid-user' +ifeq ($(USE_HTTPV1),yes) + echo >>$@.tmp ' SVNAdvertiseV2Protocol off' +endif +ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes) + echo >>$@.tmp ' SVNPathAuthz short_circuit' +endif + echo >>$@.tmp '</Location>' echo >>$@.tmp '# This Location lets you access repositories dropped in /tmp/' echo >>$@.tmp '<Location /svn>' echo >>$@.tmp ' DAV svn' echo >>$@.tmp ' SVNParentPath /tmp' - echo >>$@.tmp ' Allow from all' + echo >>$@.tmp ' Require all granted' echo >>$@.tmp ' #AuthType Basic' echo >>$@.tmp ' #AuthName "Subversion Repository"' echo >>$@.tmp ' #AuthUserFile $(HTTPD_CHECK_USERS)' @@ -1706,7 +1865,7 @@ endif echo >>$@.tmp ' Require all granted' echo >>$@.tmp ' </IfModule>' echo >>$@.tmp ' <IfModule !mod_authz_core.c>' - echo >>$@.tmp ' Allow from all' + echo >>$@.tmp ' Requite all granted' echo >>$@.tmp ' </IfModule>' ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes) echo >>$@.tmp ' SVNPathAuthz short_circuit' @@ -1724,7 +1883,7 @@ endif echo >>$@.tmp ' AuthName "Subversion Repository"' echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)' echo >>$@.tmp ' Require valid-user' - echo >>$@.tmp ' Satisfy Any' + echo >>$@.tmp ' Satisfy Any' ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes) echo >>$@.tmp ' SVNPathAuthz short_circuit' endif @@ -1814,7 +1973,7 @@ endif echo >>$@.tmp '<IfModule mod_authz_core.c>' echo >>$@.tmp ' <Location /authz-test-work/sallrany>' echo >>$@.tmp ' DAV svn' - echo >>$@.tmp ' SVNParentPath $($SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp' + echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp' echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz' ifeq ($(USE_HTTPV1),yes) echo >>$@.tmp ' SVNAdvertiseV2Protocol off' @@ -1857,7 +2016,7 @@ endif echo >>$@.tmp '</IfModule>' echo >>$@.tmp 'RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$$ /svn-test-work/repositories/$$1' echo >>$@.tmp 'RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ /svn-test-work/repositories/$$1' - echo >>$@.tmp 'Include "conf/$(SVN_REL_WC)*-custom.conf"' + echo >>$@.tmp 'IncludeOptional "conf/$(SVN_REL_WC)*-custom.conf"' echo >> $@.tmp '#SVNInMemoryCacheSize 0' echo >> $@.tmp '#SVNCacheTextDeltas Off' echo >> $@.tmp '#SVNCacheRevProps Off' @@ -1868,6 +2027,16 @@ $(HTTPD_PROXY_CONF): $(HTTPD_CHECK_CONF) echo > $@.tmp '# httpd config for a write-through proxy' echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"' echo >>$@.tmp 'Listen localhost:$(HTTPD_PROXY_PORT)' + echo >>$@.tmp 'LoadModule unixd_module modules/mod_unixd.so' + echo >>$@.tmp 'LoadModule alias_module modules/mod_alias.so' + echo >>$@.tmp 'LoadModule access_compat_module modules/mod_access_compat.so' + echo >>$@.tmp 'LoadModule authn_core_module modules/mod_authn_core.so' + echo >>$@.tmp 'LoadModule authn_file_module modules/mod_authn_file.so' + echo >>$@.tmp 'LoadModule authz_core_module modules/mod_authz_core.so' + echo >>$@.tmp 'LoadModule authz_user_module modules/mod_authz_user.so' + echo >>$@.tmp 'LoadModule authz_groupfile_module modules/mod_authz_groupfile.so' + echo >>$@.tmp 'LoadModule auth_basic_module modules/mod_auth_basic.so' + echo >>$@.tmp 'LoadModule dav_module modules/mod_dav.so' echo >>$@.tmp 'LoadModule dav_svn_module $(MOD_DAV_SVN)' echo >>$@.tmp 'LoadModule authz_svn_module $(MOD_AUTHZ_SVN)' echo >>$@.tmp 'LoadModule dontdothat_module $(MOD_DONTDOTHAT)' @@ -1877,7 +2046,7 @@ $(HTTPD_PROXY_CONF): $(HTTPD_CHECK_CONF) echo >>$@.tmp ' DAV svn' echo >>$@.tmp ' SVNParentPath /tmp/svn-$(BRANCH)-proxy' echo >>$@.tmp ' SVNMasterURI http://localhost:$(HTTPD_CHECK_PORT)/svn/' - echo >>$@.tmp ' Allow from all' + echo >>$@.tmp ' Requite all granted' echo >>$@.tmp ' #AuthType Basic' echo >>$@.tmp ' #AuthName "Subversion Repository"' echo >>$@.tmp ' #AuthUserFile $(HTTPD_CHECK_USERS)' @@ -1893,7 +2062,7 @@ endif echo >>$@.tmp '<Location /svn-proxy-sync>' echo >>$@.tmp 'DAV svn' echo >>$@.tmp 'SVNParentPath /tmp/svn-$(BRANCH)-proxy' - echo >>$@.tmp 'Allow from all' + echo >>$@.tmp 'Require all granted' echo >>$@.tmp '</Location>' mv -f $@.tmp $@ @@ -1913,6 +2082,7 @@ endif HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \ $(PREFIX)/httpd/bin/apachectl +HTTPD_LOG_ROTATE = mv $(PREFIX)/httpd/logs/error_log $(PREFIX)/httpd/logs/error_log.old HTTPD_START_CMD = $(HTTPD_CMD) -f $(HTTPD_CHECK_CONF) -k start HTTPD_START_CMD_PROXY = $(HTTPD_CMD) -f $(HTTPD_PROXY_CONF) HTTPD_START_CMD_DEBUG = $(HTTPD_START_CMD) -X @@ -1931,6 +2101,7 @@ SVNSERVE_STOP_CMD = kill `cat $(PWD)/svnserve-$(WC).pid`; sleep 3; \ rm -f $(PWD)/svnserve-$(WC).pid start-httpd: $(HTTPD_CHECK_CONF) + -$(HTTPD_LOG_ROTATE) $(HTTPD_START_CMD) @echo "To run tests over http, run:" @echo " make check BASE_URL=http://localhost:$(HTTPD_CHECK_PORT)" @@ -1965,12 +2136,13 @@ stop-svnserve: $(SVNSERVE_STOP_CMD) define do_check --cd $(svn_builddir) && for fs in fsfs bdb; do \ +-cd $(svn_builddir) && for fs in $(SVN_CHECK_FS_BACKENDS); do \ echo "Begin test: $(subst svn-check-,,$@) x $$fs"; \ test -d "$(RAMDISK)/tmp" && export TMPDIR="$(RAMDISK)/tmp"; \ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \ env MAKEFLAGS= make check PARALLEL=$(PARALLEL) CLEANUP=$(CLEANUP) \ EXCLUSIVE_WC_LOCKS=$(EXCLUSIVE_WC_LOCKS) \ + SVN_BIN_DIR=$(SVN_PREFIX)/bin \ MEMCACHED_SERVER=$(MEMCACHED_SERVER) $1 FS_TYPE=$$fs; \ for log in tests.log fails.log; do \ test -f $$log && mv -f $$log $$log.$@-$$fs; \ @@ -2050,9 +2222,10 @@ svn-check-swig-rb: svn-check-javahl: -if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ + ln -s libsvnjavahl-1.so.0.0 $(PREFIX)/svn-$(WC)/lib/libsvnjavahl-1.so; \ (cd $(svn_builddir) && \ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \ + MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \ tee $(svn_builddir)/tests.log.bindings.javahl; \ fi |