#!/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 -Wno-format-extra-args -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE export DEB_BUILD_MAINT_OPTIONS := hardening=+pie,+bindnow # Configure calls AM_INIT_AUTOMAKE, but Automake fails as there is no Makefile.am. # Tell dh-autoreconf to skip automake. export AUTOMAKE = true # 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-bdb --disable-hdb --disable-mdb endif ifneq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),) CONFIG += --disable-slapd endif CONTRIB_MODULES = autogroup lastbind passwd passwd/argon2 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 MAKEVARS := STRIP= # Standard variables used in contrib Makefiles. # We override these in make invocations rather than patch every one. CONTRIB_MAKEVARS := \ LDAP_BUILD='$(builddir)' \ prefix=/usr \ ldap_subdir=/ldap \ moduledir='$$(libdir)$$(ldap_subdir)' # These variables are used only by get-orig-source, which will normally only # be run by maintainers. VERSION = $(subst +dfsg,,$(DEB_VERSION_UPSTREAM)) URL = https://www.openldap.org/software/download/OpenLDAP/openldap-release/ # Download the upstream source and make changes as required for DFSG reasons. # Assumes wget is available, as this is generally only used by the package # maintainers. get-orig-source: @if [ ! -d "debian/schema" ] ; then \ echo 'Run this from the top directory of the Debian source' >&2; \ exit 1; \ fi wget $(URL)/openldap-$(VERSION).tgz tar xzf openldap-$(VERSION).tgz rm -r openldap-$(VERSION)/doc/drafts rm -r openldap-$(VERSION)/doc/rfc set -e; for schema in debian/schema/*.schema debian/schema/*.ldif ; do \ file=`basename "$$schema"`; \ rm openldap-$(VERSION)/servers/slapd/schema/$$file; \ done mv openldap-$(VERSION) openldap-$(VERSION)+dfsg tar cf openldap_$(VERSION)+dfsg.orig.tar openldap-$(VERSION)+dfsg rm -r openldap-$(VERSION)+dfsg gzip -9 openldap_$(VERSION)+dfsg.orig.tar DH = dh $@ --builddirectory=$(builddir) .PHONY: build build: $(DH) %: $(DH) # Only contrib/ldapc++ uses Automake, so special care is needed to update # config.guess and config.sub at the top level. autoreconf: autoreconf -f -i . contrib/ldapc++ cp -f /usr/share/misc/config.guess /usr/share/misc/config.sub build/ override_dh_autoreconf: dh_autoreconf debian/rules -- autoreconf 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 -- $(MAKEVARS) ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),) for mod in $(CONTRIB_MODULES); do \ dh_auto_build -Dcontrib/slapd-modules/$$mod -Bcontrib/slapd-modules/$$mod -- $(CONTRIB_MAKEVARS) || exit $$?; \ done endif override_dh_auto_test: ifeq ($(DEB_HOST_ARCH),ppc64el) # Disable test060-mt-host on ppc64el until #866122 is fixed. rm -f tests/scripts/test060-mt-hot endif dh_auto_test override_dh_auto_install: dh_auto_install -- $(MAKEVARS) 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 -- "defaults 19 80" ifeq ($(filter pkg.openldap.noslapd,$(DEB_BUILD_PROFILES)),) override_dh_installman: dh_installman rm -f $(CURDIR)/debian/slapd/usr/share/man/man5/slapo-smbk5pwd.* override_dh_fixperms-arch: dh_fixperms chmod +x $(CURDIR)/debian/slapd/usr/share/slapd/ldiftopasswd endif override_dh_strip: dh_strip -plibldap-2.4-2 --dbgsym-migration='libldap-2.4-2-dbg (<< 2.4.45+dfsg-1~)' 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 slappasswd slaptest slapschema ; do \ ln -f $(slapddir)/slapd $(slapddir)/$$f ; \ done endif override_dh_link: for pkg in libldap2-dev libldap-2.4-2; do \ sed -e"s/\$${DEB_HOST_MULTIARCH}/$(DEB_HOST_MULTIARCH)/g" < debian/$$pkg.links.in > debian/$$pkg.links; \ done 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_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