Index: 389-ds-base.spec
===================================================================
RCS file: /cvs/extras/rpms/389-ds-base/F-11/389-ds-base.spec,v
retrieving revision 1.5
diff -u -8 -r1.5 389-ds-base.spec
--- 389-ds-base.spec	8 Sep 2009 19:24:58 -0000	1.5
+++ 389-ds-base.spec	6 Oct 2009 02:37:03 -0000
@@ -1,15 +1,15 @@
 
 %define pkgname   dirsrv
 
 Summary:          389 Directory Server (base)
 Name:             389-ds-base
-Version:          1.2.2
-Release:          2%{?dist}
+Version:          1.2.3
+Release:          1%{?dist}
 License:          GPLv2 with exceptions
 URL:              http://port389.org/
 Group:            System Environment/Daemons
 BuildRoot:        %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Provides:         fedora-ds-base = %{version}-%{release}
 Obsoletes:        fedora-ds-base < 1.2.1-1
 
 BuildRequires:    nspr-devel
@@ -141,29 +141,39 @@
 --                  print(fullname.." is linked to "..linked)
                     %{pkgname}_savelinks[fullname] = linked
                 end
             end
         end
     end
 end
 
-%post
-/sbin/chkconfig --add %{pkgname}
-/sbin/ldconfig
-# this has been problematic - if this directory
-# does not exist, the server will silently fail to
-# start - however, if the user has already created
-# it, we don't want to overwrite the permissions
-# on it - so we can't list it explicitly in the
-# files section - we list it as a ghost so that
-# it will be removed when the rpm is removed
-if [ ! -d %{_localstatedir}/run/%{pkgname} ] ; then
-    mkdir -p %{_localstatedir}/run/%{pkgname}
-fi
+%post -p <lua>
+os.execute('/sbin/chkconfig --add %{pkgname}')
+os.execute('/sbin/ldconfig')
+-- this has been problematic - if this directory
+-- does not exist, the server will silently fail to
+-- start - however, if the user has already created
+-- it, we don't want to overwrite the permissions
+-- on it - so we can't list it explicitly in the
+-- files section - we list it as a ghost so that
+-- it will be removed when the rpm is removed
+if not posix.access("%{_localstatedir}/run/%{pkgname}") then
+    posix.mkdir("%{_localstatedir}/run/%{pkgname}")
+end
+-- since posttrans is not passed the upgrade status, we get
+-- it here
+if (arg[2] > 1) or %{pkgname}_exists then
+--    print("in %{pkgname} post - upgrading")
+    %{pkgname}_upgrading = true
+else
+--    print("in %{pkgname} post - installing")
+    %{pkgname}_upgrading = false
+end
+
 
 %preun
 if [ $1 = 0 ]; then
         /sbin/service %{pkgname} stop >/dev/null 2>&1 || :
         /sbin/chkconfig --del %{pkgname}
 fi
 
 %postun -p /sbin/ldconfig
@@ -172,32 +182,71 @@
 -- if we saved the run level configuration in %pre, restore it now
 -- we can get rid of this code once Fedora 11 becomes obsolete
 if %{pkgname}_savelinks then
     for fullpath,link in pairs(%{pkgname}_savelinks) do
         posix.symlink(link,fullpath)
 --        print("posttrans - restored run level "..fullpath.." to "..link)
     end
 end
