Hello community, here is the log from the commit of package at for openSUSE:Factory checked in at 2015-07-05 17:58:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/at (Old) and /work/SRC/openSUSE:Factory/.at.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "at" Changes: -------- --- /work/SRC/openSUSE:Factory/at/at.changes 2015-06-11 09:10:04.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.at.new/at.changes 2015-07-05 17:58:03.000000000 +0200 @@ -1,0 +2,24 @@ +Tue Jun 23 16:48:56 UTC 2015 - [email protected] + +- loadavg on Linux is a sum over all CPUs, so multiply LOADAVG_MX + by the amount of CPUs when comparing to loadavg (bnc#889174) + * added at-adjust_load_to_cpu_count.patch + +------------------------------------------------------------------- +Mon Jun 22 15:07:32 UTC 2015 - [email protected] + +- Version bump to 3.1.16 to match latest upstream: + * Fix regression for sec-fix in bash we applied in form of patch + till now - deleting at-3.1.15-sane-envkeys.patch +- Sync/split features to be patch specific, modifying: + * at-3.1.13-pam.patch + * at-3.1.14-parse-suse-sysconfig.patch + * at-3.1.14-selinux.patch + +------------------------------------------------------------------- +Mon Jun 22 15:02:30 UTC 2015 - [email protected] + +- Cleanup with spec-cleaner +- Remove systemd conditional (we do not work on sle11 anyway) + +------------------------------------------------------------------- Old: ---- at-3.1.15-sane-envkeys.patch at_3.1.15.orig.tar.gz New: ---- at-adjust_load_to_cpu_count.patch at_3.1.16.orig.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ at.spec ++++++ --- /var/tmp/diff_new_pack.PKXISx/_old 2015-07-05 17:58:04.000000000 +0200 +++ /var/tmp/diff_new_pack.PKXISx/_new 2015-07-05 17:58:04.000000000 +0200 @@ -17,18 +17,16 @@ Name: at -Version: 3.1.15 +Version: 3.1.16 Release: 0 Summary: A Job Manager License: GPL-2.0+ Group: System/Daemons - Url: ftp://ftp.debian.org/debian/pool/main/a/at Source: ftp://ftp.debian.org/debian/pool/main/a/at/%{name}_%{version}.orig.tar.gz Source2: atd.pamd Source3: sysconfig.atd Source5: atd.service - Patch0: at-3.1.14.patch Patch4: at-3.1.14-joblist.patch Patch5: at-3.1.14-selinux.patch @@ -59,28 +57,25 @@ Patch24: at-backport-old-privs.patch #PATCH-FEATURE-UPSTREAM introduce -o <timeformat> argument for atq (bnc#879402) Patch25: at-atq-timeformat.patch -#PATCH-FIX-UPSTREAM sanitize environment variables (bnc#899160) -Patch26: at-3.1.15-sane-envkeys.patch #PATCH-FIX-OPENSUSE use posix timers to avoid the need of suspend/resume hacks. Patch27: at-3.1.14-usePOSIXtimers.patch +Patch28: at-adjust_load_to_cpu_count.patch BuildRequires: autoconf >= 2.69 BuildRequires: automake BuildRequires: bison BuildRequires: flex +BuildRequires: libHX-devel BuildRequires: libselinux-devel BuildRequires: pam-devel -%if 0%{?suse_version} > 1140 -BuildRequires: libHX-devel BuildRequires: pkgconfig -BuildRequires: pkgconfig(systemd) -%{?systemd_requires} -%define has_systemd 1 -%endif -BuildRoot: %{_tmppath}/%{name}-%{version}-build - -PreReq: %{_sbindir}/useradd %{_sbindir}/groupadd %fillup_prereq -PreReq: permissions +BuildRequires: systemd-rpm-macros +Requires(post): %fillup_prereq +Requires(pre): %{_sbindir}/groupadd +Requires(pre): %{_sbindir}/useradd +Requires(pre): permissions Recommends: smtp_daemon +BuildRoot: %{_tmppath}/%{name}-%{version}-build +%{?systemd_requires} %description This program allows you to run jobs at specified times. @@ -107,8 +102,9 @@ %patch23 -p1 %patch24 -p1 %patch25 -%patch26 -p1 %patch27 -p1 +%patch28 -p1 + %build rm -fv y.tab.c y.tab.h lex.yy.c lex.yy.o y.tab.o autoreconf -fiv @@ -123,41 +119,41 @@ --with-daemon_username=at \ --with-daemon_groupname=at -%{__make} %{?_smp_mflags} +make %{?_smp_mflags} %install -%{__install} -d %{buildroot}{%{_sysconfdir}/pam.d,%{_bindir},%{_sbindir},%{_mandir}/man{1,5,8},%{_localstatedir}/adm/fillup-templates} +install -d %{buildroot}{%{_sysconfdir}/pam.d,%{_bindir},%{_sbindir},%{_mandir}/man{1,5,8},%{_localstatedir}/adm/fillup-templates} export CFLAGS="%{?optflags}" export SENDMAIL=%{_sbindir}/sendmail -%{__make} install IROOT=%{buildroot} +make install IROOT=%{buildroot} # Don't install docs here in this way mkdir docs mv %{buildroot}/%{_prefix}/doc/at/* docs/ -%{__install} -D -m 0644 %{S:5} %{buildroot}%{_unitdir}/atd.service -%{__ln_s} -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcatd +install -D -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/atd.service +ln -s service %{buildroot}%{_sbindir}/rcatd -%{__install} -m644 %SOURCE2 %{buildroot}%{_sysconfdir}/pam.d/atd -%{__install} -m644 %SOURCE3 %{buildroot}%{_localstatedir}/adm/fillup-templates +install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/pam.d/atd +install -m644 %{SOURCE3} %{buildroot}%{_localstatedir}/adm/fillup-templates %pre %{_sbindir}/groupadd -g 25 -o -r at 2> /dev/null || : -%{_sbindir}/useradd -r -o -g at -u 25 -s /bin/bash -c "Batch jobs daemon" -d /var/spool/atjobs at 2> /dev/null || : +%{_sbindir}/useradd -r -o -g at -u 25 -s /bin/bash -c "Batch jobs daemon" -d %{_localstatedir}/spool/atjobs at 2> /dev/null || : %service_add_pre atd.service %preun %service_del_preun atd.service %post -%fillup_only -n atd -%set_permissions /usr/bin/at +%{fillup_only -n atd} +%set_permissions %{_bindir}/at %service_add_post atd.service %verifyscript -%verify_permissions -e /usr/bin/at +%verify_permissions -e %{_bindir}/at %postun %service_del_postun atd.service ++++++ at-3.1.13-pam.patch ++++++ --- /var/tmp/diff_new_pack.PKXISx/_old 2015-07-05 17:58:04.000000000 +0200 +++ /var/tmp/diff_new_pack.PKXISx/_new 2015-07-05 17:58:04.000000000 +0200 @@ -2,9 +2,7 @@ =================================================================== --- atd.c.orig +++ atd.c -@@ -89,10 +89,14 @@ - int selinux_enabled=0; - #include <selinux/flask.h> +@@ -91,6 +91,10 @@ int selinux_enabled=0; #include <selinux/av_permissions.h> #endif @@ -15,11 +13,7 @@ /* Macros */ #define BATCH_INTERVAL_DEFAULT 60 - #define CHECK_INTERVAL 3600 - -@@ -114,11 +118,11 @@ static int nothing_to_do; - unsigned int batch_interval; - static int run_as_daemon = 0; +@@ -116,7 +120,7 @@ static int run_as_daemon = 0; static volatile sig_atomic_t term_signal = 0; @@ -28,11 +22,7 @@ #include <security/pam_appl.h> static pam_handle_t *pamh = NULL; - - static const struct pam_conv conv = { -@@ -126,16 +130,17 @@ static const struct pam_conv conv = { - }; - +@@ -128,12 +132,13 @@ static const struct pam_conv conv = { #define PAM_FAIL_CHECK if (retcode != PAM_SUCCESS) { \ fprintf(stderr,"\n%s\n",pam_strerror(pamh, retcode)); \ syslog(LOG_ERR,"%s",pam_strerror(pamh, retcode)); \ @@ -47,11 +37,7 @@ /* Signal handlers */ RETSIGTYPE - set_term(int dummy) - { -@@ -263,10 +268,23 @@ static int set_selinux_context(const cha - freecon(user_context); - return 0; +@@ -265,6 +270,19 @@ static int set_selinux_context(const cha } #endif @@ -71,11 +57,7 @@ static void run_file(const char *filename, uid_t uid, gid_t gid) { - /* Run a file by by spawning off a process which redirects I/O, - * spawns a subshell, then waits for it to complete and sends -@@ -288,11 +306,11 @@ run_file(const char *filename, uid_t uid - int ngid; - char queue; +@@ -290,7 +308,7 @@ run_file(const char *filename, uid_t uid char fmt[64]; unsigned long jobno; int rc; @@ -84,11 +66,7 @@ int retcode; #endif - #ifdef _SC_LOGIN_NAME_MAX - errno = 0; -@@ -450,20 +468,24 @@ run_file(const char *filename, uid_t uid - write_string(fd_out, mailname); - write_string(fd_out, "\n\n"); +@@ -452,16 +470,20 @@ run_file(const char *filename, uid_t uid fstat(fd_out, &buf); size = buf.st_size; @@ -110,11 +88,7 @@ PRIV_END #endif - close(STDIN_FILENO); - close(STDOUT_FILENO); -@@ -474,10 +496,20 @@ run_file(const char *filename, uid_t uid - perr("Error in fork"); - +@@ -476,6 +498,16 @@ run_file(const char *filename, uid_t uid else if (pid == 0) { char *nul = NULL; char **nenvp = &nul; @@ -131,11 +105,7 @@ /* Set up things for the child; we want standard input from the * input file, and standard output and error sent to our output file. - */ - if (lseek(fd_in, (off_t) 0, SEEK_SET) < 0) -@@ -493,12 +525,10 @@ run_file(const char *filename, uid_t uid - perr("Error in I/O redirection"); - +@@ -495,8 +527,6 @@ run_file(const char *filename, uid_t uid close(fd_in); close(fd_out); @@ -144,11 +114,7 @@ nice((tolower((int) queue) - 'a' + 1) * 2); if (initgroups(pentry->pw_name, pentry->pw_gid)) - perr("Cannot initialize the supplementary group access list"); - -@@ -526,10 +556,20 @@ run_file(const char *filename, uid_t uid - if (security_getenforce()==1) - perr("Could not resset exec context for user %s\n", pentry->pw_name); +@@ -528,6 +558,16 @@ run_file(const char *filename, uid_t uid #endif //end @@ -165,11 +131,7 @@ PRIV_END } /* We're the parent. Let's wait. - */ - close(fd_in); -@@ -538,18 +578,10 @@ run_file(const char *filename, uid_t uid - non-blocking waitpid. So this blocking one will eventually - return with an ECHILD error. +@@ -540,14 +580,6 @@ run_file(const char *filename, uid_t uid */ waitpid(pid, (int *) NULL, 0); @@ -184,11 +146,7 @@ /* Send mail. Unlink the output file after opening it, so it * doesn't hang around after the run. */ - fstat(fd_out, &buf); - lseek(fd_out, 0, SEEK_SET); -@@ -570,19 +602,51 @@ run_file(const char *filename, uid_t uid - - if (unlink(filename) == -1) +@@ -572,6 +604,14 @@ run_file(const char *filename, uid_t uid syslog(LOG_WARNING, "Warning: removing output file for job %li failed: %s", jobno, strerror(errno)); @@ -203,8 +161,7 @@ /* The job is now finished. We can delete its input file. */ chdir(ATJOB_DIR); - unlink(newname); - free(newname); +@@ -580,7 +620,31 @@ run_file(const char *filename, uid_t uid if (((send_mail != -1) && (buf.st_size != size)) || (send_mail == 1)) { @@ -236,11 +193,7 @@ if (initgroups(pentry->pw_name, pentry->pw_gid)) perr("Cannot initialize the supplementary group access list"); - - if (setgid(gid) < 0) -@@ -591,18 +655,85 @@ run_file(const char *filename, uid_t uid - if (setuid(uid) < 0) - perr("Cannot set user id"); +@@ -593,6 +657,47 @@ run_file(const char *filename, uid_t uid chdir ("/"); @@ -288,7 +241,7 @@ #if defined(SENDMAIL) execl(SENDMAIL, "sendmail", "-i", mailname, (char *) NULL); #else - #error "No mail command specified." +@@ -600,7 +705,33 @@ run_file(const char *filename, uid_t uid #endif perr("Exec failed for mail command"); @@ -323,11 +276,7 @@ } exit(EXIT_SUCCESS); } - - static time_t -@@ -817,16 +948,11 @@ main(int argc, char *argv[]) - - daemon_gid = ge->gr_gid; +@@ -819,12 +950,7 @@ main(int argc, char *argv[]) RELINQUISH_PRIVS_ROOT(daemon_uid, daemon_gid) @@ -341,15 +290,11 @@ opterr = 0; errno = 0; run_as_daemon = 1; - batch_interval = BATCH_INTERVAL_DEFAULT; - Index: config.h.in =================================================================== --- config.h.in.orig +++ config.h.in -@@ -69,13 +69,10 @@ - #undef HAVE_NLIST_H - +@@ -71,9 +71,6 @@ /* Define to 1 for PAM support */ #undef HAVE_PAM @@ -359,11 +304,7 @@ /* Define to 1 if you have the `pstat_getdynamic' function. */ #undef HAVE_PSTAT_GETDYNAMIC - /* Define to 1 if you have the <security/pam_appl.h> header file. */ - #undef HAVE_SECURITY_PAM_APPL_H -@@ -143,11 +140,11 @@ - #undef HAVE_VPRINTF - +@@ -145,7 +142,7 @@ /* Define to 1 if you have the `waitpid' function. */ #undef HAVE_WAITPID @@ -372,11 +313,7 @@ #undef NEED_YYWRAP /* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend - on `HAVE_STRUCT_NLIST_N_UN_N_NAME */ - #undef NLIST_NAME_UNION -@@ -193,10 +190,13 @@ - - /* Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h> instead of +@@ -195,6 +192,9 @@ <sys/cpustats.h>. */ #undef UMAX4_3 @@ -386,15 +323,11 @@ /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER - - /* Define to empty if `const' does not conform to ANSI C. */ Index: perm.c =================================================================== --- perm.c.orig +++ perm.c -@@ -106,18 +106,19 @@ user_in_file(const char *path, const cha - - /* Global functions */ +@@ -108,14 +108,15 @@ user_in_file(const char *path, const cha int check_permission() { @@ -413,21 +346,17 @@ perror("Cannot access user database"); exit(EXIT_FAILURE); } - - allow = user_in_file(ETCDIR "/at.allow", pentry->pw_name); Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -265,7 +265,14 @@ AC_DEFINE(WITH_SELINUX), - ) - AC_CHECK_LIB(selinux, is_selinux_enabled, SELINUXLIB=-lselinux) +@@ -277,5 +277,12 @@ AC_CHECK_LIB(selinux, is_selinux_enabled AC_SUBST(SELINUXLIB) AC_SUBST(WITH_SELINUX) +AC_ARG_WITH(pam, +[ --with-pam Define to enable pam support ], -+AC_DEFINE(WITH_PAM), ++AC_DEFINE([WITH_PAM], [1], [use PAM]), +) +AC_CHECK_LIB(pam, pam_start, PAMLIB='-lpam -lpam_misc') +AC_SUBST(PAMLIB) ++++++ at-3.1.14-parse-suse-sysconfig.patch ++++++ --- /var/tmp/diff_new_pack.PKXISx/_old 2015-07-05 17:58:04.000000000 +0200 +++ /var/tmp/diff_new_pack.PKXISx/_new 2015-07-05 17:58:04.000000000 +0200 @@ -11,9 +11,9 @@ Index: Makefile.in =================================================================== ---- Makefile.in.orig 2014-09-18 10:46:08.197168752 +0200 -+++ Makefile.in 2014-09-18 10:46:08.265168751 +0200 -@@ -28,7 +28,7 @@ +--- Makefile.in.orig ++++ Makefile.in +@@ -28,7 +28,7 @@ LEX = @LEX@ LEXLIB = @LEXLIB@ CC = @CC@ @@ -22,7 +22,7 @@ LDFLAGS = @LDFLAGS@ LFILE = $(ATJOB_DIR)/.SEQ DEFS = @DEFS@ -DVERSION=\"$(VERSION)\" \ -@@ -36,7 +36,7 @@ +@@ -36,7 +36,7 @@ DEFS = @DEFS@ -DVERSION=\"$(VERSION)\" -DDAEMON_USERNAME=\"$(DAEMON_USERNAME)\" \ -DDAEMON_GROUPNAME=\"$(DAEMON_GROUPNAME)\" \ -DLFILE=\"$(LFILE)\" -Wall @@ -33,8 +33,8 @@ PAMLIB = @PAMLIB@ Index: atd.c =================================================================== ---- atd.c.orig 2014-09-18 10:46:08.261168751 +0200 -+++ atd.c 2014-09-18 10:46:08.265168751 +0200 +--- atd.c.orig ++++ atd.c @@ -74,6 +74,10 @@ #include <syslog.h> #endif @@ -46,7 +46,7 @@ /* Local headers */ #include "privs.h" -@@ -930,6 +934,7 @@ +@@ -930,6 +934,7 @@ main(int argc, char *argv[]) * for execution and yet another one, optionally, for sending mail. * Files which already have run are removed during the next invocation. */ @@ -54,7 +54,7 @@ int c; time_t next_invocation; struct sigaction act; -@@ -998,6 +1003,22 @@ +@@ -998,6 +1003,22 @@ main(int argc, char *argv[]) } } @@ -79,36 +79,10 @@ perr("Cannot change to " ATJOB_DIR); Index: configure.ac =================================================================== ---- configure.ac.orig 2014-09-18 10:46:08.217168752 +0200 -+++ configure.ac 2014-09-18 10:46:08.265168751 +0200 -@@ -5,7 +5,7 @@ - - AC_PREFIX_DEFAULT(/usr) - AC_CONFIG_HEADER(config.h) --AC_PREREQ([2.64]) -+AC_PREREQ([2.69]) - - VERSION=AC_PACKAGE_VERSION - if test "X$CFLAGS" = "X"; then -@@ -40,20 +40,21 @@ - esac - - AC_MSG_CHECKING(__attribute__((noreturn))) --AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], -+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void __attribute__((noreturn)) panic(void);]])],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, - [Define to 1 if compiler supports __attribute__((noreturn))]), - AC_MSG_RESULT(no) --) -+]) - dnl Checks for libraries. - - AC_CHECK_LIB(fl,yywrap, - [], -- AC_DEFINE(NEED_YYWRAP, 1, -- [Define to 1 if we need to provide our own yywrap()]) -+ AC_DEFINE([NEED_YYWRAP], 1, [need yywrap]) +--- configure.ac.orig ++++ configure.ac +@@ -53,6 +53,8 @@ AC_CHECK_LIB(fl,yywrap, + AC_DEFINE([NEED_YYWRAP], 1, [need yywrap]) ) +PKG_CHECK_MODULES([HX], [libHX]) @@ -116,43 +90,3 @@ dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC -@@ -63,7 +64,18 @@ - - dnl Checks for typedefs, structures, and compiler characteristics. - AC_C_CONST --AC_TYPE_SIGNAL -+AC_DIAGNOSE([obsolete],[your code may safely assume C89 semantics that RETSIGTYPE is void. -+Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])dnl -+AC_CACHE_CHECK([return type of signal handlers],[ac_cv_type_signal],[AC_COMPILE_IFELSE( -+[AC_LANG_PROGRAM([#include <sys/types.h> -+#include <signal.h> -+], -+ [return *(signal (0, 0)) (0) == 1;])], -+ [ac_cv_type_signal=int], -+ [ac_cv_type_signal=void])]) -+AC_DEFINE_UNQUOTED([RETSIGTYPE],[$ac_cv_type_signal],[Define as the return type of signal handlers -+ (`int' or `void').]) -+ - AC_TYPE_UID_T - AC_TYPE_MODE_T - AC_TYPE_OFF_T -@@ -261,8 +273,8 @@ - AC_SUBST(DAEMON_GROUPNAME) - - AC_ARG_WITH(selinux, --[ --with-selinux Define to run with selinux], --AC_DEFINE(WITH_SELINUX), -+[ --with-selinux Define to run with selinux], -+AC_DEFINE([WITH_SELINUX] , [1], [enable selinux]), - ) - AC_CHECK_LIB(selinux, is_selinux_enabled, SELINUXLIB=-lselinux) - AC_SUBST(SELINUXLIB) -@@ -270,7 +282,7 @@ - - AC_ARG_WITH(pam, - [ --with-pam Define to enable pam support ], --AC_DEFINE(WITH_PAM), -+AC_DEFINE([WITH_PAM], [1], [use PAM]), - ) - AC_CHECK_LIB(pam, pam_start, PAMLIB='-lpam -lpam_misc') - AC_SUBST(PAMLIB) ++++++ at-3.1.14-selinux.patch ++++++ --- /var/tmp/diff_new_pack.PKXISx/_old 2015-07-05 17:58:04.000000000 +0200 +++ /var/tmp/diff_new_pack.PKXISx/_new 2015-07-05 17:58:04.000000000 +0200 @@ -2,9 +2,7 @@ =================================================================== --- atd.c.orig +++ atd.c -@@ -81,10 +81,18 @@ - - #ifndef HAVE_GETLOADAVG +@@ -83,6 +83,14 @@ #include "getloadavg.h" #endif @@ -19,11 +17,7 @@ /* Macros */ #define BATCH_INTERVAL_DEFAULT 60 - #define CHECK_INTERVAL 3600 - -@@ -193,10 +201,72 @@ myfork() - } - +@@ -195,6 +203,68 @@ myfork() #define fork myfork #endif @@ -92,11 +86,7 @@ static void run_file(const char *filename, uid_t uid, gid_t gid) { - /* Run a file by by spawning off a process which redirects I/O, - * spawns a subshell, then waits for it to complete and sends -@@ -440,13 +510,25 @@ run_file(const char *filename, uid_t uid - - if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) +@@ -442,9 +512,21 @@ run_file(const char *filename, uid_t uid perr("Cannot reset signal handler to default"); chdir("/"); @@ -119,11 +109,7 @@ PRIV_END } - /* We're the parent. Let's wait. - */ -@@ -715,10 +797,14 @@ main(int argc, char *argv[]) - time_t next_invocation; - struct sigaction act; +@@ -717,6 +799,10 @@ main(int argc, char *argv[]) struct passwd *pwe; struct group *ge; @@ -134,15 +120,11 @@ /* We don't need root privileges all the time; running under uid and gid * daemon is fine. */ - - if ((pwe = getpwnam(DAEMON_USERNAME)) == NULL) Index: config.h.in =================================================================== --- config.h.in.orig +++ config.h.in -@@ -69,10 +69,13 @@ - #undef HAVE_NLIST_H - +@@ -71,6 +71,9 @@ /* Define to 1 for PAM support */ #undef HAVE_PAM @@ -152,21 +134,67 @@ /* Define to 1 if you have the `pstat_getdynamic' function. */ #undef HAVE_PSTAT_GETDYNAMIC - /* Define to 1 if you have the <security/pam_appl.h> header file. */ - #undef HAVE_SECURITY_PAM_APPL_H Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -258,7 +258,15 @@ AC_ARG_WITH(daemon_groupname, - DAEMON_GROUPNAME=daemon - AC_MSG_RESULT(daemon) +@@ -5,7 +5,7 @@ AC_CONFIG_SRCDIR(at.c) + + AC_PREFIX_DEFAULT(/usr) + AC_CONFIG_HEADER(config.h) +-AC_PREREQ([2.64]) ++AC_PREREQ([2.69]) + + VERSION=AC_PACKAGE_VERSION + if test "X$CFLAGS" = "X"; then +@@ -40,18 +40,17 @@ case "$host" in + esac + + AC_MSG_CHECKING(__attribute__((noreturn))) +-AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void __attribute__((noreturn)) panic(void);]])],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, + [Define to 1 if compiler supports __attribute__((noreturn))]), + AC_MSG_RESULT(no) +-) ++]) + dnl Checks for libraries. + + AC_CHECK_LIB(fl,yywrap, + [], +- AC_DEFINE(NEED_YYWRAP, 1, +- [Define to 1 if we need to provide our own yywrap()]) ++ AC_DEFINE([NEED_YYWRAP], 1, [need yywrap]) + ) + + dnl Checks for header files. +@@ -63,7 +62,17 @@ AC_CHECK_HEADERS(stdarg.h) + + dnl Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST +-AC_TYPE_SIGNAL ++AC_DIAGNOSE([obsolete],[your code may safely assume C89 semantics that RETSIGTYPE is void. ++Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])dnl ++AC_CACHE_CHECK([return type of signal handlers],[ac_cv_type_signal],[AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM([#include <sys/types.h> ++#include <signal.h> ++], ++ [return *(signal (0, 0)) (0) == 1;])], ++ [ac_cv_type_signal=int], ++ [ac_cv_type_signal=void])]) ++AC_DEFINE_UNQUOTED([RETSIGTYPE],[$ac_cv_type_signal],[Define as the return type of signal handlers ++ (`int' or `void').]) + AC_TYPE_UID_T + AC_TYPE_MODE_T + AC_TYPE_OFF_T +@@ -260,5 +269,13 @@ AC_ARG_WITH(daemon_groupname, ) AC_SUBST(DAEMON_GROUPNAME) +AC_ARG_WITH(selinux, +[ --with-selinux Define to run with selinux], -+AC_DEFINE(WITH_SELINUX), ++AC_DEFINE([WITH_SELINUX] , [1], [enable selinux]), +) +AC_CHECK_LIB(selinux, is_selinux_enabled, SELINUXLIB=-lselinux) +AC_SUBST(SELINUXLIB) @@ -178,9 +206,7 @@ =================================================================== --- Makefile.in.orig +++ Makefile.in -@@ -38,10 +38,12 @@ DEFS = @DEFS@ -DVERSION=\"$(VERSION)\" - -DLFILE=\"$(LFILE)\" -Wall - LIBS = @LIBS@ +@@ -40,6 +40,8 @@ LIBS = @LIBS@ LIBOBJS = @LIBOBJS@ INSTALL = @INSTALL@ PAMLIB = @PAMLIB@ @@ -189,11 +215,7 @@ CLONES = atq atrm ATOBJECTS = at.o panic.o perm.o posixtm.o y.tab.o lex.yy.o - RUNOBJECTS = atd.o daemon.o $(LIBOBJS) - CSRCS = at.c atd.c panic.c perm.c posixtm.c daemon.c getloadavg.c \ -@@ -71,11 +72,11 @@ at: $(ATOBJECTS) - rm -f $(CLONES) - $(LN_S) -f at atq +@@ -73,7 +75,7 @@ at: $(ATOBJECTS) $(LN_S) -f at atrm atd: $(RUNOBJECTS) @@ -202,5 +224,3 @@ y.tab.c y.tab.h: parsetime.y $(YACC) -d parsetime.y - - lex.yy.c: parsetime.l ++++++ at-adjust_load_to_cpu_count.patch ++++++ Index: at-3.1.16/at.1.in =================================================================== --- at-3.1.16.orig/at.1.in 2015-06-23 18:12:35.348993941 +0200 +++ at-3.1.16/at.1.in 2015-06-23 18:48:39.666401868 +0200 @@ -68,6 +68,9 @@ deletes jobs, identified by their job nu executes commands when system load levels permit; in other words, when the load average drops below @LOADAVG_MX@, or the value specified in the invocation of .BR atd . +Note that because of the load meaning on Linux, +this number is multiplied by the amount of CPUs when compared to the +system loadavg. .PP .B At allows fairly complex time Index: at-3.1.16/atd.c =================================================================== --- at-3.1.16.orig/atd.c 2015-06-23 18:12:35.353994001 +0200 +++ at-3.1.16/atd.c 2015-06-23 18:31:52.137058536 +0200 @@ -763,6 +763,7 @@ run_loop() int run_batch; static time_t next_batch = 0; double currlavg[3]; + int cpu_count = 1; /* Main loop. Open spool directory for reading and look over all the * files in there. If the filename indicates that the job should be run, @@ -907,7 +908,14 @@ run_loop() #ifdef GETLOADAVG_PRIVILEGED END_PRIV #endif - if (currlavg[0] < load_avg) { +#ifdef _SC_NPROCESSORS_ONLN + cpu_count = sysconf(_SC_NPROCESSORS_ONLN); + if (cpu_count < 1) { + cpu_count = 1; + } +#endif + + if (currlavg[0] < load_avg * cpu_count) { run_file(batch_name, batch_uid, batch_gid); run_batch--; } Index: at-3.1.16/atd.8.in =================================================================== --- at-3.1.16.orig/atd.8.in 2014-09-30 08:29:02.000000000 +0200 +++ at-3.1.16/atd.8.in 2015-06-23 18:48:17.519128303 +0200 @@ -20,10 +20,8 @@ runs jobs queued by .B -l Specifies a limiting load factor, over which batch jobs should not be run, instead of the compile-time choice of @LOADAVG_MX@. -For an SMP system with -.I n -CPUs, you will probably want to set this higher than -.IR n-1. +This number is multiplied by the amount of CPUs when comparing +to /proc/loadavg, because loadavg is a sum over all processors on Linux. .TP 8 .B -b Specify the minimum interval in seconds between the start of two ++++++ at_3.1.15.orig.tar.gz -> at_3.1.16.orig.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-3.1.15/ChangeLog new/at-3.1.16/ChangeLog --- old/at-3.1.15/ChangeLog 2014-08-10 13:56:37.000000000 +0200 +++ new/at-3.1.16/ChangeLog 2014-09-30 08:29:02.000000000 +0200 @@ -152,3 +152,8 @@ pam.conf: require pam_loginuid.so atd.service.in: Add Documentation field. atd.service.in: Set IgnoreSIGPIPE=false + +at 3.1.16 (2014-09-30): + + Ansgar Burchardt (1): + at: only retain variables whose name consists of alphanumerics and underscores diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-3.1.15/at.c new/at-3.1.16/at.c --- old/at-3.1.15/at.c 2014-08-10 13:56:37.000000000 +0200 +++ new/at-3.1.16/at.c 2014-09-30 08:29:02.000000000 +0200 @@ -390,6 +390,22 @@ int export = 1; char *eqp; + /* Only accept alphanumerics and underscore in variable names. + * Also require the name to not start with a digit. + * Some shells don't like other variable names. + */ + { + char *p = *atenv; + if (isdigit(*p)) + export = 0; + for (; *p != '=' && *p != '\0'; ++p) { + if (!isalnum(*p) && *p != '_') { + export = 0; + break; + } + } + } + eqp = strchr(*atenv, '='); if (ap == NULL) eqp = *atenv; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-3.1.15/configure new/at-3.1.16/configure --- old/at-3.1.15/configure 2014-08-10 13:56:37.000000000 +0200 +++ new/at-3.1.16/configure 2014-09-30 08:29:02.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for at 3.1.15. +# Generated by GNU Autoconf 2.69 for at 3.1.16. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='at' PACKAGE_TARNAME='at' -PACKAGE_VERSION='3.1.15' -PACKAGE_STRING='at 3.1.15' +PACKAGE_VERSION='3.1.16' +PACKAGE_STRING='at 3.1.16' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1263,7 +1263,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures at 3.1.15 to adapt to many kinds of systems. +\`configure' configures at 3.1.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1328,7 +1328,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of at 3.1.15:";; + short | recursive ) echo "Configuration of at 3.1.16:";; esac cat <<\_ACEOF @@ -1425,7 +1425,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -at configure 3.1.15 +at configure 3.1.16 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1901,7 +1901,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by at $as_me 3.1.15, which was +It was created by at $as_me 3.1.16, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2256,7 +2256,7 @@ -VERSION=3.1.15 +VERSION=3.1.16 if test "X$CFLAGS" = "X"; then CFLAGS="-O2 -g -Wall" fi @@ -5744,7 +5744,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by at $as_me 3.1.15, which was +This file was extended by at $as_me 3.1.16, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5806,7 +5806,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -at config.status 3.1.15 +at config.status 3.1.16 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-3.1.15/configure.ac new/at-3.1.16/configure.ac --- old/at-3.1.15/configure.ac 2014-08-10 13:56:37.000000000 +0200 +++ new/at-3.1.16/configure.ac 2014-09-30 08:29:02.000000000 +0200 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(at, 3.1.15) +AC_INIT(at, 3.1.16) AC_CONFIG_SRCDIR(at.c) AC_PREFIX_DEFAULT(/usr) ++++++ sysconfig.atd ++++++ --- /var/tmp/diff_new_pack.PKXISx/_old 2015-07-05 17:58:04.000000000 +0200 +++ /var/tmp/diff_new_pack.PKXISx/_new 2015-07-05 17:58:04.000000000 +0200 @@ -13,7 +13,8 @@ ## Type: string ## Default: "" ## ServiceRestart: atd -# load limiting factor for atd, "" for default +# load limiting factor for atd, "" for default, +# it's multiplied by the amount of CPUs when comparing to /proc/loadavg # ATD_LOADAVG=""
