#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at
# trunk/opendj3/legal-notices/CDDLv1_0.txt
# or http://forgerock.org/license/CDDLv1.0.html.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at
# trunk/opendj3/legal-notices/CDDLv1_0.txt. If applicable,
# add the following below this CDDL HEADER, with the fields enclosed
# by brackets "[]" replaced with your own identifying information:
# Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright 2013 ForgeRock AS
#
%define _topdir [[ topDir ]]
%define _arch noarch
%define _prefix [[ prefix ]]
%define _pre [[ pre ]]
%define __os_install_post %{nil}
# =========================
# Header
# =========================
# Short Description
Summary: [[ shortName ]]
# Application Name
Name: [[ pkgName ]]
# Application Version
Version: [[ version ]]
# Packaging Revision
Release: [[ release ]]
# Software Licenced Under
License: CDDL
# RPM Group
Group: Productivity/Networking/LDAP/Servers
# Link to Application web site
URL: [[ referenceURL ]]
# Distributing Organisation
Vendor: ForgeRock AS
# Build Architecture
BuildArch: noarch
Requires: jre >= 1.6
# Long Description
%Description
OpenDJ LDAP Server
OpenDJ is an LDAPv3 compliant directory service, developed for the Java
platform, providing a high performance, highly available and secure store
for the identities managed by enterprises. Its easy installation process,
combined with the power of the Java platform makes OpenDJ one of the
simplest and fastest directory servers to deploy and manage.
# =========================
# Prepare, Build, Install
# =========================
# %prep
# %build
%install
mkdir -p "${RPM_BUILD_ROOT}%{_prefix}"
cd "${RPM_BUILD_ROOT}%{_prefix}"
# [[ installRpmFiles ]]
#Moves the doc files to doc folder
mkdir -p "%{buildroot}%{_defaultdocdir}/%{name}-%{version}"
/bin/grep -v '^#' "${RPM_SOURCE_DIR}/docFiles" | while read docFiles
do
mv "$RPM_BUILD_ROOT"%{_prefix}$docFiles "$RPM_BUILD_ROOT"%{_defaultdocdir}/%{name}-%{version}/
done
# Removes the excluded files. They shouldn't be a part of this package.
/bin/grep -v '^#' "${RPM_SOURCE_DIR}/excludedFiles" | while read excludedFiles
do
rm -r "${RPM_BUILD_ROOT}"%{_prefix}$excludedFiles
done
# Moves the init.d script.
mkdir -p "$RPM_BUILD_ROOT"/etc/init.d/
install -m 755 "$RPM_SOURCE_DIR"/opendj "$RPM_BUILD_ROOT"/etc/init.d/opendj
%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"
# =========================
# Pre & Post Install
# =========================
# If the first argument to %pre is 1, the RPM operation is an initial
# installation. If the argument to %pre is 2, the operation is an upgrade
# from an existing version to a new one.
# Similarly, the arguments to a %post are 1 and 2 for a new installation
# and upgrade, respectively. (%pre and %post aren't executed during
# an uninstallation.)
# -------------------------
# Pre Install
%pre
if [ "$1" == "1" ]; then
echo "Pre Install - initial install"
else if [ "$1" == "2" ] ; then
# Only if the instance has been configured
if [ -e "%{_prefix}"/config/buildinfo ] && [ "$(ls -A "%{_prefix}"/config/archived-configs)" ]
then
echo "Pre Install - upgrade install"
# If the server is running before upgrade, creates a file flag
if [ -f "%{_prefix}"/logs/server.pid ]
then
touch "%{_prefix}"/logs/status
fi
"%{_prefix}"/bin/./stop-ds
fi
fi
fi
# -------------------------
# Post Install
%post
# Registers the service
/sbin/chkconfig --add opendj
# Symlinks to process ID
test -h "/var/run/opendj.pid" || ln -s /opt/opendj/logs/server.pid /var/run/opendj.pid
if [ "$1" == "1" ] ; then
echo "Post Install - initial install"
else if [ "$1" == "2" ] ; then
echo "Post Install - upgrade install"
# Only if the instance has been configured
if [ -e "%{_prefix}"/config/buildinfo ] && [ "$(ls -A "%{_prefix}"/config/archived-configs)" ]
then
"%{_prefix}"/./upgrade -n --acceptLicense
# Upgrade ok
if [ "$?" == "0" ] ; then
# Checks the server status flag for restart.
if [ -f "%{_prefix}"/logs/status ]
then
echo ""
echo "Restarting server..."
"%{_prefix}"/./bin/start-ds
echo ""
rm -f "%{_prefix}"/logs/status
fi
fi
# Upgrade fails, needs user interaction (eg. manual mode)
if [ "$?" == "2" ] ; then
exit "0"
fi
else
echo "Instance is not configured. Upgrade aborted."
exit -1
fi
fi
fi
# =========================
# Pre & Post Uninstall
# =========================
# If the first argument to %preun and %postun is 0, the action is
# uninstallation.
# If the first argument to %preun and %postun is 1, the action is an upgrade.
# -------------------------
# Pre Uninstall
%preun
if [ "$1" == "0" ] ; then
echo "Pre Uninstall - uninstall"
# Stops the service and delete it.
/etc/init.d/opendj stop >/dev/null 2>&1
/sbin/chkconfig --del opendj
# Unlink the symlink to the process ID.
test -h "/var/run/opendj.pid" && unlink /var/run/opendj.pid
# Only if the instance has been configured
if [ -e "%{_prefix}"/config/buildinfo ] && [ "$(ls -A "%{_prefix}"/config/archived-configs)" ]
then
"%{_prefix}"/bin/./stop-ds
fi
else if [ "$1" == "1" ] ; then
echo "Pre Uninstall - upgrade uninstall"
fi
fi
# -------------------------
# Post Uninstall
%postun
if [ "$1" == "0" ] ; then
echo "Post Uninstall - uninstall"
echo "OpenDJ successfully removed."
else if [ "$1" == "1" ] ; then
echo "Post Uninstall - upgrade uninstall"
fi
fi
# =========================
# Files section
# =========================
%files -f "%{_sourcedir}"/files
%defattr(-,root,root)
%{_defaultdocdir}/%{name}-%{version}/
# =========================
# Changelog
# =========================
%changelog
* Thu Aug 22 2013 ForgeRock
- Modified init.d script.
* Tue Aug 6 2013 ForgeRock
- Added init.d service script.
* Wed Jul 31 2013 ForgeRock
- Fixed the doc's section.
- Target no longer fails when build path contains spaces.
* Thu Jul 18 2013 ForgeRock
- Fixed the sections' order and added a new "clean" section.
- Added '%doc' section.
- Added '%changelog' at the end of the file.
- Added license to header's files.