+if %{pkgname}_upgrading then
+    instbase = "%{_sysconfdir}/%{pkgname}"
+--    print("posttrans - upgrading - looking for instances in "..instbase)
+-- find all instances
+    instances = {} -- instances that require a restart after upgrade
+    for dir in posix.files(instbase) do
+--        print("dir="..dir)
+        if string.find(dir,"^slapd-") and not string.find(dir,"\.removed$") then
+            inst = string.gsub(dir,"^slapd[-]", "")
+--            print("found instance "..inst.." getting status")
+            rc = os.execute('/sbin/service %{pkgname} status '..inst..' >/dev/null 2>&1')
+-- if instance is running, we must restart it after upgrade
+            if rc == 0 then
+                instances[inst] = inst
+--                print("instance "..inst.." is running")
+--            else
+--                print("instance "..inst.." is shutdown")
+            end
+        end
+    end
+-- shutdown all instances
+--    print("shutting down all instances . . .")
+    os.execute('/sbin/service %{pkgname} stop > /dev/null 2>&1')
+-- do the upgrade
+--    print("upgrading instances . . .")
+    os.execute('%{_sbindir}/setup-ds.pl -l /dev/null -u -s General.UpdateMode=offline > /dev/null 2>&1')
+-- restart instances that require it
+    for inst,dummy in pairs(instances) do
+--        print("restarting instance "..inst)
+        os.execute('/sbin/service %{pkgname} start '..inst..' >/dev/null 2>&1')
+    end
+end
+-- if we upgraded from fedora to 389, the upgrade will shutdown
+-- all old running instances, so we have to start them here
 if %{pkgname}_exists then
+--    print("restarting all instances due to package rename")
     os.execute('/sbin/service %{pkgname} start >/dev/null 2>&1')
 end
+   
 
 %files
 %defattr(-,root,root,-)
 %doc LICENSE EXCEPTION LICENSE.GPLv2
 %dir %{_sysconfdir}/%{pkgname}
 %dir %{_sysconfdir}/%{pkgname}/schema
 %config(noreplace)%{_sysconfdir}/%{pkgname}/schema/*.ldif
 %dir %{_sysconfdir}/%{pkgname}/config
 %config(noreplace)%{_sysconfdir}/%{pkgname}/config/slapd-collations.conf
 %config(noreplace)%{_sysconfdir}/%{pkgname}/config/certmap.conf
+%config(noreplace)%{_sysconfdir}/%{pkgname}/config/ldap-agent.conf
+%config(noreplace)%{_sysconfdir}/%{pkgname}/config/template-initconfig
 %config(noreplace)%{_sysconfdir}/sysconfig/%{pkgname}
 %{_datadir}/%{pkgname}
 %{_sysconfdir}/rc.d/init.d/%{pkgname}
+%{_sysconfdir}/rc.d/init.d/%{pkgname}-snmp
 %{_bindir}/*
 %{_sbindir}/*
 %dir %{_libdir}/%{pkgname}
 %{_libdir}/%{pkgname}/*.so.*
 %{_libdir}/%{pkgname}/perl
 %dir %{_libdir}/%{pkgname}/plugins
 %{_libdir}/%{pkgname}/plugins/*.so
 %dir %{_localstatedir}/lib/%{pkgname}
@@ -208,16 +257,23 @@
 
 %files devel
 %defattr(-,root,root,-)
 %doc LICENSE EXCEPTION LICENSE.GPLv2 README.devel
 %{_includedir}/%{pkgname}
 %{_libdir}/%{pkgname}/*.so
 
 %changelog
+* Mon Sep 14 2009 Rich Megginson <rmeggins@redhat.com> - 1.2.3-1
+- 1.2.3 release
+- added template-initconfig to %files
+- %posttrans now runs update to update the server instances
+- servers are shutdown, then restarted if running before install
+- scriptlets mostly use lua now to pass data among scriptlet phases
+
 * Tue Sep 08 2009 Nathan Kinder <nkinder@redhat.com> - 1.2.2-2
 - removed BuildRequires for lm_sensors on s390 and s390x
 
 * Thu Aug 20 2009 Rich Megginson <rmeggins@redhat.com> - 1.2.2-1
 - backed out - added template-initconfig to %files - this change is for the next major release
 - bump version to 1.2.2
 - fix reopened 509472 db2index all does not reindex all the db backends correctly
 - fix 518520 -  pre hashed salted passwords do not work
