1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
#!/usr/bin/make -f
export DEB_CFLAGS_MAINT_APPEND := -Wall -D_GNU_SOURCE -Wno-unused-const-variable
export DEB_BUILD_MAINT_OPTIONS := hardening=+all future=+lfs
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
# 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
# noslapd: empty (false) or non-empty (true)
noslapd := $(filter pkg.openldap.noslapd, ${DEB_BUILD_PROFILES})
# 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 (${noslapd},)
CONFIG += --disable-slapd
endif
ifneq ($(filter cross,$(DEB_BUILD_PROFILES)),)
CONFIG += --with-yielding-select=yes ac_cv_func_memcmp_working=yes
endif
CONTRIB_MODULES = autogroup lastbind passwd passwd/pbkdf2 passwd/sha2 ppm smbk5pwd
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-arch:
# slapdS.c is generated by libtool without using ${CPPFLAGS}
@echo 'blhc: ignore-line-regexp: .*"slapdS\.c".*'
# servers/slapd/Makefile.in uses `$(AR) ruv libbackends.a *.o' construct,
# and *.o sort is locale-dependent. LC_ALL=C makes the build reproducible.
LC_ALL=C \
dh_auto_build
ifeq (${noslapd},)
# 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_test-arch:
# Disable certain timing-sensitive tests which can be flaky on buildds (#1010608)
rm -f tests/scripts/test063-delta-multiprovider tests/scripts/test069-delta-multiprovider-starttls
dh_auto_test
override_dh_auto_install-arch:
# systemdsystemunitdir: we ship our own systemd unit
dh_auto_install -- STRIP_OPTS= systemdsystemunitdir=
ifeq (${noslapd},)
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#'
# for indep, we only need the ldap.conf.5 manpage
override_dh_auto_build-indep:
$(MAKE) -C ${builddir}/doc/man/man5
override_dh_auto_test-indep:
override_dh_auto_install-indep:
install -Dm0644 ${builddir}/doc/man/man5/ldap.conf.5.tmp \
${installdir}/usr/share/man/man5/ldap.conf.5
override_dh_installinit:
dh_installinit --no-restart-after-upgrade --error-handler=ignore_init_failure -- "defaults 19 80"
override_dh_strip:
dh_strip
ifeq (${noslapd},)
# 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_makeshlibs:
ifeq (${noslapd},)
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)"
endif
dh_makeshlibs --remaining-packages
override_dh_installdeb:
dh_installdeb
ifeq (${noslapd},)
perl -w debian/dh_installscripts-common -p slapd
endif
override_dh_auto_clean:
dh_auto_clean
# Update translation templates for debconf
debconf-updatepo
ifeq (${noslapd},)
# 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
|