SummaryRefsLogTreeCommitDiffStats
Commit message (Collapse)AuthorAgeFilesLines
...
* utils: It's 2020!Ludovic Courtès2020-02-271-1/+1
| | | | * src/mcron/utils.scm (show-version): Update copyright year.
* base: Avoid 'call-with-current-continuation'.Ludovic Courtès2020-02-271-22/+22
| | | | | | | | 'call-with-current-continuation' is overkill and not quite what we want. 'let/ec' is supported in Guile 2.0, 2.2, and 3.0. * src/mcron/base.scm (run-job-loop): Use 'let/ec' instead of 'call-with-current-continuation'.
* base: Call 'child-cleanup' when 'select' returns an empty set.Ludovic Courtès2020-02-271-14/+26
| | | | | | | | Previously, on Guile >= 2.2, we'd lose this opportunity to call 'child-cleanup', possibly leaving zombies behind us. * src/mcron/base.scm (run-job-loop): Define 'select*'. Don't expect 'select*' to throw upon EINTR or EAGAIN.
* build: Support Guile 3.0.Ludovic Courtès2020-02-271-2/+2
| | | | * configure.ac: Add "3.0" to 'GUILE_PKG'.
* Add missing #include directives.Ludovic Courtès2020-02-273-0/+3
| | | | | | | | <libguile.h> in Guile 2.x used to include these, but this is no longer the case with 3.0. * src/cron.c, src/mcron.h: Include <string.h>. * src/utils.c: Include <stdio.h>.
* prepared files for 1.1.3v1.1.3atsb2019-11-173-2/+10
|
* maint: Add Efraim Flashner to the authorsMathieu Lirzin2019-04-071-0/+1
| | | | * AUTHORS: Add Efraim Flashner.
* build: Update guix.scmEfraim Flashner2019-04-071-8/+5
| | | | | | | | | * build-aux/guix.scm: Inherit from mcron. <arguments>: Remove extra 'bootstrap phase. <inputs>: Build with guile@2.2. <native-inputs>: Add tzdata for tests. Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
* doc: Fix “Every second Sunday” exampleAdam Tack2019-02-111-1/+1
| | | | | | * doc/mcron.texi (Every second Sunday): If the first day of the month is Sunday, then the second Sunday of the month is seven days later not eight.
* final push for 1.1.2v1.1.2Adam Bilbrough2018-11-2610-757/+2
|
* version 1.1.2Adam Bilbrough2018-11-261-1/+1
| | | | * NEWS: Record release date.
* maint: Add 宋文武 to the authorsMathieu Lirzin2018-10-071-0/+1
| | | | * AUTHORS: Add 宋文武.
* build: Add '--with-sendmail' configure option宋文武2018-10-074-26/+22
| | | | | | | | | | | | This allows users to configure the Mail Transfert Agent (MTA) of their choice. * configure.ac: Add '--with-sendmail' option. (SENDMAIL): Default to 'sendmail -t'. * NEWS: Announce it. * src/mcron/redirect.scm (with-mail-out): Assume the MTA is reading the message for recipients. * build-aux/guix.scm: Remove 'which' from the native-inputs.
* maint: Post-release administriviaMathieu Lirzin2018-04-082-1/+4
| | | | | * NEWS: Add header line for next release. * .prev-version: Record previous version.
* version 1.1.1v1.1.1Mathieu Lirzin2018-04-081-1/+1
| | | | * NEWS: Record release date.
* maint: Update "maint.mk"Mathieu Lirzin2018-04-081-0/+63
| | | | | | | * maint.mk (gpg_key_ID, gnu_rel_host, noteworthy_changes) (gnu_ftp_host-alpha, gnu_ftp_host-beta) (gnu_ftp_host-stable): New macros. (release, upload, web-manual, web-manual-update): New rules.
* maint: Update READMEMathieu Lirzin2018-04-081-18/+19
| | | | | | * README: Do not include the version number. Refer to "HACKING" when "INSTALL" is not available. Tell about the "--disable-multi-user" configure option.
* maint: Update NEWSMathieu Lirzin2018-04-081-1/+4
| | | | * NEWS: Update.
* vixie-time: Refactor 'parse-vixie-time'Mathieu Lirzin2018-04-081-68/+63
| | | | | * src/mcron/vixie-time.scm (parse-vixie-time): Use 'match' to avoid complex 'car' and 'cdr' usage.
* vixie-time: Refactor 'interpolate-weekdays'Mathieu Lirzin2018-04-081-18/+11
| | | | | * src/mcron/vixie-time.scm (interpolate-weekdays): Avoid mutation and add 'range-wday' inner procedure.
* tests: Add "tests/vixie-time.scm"Mathieu Lirzin2018-04-082-1/+120
| | | | | * tests/vixie-time.scm: New test. * Makefile.am (TESTS): Add it.
* vixie-time: Adapt to '%find-best-next' possible infinite resultMathieu Lirzin2018-04-011-10/+13
| | | | | | | This is a follow up to commit ae6deb8ea23570c02a7b575a53bba37048aab59f. * src/mcron/vixie-time.scm (increment-time-component): Check if '%find-best-next' returns '+inf.0' not 9999.
* utils: Check 'show-version' and 'show-package-information'Mathieu Lirzin2018-03-271-0/+18
| | | | | * tests/utils.scm ("show-package-information") ("show-version"): New tests.
* utils: Remove 'parse-args'Mathieu Lirzin2018-03-273-13/+5
| | | | | | | | It seems that it is not useful to catch 'misc-error exception when calling 'getopt-long'. Since 'parse-args' purpose was only to catch this particular error, it can be deleted. * src/mcron/utils.scm (parse-args): Remove.
* job-specifier: Check 'job'Mathieu Lirzin2018-03-271-0/+37
| | | | | | | | * tests/job-specifier.scm ("job: procedure timeproc") ("job: list timeproc", "job: string timeproc", "job: list action") ("job: invalid string timeproc", "job: invalid timeproc") ("job: procedure action", "job: string action") ("job: user name"): New tests.
* job-specifier: Box 'configuration-user' global variableMathieu Lirzin2018-03-272-6/+50
| | | | | | | | | | | * src/mcron/job-specifier.scm (configuration-user): Box it using SRFI-111 to be explicit about the mutability of this object. (job): Adapt. (set-configuration-user): Adapt and use 'get-user'. * tests/job-specifier.scm ("set-configuration-user: passwd entry") ("set-configuration-user: invalid uid", "set-configuration-user: uid") ("set-configuration-user: invalid spec") ("set-configuration-user: name"): New tests.
* job-specifier: Check 'next-...' proceduresMathieu Lirzin2018-03-271-3/+36
| | | | | | * tests/job-specifier.scm ("next-year", "next-month", "next-day") ("next-hour", "next-minute", "next-second"): New tests. ("next-hour-from"): Remove.
* job-specifier: Fix typo "implement" => "implementation"Mathieu Lirzin2018-03-271-1/+2
| | | | * src/mcron/job-specifier.scm (%find-best-next): Fix typo.
* base: Check how child processes are handledMathieu Lirzin2018-03-261-6/+23
| | | | | * tests/base.scm ("run-job: basic"): Check the number of children too. ("child-cleanup: one", "update-number-children!: set value"): New tests.
* job-specifier: Adapt 'bump-time' to 'next-...-from' proceduresMathieu Lirzin2018-03-263-15/+19
| | | | | | | | | | | | | | | This is a follow-up to commit 913e3c65e4f56476e8ac69f4892cf92c125751ec. Since 'next-...-from' procedures now uses an '#:optional' argument instead of a dotted optional arguments list, 'bump-time' doesn't need to unwrap VALUE-LIST anymore. * src/mcron/job-specifier.scm (bump-time): Pass VALUE-LIST directly to '%find-best-next'. * tests/job-specifier.scm ("next-hour-from"): New test. * NEWS: Update. Reported-by: Ludovic Courtès <ludo@gnu.org>
* job-specifier: Preserve '%find-best-next' arguments exactnessMathieu Lirzin2018-03-262-3/+16
| | | | | | | | | | | | The behavior of the 'min' procedure which converts its parameters to inexact numbers when at least one of them is inexact was causing '%find-best-next' to always return real numbers. * src/mcron/job-specifier.scm (%find-best-next): Preserve the exactness of numbers in NEXT-LIST. * tests/job-specifier.scm ("%find-best-next: exact"): New test. Reported-by: Ludovic Courtès <ludo@gnu.org>
* maint: Replace "build-aux/gnu-fetch" with 'fetch' maintainer ruleMathieu Lirzin2018-03-263-98/+44
| | | | | | | | | | | Fetching third-party files inside a make rule is convenient and less error prone since 'make' has access to '$srcdir'. * build-aux/gnu-fetch: Delete. * maint.mk (WGET, git_sv_host, sv_git_am, sv_git_gl) (fetchfiles): New macros. (fetch): New target. * HACKING <Updating auxilary scripts>: Update instructions.
* build: Add "maint.mk"Mathieu Lirzin2018-03-263-0/+32
| | | | | | * maint.mk: New maintainer-only Makefile fragment. * Makefile.am: Include it. * configure.ac: Substitute "maint.mk" content when it exists.
* maint: Document how to get code coverage reportsMathieu Lirzin2018-03-251-0/+8
| | | | * HACKING <Code coverage>: New section.
* maint: Update files from upstream with "build-aux/gnu-fetch"Mathieu Lirzin2018-03-251-9/+28
| | | | * build-aux/test-driver.scm: Update.
* utils: It's 2018!Mathieu Lirzin2018-03-251-1/+1
| | | | * src/mcron/utils.scm (show-version): Update copyright.
* utils: Check 'mcron-error'Mathieu Lirzin2018-03-251-1/+43
| | | | | * tests/utils.scm ("mcron-error: exit code", "mcron-error: output") ("mcron-error: output no-exit", "mcron-error: only stderr"): New tests.
* tests: Add "tests/utils.scm"Mathieu Lirzin2018-03-252-1/+53
| | | | | * tests/utils.scm: New test. * Makefile.am (TESTS): Add it.
* maint: Update files from upstream with "build-aux/gnu-fetch"Mathieu Lirzin2018-03-242-65/+92
| | | | | * build-aux/gitlog-to-changelog: Update. * build-aux/test-driver.scm: Likewise.
* maint: Add "build-aux/gnu-fetch" script.Mathieu Lirzin2018-03-242-1/+104
| | | | | | * build-aux/gnu-fetch: New script for fetching auxilary scripts maintained in other GNU repositories. * HACKING: Document how to run it.
* tests: Remove unused schedule stubsMathieu Lirzin2018-03-241-13/+12
| | | | | | * tests/base.scm ("number-children: init") ("update-number-children!: 1+", "update-number-children!: 1-"): Remove 'let' form defining the schedule stub.
* environment: Check configuration environmentMathieu Lirzin2018-03-241-1/+54
| | | | | | | * tests/environment.scm ("current-environment-mods-copy: empty") ("current-environment-mods: init", "append-environment-mods: basic") ("append-environment-mods: twice", "clear-environment-mods: effect") ("current-environment-mods-copy: basic"): New tests.
* environment: Refactor configuration environment handlingMathieu Lirzin2018-03-241-35/+38
| | | | | | | | * src/mcron/environment.scm (current-environment-mods): Rename to ... (%current-environment-mods): ... this. Box it using SRFI-111 to be explicit about the mutability of this object. (get-current-environment-mods-copy, clear-environment-mods) (append-environment-mods): New '#:ENVIRON' argument.
* base: Check 'run-job'Mathieu Lirzin2018-03-241-0/+16
| | | | * tests/base.scm ("run-job: basic"): New test.
* base: Box 'number-children'Mathieu Lirzin2018-03-242-6/+47
| | | | | | | | | * src/mcron/base.scm (number-children): Box it using SRFI-111 to be explicit about the mutability of this object. (update-number-children!): New procedure. (run-job, child-cleanup): Use it. * tests/base.scm ("update-number-children!: 1+") ("number-children: init", "update-number-children!: 1-"): New tests.
* base: Rewrite 'child-cleanup'Mathieu Lirzin2018-03-241-6/+6
| | | | * src/mcron/base.scm (child-cleanup): Use recursion instead of 'do'.
* utils: Add 'get-user'Mathieu Lirzin2018-03-243-8/+17
| | | | | | * src/mcron/utils.scm (get-user): New procedure. * src/mcron/job-specifier.scm (job): Use it. * src/mcron/base.scm (remove-user-jobs): Likewise.
* base: Rewrite 'find-next-jobs' docstring.Mathieu Lirzin2018-03-241-15/+4
| | | | | * src/mcron/base.scm (find-next-jobs): Don't explain the detail of implementation in the docstring.
* tests: Add "tests/base.scm"Mathieu Lirzin2018-03-242-0/+152
| | | | | * tests/base.scm: New test. * Makefile.am (TESTS): Add it.
* base: Add '<schedule>' record data typeMathieu Lirzin2018-03-242-71/+87
| | | | | | | | | | | | | | | | | | Reifying the notion of a schedule helps reasoning about the code. Passing a schedule as an argument to related procedures allows writing simpler unit tests. * src/mcron/base.scm(<schedule>): New record data type. (make-schedule, schedule-user, set-schedule-user!) (schedule-system, set-schedule-system!) (schedule-current, set-schedule-current!): New procedures. (system-job-list, user-job-list, configuration-source): Replace those global variables with ... (%global-schedule): ... this global <schedule> instance. * src/mcron/base.scm (use-system-job-list, use-user-job-list) (remove-user-jobs, clear-system-jobs, add-job, find-next-jobs) (display-schedule, run-job-loop): Add '#:SCHEDULE' keyword argument. * doc/mcron.texi (The base module): Update documentation.