diff options
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 187 |
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 |