From 9eb71df9d6dd2f568ac37cd09fc58cfb7b490528 Mon Sep 17 00:00:00 2001 From: Lance Lin Date: Tue, 25 Feb 2025 20:43:16 +0700 Subject: [PATCH] Import Debian changes 1.7.2-4 cronie (1.7.2-4) unstable; urgency=medium . * d/patches: Fix FTBFS with GCC-15 . cronie (1.7.2-3) unstable; urgency=medium . * Move to unstable . cronie (1.7.2-2) experimental; urgency=medium . * Move aliased files from / to /usr (Closes: #1073727) . cronie (1.7.2-1) unstable; urgency=medium . * New upstream version * Standards-Version: 4.7.0 (routine-update) * Remove trailing whitespace in debian/copyright (routine-update) * Refresh patches . cronie (1.7.1-1) unstable; urgency=medium . * New upstream release. * Refresh cronie-service-debianization.patch . cronie (1.7.0-2) unstable; urgency=medium . * d/patches: Update Manpage-and-typo-fixes.patch . cronie (1.7.0-1) unstable; urgency=medium . * New upstream release. * Refresh patches. . cronie (1.6.1-9) unstable; urgency=medium . * d/control: Drop dependency on adduser (Closes: #1051839) * d/cronie.postinst: Trim duplicated code that is in cron-daemon-common * d/etc: Remove files installed with cron-daemon-common . cronie (1.6.1-8) unstable; urgency=medium . * reorganized debian/control like the same file in cron package. Closes: #1046898 . cronie (1.6.1-7) unstable; urgency=medium . * Move to unstable (Closes: #1043361) * d/watch: Update to grab correct source file * d/copyright: Update year to 2023 for debian files * d/control: Update standards version to 4.6.2 and update maintainer email * d/upstream/metadata: Add upstream metadata . cronie (1.6.1-6) experimental; urgency=medium . [lq27267@gmail.com] * Fix watch file to grab most recent upstream release . [georgesk@debian.org] * replaced the dependency on lsb-base by a dependency on sysvinit-utils, and removed the versioned mention about the dependency on libpam-runtime . cronie (1.6.1-5) experimental; urgency=medium . * cronie pre-depends now on cron-daemon-common, and does no longer install conflicting files. Closes: #1023325 . cronie (1.6.1-4) experimental; urgency=medium . * fixed the watch file . cronie (1.6.1-3) experimental; urgency=medium . * reverted previous changes, as I did not notice the closed ITA bug #974038, came back to contents authored by Lin Lance. . cronie (1.6.1-2) experimental; urgency=medium . * refreshed debian patches, which were targetted to version 1.5.5 . cronie (1.6.1-1) experimental; urgency=medium . * New upstream version (1.6.1) * Refreshed patches * d/control: New maintainer (Closes: #974038) * d/control: Updated standards (4.6.0), dh-compat (13) . cronie (1.5.5-3) experimental; urgency=medium . * Add Hurd-workaround-for-PATH_MAX.patch (Closes: #638048) * Fix spelling error in previous changelog entry . cronie (1.5.5-2) experimental; urgency=medium . * Don't build /usr/sbin/anacron /usr/sbin/anacron is still provided by src:anacron. Thanks, Andreas Beckmann, for catching this! (Closes: #944024) . cronie (1.5.5-1) experimental; urgency=medium . * New upstream version 1.5.5 * Drop patches (included upstream): - crond-report-missing-newline-before-EOF.patch - crontab-Add-Y-N-to-retry-prompt.patch - crontab-fsync-to-check-for-full-disk.patch - crontab.1-Various-fixes-and-improvements.patch - entries-Explicitly-validate-upper-ranges-and-steps.patch * Refresh patches - debian/patches/Manpage-and-typo-fixes.patch - debian/patches/Rename-PAM-service-to-cronie.patch + Split out Unbundle-upstream-PAM-config.patch from this one . cronie (1.5.4-final-2) experimental; urgency=medium . * build: Set default EDITOR to /usr/bin/sensible-editor * d/patches (added): - crond-report-missing-newline-before-EOF.patch - entries-Explicitly-validate-upper-ranges-and-steps.patch - crontab.1-Various-fixes-and-improvements.patch - crontab-Add-Y-N-to-retry-prompt.patch - crontab-fsync-to-check-for-full-disk.patch . cronie (1.5.4-final-1) experimental; urgency=medium . * New upstream release. (Closes: #697811, #783856) . [ Andreas Henriksson ] * debian/watch: update for cronie move to github * Modify patches to apply against new upstream release * Add debian/gbp.conf * Adjust and ship the cronie.service file * Use debian/clean to remove src/cron-paths.h * Fix lintian warning about not using default-mta * Fix typo in patch tagging meta-header . [ Christian Kastner ] * d/control: - Switch Build-Depends from debhelper to debhelper-compat - Bump debhelper compatibility level to 12 - Bump Standards-Version to 4.4.1 (no changes needed) - Remove now obsolete d/compat file - Set Rules-Requires-Root: no We don't need (fake)root for building the package. - Point Homepage to GitHub - Set Vcs-* URLs for Salsa - Mark package cronie as Multi-Arch: foreign - Add Pre-Depends: ${misc:Pre-Depends} to binary package As recommended by lintian's skip-systemd-native-flag-missing-pre-depends * d/cronie.default: Add new daemon flag "-P" * d/rules: - Add hardening flags - Stop passing actions to dh_installinit This has been obsoleted by dependency-based booting in Wheezy, see https://lists.debian.org/debian-devel/2013/05/msg01109.html - Use DEB_HOST_ARCH_OS from /usr/share/dpkg/architecture.mk - Proper passing of CFLAGS through DEB_CFLAGS_MAINT_APPEND * d/copyright: - Fix syntax errors - Switch URL to official policy URL - Point Source to GitHub fedorahosted.org has been retired - Bump copyrights * d/clean: Remove generated files for (non-enabled) anacron build * Sync maintscripts with src:cron . cronie (1.4.8-1~exp1) experimental; urgency=low . * Initial release (Closes: #590876) * debian/patches added: - 0001-Unbundle-anacron - 0002-Manpage-and-typo-fixes - 0003-Rename-PAM-service-to-cronie - 0004-Debian-specific-paths-and-features - 0005-Extend-support-for-kFreeBSD-and-GNU-HURD --- debian/README.Debian | 16 ++ debian/changelog | 216 ++++++++++++++++++ debian/clean | 2 + debian/control | 53 +++++ debian/copyright | 136 +++++++++++ debian/cronie.default | 13 ++ debian/cronie.dirs | 6 + debian/cronie.init | 87 +++++++ debian/cronie.lintian-overrides | 2 + debian/cronie.pam | 21 ++ debian/cronie.postinst | 19 ++ debian/cronie.postrm | 11 + debian/cronie.prerm | 6 + debian/docs | 2 + debian/etc/cronie.deny | 0 debian/gbp.conf | 10 + .../Debian-specific-paths-and-features.patch | 75 ++++++ ...nd-support-for-kFreeBSD-and-GNU-HURD.patch | 36 +++ .../Hurd-workaround-for-PATH_MAX.patch | 27 +++ debian/patches/Manpage-and-typo-fixes.patch | 151 ++++++++++++ .../Rename-PAM-service-to-cronie.patch | 24 ++ debian/patches/Unbundle-anacron.patch | 40 ++++ .../Unbundle-upstream-PAM-config.patch | 27 +++ .../cronie-service-debianization.patch | 27 +++ debian/patches/fix-ftbfs-gcc-15.patch | 187 +++++++++++++++ debian/patches/series | 9 + debian/rules | 76 ++++++ debian/source/format | 1 + debian/upstream/metadata | 5 + debian/watch | 5 + 30 files changed, 1290 insertions(+) create mode 100644 debian/README.Debian create mode 100644 debian/changelog create mode 100644 debian/clean create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/cronie.default create mode 100644 debian/cronie.dirs create mode 100644 debian/cronie.init create mode 100644 debian/cronie.lintian-overrides create mode 100644 debian/cronie.pam create mode 100644 debian/cronie.postinst create mode 100644 debian/cronie.postrm create mode 100644 debian/cronie.prerm create mode 100644 debian/docs create mode 100644 debian/etc/cronie.deny create mode 100644 debian/gbp.conf create mode 100644 debian/patches/Debian-specific-paths-and-features.patch create mode 100644 debian/patches/Extend-support-for-kFreeBSD-and-GNU-HURD.patch create mode 100644 debian/patches/Hurd-workaround-for-PATH_MAX.patch create mode 100644 debian/patches/Manpage-and-typo-fixes.patch create mode 100644 debian/patches/Rename-PAM-service-to-cronie.patch create mode 100644 debian/patches/Unbundle-anacron.patch create mode 100644 debian/patches/Unbundle-upstream-PAM-config.patch create mode 100644 debian/patches/cronie-service-debianization.patch create mode 100644 debian/patches/fix-ftbfs-gcc-15.patch create mode 100644 debian/patches/series create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/upstream/metadata create mode 100644 debian/watch diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..3f224e3 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,16 @@ +cronie for Debian +----------------- + +This version of cronie has been patched and configured to be as compatible as +possible to Debian's standard job scheduler, ISC cron. You should be able to +switch between these implementations without experiencing any major negative +side effects to your system. + +Feature-wise, however, there still are quite a number of subtle and +not-so-subtle differences (mostly because of how much Debian's version of ISC +cron is patched), so be sure to read the manpages. + +cronie installs a file /etc/cron.deny (empty), thereby enabling all users to +use the crontab(1) command by default. + + -- Christian Kastner Sun, 20 Mar 2011 01:27:55 +0100 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..678a6d7 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,216 @@ +cronie (1.7.2-4) unstable; urgency=medium + + * d/patches: Fix FTBFS with GCC-15 + + -- Lance Lin Tue, 25 Feb 2025 20:43:16 +0700 + +cronie (1.7.2-3) unstable; urgency=medium + + * Move to unstable + + -- Lance Lin Mon, 08 Jul 2024 22:21:08 +0700 + +cronie (1.7.2-2) experimental; urgency=medium + + * Move aliased files from / to /usr (Closes: #1073727) + + -- Lance Lin Mon, 01 Jul 2024 20:41:18 +0700 + +cronie (1.7.2-1) unstable; urgency=medium + + * New upstream version + * Standards-Version: 4.7.0 (routine-update) + * Remove trailing whitespace in debian/copyright (routine-update) + * Refresh patches + + -- Lance Lin Wed, 24 Apr 2024 19:57:47 +0700 + +cronie (1.7.1-1) unstable; urgency=medium + + * New upstream release. + * Refresh cronie-service-debianization.patch + + -- Lance Lin Mon, 15 Jan 2024 21:59:46 +0700 + +cronie (1.7.0-2) unstable; urgency=medium + + * d/patches: Update Manpage-and-typo-fixes.patch + + -- Lance Lin Tue, 21 Nov 2023 20:00:34 +0700 + +cronie (1.7.0-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + + -- Lance Lin Thu, 19 Oct 2023 19:19:58 +0700 + +cronie (1.6.1-9) unstable; urgency=medium + + * d/control: Drop dependency on adduser (Closes: #1051839) + * d/cronie.postinst: Trim duplicated code that is in cron-daemon-common + * d/etc: Remove files installed with cron-daemon-common + + -- Lance Lin Wed, 13 Sep 2023 20:33:14 +0700 + +cronie (1.6.1-8) unstable; urgency=medium + + * reorganized debian/control like the same file in cron package. + Closes: #1046898 + -- Georges Khaznadar Wed, 16 Aug 2023 09:11:52 +0200 + +cronie (1.6.1-7) unstable; urgency=medium + + * Move to unstable (Closes: #1043361) + * d/watch: Update to grab correct source file + * d/copyright: Update year to 2023 for debian files + * d/control: Update standards version to 4.6.2 and update maintainer email + * d/upstream/metadata: Add upstream metadata + + -- Lance Lin Mon, 07 Aug 2023 22:49:27 +0700 + +cronie (1.6.1-6) experimental; urgency=medium + + [lq27267@gmail.com] + * Fix watch file to grab most recent upstream release + + [georgesk@debian.org] + * replaced the dependency on lsb-base by a dependency on sysvinit-utils, + and removed the versioned mention about the dependency on libpam-runtime + + -- Georges Khaznadar Sun, 06 Aug 2023 21:43:34 +0200 + +cronie (1.6.1-5) experimental; urgency=medium + + * cronie pre-depends now on cron-daemon-common, and does no longer install + conflicting files. Closes: #1023325 + + -- Georges Khaznadar Sun, 13 Nov 2022 17:09:31 +0100 + +cronie (1.6.1-4) experimental; urgency=medium + + * fixed the watch file + + -- Georges Khaznadar Tue, 01 Nov 2022 21:53:41 +0100 + +cronie (1.6.1-3) experimental; urgency=medium + + * reverted previous changes, as I did not notice the closed ITA bug + #974038, came back to contents authored by Lin Lance. + + -- Georges Khaznadar Thu, 12 May 2022 10:35:36 +0200 + +cronie (1.6.1-2) experimental; urgency=medium + + * refreshed debian patches, which were targetted to version 1.5.5 + + -- Georges Khaznadar Tue, 10 May 2022 17:56:24 +0200 + +cronie (1.6.1-1) experimental; urgency=medium + + * New upstream version (1.6.1) + * Refreshed patches + * d/control: New maintainer (Closes: #974038) + * d/control: Updated standards (4.6.0), dh-compat (13) + + -- Lance Lin Tue, 03 May 2022 21:21:59 +0700 + +cronie (1.5.5-3) experimental; urgency=medium + + * Add Hurd-workaround-for-PATH_MAX.patch (Closes: #638048) + * Fix spelling error in previous changelog entry + + -- Christian Kastner Tue, 05 Nov 2019 08:04:37 +0100 + +cronie (1.5.5-2) experimental; urgency=medium + + * Don't build /usr/sbin/anacron + /usr/sbin/anacron is still provided by src:anacron. + Thanks, Andreas Beckmann, for catching this! (Closes: #944024) + + -- Christian Kastner Sun, 03 Nov 2019 11:12:33 +0100 + +cronie (1.5.5-1) experimental; urgency=medium + + * New upstream version 1.5.5 + * Drop patches (included upstream): + - crond-report-missing-newline-before-EOF.patch + - crontab-Add-Y-N-to-retry-prompt.patch + - crontab-fsync-to-check-for-full-disk.patch + - crontab.1-Various-fixes-and-improvements.patch + - entries-Explicitly-validate-upper-ranges-and-steps.patch + * Refresh patches + - debian/patches/Manpage-and-typo-fixes.patch + - debian/patches/Rename-PAM-service-to-cronie.patch + + Split out Unbundle-upstream-PAM-config.patch from this one + + -- Christian Kastner Thu, 31 Oct 2019 22:20:05 +0100 + +cronie (1.5.4-final-2) experimental; urgency=medium + + * build: Set default EDITOR to /usr/bin/sensible-editor + * d/patches (added): + - crond-report-missing-newline-before-EOF.patch + - entries-Explicitly-validate-upper-ranges-and-steps.patch + - crontab.1-Various-fixes-and-improvements.patch + - crontab-Add-Y-N-to-retry-prompt.patch + - crontab-fsync-to-check-for-full-disk.patch + + -- Christian Kastner Wed, 30 Oct 2019 21:12:01 +0100 + +cronie (1.5.4-final-1) experimental; urgency=medium + + * New upstream release. (Closes: #697811, #783856) + + [ Andreas Henriksson ] + * debian/watch: update for cronie move to github + * Modify patches to apply against new upstream release + * Add debian/gbp.conf + * Adjust and ship the cronie.service file + * Use debian/clean to remove src/cron-paths.h + * Fix lintian warning about not using default-mta + * Fix typo in patch tagging meta-header + + [ Christian Kastner ] + * d/control: + - Switch Build-Depends from debhelper to debhelper-compat + - Bump debhelper compatibility level to 12 + - Bump Standards-Version to 4.4.1 (no changes needed) + - Remove now obsolete d/compat file + - Set Rules-Requires-Root: no + We don't need (fake)root for building the package. + - Point Homepage to GitHub + - Set Vcs-* URLs for Salsa + - Mark package cronie as Multi-Arch: foreign + - Add Pre-Depends: ${misc:Pre-Depends} to binary package + As recommended by lintian's skip-systemd-native-flag-missing-pre-depends + * d/cronie.default: Add new daemon flag "-P" + * d/rules: + - Add hardening flags + - Stop passing actions to dh_installinit + This has been obsoleted by dependency-based booting in Wheezy, see + https://lists.debian.org/debian-devel/2013/05/msg01109.html + - Use DEB_HOST_ARCH_OS from /usr/share/dpkg/architecture.mk + - Proper passing of CFLAGS through DEB_CFLAGS_MAINT_APPEND + * d/copyright: + - Fix syntax errors + - Switch URL to official policy URL + - Point Source to GitHub + fedorahosted.org has been retired + - Bump copyrights + * d/clean: Remove generated files for (non-enabled) anacron build + * Sync maintscripts with src:cron + + -- Christian Kastner Mon, 28 Oct 2019 19:35:38 +0100 + +cronie (1.4.8-1~exp1) experimental; urgency=low + + * Initial release (Closes: #590876) + * debian/patches added: + - 0001-Unbundle-anacron + - 0002-Manpage-and-typo-fixes + - 0003-Rename-PAM-service-to-cronie + - 0004-Debian-specific-paths-and-features + - 0005-Extend-support-for-kFreeBSD-and-GNU-HURD + + -- Christian Kastner Tue, 26 Jul 2011 14:00:34 +0200 diff --git a/debian/clean b/debian/clean new file mode 100644 index 0000000..614976d --- /dev/null +++ b/debian/clean @@ -0,0 +1,2 @@ +src/cron-paths.h +anacron/anacron-paths.h diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..3921071 --- /dev/null +++ b/debian/control @@ -0,0 +1,53 @@ +Source: cronie +Section: admin +Priority: optional +Maintainer: Lance Lin +Uploaders: Georges Khaznadar +Build-Depends: + debhelper-compat (= 13), + libpam0g-dev, + libselinux1-dev [linux-any], + libaudit-dev [linux-any] +Rules-Requires-Root: no +Standards-Version: 4.7.0 +Homepage: https://github.com/cronie-crond/cronie +Vcs-Git: https://salsa.debian.org/debian/cronie.git +Vcs-Browser: https://salsa.debian.org/debian/cronie + +Package: cronie +Architecture: any +Multi-Arch: foreign +Pre-Depends: + ${misc:Pre-Depends}, + cron-daemon-common +Depends: + ${shlibs:Depends}, + ${misc:Depends}, + sysvinit-utils (>=3.07-1~), + libpam-runtime, + sensible-utils +Recommends: + default-mta | mail-transport-agent +Suggests: + anacron, + logrotate, + checksecurity +Conflicts: + cron, + systemd-cron, + bcron +Replaces: + cron, + systemd-cron, + bcron +Provides: cron-daemon +Description: Process Scheduling Daemon + cronie is a daemon that runs specified programs at scheduled times and + optionally mails generated output to the user. It is a fork of the original + ISC cron and contains many improvements, such as: + * inotify support (Linux only) + * clustering support + * full PAM support + . + cronie is fully compatible with ISC cron (Debian's standard job scheduler), + and can be used as a drop-in replacement for it. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..3e35825 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,136 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cronie +Upstream-Contact: Marcela Mašláňová +Source: https://github.com/cronie-crond/cronie + +Files: * +Copyright: 1988,1989,1990,1993,1994, The Regents of the University of California + 1997,2000, Internet Software Consortium, Inc. + 2004, Internet Systems Consortium, Inc. ("ISC") + 1997-2019, Red Hat, Inc. + 2000,2002, Todd C. Miller + 2010, Colin Dean +License: ISC + +Files: src/popen.c +Copyright: 1989,1993,1994,2005, The Regents of the University of California +License: BSD-2-clause + +Files: src/bitstring.h +Copyright: 1989,1993,2003, The Regents of the University of California +License: BSD-3-clause + +Files: anacron/* +Copyright: 1998, Itai Tzur + 1999, Sean 'Shaleh' Perry + 2004, Pascal Hakim + 2009-2019, Red Hat, Inc. +License: GPL-2+ + +Files: debian/* +Copyright: 2010-2019, Christian Kastner + 2018, Andreas Henriksson + 2023, Lance Lin +License: GPL-3+ + +Files: debian/patches/* +Copyright: 2019, Christian Kastner +License: ISC + +License: ISC + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + . + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + "/usr/share/common-licenses/GPL-2". + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the full text of the GNU General Public + License version 3 can be found in the file + "/usr/share/common-licenses/GPL-3". + diff --git a/debian/cronie.default b/debian/cronie.default new file mode 100644 index 0000000..4e6c954 --- /dev/null +++ b/debian/cronie.default @@ -0,0 +1,13 @@ +# Defaults for cronie initscript +# This is a POSIX shell fragment + +# Some additional options for the daemon +# See cron(8) for all options and a detailed explanation of these +# +# -m shell command to use for sending mail instead of sendmail(8) +# -p lift some restrictions on user crontabs (owner, mode, type) +# -P Don't set PATH; instead, inherit it from the environment +# -c enable clustering support +# -s send job output to syslog instead of mail +# +DAEMON_ARGS="" diff --git a/debian/cronie.dirs b/debian/cronie.dirs new file mode 100644 index 0000000..fbee0e7 --- /dev/null +++ b/debian/cronie.dirs @@ -0,0 +1,6 @@ +etc/cron.d +etc/cron.hourly +etc/cron.daily +etc/cron.weekly +etc/cron.monthly +var/spool/cron/crontabs diff --git a/debian/cronie.init b/debian/cronie.init new file mode 100644 index 0000000..70d48f8 --- /dev/null +++ b/debian/cronie.init @@ -0,0 +1,87 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: cronie +# Required-Start: $remote_fs $syslog $time +# Required-Stop: $remote_fs $syslog $time +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: time-based job scheduler +# Description: cronie is a daemon that runs specified programs at +# scheduled times and optionally mails generated output +# to the user. +### END INIT INFO + +# Author: Christian Kastner + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="time-based job scheduler" +NAME=cronie +DAEMON_NAME=crond +DAEMON=/usr/sbin/$DAEMON_NAME +DAEMON_ARGS="" +PIDFILE=/var/run/$DAEMON_NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x $DAEMON ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /usr/lib/init/vars.sh + +# Define LSB log_* functions. +. /usr/lib/lsb/init-functions + +do_start() +{ + start_daemon -p $PIDFILE $DAEMON $DAEMON_ARGS +} + +do_stop() +{ + killproc -p $PIDFILE $DAEMON +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 || exit 0 ;; + 2|3) [ "$VERBOSE" != no ] && log_end_msg 1 || exit 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|3) [ "$VERBOSE" != no ] && log_end_msg 0 || exit 0 ;; + *) [ "$VERBOSE" != no ] && log_end_msg 1 || exit 1 ;; + esac + ;; + status) + status_of_proc -p $PIDFILE "$DAEMON" "$DAEMON_NAME" && exit 0 || exit $? + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + if [ $? -eq 0 ] + then + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + else + # Failed to stop + log_end_msg 1 + fi + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac diff --git a/debian/cronie.lintian-overrides b/debian/cronie.lintian-overrides new file mode 100644 index 0000000..eb09c27 --- /dev/null +++ b/debian/cronie.lintian-overrides @@ -0,0 +1,2 @@ +# init-functions are sourced in /usr/lib instead of /lib +cronie: init.d-script-does-not-source-init-functions [etc/init.d/cronie] diff --git a/debian/cronie.pam b/debian/cronie.pam new file mode 100644 index 0000000..5bdf04a --- /dev/null +++ b/debian/cronie.pam @@ -0,0 +1,21 @@ +# The PAM configuration file for cronie (cron daemon) + +# Access control using /etc/security/access.conf +account required pam_access.so + +# Set the loginuid process attribute +session required pam_loginuid.so + +# Read environment variables from pam_env's default files, /etc/environment +# and /etc/security/pam_env.conf. +session required pam_env.so + +# In addition to the above, read system locale information +session required pam_env.so envfile=/etc/default/locale + +# Sets up user limits +session required pam_limits.so + +@include common-account +@include common-session-noninteractive +@include common-auth diff --git a/debian/cronie.postinst b/debian/cronie.postinst new file mode 100644 index 0000000..c8679da --- /dev/null +++ b/debian/cronie.postinst @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +# Analogous to Debian's ISC cron postinst script (for compatibility reasons) +action="$1" + +if [ "$action" != configure ] +then + exit 0 +fi + +# Make crontab(1) SGID +if ! dpkg-statoverride --list /usr/bin/crontab > /dev/null +then + dpkg-statoverride --update --add root crontab 2755 /usr/bin/crontab +fi + +#DEBHELPER# + diff --git a/debian/cronie.postrm b/debian/cronie.postrm new file mode 100644 index 0000000..9526225 --- /dev/null +++ b/debian/cronie.postrm @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +if [ "$1" = "purge" ] +then + rm -f /etc/cron.allow /etc/cron.deny +fi + +#DEBHELPER# + +exit 0 diff --git a/debian/cronie.prerm b/debian/cronie.prerm new file mode 100644 index 0000000..b520138 --- /dev/null +++ b/debian/cronie.prerm @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +#DEBHELPER# + +exit 0 diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..50bd824 --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +NEWS +README diff --git a/debian/etc/cronie.deny b/debian/etc/cronie.deny new file mode 100644 index 0000000..e69de29 diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..0ad7f02 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,10 @@ +[DEFAULT] +pristine-tar = True +debian-branch = debian/master +upstream-branch = upstream/latest + +[buildpackage] +sign-tags = True + +[pq] +patch-numbers = False diff --git a/debian/patches/Debian-specific-paths-and-features.patch b/debian/patches/Debian-specific-paths-and-features.patch new file mode 100644 index 0000000..1f88ce4 --- /dev/null +++ b/debian/patches/Debian-specific-paths-and-features.patch @@ -0,0 +1,75 @@ +From: Christian Kastner +Date: Thu, 28 Jul 2011 11:15:01 +0200 +Subject: Debian-specific paths and features + +Use Debian-specific paths and features. For example, the spool dir differs from +upstream, and we always build to use syslog. + +Forwarded: not-needed +Last-Update: 2011-07-28 +--- + man/cron.8 | 15 ++------------- + man/crontab.1 | 2 +- + man/crontab.5 | 2 +- + 3 files changed, 4 insertions(+), 15 deletions(-) + +--- a/man/cron.8 ++++ b/man/cron.8 +@@ -41,7 +41,7 @@ + .PP + .I Cron + searches +-.I /var/spool/cron ++.I /var/spool/cron/crontabs + for crontab files which are named after user accounts; + together with the system crontab + .IR /etc/crontab , +@@ -88,7 +88,7 @@ + .IR /etc/cron.d/ + directory that contains system cronjobs stored for different users. + .TP +-.IR /var/spool/cron ++.IR /var/spool/cron/crontabs + directory that contains user crontables created by the + .BR crontab (1) + command. +@@ -181,17 +181,6 @@ + .TP + .B "\-V" + Print version and exit. +-.SH SIGNALS +-When the +-.I SIGHUP +-is received, the +-.I Cron +-daemon will close and reopen its log file. This proves to be useful in +-scripts which rotate and age log files. Naturally, this is not relevant +-if +-.I Cron +-was built to use +-.IR syslog (3). + .SH CLUSTERING SUPPORT + In this version of + .IR Cron +--- a/man/crontab.1 ++++ b/man/crontab.1 +@@ -68,7 +68,7 @@ + In this version of + .IR Cron + it is possible to use a network-mounted shared +-.I /var/spool/cron ++.I /var/spool/cron/crontabs + across a cluster of hosts and specify that only one of the hosts should + run the crontab jobs in the particular directory at any one time. You + may also use +--- a/man/crontab.5 ++++ b/man/crontab.5 +@@ -333,7 +333,7 @@ + .SH FILES + .I /etc/crontab + main system crontab file. +-.I /var/spool/cron/ ++.I /var/spool/cron/crontabs + a directory for storing crontabs defined by users. + .I /etc/cron.d/ + a directory for storing system crontabs. diff --git a/debian/patches/Extend-support-for-kFreeBSD-and-GNU-HURD.patch b/debian/patches/Extend-support-for-kFreeBSD-and-GNU-HURD.patch new file mode 100644 index 0000000..02f7563 --- /dev/null +++ b/debian/patches/Extend-support-for-kFreeBSD-and-GNU-HURD.patch @@ -0,0 +1,36 @@ +From: Christian Kastner +Date: Sun, 7 Aug 2011 19:48:09 +0200 +Subject: Extend support for kFreeBSD and GNU HURD + +Extend some of the #ifdefs to include kFreeBSD and HURD where it's obviously OK +to do so + +Forwarded: no +Last-Update: 2011-08-07 +--- + src/entry.c | 2 +- + src/pathnames.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/entry.c ++++ b/src/entry.c +@@ -403,7 +403,7 @@ + } + else + log_it("CRON", getpid(), "ERROR", "can't set LOGNAME", 0); +-#if defined(BSD) || defined(__linux) ++#if defined(BSD) || defined(__linux) || defined(__GLIBC__) || defined(__gnu_hurd__) + if (glue_strings(envstr, sizeof envstr, "USER", pw->pw_name, '=')) { + if ((tenvp = env_set(e->envp, envstr)) == NULL) { + ecode = e_memory; +--- a/src/pathnames.h ++++ b/src/pathnames.h +@@ -26,7 +26,7 @@ + #ifndef _PATHNAMES_H_ + #define _PATHNAMES_H_ + +-#if (defined(BSD)) && (BSD >= 199103) || defined(__linux) || defined(AIX) ++#if (defined(BSD)) && (BSD >= 199103) || defined(__linux) || defined(AIX) || defined(__GLIBC__) || defined(__gnu_hurd__) + # include + #endif /*BSD*/ + diff --git a/debian/patches/Hurd-workaround-for-PATH_MAX.patch b/debian/patches/Hurd-workaround-for-PATH_MAX.patch new file mode 100644 index 0000000..f9b225b --- /dev/null +++ b/debian/patches/Hurd-workaround-for-PATH_MAX.patch @@ -0,0 +1,27 @@ +From: Christian Kastner +Date: Tue, 5 Nov 2019 07:52:09 +0100 +Subject: Hurd workaround for PATH_MAX + +PATH_MAX is not defined on GNU Hurd, which is legal according to POSIX. + +https://www.gnu.org/software/hurd/hurd/porting/guidelines.html + +Bug-Debian: https://bugs.debian.org/638048 +--- + src/macros.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/src/macros.h ++++ b/src/macros.h +@@ -43,6 +43,11 @@ + #define DEBUGGING FALSE + #endif + ++/* Gnu Hurd has no limit on pathnames */ ++#if !defined PATH_MAX && defined __GNU__ ++#define PATH_MAX 4096 ++#endif ++ + #define INIT_PID 1 /* parent of orphans */ + #define READ_PIPE 0 /* which end of a pipe pair do you read? */ + #define WRITE_PIPE 1 /* or write to? */ diff --git a/debian/patches/Manpage-and-typo-fixes.patch b/debian/patches/Manpage-and-typo-fixes.patch new file mode 100644 index 0000000..a757c14 --- /dev/null +++ b/debian/patches/Manpage-and-typo-fixes.patch @@ -0,0 +1,151 @@ +From: Christian Kastner , Lance Lin +Date: Thu, 28 Jul 2011 11:07:40 +0200 +Subject: Manpage and typo fixes +Last-Update: 21 Nov 2023 + +Correct some errors or clarify sections in the manpages; fix some typos +--- + man/cron.8 | 43 ++++++++++++++++--------------------------- + man/crontab.1 | 2 +- + man/crontab.5 | 2 +- + src/cron.c | 2 +- + 4 files changed, 19 insertions(+), 30 deletions(-) + +--- a/man/cron.8 ++++ b/man/cron.8 +@@ -37,23 +37,15 @@ + .B -V + .SH DESCRIPTION + .I Cron +-is started from +-.I /etc/rc.d/init.d +-or +-.I /etc/init.d +-when classical sysvinit scripts are used. In case systemd is enabled, then unit file is installed into +-.I /lib/systemd/system/crond.service +-and daemon is started by +-.I systemctl start crond.service +-command. It returns immediately, thus, there is no need to need to start it with +-the '&' parameter. ++is automatically started at boot time. + .PP + .I Cron + searches + .I /var/spool/cron +-for crontab files which are named after accounts in +-.I /etc/passwd; +-The found crontabs are loaded into the memory. ++for crontab files which are named after user accounts; ++together with the system crontab ++.IR /etc/crontab , ++the found crontabs are loaded into the memory. + .I Cron + also searches for + any files in the +@@ -71,12 +63,11 @@ + option. + .PP + There are two ways how changes in crontables are checked. The first +-method is checking the modtime of a file. The second method is using the +-inotify support. Using of inotify is logged in the +-.I /var/log/cron +-log after the daemon is started. The inotify support checks for changes +-in all crontables and accesses the hard disk only when a change is +-detected. ++method is checking the modtime of a file. The second method ++is using inotify support, which is only available on Linux. ++When the daemon uses inotify, it logs this fact to syslog on startup. ++The inotify support checks for changes in all crontables and accesses the ++hard disk only when a change is detected. + .PP + When using the modtime option, + .I Cron +@@ -99,13 +90,8 @@ + .TP + .IR /var/spool/cron + directory that contains user crontables created by the +-.IR crontab +-command. +-.PP +-Note that the + .BR crontab (1) +-command updates the modtime of the spool directory whenever it changes a +-crontab. ++command. + .PP + .SS Daylight Saving Time and other time changes + Local time changes of less than three hours, such as those caused by the +@@ -153,7 +139,6 @@ + standard input and send it as a mail message to the recipients specified + in the mail headers. Specifying the string + .I "off" +-(i.e., crond -m off) + will disable the sending of mail. + .TP + .B "\-n" +@@ -167,10 +152,14 @@ + .B "\-f" + the same as -n, consistent with other crond implementations. + .TP ++.B "\-i" ++Disables inotify support (if present) ++.TP + .B "\-p" + Allows + .I Cron +-to accept any user set crontables. ++to accept any user set crontables (read: lift owner, type and mode ++restrictions) + .TP + .B "\-P" + Don't set PATH. PATH is instead inherited from the environment. +--- a/man/crontab.1 ++++ b/man/crontab.1 +@@ -109,7 +109,7 @@ + .IR /etc/cron.d/ + directory. + .PP +-The temporary directory can be set in an environment variable. If it is ++The temporary directory can be set using the environment variable $TMPDIR. If it is + not set by the user, the + .I /tmp + directory is used. +--- a/man/crontab.5 ++++ b/man/crontab.5 +@@ -65,7 +65,7 @@ + .I LOGNAME + and + .I HOME +-are set from the /etc/passwd line of the crontab\'s owner. ++are set from the /etc/passwd line of the crontab's owner. + .I HOME + and + .I SHELL +@@ -272,7 +272,7 @@ + # run at 2:15pm on the first of every month -- output mailed to paul + 15 14 1 * * $HOME/bin/monthly + # run at 10 pm on weekdays, annoy Joe +-0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?% ++0 22 * * 1-5 mail \-s "It's 10pm" joe%Joe,%%Where are your kids?% + 23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday" + 5 4 * * sun echo "run at 5 after 4 every sunday" + .fi +@@ -292,14 +292,14 @@ + * * * * * root touch /tmp/file + .fi + .SH NOTES +-As noted above, skip values only operate within the time period they\'re ++As noted above, skip values only operate within the time period they're + attached to. For example, specifying "0/35" for the minute field of a +-crontab entry won\'t cause that entry to be executed every 35 minutes; ++crontab entry won't cause that entry to be executed every 35 minutes; + instead, it will be executed twice every hour, at 0 and 35 minutes past. + For more fine-grained control you can do something like this: + .nf +-* * * * * if [ $(expr \\( $(date +%s) / 60 \\) % 58) = 0 ]; then echo this runs every 58 minutes; fi +-0 * * * * if [ $(expr \\( $(date +%s) / 3600 \\) % 23) = 0 ]; then echo this runs every 23 hours on the hour; fi ++* * * * * if [ $(expr ( $(date +%s) / 60 ) % 58) = 0 ]; then echo this runs every 58 minutes; fi ++0 * * * * if [ $(expr ( $(date +%s) / 3600 ) % 23) = 0 ]; then echo this runs every 23 hours on the hour; fi + .fi + Adjust as needed if your + .BR date (1) diff --git a/debian/patches/Rename-PAM-service-to-cronie.patch b/debian/patches/Rename-PAM-service-to-cronie.patch new file mode 100644 index 0000000..86f9e40 --- /dev/null +++ b/debian/patches/Rename-PAM-service-to-cronie.patch @@ -0,0 +1,24 @@ +From: Christian Kastner +Date: Thu, 28 Jul 2011 11:11:45 +0200 +Subject: Rename PAM service to cronie + +Upstream uses "crond"; we switch to "cron" to avoid confusion with Debian's ISC +cron (it uses "cron" but that might change). + +Forwarded: not-needed +Last-Update: 2011-07-28 +--- + src/security.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/security.c ++++ b/src/security.c +@@ -195,7 +195,7 @@ + int cron_start_pam(struct passwd *pw) { + int retcode = 0; + +- retcode = pam_start("crond", pw->pw_name, &conv, &pamh); ++ retcode = pam_start("cronie", pw->pw_name, &conv, &pamh); + PAM_FAIL_CHECK; + retcode = pam_set_item(pamh, PAM_TTY, "cron"); + PAM_FAIL_CHECK; diff --git a/debian/patches/Unbundle-anacron.patch b/debian/patches/Unbundle-anacron.patch new file mode 100644 index 0000000..781648f --- /dev/null +++ b/debian/patches/Unbundle-anacron.patch @@ -0,0 +1,40 @@ +From: Christian Kastner +Date: Thu, 28 Jul 2011 11:01:03 +0200 +Subject: Unbundle anacron + +Upstream has integrated anacron into cronie. Debian has its own package, so +we unbundle it (mostly by removing references to it). + +Forwarded: not-needed +Last-Update: 2011-07-28 +--- + man/cron.8 | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +--- a/man/cron.8 ++++ b/man/cron.8 +@@ -56,8 +56,7 @@ + The found crontabs are loaded into the memory. + .I Cron + also searches for +-.I /etc/anacrontab +-and any files in the ++any files in the + .I /etc/cron.d + directory, which have a different format (see + .BR crontab (5)). +@@ -91,12 +90,8 @@ + checks these files and directories: + .TP + .IR /etc/crontab +-system crontab. Nowadays the file is empty by default. Originally it +-was usually used to run daily, weekly, monthly jobs. By default these +-jobs are now run through anacron which reads +-.IR /etc/anacrontab +-configuration file. See +-.BR anacrontab (5) ++system crontab, usually used to run daily, weekly, monthly jobs. See ++.BR crontab (5) + for more details. + .TP + .IR /etc/cron.d/ diff --git a/debian/patches/Unbundle-upstream-PAM-config.patch b/debian/patches/Unbundle-upstream-PAM-config.patch new file mode 100644 index 0000000..9d8c7fd --- /dev/null +++ b/debian/patches/Unbundle-upstream-PAM-config.patch @@ -0,0 +1,27 @@ +From: Christian Kastner +Date: Thu, 31 Oct 2019 22:16:13 +0100 +Subject: Unbundle upstream PAM config + +We supply our own PAM config, tailored to the Debian setup. + +Last-Update: 2019-10-31 +--- + Makefile.am | 7 ------- + 1 file changed, 7 deletions(-) + +--- a/Makefile.am ++++ b/Makefile.am +@@ -24,13 +24,6 @@ + contrib/cronie.systemd \ + anacron/ChangeLog.anacron + +-if PAM +-pamdir = $(sysconfdir)/pam.d +-dist_pam_DATA = pam/crond +-else +-EXTRA_DIST += pam/crond +-endif +- + include anacron/Makemodule.am + include man/Makemodule.am + include src/Makemodule.am diff --git a/debian/patches/cronie-service-debianization.patch b/debian/patches/cronie-service-debianization.patch new file mode 100644 index 0000000..9abad4e --- /dev/null +++ b/debian/patches/cronie-service-debianization.patch @@ -0,0 +1,27 @@ +From: Andreas Henriksson +Date: Mon, 28 Oct 2019 19:33:53 +0100 +Subject: Adjust the cronie.service file for debian use + +Use default file instead of sysconfig, as shipped by this +package (debian/cronie.default) and also modify the variable +on ExecStart line as for what is used in the shipped default +file. + +Forwarded: not-needed +--- + contrib/cronie.systemd | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/contrib/cronie.systemd ++++ b/contrib/cronie.systemd +@@ -3,8 +3,8 @@ + After=auditd.service nss-user-lookup.target systemd-user-sessions.service time-sync.target ypbind.service autofs.service + + [Service] +-EnvironmentFile=-/etc/sysconfig/crond +-ExecStart=/usr/sbin/crond -n $CRONDARGS ++EnvironmentFile=-/etc/default/cronie ++ExecStart=/usr/sbin/crond -n $DAEMON_ARGS + ExecReload=/bin/kill -URG $MAINPID + KillMode=process + Restart=on-failure diff --git a/debian/patches/fix-ftbfs-gcc-15.patch b/debian/patches/fix-ftbfs-gcc-15.patch new file mode 100644 index 0000000..84ed915 --- /dev/null +++ b/debian/patches/fix-ftbfs-gcc-15.patch @@ -0,0 +1,187 @@ +Author: Lance Lin +Date: Tue, 25 Feb 2025 20:27:50 +0700 +Description: Fix FTBFS with GCC-15 + +--- a/src/cronnext.c ++++ b/src/cronnext.c +@@ -55,7 +55,7 @@ + + #ifdef WITH_SELINUX + int get_security_context(const char *name, int crontab_fd, +- security_context_t *rcontext, const char *tabname) { ++ char **rcontext, const char *tabname) { + /* empty stub */ + (void)name; + (void)crontab_fd; +@@ -64,7 +64,7 @@ + return 0; + } + +-void free_security_context(security_context_t *scontext) { ++void free_security_context(char **scontext) { + /* empty stub */ + (void)scontext; + } +--- a/src/crontab.c ++++ b/src/crontab.c +@@ -303,7 +303,7 @@ + break; + #ifdef WITH_SELINUX + case 's': +- if (getprevcon((security_context_t *) & (selinux_context))) { ++ if (getprevcon((char **) & (selinux_context))) { + fprintf(stderr, "Cannot obtain SELinux process context\n"); + exit(ERROR_EXIT); + } +--- a/src/funcs.h ++++ b/src/funcs.h +@@ -89,7 +89,7 @@ + user *load_user(int, struct passwd *, const char *, const char *, const char *), + *find_user(cron_db *, const char *, const char *); + +-entry *load_entry(FILE *, void (*)(), struct passwd *, char **); ++entry *load_entry(FILE *, void (*)(const char *), struct passwd *, char **); + + FILE *cron_popen(char *, const char *, struct passwd *, char **); + +@@ -115,11 +115,11 @@ + + int get_security_context(const char *name, + int crontab_fd, +- security_context_t *rcontext, ++ char **rcontext, + const char *tabname + ); + +-void free_security_context( security_context_t *scontext ); ++void free_security_context( char **scontext ); + + int crontab_security_access(void); + +--- a/src/security.c ++++ b/src/security.c +@@ -94,8 +94,8 @@ + static char **build_env(char **cronenv); + + #ifdef WITH_SELINUX +-static int cron_change_selinux_range(user * u, security_context_t ucontext); +-static int cron_get_job_range(user * u, security_context_t * ucontextp, ++static int cron_change_selinux_range(user * u, char * ucontext); ++static int cron_get_job_range(user * u, char ** ucontextp, + char **jobenv); + #endif + +@@ -137,7 +137,7 @@ + /* we must get the crontab context BEFORE changing user, else + * we'll not be permitted to read the cron spool directory :-) + */ +- security_context_t ucontext = 0; ++ char * ucontext = 0; + + if (cron_get_job_range(u, &ucontext, e->envp) < OK) { + log_it(e->pwd->pw_name, getpid(), "ERROR", +@@ -276,8 +276,8 @@ + + + #ifdef WITH_SELINUX +-static int cron_authorize_context(security_context_t scontext, +- security_context_t file_context) { ++static int cron_authorize_context(char * scontext, ++ char * file_context) { + struct av_decision avd; + int retval; + security_class_t tclass; +@@ -309,8 +309,8 @@ + #endif + + #ifdef WITH_SELINUX +-static int cron_authorize_range(security_context_t scontext, +- security_context_t ucontext) { ++static int cron_authorize_range(char * scontext, ++ char * ucontext) { + struct av_decision avd; + int retval; + security_class_t tclass; +@@ -345,7 +345,7 @@ + /* always uses u->scontext as the default process context, then changes the + level, and returns it in ucontextp (or NULL otherwise) */ + static int +-cron_get_job_range(user * u, security_context_t * ucontextp, char **jobenv) { ++cron_get_job_range(user * u, char ** ucontextp, char **jobenv) { + char *range; + + if (is_selinux_enabled() <= 0) +@@ -398,7 +398,7 @@ + #endif + + #ifdef WITH_SELINUX +-static int cron_change_selinux_range(user * u, security_context_t ucontext) { ++static int cron_change_selinux_range(user * u, char * ucontext) { + char *msg = NULL; + + if (is_selinux_enabled() <= 0) +@@ -481,10 +481,10 @@ + #ifdef WITH_SELINUX + int + get_security_context(const char *name, int crontab_fd, +- security_context_t * rcontext, const char *tabname) { +- security_context_t scontext = NULL; +- security_context_t file_context = NULL; +- security_context_t rawcontext=NULL; ++ char ** rcontext, const char *tabname) { ++ char * scontext = NULL; ++ char * file_context = NULL; ++ char * rawcontext=NULL; + context_t current_context = NULL; + int retval; + char *current_context_str = NULL; +@@ -589,7 +589,7 @@ + #endif + + #ifdef WITH_SELINUX +-void free_security_context(security_context_t * scontext) { ++void free_security_context(char ** scontext) { + if (*scontext != NULL) { + freecon(*scontext); + *scontext = NULL; +@@ -601,7 +601,7 @@ + int crontab_security_access(void) { + int selinux_check_passwd_access = -1; + if (is_selinux_enabled() > 0) { +- security_context_t user_context; ++ char * user_context; + if (getprevcon_raw(&user_context) == 0) { + security_class_t passwd_class; + access_vector_t crontab_bit; +--- a/src/structs.h ++++ b/src/structs.h +@@ -57,9 +57,6 @@ + * + * These are the crontabs. + */ +-#ifndef WITH_SELINUX +-#define security_context_t unsigned +-#endif + + typedef struct _user { + struct _user *next, *prev; /* links */ +@@ -67,7 +64,7 @@ + char *tabname; /* /etc/cron.d/ file name or NULL */ + time_t mtime; /* last modtime of crontab */ + entry *crontab; /* this person's crontab */ +- security_context_t scontext; /* SELinux security context */ ++ char * scontext; /* SELinux security context */ + int system; /* is it a system crontab */ + } user; + +--- a/src/entry.c ++++ b/src/entry.c +@@ -90,7 +90,7 @@ + /* return NULL if eof or syntax error occurs; + * otherwise return a pointer to a new entry. + */ +-entry *load_entry(FILE * file, void (*error_func) (), struct passwd *pw, ++entry *load_entry(FILE * file, void (*error_func) (const char *), struct passwd *pw, + char **envp) { + /* this function reads one crontab entry -- the next -- from a file. + * it skips any leading blank lines, ignores comments, and returns diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..6938817 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,9 @@ +Unbundle-anacron.patch +Manpage-and-typo-fixes.patch +Rename-PAM-service-to-cronie.patch +Unbundle-upstream-PAM-config.patch +Debian-specific-paths-and-features.patch +Extend-support-for-kFreeBSD-and-GNU-HURD.patch +cronie-service-debianization.patch +Hurd-workaround-for-PATH_MAX.patch +fix-ftbfs-gcc-15.patch diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..2ed696d --- /dev/null +++ b/debian/rules @@ -0,0 +1,76 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# For DEB_HOST_ARCH_OS +include /usr/share/dpkg/architecture.mk + +# Add build flags +export DEB_CFLAGS_MAINT_APPEND = -Wall + +# Add hardening flags +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# Build the config options string +CONFIG_OPTIONS = + +# anacron is still being provided by src:anacron +CONFIG_OPTIONS += --disable-anacron + +# Default EDITOR path +CONFIG_OPTIONS += --with-editor=/usr/bin/sensible-editor + +# PAM is enabled by default +ifeq (,$(findstring nopam,$(DEB_BUILD_OPTIONS))) + CONFIG_OPTIONS += --with-pam +endif + +########################## +### Linux-only options ### +ifeq ($(DEB_HOST_ARCH_OS), linux) + +# SELINUX is enabled by default +ifeq (,$(findstring noselinux,$(DEB_BUILD_OPTIONS))) + CONFIG_OPTIONS += --with-selinux +endif + +# inotify is enabled by default +ifeq (,$(findstring noinotify,$(DEB_BUILD_OPTIONS))) + CONFIG_OPTIONS += --with-inotify +endif + +# audit is disabled by default +ifneq (,$(findstring withaudit,$(DEB_BUILD_OPTIONS))) + CONFIG_OPTIONS += --with-audit +endif + +endif +##### End Linux-only ##### +########################## + + +%: + dh $@ + +# Set SPOOL_DIR to Debian's traditional location for crontabs (see Policy) +# Set CRON_GROUP to "crontab" to enable SGID functionality (avoids SUID) +override_dh_auto_configure: + SPOOL_DIR=/var/spool/cron/crontabs \ + dh_auto_configure CRON_GROUP=crontab -- $(CONFIG_OPTIONS) + +override_dh_install: + dh_install + # Create /etc/cron.deny to allow crontab(1) for all users by default + install -m 644 debian/etc/cronie.deny debian/cronie/etc/cron.deny + # System-wide crontab: IS NOT INSTALLED HERE: SEE CRON-DAEMON-COMMON + #install -m 644 debian/etc/crontab.system debian/cronie/etc/crontab + # Placeholders for dpkg: ARE NOT INSTALLED HERE: SEE CRON-DAEMON-COMMON + #install -m 644 debian/etc/placeholder debian/cronie/etc/cron.d/.placeholder + #install -m 644 debian/etc/placeholder debian/cronie/etc/cron.hourly/.placeholder + #install -m 644 debian/etc/placeholder debian/cronie/etc/cron.daily/.placeholder + #install -m 644 debian/etc/placeholder debian/cronie/etc/cron.weekly/.placeholder + #install -m 644 debian/etc/placeholder debian/cronie/etc/cron.monthly/.placeholder + # systemd service file + install -d -m 755 debian/cronie/usr/lib/systemd/system/ + install -m 644 contrib/cronie.systemd debian/cronie/usr/lib/systemd/system/cronie.service diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..aa11df6 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,5 @@ +Archive: Github +Bug-Database: https://github.com/cronie-crond/cronie/issues +Bug-Submit: https://github.com/cronie-crond/cronie/issues/new +Repository: https://github.com/cronie-crond/cronie.git +Repository-Browse: https://github.com/cronie-crond/cronie/ diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..a60dc5c --- /dev/null +++ b/debian/watch @@ -0,0 +1,5 @@ +version=4 + +opts="downloadurlmangle=s#/tag/#/download/#;s#(v?@ANY_VERSION@)$#$1/cronie-$2.tar.gz#, \ + filenamemangle=s#cronie-?@ANY_VERSION@#cronie-$1.tar.gz#" \ + https://github.com/cronie-crond/cronie/tags .*/releases/tag/cronie-?@ANY_VERSION@