AboutSummaryRefsLogTreeCommitDiffStats
Commit message (Expand)AuthorAgeFilesLines
* maint: Update README...* README: Do not include the version number. Refer to "HACKING" when "INSTALL" is not available. Tell about the "--disable-multi-user" configure option. Mathieu Lirzin2018-04-081-18/+19
* maint: Update NEWS...* NEWS: Update. Mathieu Lirzin2018-04-081-1/+4
* vixie-time: Refactor 'parse-vixie-time'...* src/mcron/vixie-time.scm (parse-vixie-time): Use 'match' to avoid complex 'car' and 'cdr' usage. Mathieu Lirzin2018-04-081-68/+63
* vixie-time: Refactor 'interpolate-weekdays'...* src/mcron/vixie-time.scm (interpolate-weekdays): Avoid mutation and add 'range-wday' inner procedure. Mathieu Lirzin2018-04-081-18/+11
* tests: Add "tests/vixie-time.scm"...* tests/vixie-time.scm: New test. * Makefile.am (TESTS): Add it. Mathieu Lirzin2018-04-082-1/+120
* vixie-time: Adapt to '%find-best-next' possible infinite result...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. Mathieu Lirzin2018-04-011-10/+13
* utils: Check 'show-version' and 'show-package-information'...* tests/utils.scm ("show-package-information") ("show-version"): New tests. Mathieu Lirzin2018-03-271-0/+18
* utils: Remove 'parse-args'...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. Mathieu Lirzin2018-03-273-13/+5
* job-specifier: Check 'job'...* 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. Mathieu Lirzin2018-03-271-0/+37
* job-specifier: Box 'configuration-user' global variable...* 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. Mathieu Lirzin2018-03-272-6/+50
* job-specifier: Check 'next-...' procedures...* tests/job-specifier.scm ("next-year", "next-month", "next-day") ("next-hour", "next-minute", "next-second"): New tests. ("next-hour-from"): Remove. Mathieu Lirzin2018-03-271-3/+36
* job-specifier: Fix typo "implement" => "implementation"...* src/mcron/job-specifier.scm (%find-best-next): Fix typo. Mathieu Lirzin2018-03-271-1/+2
* base: Check how child processes are handled...* tests/base.scm ("run-job: basic"): Check the number of children too. ("child-cleanup: one", "update-number-children!: set value"): New tests. Mathieu Lirzin2018-03-261-6/+23
* job-specifier: Adapt 'bump-time' to 'next-...-from' procedures...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> Mathieu Lirzin2018-03-263-15/+19
* job-specifier: Preserve '%find-best-next' arguments exactness...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> Mathieu Lirzin2018-03-262-3/+16
* maint: Replace "build-aux/gnu-fetch" with 'fetch' maintainer rule...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. Mathieu Lirzin2018-03-263-98/+44
* build: Add "maint.mk"...* maint.mk: New maintainer-only Makefile fragment. * Makefile.am: Include it. * configure.ac: Substitute "maint.mk" content when it exists. Mathieu Lirzin2018-03-263-0/+32
* maint: Document how to get code coverage reports...* HACKING <Code coverage>: New section. Mathieu Lirzin2018-03-251-0/+8
* maint: Update files from upstream with "build-aux/gnu-fetch"...* build-aux/test-driver.scm: Update. Mathieu Lirzin2018-03-251-9/+28
* utils: It's 2018!...* src/mcron/utils.scm (show-version): Update copyright. Mathieu Lirzin2018-03-251-1/+1
* utils: Check 'mcron-error'...* tests/utils.scm ("mcron-error: exit code", "mcron-error: output") ("mcron-error: output no-exit", "mcron-error: only stderr"): New tests. Mathieu Lirzin2018-03-251-1/+43
* tests: Add "tests/utils.scm"...* tests/utils.scm: New test. * Makefile.am (TESTS): Add it. Mathieu Lirzin2018-03-252-1/+53
* maint: Update files from upstream with "build-aux/gnu-fetch"...* build-aux/gitlog-to-changelog: Update. * build-aux/test-driver.scm: Likewise. Mathieu Lirzin2018-03-242-65/+92
* maint: Add "build-aux/gnu-fetch" script....* build-aux/gnu-fetch: New script for fetching auxilary scripts maintained in other GNU repositories. * HACKING: Document how to run it. Mathieu Lirzin2018-03-242-1/+104
* tests: Remove unused schedule stubs...* tests/base.scm ("number-children: init") ("update-number-children!: 1+", "update-number-children!: 1-"): Remove 'let' form defining the schedule stub. Mathieu Lirzin2018-03-241-13/+12
* environment: Check configuration environment...* 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. Mathieu Lirzin2018-03-241-1/+54
* environment: Refactor configuration environment handling...* 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. Mathieu Lirzin2018-03-241-35/+38
* base: Check 'run-job'...* tests/base.scm ("run-job: basic"): New test. Mathieu Lirzin2018-03-241-0/+16
* base: Box 'number-children'...* 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. Mathieu Lirzin2018-03-242-6/+47
* base: Rewrite 'child-cleanup'...* src/mcron/base.scm (child-cleanup): Use recursion instead of 'do'. Mathieu Lirzin2018-03-241-6/+6
* utils: Add 'get-user'...* src/mcron/utils.scm (get-user): New procedure. * src/mcron/job-specifier.scm (job): Use it. * src/mcron/base.scm (remove-user-jobs): Likewise. Mathieu Lirzin2018-03-243-8/+17
* base: Rewrite 'find-next-jobs' docstring....* src/mcron/base.scm (find-next-jobs): Don't explain the detail of implementation in the docstring. Mathieu Lirzin2018-03-241-15/+4
* tests: Add "tests/base.scm"...* tests/base.scm: New test. * Makefile.am (TESTS): Add it. Mathieu Lirzin2018-03-242-0/+152
* base: Add '<schedule>' record data type...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. Mathieu Lirzin2018-03-242-71/+87
* build: Check non-standard C functions at configure time...* configure.ac: Check 'argp_parse' and 'asprintf' presence. Mathieu Lirzin2018-03-231-0/+6
* job-specifier: Use 'simple-format'...* src/mcron/job-specifier.scm (job): Use 'simple-format' instead of 'with-output-to-string'. Mathieu Lirzin2018-03-231-4/+3
* maint: Update copyright yearsMathieu Lirzin2018-03-203-3/+3
* utils: Use 'scandir' instead of custom 'for-each-file'...* src/mcron/utils.scm (for-each-file): Delete. * src/mcron/scripts/cron.scm (process-files-in-system-directory): Use 'scandir' which has the benefit of being deterministic. * src/mcron/scripts/mcron.scm (process-files-in-user-directory): Likewise. * tests/schedule.sh: Update expected output which is now more reliable. * NEWS: Update. Suggested-by: Ludovic Courtès <ludo@gnu.org> Mathieu Lirzin2018-03-205-36/+26
* tests: Set timezone in "schedule.sh"...Previously the test environment was implicitly expecting the current timezone to be UTC+1. * tests/schedule.sh: Set TZ environment variable to 'UTC0'. Update expected result. Reported-by: Ludovic Courtès <ludo@gnu.org> Mathieu Lirzin2018-03-201-21/+26
* maint: Update NEWS...* NEWS: Announce the availability of 'make installcheck'. Mathieu Lirzin2018-03-201-0/+5
* build: Support 'make installcheck'...* configure.ac: Pass 'std-options' to AM_INIT_AUTOMAKE to check that the "--help" and "--version" options can be passed to installed programs. * Makefile.am (installcheck-local): New rule which checks the programs presence and configuration. Mathieu Lirzin2018-03-202-1/+17
* build: Properly set Guile load paths in programs...This fixes an issue where the installed Guile load paths were set by the undefined 'moduledir' Make macro. * Makefile.am (AM_CPPFLAGS): Define PACKAGE_LOAD_PATH with 'guilesitedir' macro and PACKAGE_LOAD_COMPILED_PATH with 'guilesitegodir'. * NEWS: Update. Mathieu Lirzin2018-03-202-2/+5
* build: Handle all programs names transformations...Previously only prepending a prefix was handled when installing 'crontab'. Using the 'transform' Make macro allows the installation process to support generic transformations as defined by the '--program-suffix' and '--program-transform-name' configure options. * configure.ac: Don't substitue '@real_program_prefix@'. * Makefile.am (fpp): Remove. (transform_exe): New macro. [MULTI_USER] (install-exec-hook): Use it when installing 'crontab'. Mathieu Lirzin2018-03-202-11/+4
* build: Reverse '--disable-multi-user' effect...This fixes a bug where the '--disable-multi-user' was actually having the reverse effect of installing 'cron' and 'crontab'. * configure.ac: Reverse equality test when setting 'MULTI_USER' Automake conditional. Mathieu Lirzin2018-03-192-1/+5
* maint: Remove obsolete configure checks...* configure.ac: Don't check for 'sed' and 'cp' programs which are considered portable. Don't check for 'head' and 'which' programs which are not required. Mathieu Lirzin2018-03-191-18/+0
* maint: Post-release administrivia...* NEWS: Add header line for next release. * .prev-version: Record previous version. Mathieu Lirzin2018-03-192-1/+4
* version 1.1...* NEWS: Record release date. v1.1Mathieu Lirzin2018-03-191-1/+1
* maint: Add ".prev-version"...This file is used by the "build-aux/do-release-commit-and-tag" script. * .prev-version: New file Mathieu Lirzin2018-03-181-0/+1
* maint: Include maintainer scripts from Gnulib...* build-aux/announce-gen: New script. * build-aux/do-release-commit-and-tag: Likewise. * build-aux/gnu-web-doc-update: Likewise. * build-aux/gnupload: Likewise. Mathieu Lirzin2018-03-184-0/+1386
* build: Programs are not implicitly depending on libraries...Before that change, it was possible for 'make' to try linking programs before 'src/libmcron.a' was built. * Makefile.am (bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES) (bin_crontab_DEPENDENCIES): Add '$(noinst_LIBRARIES)'. Mathieu Lirzin2018-03-171-3/+3