Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #5575: Add an internal BDB version for slapd builds #500

Merged
merged 1 commit into from Oct 17, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 12 additions & 1 deletion rudder-inventory-ldap/SOURCES/Makefile
Expand Up @@ -19,11 +19,21 @@
.DEFAULT_GOAL := localdepends

OPENLDAP_RELEASE = 2.4.30
BERKELEYDB_RELEASE = 5.1.29

RUDDER_VERSION_TO_PACKAGE = <put Rudder version or version-snapshot here>

WGET := $(if $(PROXY), http_proxy=$(PROXY) ftp_proxy=$(PROXY)) /usr/bin/wget

localdepends: ./openldap-source ./DB_CONFIG ./rudder.schema ./inventory.schema ./slapd.conf ../debian/rudder-slapd.init ../debian/rudder-slapd.default
localdepends: ./berkeleydb-source ./openldap-source ./DB_CONFIG ./rudder.schema ./inventory.schema ./slapd.conf ../debian/rudder-slapd.init ../debian/rudder-slapd.default
rm -rf ./openldap.tgz
rm -rf ./berkeleydb.tgz

./berkeleydb-source: /usr/bin/wget
# Original URL: http://download.oracle.com/berkeley-db/db-$(BERKELEYDB_RELEASE).tar.gz
$(WGET) -O ./berkeleydb.tgz http://www.normation.com/tarball/db-$(BERKELEYDB_RELEASE).tar.gz
tar xzf ./berkeleydb.tgz -C .
mv ./db-$(BERKELEYDB_RELEASE) ./berkeleydb-source

./openldap-source: /usr/bin/wget
# Original URL: ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-$(OPENLDAP_RELEASE).tgz
Expand Down Expand Up @@ -61,6 +71,7 @@ localdepends: ./openldap-source ./DB_CONFIG ./rudder.schema ./inventory.schema .

localclean:
rm -rf ./openldap-source
rm -rf ./berkeleydb-source
rm -rf ./slapd.conf
rm -rf ../debian/rudder-slapd.init
rm -rf ../debian/rudder-slapd.default
Expand Down
2 changes: 2 additions & 0 deletions rudder-inventory-ldap/SOURCES/rudder-inventory-ldap.conf
@@ -0,0 +1,2 @@
# Libraries held by rudder i.e BerkeleyDB
/opt/rudder/lib
43 changes: 41 additions & 2 deletions rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec
Expand Up @@ -69,6 +69,9 @@ Source5: rudder.schema
Source6: DB_CONFIG
Source7: rudder-inventory-ldap
Source8: rudder-ldap
# This file will contain path of /opt/rudder/lib for ld which will
# find there all necessary libraries for BerkeleyDB.
Source9: rudder-inventory-ldap.conf

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

Expand Down Expand Up @@ -117,35 +120,60 @@ rudder-agent package installed) and for configuration rules and parameters.
#=================================================
%prep

cp -rf %{_sourcedir}/berkeleydb-source %{_builddir}
cp -rf %{_sourcedir}/openldap-source %{_builddir}

#=================================================
# Building
#=================================================
%build
cd openldap-source

# Ensure an appropriate environment for the compiler
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"

# 1 - BerkeleyDB
cd berkeleydb-source/build_unix/
../dist/configure --build=%_target --prefix=%{rudderdir}

make %{?_smp_mflags}
make install

cd ../..

# 2 - OpenLDAP
cd openldap-source

export LD_LIBRARY_PATH="/opt/rudder/lib"
export CPPFLAGS="-I/opt/rudder/include"
export LDFLAGS="-L/opt/rudder/lib"
export LIBS="-L/opt/rudder/lib"

./configure --build=%_target --prefix=%{rudderdir} --libdir=%{rudderdir}/lib/ldap --enable-dynamic --enable-debug --enable-modules --enable-hdb=mod --enable-monitor=mod --enable-dynlist=mod --with-cyrus-sasl

make %{?_smp_mflags} depend
make %{?_smp_mflags}

#=================================================
# Installation
#=================================================
%install
rm -rf %{buildroot}

mkdir -p %{buildroot}/etc/ld.so.conf.d
mkdir -p %{buildroot}/opt/rudder/
mkdir -p %{buildroot}/opt/rudder/etc/server-roles.d/
mkdir -p %{buildroot}%{rudderlogdir}/ldap
mkdir -p %{buildroot}/var/rudder/ldap/openldap-data
mkdir -p %{buildroot}/var/rudder/run

cd openldap-source && make install DESTDIR=%{buildroot}
# Now, we install BerkeleyDB in %{buildroot} to package it
cd berkeleydb-source/build_unix && make install DESTDIR=%{buildroot}

cd ../../openldap-source && make install DESTDIR=%{buildroot}

# Remove useless BerkeleyDB documentation
rm -rf %{buildroot}/opt/rudder/docs

# Init script
mkdir -p %{buildroot}/etc/init.d
Expand All @@ -161,6 +189,10 @@ install -m 644 %{SOURCE6} %{buildroot}/var/rudder/ldap/openldap-data/
install -m 644 %{SOURCE7} %{buildroot}/opt/rudder/etc/server-roles.d/
install -m 644 %{SOURCE8} %{buildroot}/opt/rudder/etc/server-roles.d/

