diff --git a/.cvsignore b/.cvsignore index a3005bb..7a8bc93 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1 @@ -389-ds-base-1.2.1.tar.bz2 -389-ds-base-1.2.2.tar.bz2 +389-ds-base-1.2.3.tar.bz2 diff --git a/389-ds-base-git-local.sh b/389-ds-base-git-local.sh new file mode 100644 index 0000000..31147ec --- /dev/null +++ b/389-ds-base-git-local.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +DATE=`date +%Y%m%d` +# use a real tag name here +TAG=389-ds-base-1.2.3 +VERSION=1.2.3 +PKGNAME=389-ds-base +#SRCNAME=$PKGNAME-$VERSION-$DATE +SRCNAME=$PKGNAME-$VERSION + +echo you must be in the ds git repo to use this +git status > /dev/null || echo bye +if [ -z "$1" ] ; then + dir=. +else + dir="$1" +fi + +git archive --prefix=$SRCNAME/ $TAG | bzip2 > $dir/$SRCNAME.tar.bz2 diff --git a/389-ds-base.spec b/389-ds-base.spec index 6e42978..cb9c401 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -3,8 +3,8 @@ Summary: 389 Directory Server (base) Name: 389-ds-base -Version: 1.2.2 -Release: 3%{?dist} +Version: 1.2.3 +Release: 1%{?dist} License: GPLv2 with exceptions URL: http://port389.org/ Group: System Environment/Daemons @@ -53,6 +53,9 @@ Requires: db4-utils # This picks up libperl.so as a Requires, so we add this versioned one Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +# This is for the fedora-ds -> 389 run level hack +Requires(posttrans): /sbin/service + # for the init script Requires(post): /sbin/chkconfig Requires(preun): /sbin/chkconfig @@ -119,28 +122,114 @@ sed -i -e 's|#{{PERL-EXEC}}|#!/usr/bin/perl|' $RPM_BUILD_ROOT%{_datadir}/%{pkgna %clean rm -rf $RPM_BUILD_ROOT -%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 +%pre -p +-- see if fedora-ds-base exists - if so, save the run level configuration +-- and set a flag that tells us to restore that config in %posttrans +-- and restart the server +-- we can get rid of this code once Fedora 11 becomes obsolete +rc = os.execute('rpm --quiet -q fedora-ds-base') +if rc == 0 then + %{pkgname}_exists = true + %{pkgname}_savelinks = {} + for dir in posix.files("%{_sysconfdir}/rc.d") do + if string.find(dir, "rc%d.d") then +-- print("looking in %{_sysconfdir}/rc.d/"..dir) + for link in posix.files("%{_sysconfdir}/rc.d/"..dir) do + if string.find(link, "[SK]%d%d%{pkgname}") then + fullname = "%{_sysconfdir}/rc.d/"..dir.."/"..link + linked = posix.readlink(fullname) +-- print(fullname.." is linked to "..linked) + %{pkgname}_savelinks[fullname] = linked + end + end + end + end +end + +%post -p +os.execute('/sbin/chkconfig --add %{pkgname}') +os.execute('/sbin/ldconfig') +os.execute('/sbin/chkconfig --add %{pkgname}-snmp') +-- 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} + /sbin/service %{pkgname}-snmp stop >/dev/null 2>&1 || : + /sbin/chkconfig --del %{pkgname}-snmp fi %postun -p /sbin/ldconfig +%posttrans -p +-- 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 @@ -150,9 +239,12 @@ fi %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} @@ -173,8 +265,12 @@ fi %{_libdir}/%{pkgname}/*.so %changelog -* Tue Sep 08 2009 Nathan Kinder - 1.2.2-3 -- removed BuildRequires for lm_sensors on s390 and s390x +* Mon Sep 14 2009 Rich Megginson - 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 01 2009 Caolán McNamara - 1.2.2-2 - rebuild with new openssl to fix dependencies diff --git a/sources b/sources index e1525b6..a02d4dc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -143564394e4ad20bf4ea96e3e8ce970a 389-ds-base-1.2.2.tar.bz2 +1a21a7490d71a585025af657ee133790 389-ds-base-1.2.3.tar.bz2