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
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_test:
# 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:
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
|