# Install /etc/ld.so.conf.d/rudder.conf in order to use libraries
# contained in /opt/rudder/lib like BerkeleyDB
install -m 644 %{SOURCE9} %{buildroot}/etc/ld.so.conf.d/rudder-inventory-ldap.conf

# Syslog configuration
mkdir -p %{buildroot}/etc/rsyslog.d
cp %{_sourcedir}/rsyslog/rudder-slapd.conf %{buildroot}/etc/rsyslog.d/rudder-slapd.conf
Expand All @@ -174,6 +206,7 @@ cp %{_sourcedir}/rsyslog/rudder-slapd.conf %{buildroot}/etc/rsyslog.d/rudder-sla
# Only do this on package upgrade
if [ $1 -gt 1 ]
then

# When upgrading OpenLDAP, we may need to dump the database
# so that it can be restored from LDIF in case the new
# package uses a different version of BerkeleyDB (libdb)
Expand All @@ -193,6 +226,11 @@ fi
# Post Installation
#=================================================

# Reload the linker cache (to acknowledge BerkeleyDB's presence if needed)
if [ -f /etc/ld.so.conf.d/rudder-inventory-ldap.conf ]; then
ldconfig
fi

echo -n "INFO: Setting rudder-slapd as a boot service..."
chkconfig --add rudder-slapd >/dev/null 2>&1
%if 0%{?rhel} >= 6
Expand Down Expand Up @@ -307,6 +345,7 @@ rm -rf %{buildroot}
/etc/init.d/rudder-slapd
%config(noreplace) /etc/default/rudder-slapd
%config(noreplace) /opt/rudder/etc/openldap/slapd.conf
%config(noreplace) /etc/ld.so.conf.d/rudder-inventory-ldap.conf

#=================================================
# Changelog
Expand Down
5 changes: 5 additions & 0 deletions rudder-inventory-ldap/debian/postinst
Expand Up @@ -24,6 +24,11 @@ case "$1" in
invoke-rc.d rsyslog restart >/dev/null 2>&1
echo " Done"

# Reload the linker cache (to acknowledge BerkeleyDB's presence if needed)
if [ -e /etc/ld.so.conf.d/rudder-inventory-ldap.conf ]; then
ldconfig
fi

RUDDER_SHARE=/opt/rudder/share
RUDDER_UPGRADE_TOOLS=${RUDDER_SHARE}/upgrade-tools
BACKUP_LDIF_PATH=/var/rudder/ldap/backup/
Expand Down
14 changes: 8 additions & 6 deletions rudder-inventory-ldap/debian/rules
Expand Up @@ -9,23 +9,21 @@
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1




configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
cd SOURCES/openldap-source && ./configure --prefix=/opt/rudder --libdir=/opt/rudder/lib/ldap --enable-dynamic --enable-debug --enable-modules --enable-hdb=mod --enable-monitor=mod --enable-dynlist=mod --with-cyrus-sasl
cd SOURCES/berkeleydb-source/build_unix && ../dist/configure --prefix=/opt/rudder
export LD_LIBRARY_PATH="/opt/rudder/lib" ; CPPFLAGS="-I/opt/rudder/include" ; export LDFLAGS="-L/opt/rudder/lib" ; export LIBS="-L/opt/rudder/lib" ; cd SOURCES/openldap-source && ./configure --prefix=/opt/rudder --libdir=/opt/rudder/lib/ldap --enable-dynamic --enable-debug --enable-modules --enable-hdb=mod --enable-monitor=mod --enable-dynlist=mod --with-cyrus-sasl

touch configure-stamp


build: build-stamp

build-stamp: configure-stamp
dh_testdir

cd SOURCES/berkeleydb-source/build_unix && make
cd SOURCES/openldap-source && make depend
cd SOURCES/openldap-source && make

Expand All @@ -49,7 +47,8 @@ install: build
dh_prep
dh_installdirs

# Add here commands to install the package into debian/normation-openldap.
# Add here commands to install the package
cd SOURCES/berkeleydb-source/build_unix && make install DESTDIR=$(CURDIR)/debian/tmp
cd SOURCES/openldap-source && make install DESTDIR=$(CURDIR)/debian/tmp

# Remove the default config file, we will use our own
Expand All @@ -69,6 +68,9 @@ binary-arch: install
dh_installexamples
dh_install
dh_install SOURCES/rsyslog/rudder-slapd.conf /etc/rsyslog.d/
# Install /etc/ld.so.conf.d/rudder.conf in order to use libraries contain
# in /opt/rudder/lib like BerkeleyDB
dh_install --SOURCEDIR=$(CURDIR)/SOURCES/ rudder-inventory-ldap.conf /etc/ld.so.conf.d
dh_install SOURCES/slapd.conf /opt/rudder/etc/openldap/
dh_install SOURCES/inventory.schema /opt/rudder/etc/openldap/schema/
dh_install SOURCES/rudder.schema /opt/rudder/etc/openldap/schema/
Expand Down