Mathieu Lirzin
f284b52446
build: Separate "Makefile.am" into more sections.
...
* Makefile.am: Add "Installation", "Distribution", "Test suite",
"Programs", and "Guile modules" sections.
2017-09-28 13:19:28 +02:00
Mathieu Lirzin
a0a82a2ef4
build: Add 'bootstrap' script.
...
* bootstrap: New file.
* Makefile.am (EXTRA_DIST): Add it.
2017-09-28 13:19:28 +02:00
Mathieu Lirzin
ab07cf296b
Add (mcron core) module.
...
This module is an alias for (mcron base) module. This modules is added to
keep backward compatibility with Mcron 1.x.
2017-09-28 13:19:11 +02:00
Mathieu Lirzin
ec5ece53d6
base: Add 'run-job' procedure.
...
* src/mcron/base.scm (run-jobs): Delete.
(run-job): New procedure.
(run-job-loop): Use it.
2017-09-28 13:18:29 +02:00
Mathieu Lirzin
10df45c659
job-specifier: Remove dependency on SRFI-26.
...
* src/mcron/job-specifier.scm (range): Use plain lambda instead of 'cut' and
'cute'.
2017-09-28 13:18:29 +02:00
Mathieu Lirzin
f1c498c2dd
build: Install '.go' files under LIBDIR.
...
* Makefile.am (compiled_modules): New variable.
(bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES)
(bin_crontab_DEPENDENCIES): Use it.
(guilesitegodir, pkgmodulegodir, pkgmodulego_DATA)
(pkgscriptgodir, pkgscriptgo_DATA): New variables
(pkgmodule_DATA): Remove compiled modules.
(pkgscript_DATA): Delete.
(DISTCLEANFILES, CLEANFILES): Update.
2017-09-28 13:18:28 +02:00
Mathieu Lirzin
3b5195ed33
build: Don't generate '.version' file.
...
* Makefile.am (.version): Remove target which has no use.
(EXTRA_DIST): Adapt.
(BUILT_SOURCES): Delete.
* .gitignore: Update.
2017-09-28 13:18:28 +02:00
Mathieu Lirzin
c2cdfefaca
build: Rename variables for Guile install directories.
...
* configure.ac (moduledir, mcronmoduledir): Rename to ...
* Makefile.am (guilesitedir, pkgmoduledir): ... these.
(dist_mcronmodule_DATA, mcronmodule_DATA, mcronscriptdir)
(dist_mcronscript_DATA, mcronscript_DATA): Rename to ...
(dist_pkgmodule_DATA, pkgmodule_DATA, pkgscriptdir, dist_pkgscript_DATA)
(pkgscript_DATA): ... these.
(modules): Adapt.
2017-09-28 13:18:27 +02:00
Mathieu Lirzin
ade37c96b7
build: Support Guile 2.2.
...
* configure.ac: Use 'GUILE_PKG' and 'GUILE_PROGS'. Remove explicit Guile
version check and check for 'guild'. Honor $GUILE_EFFECTIVE_VERSION in
'moduledir'.
2017-09-28 13:15:24 +02:00
Mathieu Lirzin
44e0e6f305
build: Define PACKAGE_LOAD_COMPILED_PATH macro.
...
* Makefile.am (AM_CPPFLAGS): Define PACKAGE_LOAD_COMPILED_PATH macro.
* src/wrapper.c (main): Use it.
2017-09-27 23:21:54 +02:00
Mathieu Lirzin
57b9294277
wrapper: Avoid 'scm_c_eval_string' usage.
...
* src/wrapper.c (wrap_env_path): New function.
(main): Use it.
(inner_main): Let 'wrap_env_path' set the environment variables.
Don't use 'scm_c_eval_string' when calling 'main' procedure.
* Makefile.am (AM_CPPFLAGS): Define _GNU_SOURCE for 'asprintf'.
2017-09-27 23:21:54 +02:00
Mathieu Lirzin
d72716ce16
Merge branch 'devel'
2017-09-27 23:16:54 +02:00
Mathieu Lirzin
a0b580448c
Revert "Add missing 'makefile.am'."
...
This reverts commit 2039060a1d .
2017-09-27 23:11:01 +02:00
Mathieu Lirzin
d96ede0b09
Revert "Fix build of the manual."
...
This reverts commit e6a94adeb3 .
2017-09-27 23:10:55 +02:00
Mathieu Lirzin
3eb1889f89
Revert "Remove derived doc/mcron.1 with maintainer-clean."
...
This reverts commit eca341bd82 .
2017-09-27 23:10:51 +02:00
Mathieu Lirzin
54a0887f1a
Revert "Fix package name and bug reports email address."
...
This reverts commit df4fa60a03 .
2017-09-27 23:10:42 +02:00
Mathieu Lirzin
de58e99aa5
Revert "Have a new directory to get rid of with maintainer-clean."
...
This reverts commit 024027ae2d .
2017-09-27 23:10:36 +02:00
Mathieu Lirzin
41b427e1b2
Revert "Taken on board suggestions of Mathieu Lirzin as per e-mails to the bug-mcron@gnu.org mailing list around September 2015."
...
This reverts commit c0a6eb14c2 .
2017-09-27 23:10:29 +02:00
Mathieu Lirzin
ba294d6a3b
build: Use portable substitution references.
...
* Makefile.am (bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES)
(bin_crontab_DEPENDENCIES, mcronmodule_DATA, mcronscript_DATA)
(CLEANFILES): Use portable substitution references.
2016-12-28 23:59:54 +01:00
Mathieu Lirzin
aaf1b08404
build: Add "build-aux/guix.scm".
...
* build-aux/guix.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2016-12-28 23:55:20 +01:00
Mathieu Lirzin
ea648c0730
build: Move executable to "bin" directory.
...
* Makefile.am (bin_PROGRAMS, sbin_PROGRAMS): Prepend "bin/" to every program.
(mcron_SOURCES, mcron_CPPFLAGS, mcron_DEPENDENCIES): Rename to ...
(bin_mcron_SOURCES, bin_mcron_CPPFLAGS, bin_mcron_DEPENDENCIES): ... this.
(cron_SOURCES, cron_CPPFLAGS, cron_DEPENDENCIES): Rename to ...
(bin_cron_SOURCES, bin_cron_CPPFLAGS, bin_cron_DEPENDENCIES): ... this.
(crontab_SOURCES, crontab_CPPFLAGS, crontab_DEPENDENCIES): Rename to ...
(bin_crontab_SOURCES, bin_crontab_CPPFLAGS, bin_crontab_DEPENDENCIES):
($(srcdir)/doc/cron.8, $(srcdir)/doc/crontab.1, $(srcdir)/doc/mcron.1): Update
prerequisite.
* build-aux/pre-inst-env.in (PATH): Use "bin" directory.
* .gitignore: Update.
2016-12-28 23:39:14 +01:00
Mathieu Lirzin
a3051133c0
maint: Generate version number.
...
* build-aux/git-version-gen: New script.
* configure.ac (AC_INIT): Use it.
(AC_REQUIRE_AUX_FILE): Distribute it.
* Makefile.am (.version): New target.
(BUILT_SOURCES, EXTRA_DIST): Add it.
(dist-hook): Generate ".tarball-version".
* .gitignore: Update.
2016-12-28 23:06:03 +01:00
Mathieu Lirzin
5e6233a58d
base: find-next-jobs: Use functional style.
...
* src/mcron/base.scm (find-next-jobs): Rewrite it using functional
style. Add docstring.
2016-12-28 22:19:04 +01:00
Mathieu Lirzin
c1d2c765ef
vixie-specification: Do not use 'and-let*'.
...
* src/mcron/vixie-specification.scm (parse-vixie-environment): Use
'and=>' instead of 'and-let*'
2016-12-28 22:19:04 +01:00
Mathieu Lirzin
4d518fd3f1
all: Gather module imports.
...
* src/mcron/base.scm: Gather module imports.
* src/mcron/redirect.scm: Likewise.
* src/mcron/vixie-specification.scm: Likewise.
* src/mcron/vixie-time.scm: Likewise.
2016-12-28 22:19:04 +01:00
Mathieu Lirzin
d4b4ac5708
utils: Remove unneeded 'stdin->string' procedure.
...
* src/mcron/utils.scm: Re-export 'read-string'.
(stdin->string): Delete.
* src/mcron/scripts/crontab.scm (main): Use 'read-string' instead.
* src/mcron/scripts/mcron.scm (process-user-file): Likewise.
2016-12-28 22:19:04 +01:00
Mathieu Lirzin
2d6c072b47
utils: for-each-file: Use named let.
...
* src/mcron/utils.scm (for-each-file): Use named 'let' instead of 'do'.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
61f85be19d
build: Rename (mcron main) to (mcron utils).
...
* src/mcron/main.scm: Rename to ...
* src/mcron/utils.scm: ... this.
* src/mcron/scripts/cron.scm: Adapt.
* src/mcron/scripts/crontab.scm: Likewise.
* src/mcron/scripts/mcron.scm: Likewise.
* Makefile.am (dist_mcronmodule_DATA): Likewise.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
2c9139f623
maint: Delete BUGS.
...
* BUGS: Delete.
* Makefile.am (EXTRA_DIST): Adapt.
* README: Likewise.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
6a91b6fb3e
maint: Update AUTHORS.
...
* AUTHORS: Add 'Sergey Poznyakoff' and 'Mathieu Lirzin'.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
2cdd544a56
maint: Reformat copyright notices and copying permission statements.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
19d68f7dd6
build: Rename 'mcron.c' to 'wrapper.c'.
...
* src/mcron.c: Rename to ...
* src/wrapper.c: ... this.
* Makefile.am (mcron_SOURCES, cron_SOURCES, crontab_SOURCES): Adapt to it.
* configure.ac (AC_CONFIG_SRCDIR): Likewise.
2016-12-28 22:19:03 +01:00
Mathieu Lirzin
74babba80e
base: Rewrite 'run-job-loop'.
...
* src/mcron/base.scm (run-job-loop): Use #:optional keyword argument, and
'match'.
2016-12-28 22:19:02 +01:00
Mathieu Lirzin
913e3c65e4
job-specifier: Use #:optional keyword argument.
...
* src/mcron/job-specifier.scm (next-year, next-year-from, next-month)
(next-month-from, next-day, next-day-from, next-hour, next-hour-from)
(next-minute, next-minute-from, next-second, next-second-from): Use #:optional
keyword argument.
(maybe-args): Remove unneeded procedure.
2016-12-28 22:19:02 +01:00
Mathieu Lirzin
109555a9dd
job-specifier: Add %current-action-time parameter object.
...
* src/mcron/job-specifier.scm (current-action-time): Rename to ...
(%current-action-time): ... this. Make it a parameter object.
(job, maybe-args): Adapt.
2016-12-28 22:19:02 +01:00
Mathieu Lirzin
ea2058f14a
job-specifier: Rewrite 'bump-time'.
...
* src/mcron/job-specifier.scm (bump-time): Use 'match'.
2016-12-28 22:18:54 +01:00
Mathieu Lirzin
ae6deb8ea2
job-specifier: Use 'inf' thunk.
...
* src/mcron/job-specifier.scm (%find-best-next): Call 'inf' thunk
instead of defining an arbitrary high integer.
(bump-time): Adapt to it.
2016-12-01 00:15:56 +01:00
Mathieu Lirzin
245413041c
build: Define PACKAGE_LOAD_PATH in Makefile.
...
Previously PACKAGE_LOAD_PATH was set in config header which wasn't correctly
expanded due to the presence of ${prefix} in ${moduledir}. Let 'make' handle
the expansion.
* Makefile.am (AM_CPPFLAGS): New variable.
(cron_CPPFLAGS, crontab_CPPFLAGS, mcron_CPPFLAGS): Use it.
* configure.ac (PACKAGE_LOAD_PATH): Undefine it.
(AC_CONFIG_HEADER): Remove macro.
* src/mcron.c: Adapt to it.
2016-12-01 00:15:56 +01:00
Mathieu Lirzin
6a82b53ddd
build: Silence 'guild compile' output.
...
* Makefile.am (devnull_verbose, devnull_verbose_, devnull_verbose_0):
New variables
(.scm.go): Use $(devnull_verbose).
2016-12-01 00:15:56 +01:00
Mathieu Lirzin
10c9f31c6c
build: Use Automake warnings.
...
* configure.ac (AM_INIT_AUTOMAKE): Add more warnings.
* Makefile.am (AM_V_GUILEC, AM_V_GUILEC_, AM_V_GUILEC_0): Rename to ...
(guilec_verbose, guilec_verbose_, guilec_verbose_0): ... these. Make them
more portable. This follows an example from Automake manual.
2016-12-01 00:15:56 +01:00
Mathieu Lirzin
4a56db1609
doc: Generate a man page for every program.
...
* Makefile.am (dist_man_MANS): Add 'cron' and 'crontab' man page.
Generate man pages in $(srcdir).
(MAINTAINERCLEANFILES, gen_man): New variables.
(AM_V_HELP2MAN, AM_V_HELP2MAN_, AM_V_HELP2MAN_0): Delete unneeded variables.
($(srcdir)/doc/crontab.1, $(srcdir)/doc/cron.8): New targets.
(doc/mcron.1): Rename to ...
($(srcdir)/doc/mcron.1)): ... this.
2016-12-01 00:15:56 +01:00
Mathieu Lirzin
e9fde01d27
environment: modify-environment: Add tests.
...
* tests/environment.scm: New test.
* Makefile.am (TESTS): Add it.
2016-12-01 00:15:55 +01:00
Mathieu Lirzin
9d173e23bc
job-specifier: range: Add tests.
...
* build-aux/test-driver.scm: New script.
* configure.ac (AC_REQUIRE_AUX_FILE): Add it.
* tests/job-specifier.scm: New test.
* Makefile.am (TEST_EXTENSIONS, AM_TESTS_ENVIRONMENT, SCM_LOG_DRIVER)
(TESTS): New variables.
(EXTRA_DIST): Update.
* .gitignore: Likewise.
2016-12-01 00:15:55 +01:00
Mathieu Lirzin
c9064dde98
build: Fix prerequisite for mcron man page.
...
* Makefile.am (doc/mcron.1): Depend on the Guile script instead of the C
wrapper.
2016-12-01 00:15:55 +01:00
Mathieu Lirzin
c87c643ca1
all: Separate programs in different executables.
...
This improves readability and complies with the GNU Coding Standards by
making the behavior of the programs independent of the name used to
invoke them.
* src/mcron/scripts/cron.scm: New file.
* src/mcron/scripts/crontab.scm: Likewise.
* src/mcron/scripts/mcron.scm: Likewise.
* Makefile.am (dist_mcronmodule_DATA): Remove 'src/mcron/crontab.scm'.
(bin_PROGRAMS): Add 'crontab'.
(sbin_PROGRAMS): Add 'cron'.
(mcron_CFLAGS, mcron_LDADD): Rename to ...
(AM_CFLAGS, LDADD): ... these.
(cron_SOURCES, cron_CPPFLAGS, cron_DEPENDENCIES)
(crontab_SOURCES, crontab_CPPFLAGS, crontab_DEPENDENCIES)
(mcron_CPPFLAGS, mcronscriptdir, dist_mcronscript_DATA): New variables.
(modules): Redefine it in terms of other '_DATA' variables.
* src/mcron/crontab.scm: Remove file.
* src/mcron/main.scm (parse-args): New procedure.
(command-name, command-type, options): Remove.
(show-version): Adapt.
(show-help, process-files-in-system-directory, cron-file-descriptors)
(main, process-user-file, process-files-in-user-directory): Move
procedures in the new files.
* src/mcron.c (inner_main): Define the current module at compile time.
* TODO: Update.
* .gitignore: Likewise.
2016-12-01 00:15:43 +01:00
Mathieu Lirzin
73b2294650
build: Install 'config.scm' file.
...
* Makefile.am (mcronmodule_DATA): Add 'src/mcron/config.scm'.
(CLEANFILES): Don't clean it.
2016-11-14 17:10:01 +01:00
Mathieu Lirzin
31baff1a51
job-specifier: job: Add #:user keyword argument.
...
* src/mcron/job-specifier.scm (job): Add #:user keyword argument.
* doc/mcron.texi (Job specification): Document it.
2016-05-07 23:38:53 +02:00
Ludovic Courtès
45b062490a
base: run-jobs: Ensure that the child process always terminates.
...
* src/mcron/base.scm (run-jobs): Use 'dynamic-wind' instead of 'begin'.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
0d91ec1b97
build: Use lowercase names for local variables.
...
This helps distinguish variable names with a special Automake semantic.
* Makefile.am (MODULES): Rename to ...
(modules): ... this.
(mcronmodule_DATA, dist_mcronmodule_DATA): Adapt to it.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
bca16da451
build: Remove GOBJECTS and GEN_MODULES variables.
...
* Makefile.am (GOBJECTS, GEN_MODULES): Remove variables.
(mcronmodule_DATA, DISTCLEANFILES): Inline their contents.
(mcron_DEPENDENCIES, CLEANFILES): Use 'mcronmodule_DATA'.
2016-05-07 23:38:53 +02:00