Commit graph

40 commits

Author SHA1 Message Date
Mathieu Lirzin
d1fdb14a8a
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)'.
2018-03-17 16:37:42 +01:00
Mathieu Lirzin
2b9b54b729
tests: Add 'schedule.sh'
* tests/schedule.sh: New test.
* Makefile.am (TESTS): Add it.
* src/mcron/job-specifier.scm (configuration-time): Use
SOURCE_DATE_EPOCH for reproducible tests.
2018-03-16 21:41:52 +01:00
Mathieu Lirzin
319a1dbe4e
maint: Replace "README--git" with "HACKING"
* README--git: Delete.
* HACKING: New file documenting how to contribute to Mcron.
* Makefile.am (EXTRA_DIST): Distribute it.
2017-09-29 17:53:37 +02:00
Mathieu Lirzin
c285d36ab2
tests: Add 'basic.sh'
* 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.
2017-09-28 18:48:49 +02:00
Mathieu Lirzin
c01106387f
Replace generic C wrapper with individual programs
* 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.
2017-09-28 15:57:21 +02:00
Mathieu Lirzin
9b52c0d454
wrapper: Move 'wrap_env_path' to a new 'utils' module.
* 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'.
2017-09-28 15:50:58 +02:00
Mathieu Lirzin
245f1ae338
build: Replace "--enable-no-vixie-clobber" with "--disable-multi-user".
* 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.
2017-09-28 13:19:28 +02:00
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
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
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
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
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
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
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
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
Mathieu Lirzin
418b81e1af base: Rename (mcron core) module to (mcron base).
The 'configure' script deletes the 'core.*' files.  Having a file named
'base.scm' instead of 'core.scm' simplifies the build process without
changing the semantics.

* src/mcron/mcron-core.scm: Rename to ...
* src/mcron/base.scm: ... this.
All module users changed.
* Makefile.am (MODULES): Add 'src/mcron/base.scm'.
(CP): Remove variable.
(src/mcron/core.scm): Remove target.
(GEN_MODULES): Remove 'src/mcron/core.scm'.
(dist_mcronmodule_DATA): Remove 'src/mcron/mcron-core.scm'
* doc/mcron.texi: Adapt to name change.
* .gitignore: Update.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
995bc9ca6e all: Rename 'scm' directory to 'src'.
* scm/mcron/config.scm.in: Rename to ...
* src/mcron/config.scm.in: ... this.
* scm/mcron/crontab.scm: Rename to ...
* src/mcron/crontab.scm: ... this.
* scm/mcron/environment.scm: Rename to ...
* src/mcron/environment.scm: ... this.
* scm/mcron/job-specifier.scm: Rename to ...
* src/mcron/job-specifier.scm: ... this.
* scm/mcron/main.scm: Rename to ...
* src/mcron/main.scm: ... this.
* scm/mcron/mcron-core.scm: Rename to ...
* src/mcron/mcron-core.scm: ... this.
* scm/mcron/redirect.scm: Rename to ...
* src/mcron/redirect.scm: ... this.
* scm/mcron/vixie-specification.scm: Rename to ...
* src/mcron/vixie-specification.scm: ... this.
* scm/mcron/vixie-time.scm: Rename to ...
* src/mcron/vixie-time.scm: ... this.
* mcron.c: Rename to ...
* src/mcron.c: ... this.
* Makefile.am: Adapt to them.
* build-aux/pre-inst-env.in: Likewise.
* configure.ac (AC_CONFIG_FILES): Likewise.
(AC_CONFIG_HEADER): Set to 'src/config.h'.
* .gitignore: Update.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
bb8703b679 build: Do not auto-compile 'guild'.
* Makefile.am (.scm.go): Set GUILE_AUTO_COMPILE to 0.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
ce0d72ec83 build: Fix 'distcheck' target failures.
* Makefile.am (TEXI2DVI, DISTCLEANFILES, doc_mcron_TEXINFOS)
(nodist_doc_mcron_TEXINFOS): New variables.  This fixes the build of the
dvi/pdf documentation.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
8952d2dc44 build: Support VPATH builds.
This allows using 'mcron' before it is installed without hardcoding the
local build environment in the executable.

* build-aux/pre-inst-env.in: New script.
* configure.ac (AC_CONFIG_FILES): Create it.
(AC_CONFIG_HEADER): Add 'config.h'.
(moduledir): New variable.
(PACKAGE_LOAD_PATH): new C preprocessor macro.
* mcron.c: Include "config.h".
(main): Don't overwrite Guile load paths.
(inner_main): Prepend Mcron modules load paths.
* Makefile.am (.scm.go, doc/mcron.1): Use 'pre-inst-env'.
(mcron_CFLAGS): Remove GUILE_LOAD_PATH macro.
(noinst_SCRIPTS): New variable.
* .gitignore: Update.
2016-05-07 23:38:53 +02:00
Mathieu Lirzin
b59f2f5ea6 build: Use a non-recursive makefile.
* configure.ac (AM_INIT_AUTOMAKE): Use 'subdir-objects' option.
(AC_CONFIG_FILES): Remove 'scm/mcron/makefile' and 'makefile'.  Add
'Makefile'.
* makefile.am: Delete file.  Move its content into ...
* scm/mcron/makefile.am: Likewise.
* Makefile.am: ... this.  New file.
* .gitignore: Update.
2016-05-07 16:17:52 +02:00