SummaryRefsLogTreeCommitDiffStats
Commit message (Collapse)AuthorAgeFilesLines
...
* 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.
* build: Check non-standard C functions at configure timeMathieu Lirzin2018-03-231-0/+6
| | | | * configure.ac: Check 'argp_parse' and 'asprintf' presence.
* job-specifier: Use 'simple-format'Mathieu Lirzin2018-03-231-4/+3
| | | | | * src/mcron/job-specifier.scm (job): Use 'simple-format' instead of 'with-output-to-string'.
* maint: Update copyright yearsMathieu Lirzin2018-03-203-3/+3
|
* utils: Use 'scandir' instead of custom 'for-each-file'Mathieu Lirzin2018-03-205-36/+26
| | | | | | | | | | | | * 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>
* tests: Set timezone in "schedule.sh"Mathieu Lirzin2018-03-201-21/+26
| | | | | | | | | | 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>
* maint: Update NEWSMathieu Lirzin2018-03-201-0/+5
| | | | * NEWS: Announce the availability of 'make installcheck'.
* build: Support 'make installcheck'Mathieu Lirzin2018-03-202-1/+17
| | | | | | | * 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.
* build: Properly set Guile load paths in programsMathieu Lirzin2018-03-202-2/+5
| | | | | | | | | | 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.
* build: Handle all programs names transformationsMathieu Lirzin2018-03-202-11/+4
| | | | | | | | | | | | 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'.
* build: Reverse '--disable-multi-user' effectMathieu Lirzin2018-03-192-1/+5
| | | | | | | | 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.
* maint: Remove obsolete configure checksMathieu Lirzin2018-03-191-18/+0
| | | | | | * 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.
* maint: Post-release administriviaMathieu Lirzin2018-03-192-1/+4
| | | | | * NEWS: Add header line for next release. * .prev-version: Record previous version.
* version 1.1v1.1Mathieu Lirzin2018-03-191-1/+1
| | | | * NEWS: Record release date.
* maint: Add ".prev-version"Mathieu Lirzin2018-03-181-0/+1
| | | | | | This file is used by the "build-aux/do-release-commit-and-tag" script. * .prev-version: New file
* maint: Include maintainer scripts from GnulibMathieu Lirzin2018-03-184-0/+1386
| | | | | | | * 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.
* build: Programs are not implicitly depending on librariesMathieu Lirzin2018-03-171-3/+3
| | | | | | | | 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)'.
* tests: Add 'schedule.sh'Mathieu Lirzin2018-03-163-1/+128
| | | | | | | * tests/schedule.sh: New test. * Makefile.am (TESTS): Add it. * src/mcron/job-specifier.scm (configuration-time): Use SOURCE_DATE_EPOCH for reproducible tests.
* base: Add 'display-schedule' procedureMathieu Lirzin2018-03-165-32/+32
| | | | | | | | | | | | | This procedure is a more generic and less coupled version of 'get-schedule' which has been kept for backward compatibility and deprecated. * src/mcron/base.scm (display-schedule): New procedure. (get-schedule): Move to ... * src/mcron/core.scm: ... here. * src/mcron/scripts/cron.scm (main): Use 'display-schedule'. * src/mcron/scripts/mcron.scm (main): Likewise. * doc/mcron.texi (The base module): Document it.
* crontab: Extract procedures from 'main'Mathieu Lirzin2018-03-161-35/+34
| | | | | * src/mcron/scripts/crontab.scm (in-access-file?) (hit-server): New procedures.
* maint: Remove old mailing-lists from READMEMathieu Lirzin2017-09-291-4/+1
| | | | * README: Remove non-existing mailing-lists.
* maint: Replace "README--git" with "HACKING"Mathieu Lirzin2017-09-293-20/+77
| | | | | | * README--git: Delete. * HACKING: New file documenting how to contribute to Mcron. * Makefile.am (EXTRA_DIST): Distribute it.
* maint: Add Ludovic Courtès to the authorsMathieu Lirzin2017-09-291-0/+1
| | | | * AUTHORS: Add Ludovic Courtès.
* maint: Update NEWSMathieu Lirzin2017-09-291-0/+45
| | | | * NEWS: Update with changes made since last release.
* maint: Rewrite old NEWSMathieu Lirzin2017-09-281-69/+52
| | | | * NEWS: Follow the format used by GNU Coreutils.
* tests: Add 'basic.sh'Mathieu Lirzin2017-09-285-1/+647
| | | | | | | | | | * tests/init.sh: New test framework from Gnulib. * tests/basic.sh: New test. * Makefile.am (TESTS): Add it. (TEST_EXTENSIONS): Add '.sh'. (SH_LOG_COMPILER): Use 'pre-inst-env'. (EXTRA_DIST): Add 'tests/init.sh'. * build-aux/pre-inst-env.in: export $srcdir for shell tests.
* doc: Use 'unless' formMathieu Lirzin2017-09-281-3/+3
| | | | | * doc/mcron.texi (Invoking cron or crond): Use 'unless' form and put "/etc/crontab" inside a @code command.
* utils: Add 'assq_symbol_set_x' functionMathieu Lirzin2017-09-285-16/+18
| | | | | * src/utils.c (assq_symbol_set_x): New function. * src/mcron.c (parse_opt): Use it.
* mcron: Handle command line arguments in C with argpMathieu Lirzin2017-09-282-61/+108
| | | | | | | | | | | 'argp' is a convenient and maintainable way to parse command line arguments. Guile doesn't offer an equivalent of this, so the command line handling has been moved to C. * src/mcron.c (parse_args, parse_opt): New functions. (inner_main): Call 'parse_args'. * src/mcron/scripts/mcron.scm (show-help, %options): Delete. (main): Remove command line handling.
* Replace generic C wrapper with individual programsMathieu Lirzin2017-09-285-28/+113
| | | | | | | | | | | * src/wrapper.c: Delete. * src/crontab.c: New file. * src/mcron.c: Likewise. * src/cron.c: Likewise. * configure.ac: Adapt 'AC_CONFIG_DIR' to use "src/mcron.c". * Makefile.am (bin_crontab_SOURCES, bin_cron_SOURCES) (bin_mcron_SOURCES): Use new files. (bin_cron_CPPFLAGS, bin_mcron_CPPFLAGS, bin_crontab_CPPFLAGS): Delete.
* wrapper: Move 'wrap_env_path' to a new 'utils' module.Mathieu Lirzin2017-09-286-26/+83
| | | | | | | | | * src/wrapper.c: Move 'wrap_env_path' to ... * src/utils.h: ... here. New module. * src/utils.c: New file. * configure.ac: Use AC_PROG_RANLIB and AM_PROG_AR. * Makefile.am (noinst_LIBRARIES, src_libmcron_a_SOURCES): New variables. (LDADD): Add 'src/libmcron.a'.
* build: Remove "--enable-debug" configure optionMathieu Lirzin2017-09-282-15/+8
| | | | | | | | | | | Unlike C code where debugging impose the "-g" compilation flags. This debugging option only affects Guile code, so using an environment variable works better since it doesn't impose to recompile Mcron or to edit "config.scm". * configure.ac: Remove "--enable-debug" configure option. * src/mcron/config.scm.in (config-debug): Use MCRON_DEBUG environment variable to trigger the debug mode at runtime.
* build: Remove "maintainer-mode" configure option.Mathieu Lirzin2017-09-281-4/+0
| | | | * configure.ac: Remove "maintainer-mode" configure option.
* build: Replace "--enable-no-vixie-clobber" with "--disable-multi-user".Mathieu Lirzin2017-09-282-35/+27
| | | | | | | | | | | | | | | | * configure.ac: Define "--disable-multi-user" option instead of "--enable-no-vixie-clobber". * Makefile.am (install-exec-hook) [MULTI_USER]: Only set crontab setuid bit. (bin_PROGRAMS): Keep only 'mcron' by default. (bin_PROGRAMS) [MULTI_USER]: Add 'crontab' (sbin_PROGRAMS) [MULTI_USER]: Add 'cron'. (noinst_PROGRAMS) [!MULTI_USER]: Add 'cron' and 'crontab'. (dist_man_MANS): Move 'crontab.1' and 'cron.8' ... (extra_mans): here. New variable. (dist_man_MANS) [MULTI_USER]: Add it. (all-local) [!MULTI_USER]: New target. Depend on it. (EXTRA_DIST) [!MULTI_USER]: Distribute it. (MAINTAINERCLEANFILES): Clean it.
* build: Separate "Makefile.am" into more sections.Mathieu Lirzin2017-09-281-28/+50
| | | | | * Makefile.am: Add "Installation", "Distribution", "Test suite", "Programs", and "Guile modules" sections.
* build: Add 'bootstrap' script.Mathieu Lirzin2017-09-282-0/+6
| | | | | * bootstrap: New file. * Makefile.am (EXTRA_DIST): Add it.
* Add (mcron core) module.Mathieu Lirzin2017-09-282-0/+35
| | | | | This module is an alias for (mcron base) module. This modules is added to keep backward compatibility with Mcron 1.x.
* base: Add 'run-job' procedure.Mathieu Lirzin2017-09-281-31/+20
| | | | | | * src/mcron/base.scm (run-jobs): Delete. (run-job): New procedure. (run-job-loop): Use it.
* job-specifier: Remove dependency on SRFI-26.Mathieu Lirzin2017-09-281-3/+6
| | | | | * src/mcron/job-specifier.scm (range): Use plain lambda instead of 'cut' and 'cute'.
* build: Install '.go' files under LIBDIR.Mathieu Lirzin2017-09-281-14/+15
| | | | | | | | | | | * 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.
* build: Don't generate '.version' file.Mathieu Lirzin2017-09-282-6/+0
| | | | | | | * Makefile.am (.version): Remove target which has no use. (EXTRA_DIST): Adapt. (BUILT_SOURCES): Delete. * .gitignore: Update.
* build: Rename variables for Guile install directories.Mathieu Lirzin2017-09-282-14/+13
| | | | | | | | | | * 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.
* build: Support Guile 2.2.Mathieu Lirzin2017-09-281-11/+14
| | | | | | * configure.ac: Use 'GUILE_PKG' and 'GUILE_PROGS'. Remove explicit Guile version check and check for 'guild'. Honor $GUILE_EFFECTIVE_VERSION in 'moduledir'.
* build: Define PACKAGE_LOAD_COMPILED_PATH macro.Mathieu Lirzin2017-09-272-2/+6
| | | | | * Makefile.am (AM_CPPFLAGS): Define PACKAGE_LOAD_COMPILED_PATH macro. * src/wrapper.c (main): Use it.
* wrapper: Avoid 'scm_c_eval_string' usage.Mathieu Lirzin2017-09-272-13/+41
| | | | | | | | * 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'.
* Merge branch 'devel'Mathieu Lirzin2017-09-2742-2094/+3629
|\
| * build: Use portable substitution references.Mathieu Lirzin2016-12-281-6/+6
| | | | | | | | | | | | * Makefile.am (bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES) (bin_crontab_DEPENDENCIES, mcronmodule_DATA, mcronscript_DATA) (CLEANFILES): Use portable substitution references.
| * build: Add "build-aux/guix.scm".Mathieu Lirzin2016-12-282-0/+67
| | | | | | | | | | * build-aux/guix.scm: New file. * Makefile.am (EXTRA_DIST): Add it.
| * build: Move executable to "bin" directory.Mathieu Lirzin2016-12-283-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.