summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules187
1 files changed, 187 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..3fab06f
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,187 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/pkg-info.mk
+
+# Set this variable if you're building packages outside of Debian and don't
+# want the checks for DFSG-freeness.
+#DFSG_NONFREE = 1
+
+export DEB_CFLAGS_MAINT_APPEND := -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
+export DEB_BUILD_MAINT_OPTIONS := hardening=+all
+
+# Expose maintainer address to build/mkversion (see debian/patches/set-maintainer-name)
+export DEB_MAINTAINER := $(shell sed -ne 's/Maintainer:\s\+//p' debian/control)
+
+# Expose DEB_VERSION to build/version.sh (see debian/patches/debian-version)
+export DEB_VERSION
+
+# Workaround for bad glibc behavior when resolving localhost
+export RESOLV_MULTI = off
+
+CONFIG = $(shell grep -v "^\#" debian/configure.options)
+ifeq ($(DEB_HOST_ARCH_OS),hurd)
+ CONFIG += --disable-mdb
+endif
+ifneq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+ CONFIG += --disable-slapd
+endif
+
+CONTRIB_MODULES = autogroup lastbind passwd passwd/pbkdf2 passwd/sha2 smbk5pwd
+
+# Ensure CC is set correctly for cross builds, unless it has already
+# been set explicitly.
+ifeq ($(origin CC),default)
+ export CC := $(DEB_HOST_GNU_TYPE)-gcc
+endif
+
+installdir := $(CURDIR)/debian/tmp
+builddir := $(CURDIR)/debian/build
+slapddir := $(CURDIR)/debian/slapd/usr/sbin
+
+# Standard variables used in contrib Makefiles.
+# We override these in make invocations rather than patch every one.
+CONTRIB_MAKEVARS := \
+ LDAP_BUILD='$(builddir)' \
+ OPT= \
+ prefix=/usr \
+ ldap_subdir=/ldap \
+ moduledir='$$(libdir)$$(ldap_subdir)'
+
+DH = dh $@ --builddirectory=$(builddir)
+.PHONY: build
+build:
+ $(DH)
+%:
+ $(DH)
+
+override_dh_auto_configure:
+ # Check if we include the RFCs, Internet-Drafts, or upstream schemas
+ # with RFC text (which are non DFSG-free). You can set DFSG_NONFREE
+ # to build the packages from the unchanged upstream sources but Debian
+ # can not ship the RFCs in main so this test is here to make sure it
+ # does not get in by accident again. -- Torsten
+ if [ -z "$(DFSG_NONFREE)" ]; then \
+ if [ -e doc/drafts ] || [ -e doc/rfc ]; then exit 1; fi; \
+ if [ -e servers/slapd/schema/core.schema ] \
+ && grep -q 'RFC 4519 definition' servers/slapd/schema/core.schema; \
+ then \
+ exit 1; \
+ fi; \
+ fi
+
+ # Copy our stripped schema versions into where upstream expects them.
+ if [ -z "$(DFSG_NONFREE)" ]; then \
+ cp debian/schema/*.schema debian/schema/*.ldif \
+ servers/slapd/schema/; \
+ fi
+
+ dh_auto_configure -- $(CONFIG)
+
+override_dh_auto_build:
+ dh_auto_build
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+ # passwd/sha2 needs special handling, see #1030716 and LP: #2000817
+ for mod in $(CONTRIB_MODULES); do \
+ if [ "$$mod" = "passwd/sha2" ]; then \
+ EXTRA_OPT="-fno-strict-aliasing"; \
+ else \
+ EXTRA_OPT=""; \
+ fi; \
+ dh_auto_build -Dcontrib/slapd-modules/$$mod -Bcontrib/slapd-modules/$$mod -- $(CONTRIB_MAKEVARS) OPT+=$$EXTRA_OPT || exit $$?; \
+ done
+endif
+
+override_dh_auto_install:
+ dh_auto_install -- STRIP_OPTS=
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+ for mod in $(CONTRIB_MODULES); do \
+ dh_auto_install -Dcontrib/slapd-modules/$$mod -Bcontrib/slapd-modules/$$mod -- $(CONTRIB_MAKEVARS) || exit $$?; \
+ done
+
+ # Empty the dependency_libs file in the .la files.
+ for F in $(installdir)/usr/lib/ldap/*.la; do \
+ sed -i "s/^dependency_libs=.*/dependency_libs=''/" $$F; \
+ done
+endif
+
+ # Check all built libraries for unresolved symbols except for the
+ # libslapi library. It is a special case since the SLAPI interface
+ # depends on symbols defined in slapd itself. Those symbols will
+ # remain unresolved until the plugin is loaded into slapd.
+ for F in $(installdir)/usr/lib/$(DEB_HOST_MULTIARCH)/*.so.*.*.*; do \
+ if echo "$$F" | grep -q libslapi ; then \
+ continue; \
+ fi; \
+ if LD_LIBRARY_PATH=$(installdir)/usr/lib/$(DEB_HOST_MULTIARCH) ldd -d -r $$F 2>&1 | grep '^undefined symbol:'; then \
+ echo; \
+ echo "library $$F has undefined references. Please fix this before continuing."; \
+ exit 1; \
+ fi; \
+ done
+
+ # Upstream manpages are section 8C but installed as section 8
+ find $(installdir)/usr/share/man -name \*.8 \
+ | xargs perl -pi -e 's#(\.TH \w+ 8)C#$$1#'
+
+override_dh_installinit:
+ dh_installinit --no-restart-after-upgrade --error-handler=ignore_init_failure -- "defaults 19 80"
+
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+override_dh_fixperms-arch:
+ dh_fixperms
+ chmod +x $(CURDIR)/debian/slapd/usr/share/slapd/ldiftopasswd
+endif
+
+override_dh_strip:
+ dh_strip -pslapd --dbgsym-migration='slapd-dbg (<< 2.4.45+dfsg-1~)'
+ dh_strip --remaining-packages
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+ # hardlink these so not confined by apparmor; do this here and not
+ # in dh_link so that dh_strip doesn't get confused and put the wrong
+ # binary in the debug package.
+ for f in slapacl slapadd slapauth slapcat slapdn slapindex slapmodify slappasswd slapschema slaptest; do \
+ ln -f $(slapddir)/slapd $(slapddir)/$$f ; \
+ done
+endif
+
+override_dh_link:
+ sed -e"s/\$${DEB_HOST_MULTIARCH}/$(DEB_HOST_MULTIARCH)/g" < debian/libldap-dev.links.in > debian/libldap-dev.links
+ dh_link
+
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+override_dh_makeshlibs:
+ echo "slapd:Provides=$$(objdump -p debian/slapd/usr/lib/$(DEB_HOST_MULTIARCH)/libslapi-*.so.* \
+ | sed -ne '/SONAME/ { s/[[:space:]]*SONAME[[:space:]]*//; \
+ s/\.so\./-/; p; q }' \
+ )" >> debian/slapd.substvars
+ dh_makeshlibs -pslapd -X/usr/lib/ldap/ -V "$$(sed -ne's/slapd:Provides=//p' debian/slapd.substvars)"
+ dh_makeshlibs --remaining-packages
+endif
+
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+override_dh_installdeb:
+ dh_installdeb
+ perl -w debian/dh_installscripts-common -p slapd
+endif
+
+override_dh_missing:
+ dh_missing --fail-missing
+
+override_dh_auto_clean:
+ dh_auto_clean
+ # Update translation templates for debconf
+ debconf-updatepo
+ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),)
+ # Remove our stripped schema from the upstream source area.
+ if [ -z "$(DFSG_NONFREE)" ]; then \
+ set -e; for s in debian/schema/*.schema debian/schema/*.ldif; do \
+ rm -f servers/slapd/schema/`basename $$s`; \
+ done; \
+ fi
+
+ # Clean the contrib directory
+ for mod in $(CONTRIB_MODULES); do \
+ dh_auto_clean -Dcontrib/slapd-modules/$$mod -Bcontrib/slapd-modules/$$mod || exit $?; \
+ done
+endif