pkgbase=openldap pkgver=2.6.3 pkgrel=4 url='https://www.openldap.org/' pkgname=( 'openldap' 'libldap' ) track="OpenLDAP/openldap-release" target="$pkgbase-$pkgver" source=( "https://www.openldap.org/software/download/${track}/${target}.tgz"{,.asc} openldap.tmpfiles openldap.sysusers ) #---------------------- # BUILD CONFIGURATION ] makedepends=( 'libtool' 'libsasl' 'e2fsprogs' 'util-linux' 'chrpath' 'unixodbc' 'libsodium' ) options=( '!makeflags' 'emptydirs' '!lto' ) # extra modules found in contrib/slapd-modules _extra_modules=( 'nssov' 'autogroup' 'lastbind' 'passwd/sha2' ) #---------------- # BUILD PREPARE ] prepare() { cd $pkgbase-$pkgver ## change perms from 0644 to 0755 sed -i 's|-m 644 $(LIBRARY)|-m 755 $(LIBRARY)|' libraries/{liblber,libldap}/Makefile.in ## change rundir to /run/openldap sed -i 's|#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi"|#define LDAPI_SOCK LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi"|' include/ldap_defaults.h sed -i 's|%LOCALSTATEDIR%/run|/run/openldap|' servers/slapd/slapd.{conf,ldif} sed -i 's|-$(MKDIR) $(DESTDIR)$(localstatedir)/run|-$(MKDIR) $(DESTDIR)/run/openldap|' servers/slapd/Makefile.in } #---------------- # BUILD CONTROL ] _flags=( --prefix=/usr --libexecdir=/usr/lib --sysconfdir=/etc --localstatedir=/var/lib/openldap --sbindir=/usr/bin --enable-dynamic --enable-syslog --enable-ipv6 --enable-local --enable-crypt --enable-spasswd --enable-modules --enable-backends --enable-argon2 --enable-overlays=mod --with-argon2=libsodium --with-cyrus-sasl --with-threads --disable-wt ) #---------------------- # BUILD CONFIGURATION ] build() { cd $pkgbase-$pkgver autoconf ./configure "${_flags[@]}" sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool make ## build extra modules for module in "${_extra_modules[@]}"; do make -C "contrib/slapd-modules/$module" \ OPT="$CFLAGS $CPPFLAGS" \ prefix=/usr \ libexecdir=/usr/lib \ sysconfdir=/etc/openldap done } #--------- # CHECK ] check() { cd $pkgbase-$pkgver make test } #---------- # PACKAGE ] package_libldap() { pkgdesc="Lightweight Directory Access Protocol (LDAP) client libraries" depends=( 'libsasl' 'e2fsprogs' ) backup=( 'etc/openldap/ldap.conf' ) cd $pkgbase-$pkgver for dir in include libraries doc/man/man3 ; do pushd ${dir} make DESTDIR="$pkgdir" install popd done install -Dm644 -t "$pkgdir"/usr/share/man/man5 doc/man/man5/ldap.conf.5 ## get rid of duplicate default conf files rm "$pkgdir"/etc/openldap/*.default ## shared library versioning ln -sf liblber.so "$pkgdir"/usr/lib/liblber.so.2 ln -sf libldap.so "$pkgdir"/usr/lib/libldap.so.2 ## license install -Dm644 -t "$pkgdir"/usr/share/licenses/$pkgname LICENSE } package_openldap() { pkgdesc="Lightweight Directory Access Protocol (LDAP) client and server" depends=( "libldap>=$pkgver" 'libtool' 'unixodbc' 'perl' ) optdepends=( 'libsodium: for argon2 password module' ) backup=( 'etc/openldap/slapd.conf' 'etc/openldap/slapd.ldif' ) cd $pkgbase-$pkgver for dir in clients servers doc/man/man{1,5,8}; do pushd ${dir} make DESTDIR="$pkgdir" install popd done ## install extra modules for module in "${_extra_modules[@]}"; do make -C "contrib/slapd-modules/$module" \ prefix=/usr \ libexecdir=/usr/lib \ sysconfdir=/etc/openldap \ DESTDIR="$pkgdir" install ## passwd/sha2 has no man page, so skip it if [ "$module" != "passwd/sha2" ]; then install -m644 -t "$pkgdir/usr/share/man/man5" \ "contrib/slapd-modules/$module/slapo-$module.5" fi done ## should be in libldap package rm "$pkgdir"/usr/share/man/man5/ldap.conf.5 rm -r "$pkgdir"/run ## get rid of duplicate default conf files rm "$pkgdir"/etc/openldap/*.default ln -s ../lib/slapd "$pkgdir"/usr/bin/slapd chown root:439 "$pkgdir"/etc/openldap/slapd.{conf,ldif} #,DB_CONFIG.example} chmod 640 "$pkgdir"/etc/openldap/slapd.{conf,ldif} #,DB_CONFIG.example} install -dm700 -o 439 -g 439 "$pkgdir"/var/lib/openldap chown -R 439:439 "$pkgdir"/var/lib/openldap install -dm700 -o 439 -g 439 "$pkgdir"/etc/openldap/slapd.d install -Dm644 "$srcdir"/openldap.tmpfiles "$pkgdir"/usr/lib/tmpfiles.d/openldap.conf install -Dm644 "$srcdir"/openldap.sysusers "$pkgdir"/usr/lib/sysusers.d/openldap.conf ## license install -Dm644 -t "$pkgdir"/usr/share/licenses/$pkgname LICENSE } #------------------------- # LICENCE AND VALIDATION ] arch=(x86_64) license=(custom) validpgpkeys=( '3CE269B5398BC8B785645E987F67D5FD1CE1CBCE' # OpenLDAP Project # https://www.openldap.org/software/download/OpenLDAP/gpg-pubkey.txt ) sha256sums=(d2a2a1d71df3d77396b1c16ad7502e674df446e06072b0e5a4e941c3d06c0d46 # openldap-2.6.3.tgz 8fbe13b688de3da469dc160947a2425fbe3c2423c9f556c6f1dad73962d916d9 # openldap-2.6.3.tgz.asc 0be46138e53ff2fa6d4b4c06bfbdd2100426e0bd2ed29bf3419ade6b5974e9a0 # openldap.tmpfiles c6e3fa72138edfebb4ecb17f677e217c885ff9eef805b5c8ad1c09169bb0ff8e) # openldap.sysusers