From 228578af8ba84fa11e9d5199d393fe6acc2ef83f Mon Sep 17 00:00:00 2001 From: Marcela Mašláňová Date: Apr 17 2012 12:33:02 +0000 Subject: at-3.1.13-usePOSIXtimers.patch use POSIX timers, so we won't need pm-utils hack anymore. --- diff --git a/at-3.1.13-usePOSIXtimers.patch b/at-3.1.13-usePOSIXtimers.patch new file mode 100644 index 0000000..b1afeb6 --- /dev/null +++ b/at-3.1.13-usePOSIXtimers.patch @@ -0,0 +1,119 @@ +diff -ur -x configure at-3.1.13.orig/atd.c at-3.1.13/atd.c +--- at-3.1.13.orig/atd.c 2011-11-16 11:30:22.424764253 -0500 ++++ at-3.1.13/atd.c 2011-11-16 16:41:12.102831656 -0500 +@@ -815,6 +815,54 @@ + return next_job; + } + ++#ifdef HAVE_CLOCK_GETTIME ++timer_t timer; ++struct itimerspec timeout; ++ ++void timer_setup() ++{ ++ struct sigevent sev; ++ ++ sev.sigev_notify = SIGEV_SIGNAL; ++ sev.sigev_signo = SIGHUP; ++ sev.sigev_value.sival_ptr = &timer; ++ ++ memset(&timeout, 0, sizeof(timeout)); ++ ++ if (timer_create(CLOCK_REALTIME, &sev, &timer) < 0) ++ pabort("unable to create timer"); ++} ++ ++time_t atd_gettime() ++{ ++ struct timespec curtime; ++ ++ clock_gettime(CLOCK_REALTIME, &curtime); ++ ++ return curtime.tv_sec; ++} ++ ++void atd_setalarm(time_t next) ++{ ++ timeout.it_value.tv_sec = next; ++ timer_settime(timer, TIMER_ABSTIME, &timeout, NULL); ++ pause(); ++} ++#else ++void timer_setup() ++{ ++} ++ ++time_t atd_gettime() ++{ ++ return time(NULL); ++} ++ ++void atd_setalarm(time_t next) ++{ ++ sleep(next - atd_gettime()); ++} ++#endif + /* Global functions */ + + int +@@ -835,7 +883,6 @@ + struct sigaction act; + struct passwd *pwe; + struct group *ge; +- + #ifdef WITH_SELINUX + selinux_enabled=is_selinux_enabled(); + #endif +@@ -912,7 +959,7 @@ + sigaction(SIGCHLD, &act, NULL); + + if (!run_as_daemon) { +- now = time(NULL); ++ now = atd_gettime(); + run_loop(); + exit(EXIT_SUCCESS); + } +@@ -935,13 +982,15 @@ + act.sa_handler = set_term; + sigaction(SIGINT, &act, NULL); + ++ timer_setup(); ++ + daemon_setup(); + + do { +- now = time(NULL); ++ now = atd_gettime(); + next_invocation = run_loop(); + if (next_invocation > now) { +- sleep(next_invocation - now); ++ atd_setalarm(next_invocation); + } + } while (!term_signal); + daemon_cleanup(); +diff -ur -x configure at-3.1.13.orig/config.h.in at-3.1.13/config.h.in +--- at-3.1.13.orig/config.h.in 2011-11-16 11:30:22.424764253 -0500 ++++ at-3.1.13/config.h.in 2011-11-16 16:32:44.485426754 -0500 +@@ -38,6 +38,9 @@ + /* Define to 1 if you have the `getloadavg' function. */ + #undef HAVE_GETLOADAVG + ++/* Define to 1 if you have the `clock_gettime' function. */ ++#undef HAVE_CLOCK_GETTIME ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_GETOPT_H + +diff -ur -x configure at-3.1.13.orig/configure.ac at-3.1.13/configure.ac +--- at-3.1.13.orig/configure.ac 2011-11-16 11:30:22.425764254 -0500 ++++ at-3.1.13/configure.ac 2011-11-16 16:31:29.791561747 -0500 +@@ -274,5 +274,9 @@ + AC_SUBST(SELINUXLIB) + AC_SUBST(WITH_SELINUX) + ++dnl check for POSIX timer functions ++AC_SEARCH_LIBS([clock_gettime],[rt]) ++AC_CHECK_FUNCS([clock_gettime]) ++ + AC_CONFIG_FILES(Makefile atrun atd.8 atrun.8 at.1 at.allow.5 batch) + AC_OUTPUT diff --git a/at.spec b/at.spec index 6280a4e..dfbf76f 100644 --- a/at.spec +++ b/at.spec @@ -12,7 +12,6 @@ Source: http://ftp.debian.org/debian/pool/main/a/at/at_%{version}.orig.tar.gz Source1: pam_atd Source2: atd.init Source3: atd.sysconf -Source4: 56atd Source5: atd.systemd Patch1: at-3.1.13-makefile.patch @@ -24,6 +23,7 @@ Patch6: at-3.1.13-selinux.patch Patch7: at-3.1.12-nowrap.patch Patch8: at-3.1.12-fix_no_export.patch Patch9: at-3.1.13-mailwithhostname.patch +Patch10: at-3.1.13-usePOSIXtimers.patch BuildRequires: fileutils /etc/init.d BuildRequires: flex flex-static bison autoconf @@ -75,6 +75,7 @@ cp %{SOURCE1} . %patch7 -p1 -b .nowrap %patch8 -p1 -b .export %patch9 -p1 -b .mail +%patch10 -p1 -b .posix %build # patch9 touches configure.in @@ -122,9 +123,6 @@ install -m 755 %{SOURCE2} %{buildroot}%{_sysconfdir}/rc.d/init.d/atd mkdir -p %{buildroot}/etc/sysconfig install -m 644 %{SOURCE3} %{buildroot}/etc/sysconfig/atd -mkdir -p %{buildroot}/%{_libdir}/pm-utils/sleep.d/ -install -m 755 %{SOURCE4} %{buildroot}/%{_libdir}/pm-utils/sleep.d/56atd - # install systemd initscript mkdir -p %{buildroot}/%{_unitdir}/ install -m 644 %{SOURCE5} %{buildroot}/%{_unitdir}/atd.service @@ -183,7 +181,6 @@ fi %{_bindir}/atrm %{_bindir}/atq %attr(4755,root,root) %{_bindir}/at -%attr(0755,root,root) %{_libdir}/pm-utils/sleep.d/56atd %attr(0644,root,root) /%{_unitdir}/atd.service %files sysvinit @@ -192,6 +189,8 @@ fi %changelog * Tue Apr 17 2012 Marcela Mašláňová - 3.1.13-6 - at-3.1.13-mailwithhostname.patch in email mention also hostname address +- at-3.1.13-usePOSIXtimers.patch use POSIX timers, so we won't need + pm-utils hack anymore * Mon Nov 14 2011 Marcela Mašláňová - 3.1.13-5 - 754156 fix typo in script