diff options
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..5b8b75f --- /dev/null +++ b/debian/rules @@ -0,0 +1,232 @@ +#!/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 |