Commit graph

207 commits

Author SHA1 Message Date
Adam Bilbrough
d4b48ee300 final push for 1.1.2 2018-11-26 19:08:16 +01:00
Adam Bilbrough
d51685b2eb version 1.1.2
* NEWS: Record release date.
2018-11-26 05:24:42 +01:00
Mathieu Lirzin
0d045af94e
maint: Add 宋文武 to the authors
* AUTHORS: Add 宋文武.
2018-10-07 12:22:55 +02:00
宋文武
7228d3048a
build: Add '--with-sendmail' configure option
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.
2018-10-07 12:22:53 +02:00
Mathieu Lirzin
efa2f51ae3
maint: Post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
2018-04-08 17:02:27 +02:00
Mathieu Lirzin
1c5ec45943
version 1.1.1
* NEWS: Record release date.
2018-04-08 16:58:40 +02:00
Mathieu Lirzin
a2d93e3b75
maint: Update "maint.mk"
* 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.
2018-04-08 16:54:49 +02:00
Mathieu Lirzin
c2b3e6f124
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.
2018-04-08 16:46:36 +02:00
Mathieu Lirzin
4c32ff4944
maint: Update NEWS
* NEWS: Update.
2018-04-08 16:31:41 +02:00
Mathieu Lirzin
cf3146b3c5
vixie-time: Refactor 'parse-vixie-time'
* src/mcron/vixie-time.scm (parse-vixie-time): Use 'match' to avoid
complex 'car' and 'cdr' usage.
2018-04-08 16:07:25 +02:00
Mathieu Lirzin
68be2dd2dd
vixie-time: Refactor 'interpolate-weekdays'
* src/mcron/vixie-time.scm (interpolate-weekdays): Avoid mutation and
add 'range-wday' inner procedure.
2018-04-08 16:07:25 +02:00
Mathieu Lirzin
9187aeb78f
tests: Add "tests/vixie-time.scm"
* tests/vixie-time.scm: New test.
* Makefile.am (TESTS): Add it.
2018-04-08 16:07:16 +02:00
Mathieu Lirzin
ef452ce43b
vixie-time: Adapt to '%find-best-next' possible infinite result
This is a follow up to commit ae6deb8ea2.

