| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I don't believe that anyone should be running system-wide cron processes these
days (the attack surface is rather large), but should use separate per-user or
per-service mcron daemon processes. But mcron is advertised as a drop-in
Vixie replacement, so we should do what we can to make it safe in this use
case.
I've performed a basic vetting of the changes against vandalism, but haven't
verified the correctness of the code or done any checking; the changes are
being accepted on the basis that almost anything is an improvement on what
currently exists.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The wrapper has two purposes:
1. Not being a script, thereby eliminating the issues with setuid scripts.
2. Purging the environment. crontab-access-real has no need for any
environment variables to do its work, so to prevent tampering with dynamic
linker, libc, or guile, we may as well just unset them all.
This wrapper does introduce a requirement for a C compiler. Ideally it would
be conditional based on whether the wrapper is even going to be built, but
autoconf doesn't like that one bit. Someone with more experience with
autotools should sort that out. In the meantime I guess anyone wanting to
build without a C compiler being present is going to have to edit configure.ac
and re-run bootstrap.
* src/crontab-access.in: renamed to src/crontab-access-real.in
* src/crontab-access.c.in: new file, wrapper for crontab-access-real.
* Makefile.am: inform about crontab-access.c.in and name change to
crontab-access-real. Put crontab-access-real in libexecdir.
|
| |
| |
| |
| |
| |
| | |
* src/mcron/config.scm.in: renamed to config.scm.in.in.
(config-sbin-dir): new variable.
* Makefile.am: substitute in config.scm.in.
|
|/
|
|
| |
* configure.ac: small alteration as described
|
|
|
|
|
|
|
|
|
|
| |
We have previously allowed versions 2.0 and 2.2 to get past the configure
stage, but all versions of guile before 3.0 have in fact failed to compile the
code due to syntax errors for some time now.
* build-aux/guix.scm: package depends on guile@3
* configure.ac: only look for guile version 3
* src/mcron/base.scm: drop allowance for old-fashioned (version 2.0) select
|
| |
|
| |
|
| |
|
|
|
|
| |
* configure.ac: Remove unecessary PKG_CHECK_MODULES invocation.
|
|
|
|
|
|
|
|
| |
This ensures that the absence of 'pkg-config' or 'guile' M4 macros
expansion do not pass the bootstrap step.
* configure.ac: Allow or forbid some M4 macros patterns in the generated
'configure' script.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch gets rid of the thin veneer that we currently have around the three
executables. This was done for historical reasons (circa 2003 Guile couldnʼt
deal with process signals and forks). In fact these problems were fixed many
moons ago, and there is now no need for it. The project becomes 100% Guile!
Many files are affected; interested coders should use the GIT repository to
understand the details of all the changes.
|
| |
|
|
|
|
| |
* configure.ac: Add "3.0" to 'GUILE_PKG'.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
* maint.mk: New maintainer-only Makefile fragment.
* Makefile.am: Include it.
* configure.ac: Substitute "maint.mk" content when it exists.
|
|
|
|
| |
* configure.ac: Check 'argp_parse' and 'asprintf' presence.
|
| |
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
| |
* 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'.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
* configure.ac: Remove "maintainer-mode" configure option.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
| |
* configure.ac: Use 'GUILE_PKG' and 'GUILE_PROGS'. Remove explicit Guile
version check and check for 'guild'. Honor $GUILE_EFFECTIVE_VERSION in
'moduledir'.
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
| |
* configure.ac (AC_CONFIG_SCRDIR): Set it to 'src/mcron.c'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
| |
* configure.ac (AM_SILENT_RULES): Use macro.
* makefile.am (doc/mcron.1): Use $(AM_V_HELP2MAN).
(AM_V_HELP2MAN, AM_V_HELP2MAN_, AM_V_HELP2MAN_): New variables.
* scm/mcron/makefile.am (.scm.go): Use $(AM_V_GUILEC).
(AM_V_GUILEC, AM_V_GUILEC_, AM_V_GUILEC_): New variables.
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Set and substitute 'mcronmoduledir'. Check for 'guild'
which requires Guile >= 2.0.7. Use 'AC_CANONICAL_HOST'.
* scm/mcron/makefile.am (.scm.go): New target.
(MODULES, GEN_MODULES, GOBJECTS, CLEANFILES, SUFFIXES)
(dist_mcronmodule_DATA, mcronmodule_DATA): New variables.
(pkgdata_DATA, EXTRA_DIST): Remove variables.
* .gitignore: Adjust accordingly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove 'ed' hack to eval content of scm/mcron/main.scm in the C wrapper.
Use proper libguile functions instead.
* scm/mcron/main.scm (mcron main): New module.
(show-version, show-package-information, show-help, main): Remove
extra newline characters in strings.
* mcron.c.template: Rename to ...
* mcron.c: ... this.
(inner_main): Set current module to (mcron main).
* makefile.ed: Delete file.
* configure.ac: Remove check for 'ed'.
* makefile.am: Adjust accordingly.
* .gitignore: Likewise.
|
|
|
|
|
| |
* configure.ac (AC_INIT): Fix package name and bug reports email
address.
|
|
|
|
|
| |
* configure.ac (AC_CONFIG_AUX_DIR): Set it to 'build-aux'.
* .gitignore: Adapt to it.
|
|
|
|
|
|
|
|
|
|
| |
* mcron.texinfo.in: Rename to ...
* doc/mcron.texi: ... this.
* doc/config.texi.in: New file.
* configure.ac: Adapt to it.
* makefile.am: Likewise.
* .gitignore: Likewise.
* README--git: Likewise.
|
| |
|
| |
|
| |
|