summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules170
1 files changed, 170 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..c1c643d
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,170 @@
+#!/usr/bin/make -f
+
+#export DH_VERBOSE=1
+SHELL=/bin/bash
+BUILDDIR := debian/build
+
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+# The 'build' target needs special handling because there there is a directory
+# named 'build'.
+.PHONY: build
+# The build target must not be empty. Sadly because of how make
+# works, we have do duplicate the target in this case.
+build:
+ dh $@ -B$(BUILDDIR)
+%:
+ dh $@ -B$(BUILDDIR)
+
+#
+# configure
+#
+CONFFLAGS := LTFLAGS=--no-silent \
+ --host=$(DEB_HOST_GNU_TYPE) \
+ --build=$(DEB_BUILD_GNU_TYPE) \
+ --enable-layout=Debian \
+ --includedir=/usr/include/apr-1.0 \
+ --with-installbuilddir=/usr/share/apr-1.0/build \
+ --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
+ --enable-nonportable-atomics \
+ --enable-allocator-uses-mmap \
+ ac_cv_prog_AWK=mawk
+
+# apr_cv_mutex_robust_shared causes hangs in procmutex test on arm(el|hf) and alpha
+ifneq (,$(findstring armel,$(DEB_HOST_ARCH)))
+ CONFFLAGS += apr_cv_mutex_robust_shared=no
+endif
+ifneq (,$(findstring armhf,$(DEB_HOST_ARCH)))
+ CONFFLAGS += apr_cv_mutex_robust_shared=no
+endif
+ifneq (,$(findstring alpha,$(DEB_HOST_ARCH)))
+ CONFFLAGS += apr_cv_mutex_robust_shared=no
+endif
+
+# SH4 cannot use proc_pthread.
+ifneq (,$(findstring sh4,$(DEB_HOST_ARCH)))
+ CONFFLAGS += apr_cv_hasprocpthreadser=no ac_cv_define_PTHREAD_PROCESS_SHARED=no
+endif
+
+# multicast not supported on Hurd
+ifeq (hurd,$(DEB_HOST_ARCH_OS))
+ CONFFLAGS += apr_cv_struct_ipmreq=no
+endif
+
+# some minimal cross-building support
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+ ifeq ($(DEB_HOST_ARCH_OS),linux)
+ CONFFLAGS += ac_cv_file__dev_zero=yes \
+ ac_cv_func_setpgrp_void=yes \
+ apr_cv_epoll=yes \
+ ac_cv_struct_rlimit=yes \
+ apr_cv_tcp_nodelay_with_cork=yes \
+ apr_cv_process_shared_works=yes
+ endif
+ ifeq ($(DEB_HOST_ARCH_BITS),32)
+ CONFFLAGS += ac_cv_sizeof_struct_iovec=8
+ else ifeq ($(DEB_HOST_ARCH_BITS),64)
+ CONFFLAGS += ac_cv_sizeof_struct_iovec=16
+ endif
+endif
+
+# Set several variables to make build reproducible even when built on
+# usrmerge system
+CONFFLAGS += SED=/bin/sed
+CONFFLAGS += GREP=/bin/grep
+CONFFLAGS += EGREP="/bin/grep -E"
+CONFFLAGS += FGREP="/bin/grep -F"
+CONFFLAGS += ac_cv_path_lt_DD=/bin/dd
+
+override_dh_autoreconf:
+ LC_ALL=C dh_autoreconf ./buildconf
+
+override_dh_auto_configure:
+ mkdir -p $(BUILDDIR)/docs
+ # We need to force the use of bash here. Otherwise, if apr is built with
+ # /bin/sh -> /bin/bash, the resulting libtool will not work on systems
+ # where /bin/sh -> /bin/dash.
+ cd $(BUILDDIR) && CONFIG_SHELL=/bin/bash /bin/bash $(CURDIR)/configure $(CONFFLAGS)
+ifeq (linux,$(DEB_HOST_ARCH_OS))
+ if grep -q APR_HAS_POSIXSEM_SERIALIZE.*0 $(BUILDDIR)/include/apr.h ;\
+ then \
+ echo "WARNING: This is Linux but configure did not detect POSIX semaphores." ;\
+ if ! df /dev/shm/.|grep -q ^tmpfs ;\
+ then \
+ echo "ERROR: POSIX semaphores not usable and /dev/shm not mounted." ;\
+ echo "ERROR: Aborting." ;\
+ echo "HINT: If you are using pbuilder or cowbuilder, add /dev/shm to BINDMOUNTS" ;\
+ echo "HINT: in pbuilderrc" ;\
+ exit 1 ;\
+ fi ;\
+ fi
+endif
+
+
+#
+# build
+#
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ NUMJOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+endif
+
+override_dh_auto_build:
+ $(MAKE) -j$(NUMJOBS) -C $(BUILDDIR) all dox
+ find debian/build/docs/dox/html -name \*.md5 -delete
+
+#
+# test
+#
+
+ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
+
+# the testsockets test will fail on vservers (no 127.0.0.1) or if ipv6 is
+# enabled in the kernel but not configured on any interface
+IGNORE_TESTSOCK = $(shell IGN=false; \
+ /sbin/ifconfig|grep -q 127.0.0.1 || IGN=true; \
+ grep -q ipv6 /proc/net/protocols && ( /sbin/ifconfig|grep -q inet6 || IGN=true ) ; \
+ echo $$IGN )
+
+override_dh_auto_test:
+ $(MAKE) -C $(BUILDDIR)/test -j$(NUMJOBS) all
+ cd $(BUILDDIR)/test && ./testall -v testsockets testsock || $(IGNORE_TESTSOCK)
+ cd $(BUILDDIR)/test && ( ulimit -S -s 8192 ; ./testall -v testatomic)
+ cd $(BUILDDIR)/test && ./testall -v -x testsockets testsock testatomic
+
+else
+override_dh_auto_test:
+
+endif
+
+
+#
+# install
+#
+override_dh_auto_install:
+ dh_auto_install --destdir=debian/tmp
+ perl -p -i -e "s,^dependency_libs=.*,dependency_libs=''," debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libapr-1.la
+ # Remove hostname to make build reproducible
+ perl -p -i -e 's/Libtool was configured on host.*//' debian/tmp/usr/share/apr-1.0/build/libtool
+ # Replace variable build path with BUILDDIR
+ perl -p -i -e "s,$(CURDIR),BUILDDIR/," debian/tmp/usr/bin/apr-1-config
+ perl -p -i -e "s,$(CURDIR),BUILDDIR/," debian/tmp/usr/share/apr-1.0/build/apr_rules.mk
+ perl -p -i -e "s,$(CURDIR),BUILDDIR/," debian/tmp/usr/share/apr-1.0/build/libtool
+ if ! head -n 1 debian/tmp/usr/share/apr-1.0/build/libtool | grep -q /bin/bash ; then \
+ echo ERROR: The built libtool uses /bin/sh instead of /bin/bash ; \
+ exit 1 ; \
+ fi
+
+override_dh_strip:
+ dh_strip --dbgsym-migration='libapr1-dbg (<< 1.7.0-4~)'
+
+override_dh_makeshlibs:
+ dh_makeshlibs -- -Idebian/symbols.$(DEB_HOST_ARCH_OS)
+
+override_dh_auto_clean:
+ dh_auto_clean
+ rm -rf $(BUILDDIR)