1PORTNAME=	ldb
2PORTVERSION=	2.8.2
3PORTREVISION=	1
4CATEGORIES=	databases
5MASTER_SITES=	SAMBA
6PKGNAMESUFFIX?=	${PORTVERSION:C/([[:digit:]]+)[.]([[:digit:]]+).*/\1\2/}
7
8MAINTAINER=	ports@MidnightBSD.org
9COMMENT=	LDAP-like embedded database
10WWW=		https://ldb.samba.org/
11
12LICENSE=	gpl3+
13
14IGNORE_NONTHREAD_PYTHON=	needs port lang/python${PYTHON_SUFFIX} to be \
15				build with THREADS support
16
17BUILD_DEPENDS=	${_LDB_DEPENDS} \
18		cmocka>=1.1.3:sysutils/cmocka
19RUN_DEPENDS=	${_LDB_DEPENDS}
20TEST_DEPENDS=	${_LDB_DEPENDS} \
21		cmocka>=1.1.3:sysutils/cmocka
22
23USES=		compiler ldap localbase:ldflags pkgconfig
24USE_LDCONFIG=	yes
25
26HAS_CONFIGURE=		yes
27CONFIGURE_LOG=		${BUILD_WRKSRC}/bin/config.log
28PKGCONFIGDIR?=		${PREFIX}/libdata/pkgconfig
29CONFIGURE_ARGS+=	--bundled-libraries=!talloc,!tevent,!tdb,!popt,!cmocka \
30			--disable-rpath \
31			--with-modulesdir=${PREFIX}/lib/shared-modules \
32			--with-openldap=${LOCALBASE} \
33			--with-privatelibdir=${PREFIX}/lib/ldb \
34			--without-gettext
35CONFIGURE_ENV+=		NOCOLOR=yes
36MAKE_ENV+=		NOCOLOR=yes
37CFLAGS+=		${_CFLAGS_${COMPILER_TYPE}}
38DEBUG_FLAGS=		-g -ggdb3 -O0
39# Some symbols in ldb's linker version scripts are not defined, but since the
40# scripts are generated dynamically, suppress errors with lld >= 17 due to these
41# undefined symbols.
42LDFLAGS+=		-Wl,--undefined-version
43
44CONFLICTS_INSTALL=	ldb[0-9][0-9] # include/ldb.h
45
46BINARY_ALIAS=	python3=${PYTHON_CMD}
47
48PLIST_FILES=	${_LDB_BINS} \
49		${_LDB_LIBS_64} \
50		${_LDB_LIBS} \
51		${PKGCONFIGDIR}/ldb.pc \
52		include/ldb.h \
53		include/ldb_errors.h \
54		include/ldb_handlers.h \
55		include/ldb_module.h \
56		include/ldb_version.h
57
58PLIST_SUB+=	PKGCONFIGDIR=${PKGCONFIGDIR:S;${PREFIX}/;;}
59
60OPTIONS_DEFINE=		MANPAGES PYTHON3
61OPTIONS_DEFAULT=	MANPAGES PYTHON3
62
63MANPAGES_BUILD_DEPENDS=		${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl \
64				xsltproc:textproc/libxslt
65MANPAGES_CONFIGURE_ENV_OFF=	XSLTPROC="false"
66
67PYTHON3_USES=		gettext-runtime python
68PYTHON3_USES_OFF=	python:build,test
69PYTHON3_CONFIGURE_OFF=	--disable-python
70PYTHON3_PLIST_FILES=	${PKGCONFIGDIR}/pyldb-util${PYTHON_TAG}.pc \
71			${PYTHON_SITELIBDIR}/_ldb_text.py \
72			${PYTHON_SITELIBDIR}/ldb${PYTHON_TAG}.so \
73			include/pyldb.h \
74			lib/libpyldb-util${PYTHON_TAG}.so \
75			lib/libpyldb-util${PYTHON_TAG}.so.2
76
77# No fancy color error messages
78_CFLAGS_clang=	-fno-color-diagnostics
79
80_LDB_DEPENDS=	talloc>=2.2.0:devel/talloc tevent>=0.10.0:devel/tevent \
81		tdb>=1.4.0:databases/tdb lmdb>=0.9.23:databases/lmdb \
82		popt>=0:devel/popt
83_LDB_BINS=	bin/ldbedit bin/ldbmodify bin/ldbadd bin/ldbdel bin/ldbsearch \
84		bin/ldbrename
85_LDB_LIBS=	lib/libldb.so lib/libldb.so.2 lib/ldb/libldb-tdb-int.so \
86		lib/ldb/libldb-tdb-err-map.so lib/ldb/libldb-key-value.so \
87		lib/ldb/libldb-cmdline.so lib/shared-modules/ldb/skel.so \
88		lib/shared-modules/ldb/server_sort.so \
89		lib/shared-modules/ldb/sample.so \
90		lib/shared-modules/ldb/rdn_name.so \
91		lib/shared-modules/ldb/paged_searches.so \
92		lib/shared-modules/ldb/ldb.so lib/shared-modules/ldb/ldap.so \
93		lib/shared-modules/ldb/asq.so lib/shared-modules/ldb/tdb.so
94_LDB_MAN1=	share/man/man1/ldbadd.1.gz share/man/man1/ldbdel.1.gz \
95		share/man/man1/ldbedit.1.gz share/man/man1/ldbmodify.1.gz \
96		share/man/man1/ldbrename.1.gz share/man/man1/ldbsearch.1.gz
97_LDB_MAN3=	share/man/man3/ldb.3.gz
98
99.include <bsd.mport.options.mk>
100
101.if defined(WITH_DEBUG)
102CONFIGURE_ARGS+=	--enable-debug \
103			--verbose
104.endif
105
106# Only for 64-bit architectures
107.if ${ARCH} != armv6 && ${ARCH} != armv7 && ${ARCH} != i386 && ${ARCH} != mips && \
108	${ARCH} != powerpc && ${ARCH} != powerpcspe
109_LDB_LIBS_64=	lib/ldb/libldb-mdb-int.so lib/shared-modules/ldb/mdb.so
110.endif
111
112.if ${PORT_OPTIONS:MMANPAGES}
113PLIST_FILES+=	${_LDB_MAN1} \
114		${_LDB_MAN3}
115.endif
116
117.if defined(NO_PYTHON)
118WARNING+=	"${PKGNAME} does not support NO_PYTHON anymore; use option PYTHON3 instead"
119.endif
120
121post-patch:
122			@${REINPLACE_CMD} -e 's|%%PKGCONFIGDIR%%|${PKGCONFIGDIR}|g' \
123				${BUILD_WRKSRC}/wscript
124
125# Use threading (or multiprocessing) but not thread (renamed in python 3+).
126pre-configure:
127			@if ! ${PYTHON_CMD} -c "import multiprocessing;" 2>/dev/null; then \
128				${ECHO_CMD}; \
129				${ECHO_MSG} "===>  ${PKGNAME} "${IGNORE_NONTHREAD_PYTHON:Q}.; \
130				${ECHO_CMD}; \
131				${FALSE}; \
132			fi
133
134post-install:
135.for lib in ${_LDB_BINS} ${_LDB_LIBS} ${_LDB_LIBS_64}
136		${STRIP_CMD} ${PREFIX}/${lib}
137.endfor
138
139post-install-PYTHON3-on:
140	${STRIP_CMD} ${FAKE_DESTDIR}${PREFIX}/lib/libpyldb-util${PYTHON_TAG}.so
141	${STRIP_CMD} ${FAKE_DESTDIR}${PYTHONPREFIX_SITELIBDIR}/ldb${PYTHON_TAG}.so
142
143.include <bsd.port.mk>
144