* src/mcron/vixie-time.scm (increment-time-component): Check if
'%find-best-next' returns '+inf.0' not 9999.
2018-04-01 22:23:40 +02:00
Mathieu Lirzin
d8127a386c
utils: Check 'show-version' and 'show-package-information'
* tests/utils.scm ("show-package-information")
("show-version"): New tests.
2018-03-27 03:30:04 +02:00
Mathieu Lirzin
729bae0c98
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.
2018-03-27 03:29:47 +02:00
Mathieu Lirzin
8ab0465d92
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.
2018-03-27 03:17:36 +02:00
Mathieu Lirzin
15fa52f7ec
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.
2018-03-27 03:13:14 +02:00
Mathieu Lirzin
56f85cfd8a
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.
2018-03-27 03:13:13 +02:00
Mathieu Lirzin
c263834da9
job-specifier: Fix typo "implement" => "implementation"
* src/mcron/job-specifier.scm (%find-best-next): Fix typo.
2018-03-27 03:13:06 +02:00
Mathieu Lirzin
95fb914025
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.
2018-03-26 21:11:16 +02:00
Mathieu Lirzin
f71b0b8310
job-specifier: Adapt 'bump-time' to 'next-...-from' procedures
This is a follow-up to commit 913e3c65e4.

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>
2018-03-26 17:51:11 +02:00
Mathieu Lirzin
fad58ca8c2
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>
2018-03-26 17:20:26 +02:00
Mathieu Lirzin
e66f0dcdd6
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.
2018-03-26 01:46:44 +02:00
Mathieu Lirzin
6c4f93371c
build: Add "maint.mk"
* maint.mk: New maintainer-only Makefile fragment.
* Makefile.am: Include it.
* configure.ac: Substitute "maint.mk" content when it exists.
2018-03-26 01:44:22 +02:00
Mathieu Lirzin
9ce38228e8
maint: Document how to get code coverage reports
* HACKING <Code coverage>: New section.
2018-03-25 07:44:01 +02:00
Mathieu Lirzin
5023a8c7ca
maint: Update files from upstream with "build-aux/gnu-fetch"
* build-aux/test-driver.scm: Update.
2018-03-25 07:40:28 +02:00
Mathieu Lirzin
c20e4cc0aa
utils: It's 2018!
* src/mcron/utils.scm (show-version): Update copyright.
2018-03-25 03:09:29 +02:00
Mathieu Lirzin
4d636af876
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.
2018-03-25 03:01:45 +02:00
Mathieu Lirzin
5af999fb20
tests: Add "tests/utils.scm"
* tests/utils.scm: New test.
* Makefile.am (TESTS): Add it.
2018-03-25 00:38:26 +01:00
Mathieu Lirzin
2169f4a7b3
maint: Update files from upstream with "build-aux/gnu-fetch"
* build-aux/gitlog-to-changelog: Update.
* build-aux/test-driver.scm: Likewise.
2018-03-24 23:40:58 +01:00
Mathieu Lirzin
a8511ce35d
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.
2018-03-24 22:06:44 +01:00
Mathieu Lirzin
0159423d15
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.
2018-03-24 21:13:51 +01:00
Mathieu Lirzin
b8cbf635cc
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.
2018-03-24 20:32:13 +01:00
Mathieu Lirzin
e013e2a6d6
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.
2018-03-24 20:29:02 +01:00
Mathieu Lirzin
d1e0d2a8f7
base: Check 'run-job'
* tests/base.scm ("run-job: basic"): New test.
2018-03-24 15:32:56 +01:00
Mathieu Lirzin
526ce502e5
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.
2018-03-24 14:03:54 +01:00
Mathieu Lirzin
d63db1ce4e
base: Rewrite 'child-cleanup'
* src/mcron/base.scm (child-cleanup): Use recursion instead of 'do'.
2018-03-24 01:58:42 +01:00
Mathieu Lirzin
a1f9e3d7a7
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.
2018-03-24 01:33:22 +01:00
Mathieu Lirzin
07017255a1
base: Rewrite 'find-next-jobs' docstring.
* src/mcron/base.scm (find-next-jobs): Don't explain the detail of
implementation in the docstring.
2018-03-24 01:18:21 +01:00
Mathieu Lirzin
6583e83d16
tests: Add "tests/base.scm"
* tests/base.scm: New test.
* Makefile.am (TESTS): Add it.
2018-03-24 01:18:21 +01:00
Mathieu Lirzin
ac39c00859
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.
2018-03-24 01:18:15 +01:00
Mathieu Lirzin
cae2270fd7
build: Check non-standard C functions at configure time
* configure.ac: Check 'argp_parse' and 'asprintf' presence.
2018-03-23 22:13:43 +01:00
Mathieu Lirzin
426f5d7b38
job-specifier: Use 'simple-format'
* src/mcron/job-specifier.scm (job): Use 'simple-format' instead of
'with-output-to-string'.
2018-03-23 20:55:42 +01:00
Mathieu Lirzin
fe9592fd28
maint: Update copyright years 2018-03-20 19:27:59 +01:00
Mathieu Lirzin
f908c5395c
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>
2018-03-20 19:27:10 +01:00
Mathieu Lirzin
09e452b62a
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>
2018-03-20 19:25:28 +01:00
Mathieu Lirzin
44f4fab641
maint: Update NEWS
* NEWS: Announce the availability of 'make installcheck'.
2018-03-20 02:28:10 +01:00
Mathieu Lirzin
64ff2b1ddf
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.
2018-03-20 02:18:05 +01:00
Mathieu Lirzin
624ceb4480
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.
2018-03-20 02:17:11 +01:00
Mathieu Lirzin
dd9d6a6b06
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'.
2018-03-20 00:11:28 +01:00