Re: git maintenance broken on FreeBSD
- From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
- Date
- Aug 12, 2022, 14:44 UTC
- Message-ID
- <YvZnQFVMZZmz9TIX@danh.dev>
- In-Reply-To
- <226317ba-a78f-216c-764c-52f4e393bd35@FreeBSD.org>
On 2022-08-12 10:51:03-0300, Renato Botelho <garga@FreeBSD.org> wrote:
Show 5 quoted lines
> As reported at [1], git maintenance is not working on FreeBSD. I didn't > find the time to dig into it but it seems like it's calling crontab using > parameters not supported on FreeBSD. > > [1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260746
It seems like FreeBSD's cron is vixie-cron which requires <file> passed to crontab(1).
The crontab command conforms to IEEE Std 1003.2 (“POSIX.2”) with the
exception that the dangerous variant of calling crontab without a file
name in the first form of the command is not allowed by this
implementation. The pseudo-filename ‘-’ must be specified to read from
standard input. The new command syntax differs from previous versions of
Vixie Cron, as well as from the classic SVR3 syntax.I think other crontab implementation also accept "-" as filename for stdin. At least cronie, fcron, dcron, and busybox's crontab both supports "-" as stdin.
I think this patch can fix FreeBSD's problem:
---- 8< -----
diff --git a/builtin/gc.c b/builtin/gc.c index eeff2b760e..45d908def3 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -2087,6 +2087,7 @@ static int crontab_update_schedule(int run_maintenance, int fd) rewind(cron_list); strvec_split(&crontab_edit.args, cmd); + strvec_push(&crontab_edit.args, "-"); crontab_edit.in = -1; crontab_edit.git_cmd = 0; ---- 8< ---------
-- Danh