rpms/chrony/F-9 chrony-1.23-gethost.patch, NONE, 1.1 chrony-1.23-ppc.patch, NONE, 1.1 chrony-1.23-res.patch, NONE, 1.1 chrony.conf, NONE, 1.1 chrony.keys, NONE, 1.1 chrony.logrotate, NONE, 1.1 chrony.spec, NONE, 1.1 chronyd.init, NONE, 1.1 chronyd.sysconfig, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Miroslav Lichvar mlichvar at fedoraproject.org
Mon Nov 24 13:05:53 UTC 2008


Author: mlichvar

Update of /cvs/pkgs/rpms/chrony/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29191

Modified Files:
	.cvsignore sources 
Added Files:
	chrony-1.23-gethost.patch chrony-1.23-ppc.patch 
	chrony-1.23-res.patch chrony.conf chrony.keys chrony.logrotate 
	chrony.spec chronyd.init chronyd.sysconfig 
Log Message:
- initial release


chrony-1.23-gethost.patch:

--- NEW FILE chrony-1.23-gethost.patch ---
>From f1a74e41b3b89771243294097ebd3472deb019f4 Mon Sep 17 00:00:00 2001
From: Miroslav Lichvar <mlichvar at redhat.com>
Date: Thu, 6 Nov 2008 17:35:22 +0100
Subject: [PATCH] Fix resolving IP addresses into names on 64-bit big endian machines

---
 nameserv.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/nameserv.c b/nameserv.c
index f509dfb..dd610df 100644
--- a/nameserv.c
+++ b/nameserv.c
@@ -65,7 +65,7 @@ DNS_IPAddress2Name(unsigned long ip_addr)
   struct hostent *host;
   static char buffer[16];
   unsigned int a, b, c, d;
