Davin McCall [Sat, 29 Jun 2019 03:41:38 +0000 (13:41 +1000)]
Re-create control socket file node if it disappears.
In case something is mounted over /dev (or wherever the control socket
lives) it will become inaccessible. When a starts-rwfs service starts,
check the socket node still exists and if not, close the socket and
re-open.
Cherry-picked from development branch.
Davin McCall [Fri, 28 Jun 2019 09:58:35 +0000 (19:58 +1000)]
Fix use of old settings in sample config, see #16.
Cherry-picked from development branch.
Davin McCall [Sat, 22 Jun 2019 03:03:51 +0000 (04:03 +0100)]
Fix typo in function name (workding -> working)
Cherry-picked from development branch.
Davin McCall [Sun, 2 Jun 2019 10:09:46 +0000 (20:09 +1000)]
Process service state queues after readiness via fd.
Cherry-picked from development branch.
Davin McCall [Sun, 2 Jun 2019 09:28:57 +0000 (19:28 +1000)]
Don't abuse std::find to find end of special message.
Cherry-picked from development branch.
Edd Barrett [Thu, 30 May 2019 10:41:13 +0000 (11:41 +0100)]
Add CONTRIBUTORS.
Edd Barrett [Sat, 25 May 2019 13:26:50 +0000 (14:26 +0100)]
Add the getting started guide.
Davin McCall [Wed, 29 May 2019 10:16:18 +0000 (20:16 +1000)]
Improve "stop" documentation, bring in line with implementation.
Davin McCall [Wed, 29 May 2019 08:56:19 +0000 (18:56 +1000)]
Break holds from soft dependents if a service is manually stopped.
If all dependents are soft (waits-for or soft) then break their holds on
a service that is manually stopped. This prevents the service from
immediately re-starting, which would be unexpected behaviour.
Davin McCall [Tue, 28 May 2019 11:01:09 +0000 (21:01 +1000)]
Remove unused function.
Davin McCall [Tue, 28 May 2019 10:11:48 +0000 (20:11 +1000)]
Fix restart of dependency services not explicitly started.
Davin McCall [Tue, 28 May 2019 09:17:09 +0000 (19:17 +1000)]
Add test for restart of a waits-for dependency.
The dependent is not explicitly started, but should restart due to the
dependency (rather than breaking the dependency) because it has been set
to auto-restart.
Davin McCall [Sun, 26 May 2019 04:37:31 +0000 (14:37 +1000)]
Tests: don't call timer_expiry directly.
Advance the current simulated time and expire timers if they are active,
rather than calling the timer expiry directly (which makes the
assumption that the timer is active).
Davin McCall [Sun, 26 May 2019 04:09:43 +0000 (14:09 +1000)]
Fix time-out-during-start test.
Davin McCall [Sun, 26 May 2019 04:09:10 +0000 (14:09 +1000)]
Clear the stop timer if scripted start is interrupted.
Davin McCall [Sat, 25 May 2019 23:38:12 +0000 (09:38 +1000)]
dinitctl: fix display of termination signal
Davin McCall [Sat, 25 May 2019 14:56:12 +0000 (00:56 +1000)]
Fix restart after unexpected termination.
Davin McCall [Sat, 25 May 2019 14:55:51 +0000 (00:55 +1000)]
Add test for restart after unexpected termination.
Davin McCall [Sat, 25 May 2019 11:25:05 +0000 (21:25 +1000)]
Add cross-compilation support.
I.e. add HOSTCXX etc make variables, and use the host compiler when
compiling mconfig-gen.
Davin McCall [Sat, 25 May 2019 08:29:47 +0000 (18:29 +1000)]
make install: use force when creating links
Davin McCall [Sat, 25 May 2019 07:15:20 +0000 (17:15 +1000)]
Fix waiting for console input.
Davin McCall [Fri, 24 May 2019 10:54:02 +0000 (20:54 +1000)]
Try to fix case where we can't getpgid() treating pid == pgid.
The logic behind this is: if we can't use getpgid(), it's because the
process is in a different session. If that's the case, it must be a
process group leader with pgid == pid.
Davin McCall [Fri, 24 May 2019 08:59:44 +0000 (18:59 +1000)]
log about not being able to get process group with INFO not WARN.
Davin McCall [Fri, 24 May 2019 08:58:50 +0000 (18:58 +1000)]
Fix log levels (swap console/main log).
The console should be WARN, main log should be INFO, not the other way
around. Don't want too much spurious stuff going out to the console.
Davin McCall [Thu, 23 May 2019 21:13:27 +0000 (07:13 +1000)]
Add KILL support to term-signal setting.
Also have renamed termsignal to term-signal for consistency, but the old
name remains supported.
Davin McCall [Thu, 23 May 2019 12:35:44 +0000 (22:35 +1000)]
Bump version to 0.5.1.
Davin McCall [Thu, 23 May 2019 11:20:39 +0000 (21:20 +1000)]
dinitctl: handle service dir with absolute path in enable/disable.
Davin McCall [Thu, 23 May 2019 10:39:28 +0000 (20:39 +1000)]
Update bundled Dasynq to latest (1.1.6).
Fixes critical issue on OpenBSD.
Davin McCall [Wed, 22 May 2019 10:33:15 +0000 (20:33 +1000)]
Just signal the process if we can't get the process group.
On OpenBSD (and possibly others) we can't get the process group of a
process that's in a different session, so fall back to signalling the
process.
Davin McCall [Wed, 22 May 2019 10:22:45 +0000 (20:22 +1000)]
Use SYSCONTROLSOCKET for socket path in dinitctl/shutdown.
Patches from vext01.
Davin McCall [Wed, 22 May 2019 10:13:31 +0000 (20:13 +1000)]
Another minor fix to man page.
Davin McCall [Tue, 21 May 2019 21:43:30 +0000 (07:43 +1000)]
Docs: mention "boot" service in Readme, etc.
Davin McCall [Fri, 10 May 2019 13:37:33 +0000 (23:37 +1000)]
Don't discard buffer unless >1 second has elapse since console release.
If the log subsystem releases the console, the log buffer is normally
discarded when it is re-acquired (so that stale messages are not then
displayed). This change allows for a 1 second window, so that
short-running foreground jobs don't prevent log messages being seen.
Davin McCall [Fri, 10 May 2019 10:53:27 +0000 (20:53 +1000)]
Don't fail service on failure to write utmp entry.
This can simply be the result of the utmp database not existing on the
system.
Davin McCall [Fri, 10 May 2019 10:13:19 +0000 (20:13 +1000)]
examples: create utmp file on boot.
(Revert earlier change).
Davin McCall [Fri, 10 May 2019 10:08:50 +0000 (20:08 +1000)]
Allow ctrl+alt+del when waiting for user response.
When boot fails (i.e. all services stop without shutdown issued) user is
prompted before re-starting the boot service. By allowing signal
processing, they can use ctrl+alt+del (on Linux) to reboot instead.
Davin McCall [Tue, 7 May 2019 11:59:08 +0000 (21:59 +1000)]
Rename "event_loop" label to avoid name clash.
Davin McCall [Tue, 7 May 2019 11:57:43 +0000 (21:57 +1000)]
Continue processing signals while waiting for user to ack boot restart.
When services stop without a shutdown being requested (for system init)
the user is prompted to confirm restart of boot sequence. Give them a
chance to instead reboot (via ctrl+alt+del on Linux).
Davin McCall [Sun, 5 May 2019 04:35:10 +0000 (14:35 +1000)]
Fix typo.
Davin McCall [Sun, 5 May 2019 04:22:40 +0000 (14:22 +1000)]
Implement minor suggestions from cppcheck report.
Davin McCall [Fri, 3 May 2019 10:25:15 +0000 (20:25 +1000)]
Don't need to clear utmp in rcboot.sh; dinit now does it.
Davin McCall [Fri, 3 May 2019 10:22:55 +0000 (20:22 +1000)]
Document all mconfig options.
Davin McCall [Fri, 3 May 2019 10:22:44 +0000 (20:22 +1000)]
Add support for specifying USE_UTMPX in mconfig.
Davin McCall [Fri, 3 May 2019 10:00:02 +0000 (20:00 +1000)]
Slight re-work of Musl utmp support detection.
Davin McCall [Thu, 2 May 2019 11:41:15 +0000 (21:41 +1000)]
Fix for compilation with Musl.
Musl only has stub implementations of utmp* functions, and doesn't
define _PATH_UTMPX nor _PATH_WTMPX.
Davin McCall [Thu, 2 May 2019 10:47:02 +0000 (20:47 +1000)]
Prompt to run tests or install after build.
Davin McCall [Thu, 2 May 2019 10:43:45 +0000 (20:43 +1000)]
Add mconfig to gitignore.
Davin McCall [Thu, 2 May 2019 10:42:46 +0000 (20:42 +1000)]
Update TODO.
Davin McCall [Thu, 2 May 2019 10:39:41 +0000 (20:39 +1000)]
Minor README fixes.
Davin McCall [Thu, 2 May 2019 10:39:20 +0000 (20:39 +1000)]
Choose appropriate build configuration automatically.
This could help prevent certain users, who do not read/follow the build
instructions, from becoming vexed.
Davin McCall [Wed, 1 May 2019 21:40:49 +0000 (07:40 +1000)]
Bump version to 0.5.0.
Davin McCall [Wed, 1 May 2019 21:06:31 +0000 (07:06 +1000)]
Minor improvements to dinit manpage.
Davin McCall [Wed, 1 May 2019 13:13:02 +0000 (23:13 +1000)]
Add note that inittab-id/-line have no effect if utmp not supported.
Davin McCall [Wed, 1 May 2019 12:31:59 +0000 (22:31 +1000)]
Avoid boot loop on all-service failure.
If no shutdown has been issued but all services stop, prompt user before
re-starting boot sequence.
Davin McCall [Tue, 30 Apr 2019 10:30:59 +0000 (20:30 +1000)]
Include inittab-id/-line in example tty service descriptions.
Davin McCall [Tue, 30 Apr 2019 10:28:07 +0000 (20:28 +1000)]
Guard use of inittab_id/_line with #if USE_UTMPX.
Davin McCall [Sun, 28 Apr 2019 10:19:17 +0000 (20:19 +1000)]
Document inittab-id and inittab-line service settings.
Davin McCall [Sun, 28 Apr 2019 06:40:38 +0000 (16:40 +1000)]
Clear utmp database before logging boot.
Davin McCall [Tue, 5 Mar 2019 02:59:36 +0000 (02:59 +0000)]
Update TODO.
Davin McCall [Mon, 26 Nov 2018 22:11:46 +0000 (22:11 +0000)]
Add full utmp (utmpx) support.
Davin McCall [Thu, 22 Nov 2018 15:40:13 +0000 (15:40 +0000)]
Add initial support for logging boot time to wtmp database.
Davin McCall [Fri, 23 Nov 2018 23:00:00 +0000 (23:00 +0000)]
Fix case of process termination before readiness notification.
Adds a test.
Davin McCall [Tue, 20 Nov 2018 18:32:55 +0000 (18:32 +0000)]
control: remove unused "rollback complete" reply.
The connection should close before the reply could be sent, so don't
even pretend that it will be sent.
Davin McCall [Sat, 17 Nov 2018 11:10:28 +0000 (11:10 +0000)]
Example dbusd: use readiness notification; process instead of bgprocess.
Davin McCall [Sat, 17 Nov 2018 09:58:22 +0000 (09:58 +0000)]
Fix check of executable name used for shutdown.
Davin McCall [Sat, 17 Nov 2018 09:56:33 +0000 (09:56 +0000)]
Pass correct end of readiness notification pipe to subprocess.
Davin McCall [Sat, 17 Nov 2018 00:38:46 +0000 (00:38 +0000)]
Fix "make install".
Somehow, used the wrong slashes...
Davin McCall [Sat, 17 Nov 2018 00:35:13 +0000 (00:35 +0000)]
Add "ready-notification" service option.
This allows either of the two notification methods - write to a specific
fd or to an fd identified by an environment variable.
Davin McCall [Fri, 16 Nov 2018 18:30:41 +0000 (18:30 +0000)]
Tests: add test for readiness notification via pipe.
Davin McCall [Fri, 16 Nov 2018 10:31:38 +0000 (10:31 +0000)]
Backend support for S6-style readiness notification.
No support in service configuration yet.
Davin McCall [Fri, 9 Nov 2018 21:23:17 +0000 (21:23 +0000)]
Shorten (wrap) some too-long lines.
Davin McCall [Fri, 9 Nov 2018 21:05:46 +0000 (21:05 +0000)]
Avoid 2nd call to get current time when starting process.
Davin McCall [Fri, 9 Nov 2018 18:29:39 +0000 (18:29 +0000)]
Refactoring: move process-service specific classes to process-service.h
Davin McCall [Fri, 9 Nov 2018 10:20:42 +0000 (10:20 +0000)]
Wrap too-long comment lines.
Davin McCall [Wed, 7 Nov 2018 09:37:21 +0000 (09:37 +0000)]
Fix typo in DESIGN document.
Davin McCall [Tue, 6 Nov 2018 12:36:29 +0000 (12:36 +0000)]
Makefile: fix parallel build (issue #9)
Davin McCall [Tue, 6 Nov 2018 11:34:15 +0000 (11:34 +0000)]
Update TODO (one task done).
Davin McCall [Tue, 6 Nov 2018 11:32:32 +0000 (11:32 +0000)]
Install halt and reboot as links to shutdown.
Until now, halt and reboot were shell scripts that called shutdown.
Davin McCall [Mon, 5 Nov 2018 22:01:26 +0000 (22:01 +0000)]
shutdown: clean up error handling.
Davin McCall [Mon, 5 Nov 2018 11:05:47 +0000 (11:05 +0000)]
shutdown: use argv 0 to determine default action.
If called as "reboot", default action is to reboot, otherwise to halt
and power down.
Davin McCall [Fri, 2 Nov 2018 10:39:48 +0000 (10:39 +0000)]
Add man page for shutdown et al.
Davin McCall [Tue, 30 Oct 2018 19:03:27 +0000 (19:03 +0000)]
Minor edits to dinit-service man page.
Davin McCall [Tue, 30 Oct 2018 19:01:02 +0000 (19:01 +0000)]
Implement a "shares-console" option for non-exclusive console access.
This could be useful for the "single" (single-user) service, so that
runs-on-console services can be started from it.
Davin McCall [Mon, 29 Oct 2018 19:02:59 +0000 (19:02 +0000)]
Implement a "chain-to" service property.
This specifies that if a service completes, another service should be
started (specified by name and resolved at the time it is needed, not
beforehand).
This has applications for recovery ("single-user mode") services, and
for multi-stage booting where service descriptions are on a separate
filesystem which is mounted by a service in an initial stage.
Davin McCall [Sat, 27 Oct 2018 15:24:45 +0000 (16:24 +0100)]
man page: minor additions/edits.
Davin McCall [Sat, 27 Oct 2018 15:09:50 +0000 (16:09 +0100)]
Linux: only filter "auto" from command line if running as pid 1.
Davin McCall [Mon, 29 Oct 2018 12:17:51 +0000 (12:17 +0000)]
Improve comments / fix excessively long lines.
Davin McCall [Sat, 27 Oct 2018 14:57:54 +0000 (15:57 +0100)]
dinit man page: describe general operation.
Davin McCall [Sat, 27 Oct 2018 13:33:31 +0000 (14:33 +0100)]
Add -u/--user to force running as a user service manager.
Since running as root now runs as a system service manager by default,
provide an option not to do so.
Davin McCall [Sat, 27 Oct 2018 13:09:33 +0000 (14:09 +0100)]
Fix indentation.
Davin McCall [Fri, 26 Oct 2018 09:25:07 +0000 (10:25 +0100)]
Set control_socket_open false when closing the socket.
If we booted to single-user mode, we close the socket once it exits, so
we need to open it again. Leaving control_socket_open true means that we
don't do that, so set it false.
Davin McCall [Fri, 26 Oct 2018 09:23:41 +0000 (10:23 +0100)]
Add a few comments.
Davin McCall [Fri, 26 Oct 2018 09:15:06 +0000 (10:15 +0100)]
Minor style fix.
Davin McCall [Sun, 21 Oct 2018 22:47:34 +0000 (23:47 +0100)]
Comparison: overhaul.
Davin McCall [Sun, 21 Oct 2018 20:58:10 +0000 (21:58 +0100)]
Do not try to manage system (shutdown, reboot) if not running as PID 1.
If not PID 1, assume system management is being taken care of by a
separate primary init.
Davin McCall [Sun, 21 Oct 2018 16:51:08 +0000 (17:51 +0100)]
BUILD: minor update and rename to BUILD.txt.
The rename is to prevent Github from rendering the file with syntax
highlighting, urgh.
Davin McCall [Sun, 21 Oct 2018 14:53:06 +0000 (15:53 +0100)]
man page: add notes on character set.
Davin McCall [Sun, 21 Oct 2018 14:35:43 +0000 (15:35 +0100)]
manpage: fix formatting glitch.
Davin McCall [Sun, 21 Oct 2018 13:37:45 +0000 (14:37 +0100)]
Add missing include (fixes build on musl systems)
Davin McCall [Sat, 20 Oct 2018 14:38:40 +0000 (15:38 +0100)]
docs: mention that dinitctl enable defaults to boot as dependent.