-  unsigned long addr;
+  uint32_t addr;
 
   addr = htonl(ip_addr);
   if (addr == 0UL) {
-- 
1.5.6.5


chrony-1.23-ppc.patch:

--- NEW FILE chrony-1.23-ppc.patch ---
diff -up chrony-1.23/io_linux.h.ppc chrony-1.23/io_linux.h
--- chrony-1.23/io_linux.h.ppc	2007-12-02 15:53:09.000000000 +0100
+++ chrony-1.23/io_linux.h	2008-11-05 19:23:53.000000000 +0100
@@ -16,7 +16,7 @@
 #define CHRONY_IOC_WRITE	1U
 #define CHRONY_IOC_READ	2U
 
-#elif defined(__alpha__) || defined(__sparc__) || defined(__ppc__) || defined(__ppc64__) || defined(__sparc64__)
+#elif defined(__alpha__) || defined(__sparc__) || defined(__ppc__) || defined(__ppc64__) || defined(__sparc64__) || defined(__PPC__)
 #define CHRONY_IOC_NRBITS	8
 #define CHRONY_IOC_TYPEBITS	8
 #define CHRONY_IOC_SIZEBITS	13

chrony-1.23-res.patch:

--- NEW FILE chrony-1.23-res.patch ---
commit 0148ecaea08691537f51c0aea9c3387cd1d34745
Author: Miroslav Lichvar <mlichvar at redhat.com>
Date:   Mon Nov 10 14:42:41 2008 +0100

    Retry name resolving after temporary failure few times before giving up
    
    This is a temporary fix to allow starting when resolv.conf is not ready yet
    (e.g. when using NetworkManager). It may delay start up to 1022 seconds.

diff --git a/cmdparse.c b/cmdparse.c
index 7acc44c..e09db45 100644
--- a/cmdparse.c
+++ b/cmdparse.c
@@ -61,7 +61,7 @@ CPS_ParseNTPSourceAdd(const char *line, CPS_NTP_Source *src)
   
   ok = 0;
   if (sscanf(line, "%" SMAXLEN "s%n", hostname, &n) == 1) {
-    src->ip_addr = DNS_Name2IPAddress(hostname);
+    src->ip_addr = DNS_Name2IPAddressRetry(hostname);
     if (src->ip_addr != DNS_Failed_Address) {
       ok = 1;
     }
diff --git a/conf.c b/conf.c
index e34927e..8e6c1d9 100644
--- a/conf.c
+++ b/conf.c
@@ -584,7 +584,7 @@ parse_initstepslew(const char *line)
   }
   while (*p) {
     if (sscanf(p, "%" SHOSTNAME_LEN "s%n", hostname, &n) == 1) {
-      ip_addr = DNS_Name2IPAddress(hostname);
+      ip_addr = DNS_Name2IPAddressRetry(hostname);
       if (ip_addr != DNS_Failed_Address) {
         init_srcs_ip[n_init_srcs] = ip_addr;
         ++n_init_srcs;
@@ -746,7 +746,7 @@ parse_allow_deny(const char *line, AllowDeny *list, int allow)
       }
 
     } else {
-      ip_addr = DNS_Name2IPAddress(p);
+      ip_addr = DNS_Name2IPAddressRetry(p);
       if (ip_addr != DNS_Failed_Address) {
         new_node = MallocNew(AllowDeny);
         new_node->allow = allow;
diff --git a/nameserv.c b/nameserv.c
index dd610df..9a25254 100644
--- a/nameserv.c
+++ b/nameserv.c
@@ -32,18 +32,28 @@
 #include "sysincl.h"
 
 #include "nameserv.h"
+#include <resolv.h>
 
 /* ================================================== */
 
-unsigned long
-DNS_Name2IPAddress(const char *name)
+static unsigned int retries = 0;
+
+static unsigned long
+Name2IPAddress(const char *name, int retry)
 {
   struct hostent *host;
   unsigned char *address0;
   unsigned long result;
 
+try_again:
   host = gethostbyname(name);
   if (host == NULL) {
+    if (retry && h_errno == TRY_AGAIN && retries < 10) {
+      sleep(2 << retries);
+      retries++;
+      res_init();
+      goto try_again;
+    }
     result = DNS_Failed_Address;
   } else {
     address0 = host->h_addr_list[0];
@@ -54,7 +64,22 @@ DNS_Name2IPAddress(const char *name)
   }
 
   return result;
+}
+
+/* ================================================== */
+
+unsigned long
+DNS_Name2IPAddress(const char *name)
+{
+  return Name2IPAddress(name, 0);
+}
 
+/* ================================================== */
+
+unsigned long
+DNS_Name2IPAddressRetry(const char *name)
+{
+  return Name2IPAddress(name, 1);
 }
 
 /* ================================================== */
diff --git a/nameserv.h b/nameserv.h
index e62f334..69ceef8 100644
--- a/nameserv.h
+++ b/nameserv.h
@@ -36,6 +36,8 @@ static const unsigned long DNS_Failed_Address = 0x0UL;
 
 extern unsigned long DNS_Name2IPAddress(const char *name);
 
+extern unsigned long DNS_Name2IPAddressRetry(const char *name);
+
 const char *DNS_IPAddress2Name(unsigned long ip_addr);
 
 #endif /* GOT_NAMESERV_H */


--- NEW FILE chrony.conf ---
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.fedora.pool.ntp.org
server 1.fedora.pool.ntp.org
server 2.fedora.pool.ntp.org
 
driftfile /var/lib/chrony/drift

# Allow client access from local network.
#allow 192.168/16

# Serve time even if not synchronized to any NTP server.
#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
commandkey 1

# Send a message to syslog when chronyd has to correct
# an error larger than 0.5 seconds.
logchange 0.5

logdir /var/log/chrony
#log measurements statistics tracking


--- NEW FILE chrony.keys ---
#1 a_key


--- NEW FILE chrony.logrotate ---
/var/log/chrony/*.log {
    missingok
    nocreate
    sharedscripts
    postrotate
        /sbin/service chronyd cyclelogs 2> /dev/null > /dev/null || true
    endscript
}


--- NEW FILE chrony.spec ---
Name:           chrony
Version:        1.23
Release:        2.20081106gitbe42b4%{?dist}
Summary:        An NTP client/server

Group:          System Environment/Daemons
License:        GPLv2
URL:            http://chrony.sunsite.dk
Source0:        http://chrony.sunsite.dk/download/chrony-%{version}.tar.gz
Source1:        chrony.conf
Source2:        chrony.keys
Source3:        chronyd.sysconfig
Source4:        chronyd.init
Source5:        chrony.logrotate
# taken from GNU tar-1.13 
Source6:        getdate.y
Patch1:         chrony-1.23-gitbe42b4.patch
Patch2:         chrony-1.23-ppc.patch
Patch3:         chrony-1.23-gethost.patch
Patch4:         chrony-1.23-res.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  libcap-devel readline-devel bison texinfo

Requires(pre):  shadow-utils
Requires(post): /sbin/chkconfig /sbin/install-info
Requires(preun): /sbin/chkconfig /sbin/service /sbin/install-info
Requires(postun): /sbin/service

%description
A client/server for the Network Time Protocol, this program keeps your
computer's clock accurate. It was specially designed to support
systems with dial-up Internet connections, and also supports computers
in permanently connected environments. 

%prep
%setup -q
cp -p %{SOURCE6} .
%patch1 -p1
%patch2 -p1 -b .ppc
%patch3 -p1 -b .gethost
%patch4 -p1 -b .res

# don't link with ncurses
sed -i 's|-lncurses||' configure

%build
bison -o getdate.c getdate.y

export CFLAGS="$RPM_OPT_FLAGS -pie -fpie"
# configure doesn't support --bindir --sbindir options, install manually
./configure --enable-linuxcaps
make %{?_smp_mflags} all docs

%install
rm -rf $RPM_BUILD_ROOT

mkdir -p $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}
mkdir -p $RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man{1,5,8}}
mkdir -p $RPM_BUILD_ROOT{%{_sysconfdir}/{sysconfig,logrotate.d},%{_initrddir}}
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{lib,log}/chrony

install -m 755 chronyc $RPM_BUILD_ROOT%{_bindir}
install -m 755 chronyd $RPM_BUILD_ROOT%{_sbindir}
install -m 644 -p -t $RPM_BUILD_ROOT%{_infodir} chrony.info*
install -m 644 -p -t $RPM_BUILD_ROOT%{_mandir}/man1 chrony*.1
install -m 644 -p -t $RPM_BUILD_ROOT%{_mandir}/man5 chrony*.5
install -m 644 -p -t $RPM_BUILD_ROOT%{_mandir}/man8 chrony*.8

install -m 644 -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/chrony.conf
install -m 640 -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/chrony.keys
install -m 644 -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/chronyd
install -m 755 -p %{SOURCE4} $RPM_BUILD_ROOT%{_initrddir}/chronyd
install -m 644 -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/chrony

touch $RPM_BUILD_ROOT%{_localstatedir}/lib/chrony/{drift,rtc}

%clean
rm -rf $RPM_BUILD_ROOT

%pre
getent group chrony > /dev/null || /usr/sbin/groupadd -r chrony
getent passwd chrony > /dev/null || /usr/sbin/useradd -r -g chrony \
       -d %{_localstatedir}/lib/chrony -s /sbin/nologin chrony
:

%post
/sbin/chkconfig --add chronyd
/sbin/install-info  %{_infodir}/chrony.info.gz %{_infodir}/dir
:

%preun
if [ "$1" -eq 0 ]; then
        /sbin/service chronyd stop &> /dev/null
        /sbin/chkconfig --del chronyd
        /sbin/install-info --delete %{_infodir}/chrony.info.gz %{_infodir}/dir
fi
:

%postun
if [ "$1" -ge 1 ]; then
        /sbin/service chronyd condrestart &> /dev/null
fi
:

%files
%defattr(-,root,root,-)
%doc COPYING NEWS README chrony.txt faq.txt examples/*
%config(noreplace) %{_sysconfdir}/chrony.conf
%config(noreplace) %attr(640,root,chrony) %{_sysconfdir}/chrony.keys
%config(noreplace) %{_sysconfdir}/sysconfig/chronyd
%config(noreplace) %{_sysconfdir}/logrotate.d/chrony
%{_initrddir}/chronyd
%{_bindir}/chronyc
%{_sbindir}/chronyd
%{_infodir}/chrony.info*
%{_mandir}/man[158]/%{name}*.[158]*
%dir %attr(-,chrony,chrony) %{_localstatedir}/lib/chrony
%ghost %attr(-,chrony,chrony) %{_localstatedir}/lib/chrony/drift
%ghost %attr(-,chrony,chrony) %{_localstatedir}/lib/chrony/rtc
%dir %attr(-,chrony,chrony) %{_localstatedir}/log/chrony

%changelog
* Wed Nov 19 2008 Miroslav Lichvar <mlichvar at redhat.com> 1.23-2.20081106gitbe42b4
- fix info uninstall
- generate random command key in init script
- support cyclelogs, online, offline commands in init script
- add logrotate script

* Tue Nov 11 2008 Miroslav Lichvar <mlichvar at redhat.com> 1.23-1.20081106gitbe42b4
- initial release


--- NEW FILE chronyd.init ---
#!/bin/bash
#
# chronyd <summary>
#
# chkconfig:   - 58 74
# description: Client/server for the Network Time Protocol, \
#              this program keeps your computer's clock accurate.

### BEGIN INIT INFO
# Provides: chronyd
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: 
# Should-Start: $syslog $named
# Should-Stop: $syslog
# Short-Description: NTP client/server
# Description: Client/server for the Network Time Protocol,
#              this program keeps your computer's clock accurate.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

exec=/usr/sbin/chronyd
prog=chronyd
config=/etc/chrony.conf
keyfile=/etc/chrony.keys
chronyc=/usr/bin/chronyc

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

get_key() {
    awk '/^[ \t]*'$1'\>/ { print $2; exit }' < $keyfile
}

get_commandkeyid() {
    awk '/^[ \t]*commandkey\>/ { keyid=$2 } END { print keyid }' < $config
}

chrony_command() {
    commandkeyid=$(get_commandkeyid)
    [ -z "$commandkeyid" ] && return 1
    commandkey=$(get_key $commandkeyid)
    [ -z "$commandkey" ] && return 2

    ! (
        $chronyc <<EOF &
password $commandkey
$1
EOF
        chronycpid=$!

        # chronyc will hang if the daemon doesn't respond, kill it after 3 s 
        (sleep 3; kill $chronycpid) < /dev/null &> /dev/null &
        killerpid=$!

        wait $chronycpid &> /dev/null
        kill $killerpid &> /dev/null || echo "chronyd not responding"
    ) | grep -v '200 OK'
}

generate_commandkey() {
    commandkeyid=$(get_commandkeyid)
    [ -z "$commandkeyid" ] && return 1
    commandkey=$(get_key $commandkeyid)
    [ -z "$commandkey" ] || return 0

    echo -n $"Generating chrony command key: "
    commandkey=$(tr -c -d '[\041-\176]' < /dev/urandom | head -c 8)
    [ -n "$commandkey" ] && echo "$commandkeyid $commandkey" >> $keyfile &&
        success || failure
    echo
}

start() {
    [ "$NETWORKING" = "no" ] && exit 1
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    generate_commandkey
    echo -n $"Starting $prog: "
    daemon $exec $OPTIONS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

reload() {
    restart
}

force_reload() {
    restart
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}


case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    online|offline|cyclelogs)
        rh_status_q || exit 7
        chrony_command $1
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|cyclelogs|online|offline}"
        exit 2
esac
exit $?



--- NEW FILE chronyd.sysconfig ---
OPTIONS="-u chrony"


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/chrony/F-9/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	23 Nov 2008 04:09:08 -0000	1.1
+++ .cvsignore	24 Nov 2008 13:05:23 -0000	1.2
@@ -0,0 +1,3 @@
+chrony-1.23.tar.gz
+getdate.y
+chrony-1.23-gitbe42b4.patch


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/chrony/F-9/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	23 Nov 2008 04:09:08 -0000	1.1
+++ sources	24 Nov 2008 13:05:23 -0000	1.2
@@ -0,0 +1,3 @@
+ffce77695e55d8efda19ab0b78309c23  chrony-1.23.tar.gz
+ad8091c4b507f7bde3804b8dc1150c56  getdate.y
+c5f94f3fc4c78546b954e050b8027dc5  chrony-1.23-gitbe42b4.patch




More information about the fedora-extras-commits mailing list