Davin McCall [Thu, 12 Jul 2018 17:47:39 +0000 (18:47 +0100)]
control: ensure shutdown type is valid.
Davin McCall [Thu, 12 Jul 2018 17:27:48 +0000 (18:27 +0100)]
tests: make unload test more comprehensive.
Specifically, make sure that the service that we request to unload is
not loaded afterwards.
Davin McCall [Tue, 10 Jul 2018 18:54:59 +0000 (19:54 +0100)]
tests: add control protocol test (unload).
Davin McCall [Tue, 10 Jul 2018 16:37:13 +0000 (17:37 +0100)]
tests: add control protocol test (start/stop service).
Davin McCall [Tue, 10 Jul 2018 11:14:16 +0000 (12:14 +0100)]
tests: add another control protocol test (load service).
Davin McCall [Sun, 8 Jul 2018 21:12:15 +0000 (22:12 +0100)]
Add fuzz testing for control protocol based on LLVM libFuzzer.
Davin McCall [Mon, 9 Jul 2018 17:39:27 +0000 (18:39 +0100)]
tests: add some protocol tests.
Davin McCall [Mon, 9 Jul 2018 09:06:44 +0000 (10:06 +0100)]
tests: fix build deps for cptests.
Davin McCall [Mon, 9 Jul 2018 07:52:51 +0000 (08:52 +0100)]
testing: small fixes.
Davin McCall [Sun, 8 Jul 2018 21:21:50 +0000 (22:21 +0100)]
Add missing includes.
Compilation on Mac OS fails due to these.
Davin McCall [Sun, 8 Jul 2018 19:08:10 +0000 (20:08 +0100)]
build: re-arrange to build all tests then run all.
This is better than building the main tests and running them, and then
building the control protocol tests and running them, since you see all
test results together.
Davin McCall [Sun, 8 Jul 2018 19:02:51 +0000 (20:02 +0100)]
tests: add c.p. test for list services command.
Davin McCall [Sun, 8 Jul 2018 17:51:49 +0000 (18:51 +0100)]
Add contribution guide, including conduct statement.
Davin McCall [Sun, 8 Jul 2018 17:00:43 +0000 (18:00 +0100)]
Some updates to the design document.
Davin McCall [Sun, 8 Jul 2018 15:14:09 +0000 (16:14 +0100)]
Minor README fix.
Davin McCall [Fri, 6 Jul 2018 17:19:57 +0000 (18:19 +0100)]
Add initial control protocol test.
This includes a lot of framework necessary for writing additional tests.
Davin McCall [Fri, 6 Jul 2018 20:32:51 +0000 (21:32 +0100)]
Minor cleanup of header.
Davin McCall [Tue, 3 Jul 2018 16:43:54 +0000 (17:43 +0100)]
dinitctl: add rm-dep subcommand to remove dependencies.
Davin McCall [Tue, 3 Jul 2018 09:08:28 +0000 (10:08 +0100)]
control: add command for removing dependencies.
Davin McCall [Mon, 2 Jul 2018 20:55:17 +0000 (21:55 +0100)]
build: remove test executables on clean.
Davin McCall [Mon, 2 Jul 2018 20:48:41 +0000 (21:48 +0100)]
build: generate mconfig.h in include directory.
Davin McCall [Mon, 2 Jul 2018 18:24:09 +0000 (19:24 +0100)]
dinitctl: add-dep subcommand, adds dependency between services.
Davin McCall [Mon, 2 Jul 2018 16:26:26 +0000 (17:26 +0100)]
service: correctly roll-back state on exception (bad_alloc).
Since a service adds its dependencies to other services' dependents
lists, it needs to roll back those changes if failing due to a bad_alloc
(or other exception).
Davin McCall [Mon, 2 Jul 2018 09:43:58 +0000 (10:43 +0100)]
Implement adding dependencies via control protocol.
Davin McCall [Sat, 23 Jun 2018 14:43:00 +0000 (15:43 +0100)]
Correct a comment.
Davin McCall [Sat, 23 Jun 2018 14:41:37 +0000 (15:41 +0100)]
Add DESIGN overview.
Davin McCall [Fri, 22 Jun 2018 20:04:30 +0000 (21:04 +0100)]
dinitctl: fix spacing in output.
Davin McCall [Fri, 22 Jun 2018 19:20:20 +0000 (20:20 +0100)]
mconfig: improve consistency of comments.
Davin McCall [Fri, 22 Jun 2018 19:19:35 +0000 (20:19 +0100)]
dinitctl: fix includes for FreeBSD.
Davin McCall [Fri, 22 Jun 2018 18:06:17 +0000 (19:06 +0100)]
Update TODO.
Davin McCall [Fri, 22 Jun 2018 17:56:47 +0000 (18:56 +0100)]
Bump version to 0.3.0.
Davin McCall [Fri, 22 Jun 2018 17:51:49 +0000 (18:51 +0100)]
Tests: add test for loading a non-existent service.
Davin McCall [Fri, 22 Jun 2018 17:45:49 +0000 (18:45 +0100)]
Add "signal-process-only" option to avoid signalling process group.
Davin McCall [Fri, 22 Jun 2018 09:12:10 +0000 (10:12 +0100)]
docs: minor update to build instructions.
Davin McCall [Fri, 22 Jun 2018 08:57:21 +0000 (09:57 +0100)]
dinitctl: show if service was skipped or failed.
Also update documentation accordingly.
Davin McCall [Fri, 22 Jun 2018 08:39:18 +0000 (09:39 +0100)]
Correctly report failure to find a service description.
Davin McCall [Fri, 22 Jun 2018 08:29:15 +0000 (09:29 +0100)]
Remove -fno-rtti from MacOS builds.
It seems to break exception handling. (Didn't I remove this earlier?...)
Davin McCall [Thu, 21 Jun 2018 08:07:53 +0000 (09:07 +0100)]
Replace README with markdown version.
Davin McCall [Tue, 19 Jun 2018 21:54:27 +0000 (22:54 +0100)]
Add more detail to sample "dinitctl list" output.
Since pid and console state are now displayed, add them to the sample
output.
Davin McCall [Tue, 19 Jun 2018 21:50:44 +0000 (22:50 +0100)]
Define constants for supported control protocol versions.
(Rather than hard-coding the values at point-of-use.)
Davin McCall [Tue, 19 Jun 2018 21:40:40 +0000 (22:40 +0100)]
dinitctl: show process id and console state in service list.
Davin McCall [Tue, 19 Jun 2018 20:39:02 +0000 (21:39 +0100)]
Move stopped_reason_t to service_constants.h header.
Davin McCall [Tue, 19 Jun 2018 18:40:47 +0000 (19:40 +0100)]
service: add various accessors.
Davin McCall [Mon, 18 Jun 2018 19:59:44 +0000 (20:59 +0100)]
Avoid rebuilding tests each time they're run.
Davin McCall [Mon, 18 Jun 2018 20:28:54 +0000 (21:28 +0100)]
Tests: add a new test.
Davin McCall [Fri, 15 Jun 2018 18:47:13 +0000 (19:47 +0100)]
Remember the reason why a service stopped.
This will later allow for reporting the reason to dinitctl etc.
Davin McCall [Fri, 15 Jun 2018 16:31:35 +0000 (17:31 +0100)]
Avoid another unnecessary issue-stop-on-release.
Davin McCall [Fri, 15 Jun 2018 16:20:26 +0000 (17:20 +0100)]
Avoid issuing do_stop twice when a process service process exits.
Probably it's harmless, but we may as well avoid it.
Davin McCall [Fri, 15 Jun 2018 16:08:54 +0000 (17:08 +0100)]
Don't try to stop an already stopped service.
It might or might not actually cause a problem, but it will at least
perform some unnecessary work, so don't do it.
Davin McCall [Fri, 15 Jun 2018 09:16:08 +0000 (10:16 +0100)]
Refactor: rename onstart_flags_t to service_flags_t.
Davin McCall [Fri, 15 Jun 2018 09:11:15 +0000 (10:11 +0100)]
Refactor: move "start-interruptible" flag into onstart_flags
Davin McCall [Fri, 15 Jun 2018 08:47:51 +0000 (09:47 +0100)]
Tests: add a test for interrupted start of skippable scripted service.
Davin McCall [Thu, 14 Jun 2018 17:06:05 +0000 (18:06 +0100)]
Add test for scripted service start skip.
Davin McCall [Thu, 14 Jun 2018 09:37:39 +0000 (10:37 +0100)]
Implement "skippable" option for scripted services.
This causes a service start that is skipped via interruption (eg ^C) to
be considered as started for dependency purposes.
Davin McCall [Tue, 12 Jun 2018 17:20:25 +0000 (18:20 +0100)]
TODO: add planned features for next release.
Davin McCall [Fri, 8 Jun 2018 20:55:38 +0000 (21:55 +0100)]
Up version to 0.2.0.
Davin McCall [Fri, 8 Jun 2018 20:04:58 +0000 (21:04 +0100)]
Fix bug causing scripted service shutdown scripts to be run twice.
All tests now passing.
Davin McCall [Fri, 8 Jun 2018 19:06:58 +0000 (20:06 +0100)]
Add another process service test, currently failing.
Davin McCall [Thu, 7 Jun 2018 23:13:13 +0000 (00:13 +0100)]
Don't keep char * from array_string temporary.
The string might not be resolved as a compile-time constant, and the
temporary object may be destroyed before the string within it is used.
Davin McCall [Thu, 7 Jun 2018 22:17:11 +0000 (23:17 +0100)]
array_string: declare 'arr' member as const.
Davin McCall [Thu, 7 Jun 2018 22:13:59 +0000 (23:13 +0100)]
mconfig-gen: generate constexpr declarations.
Davin McCall [Thu, 7 Jun 2018 20:21:47 +0000 (21:21 +0100)]
Fix mconfig.h generation.
Re-work mconfig-gen so that it takes the variables at run-time on the
command line, rather than receiving them as macros at compile time. The
latter makes it impossible to use some values.
Davin McCall [Thu, 7 Jun 2018 18:05:48 +0000 (19:05 +0100)]
Add loading test for environment variable substitution.
Davin McCall [Thu, 7 Jun 2018 17:38:10 +0000 (18:38 +0100)]
Avoid logging service stop after failure to start.
The "FAILED" followed by "STOPPED" is somewhat redundant and arguably
incorrect.
Davin McCall [Tue, 5 Jun 2018 17:37:05 +0000 (18:37 +0100)]
Fix acquire/release counting in some sitations.
In particular, failure to start did not always cause a release as it
should have.
Davin McCall [Tue, 5 Jun 2018 09:12:43 +0000 (10:12 +0100)]
Add service load test.
Davin McCall [Mon, 4 Jun 2018 21:09:02 +0000 (22:09 +0100)]
proctests: add a new test, currently failing.
This also includes more OS abstraction in bp_sys so that we can test
different exit statuses.
Davin McCall [Mon, 4 Jun 2018 09:43:09 +0000 (10:43 +0100)]
Introduce "load-options" setting and "sub-vars" option.
This allows for specifying a service command line with parameters in the
form of $NAME, where NAME is an environment variable. The parameter is
replaced with the contents of the environment variable as a single
value.
Davin McCall [Mon, 21 May 2018 17:28:27 +0000 (18:28 +0100)]
Use control socket path and sbin directory from config.
Use configured paths rather than hardcoded paths for the control socket
(normally /dev/dinitctl) and the sbin directory (/sbin).
Davin McCall [Tue, 15 May 2018 20:36:03 +0000 (21:36 +0100)]
Generate mconfig.h file with selected variables from mconfig.
Davin McCall [Fri, 18 May 2018 18:19:13 +0000 (19:19 +0100)]
Implement a compile-time string manipulation class.
Currently very simple, allows for concatenation only.
Davin McCall [Wed, 16 May 2018 12:31:51 +0000 (13:31 +0100)]
Minor fixes to rootfscheck script.
Davin McCall [Wed, 16 May 2018 12:24:07 +0000 (13:24 +0100)]
shutdown: set passed-via-environment control socket to blocking.
We don't expect non-blocking errors like EAGAIN so we need it in
blocking mode.
Davin McCall [Tue, 15 May 2018 22:43:23 +0000 (23:43 +0100)]
Set main log format earlier.
This is necessary to avoid buffering messages in incorrect format
(without the priority indicator).
Davin McCall [Tue, 15 May 2018 21:23:36 +0000 (22:23 +0100)]
Correct some logic for handling overflow messages in log.
Davin McCall [Tue, 15 May 2018 20:57:58 +0000 (21:57 +0100)]
Install man pages with correct permissions mask.
Davin McCall [Mon, 14 May 2018 20:22:43 +0000 (21:22 +0100)]
Look in multiple directories for service descriptions.
Previously we checked only /etc/dinit.d; now, check /etc/dinit.d,
/usr/local/lib/dinit.d, and /lib/dinit.d, in that order.
Davin McCall [Mon, 14 May 2018 09:24:01 +0000 (10:24 +0100)]
dirload_service_set: add support for multiple service directories.
Davin McCall [Mon, 14 May 2018 09:06:50 +0000 (10:06 +0100)]
Update MacOS build defaults.
Davin McCall [Wed, 25 Apr 2018 08:36:48 +0000 (09:36 +0100)]
Set example filesystem services to have no start timeout.
File system checks take as long as they take; let them run.
Davin McCall [Fri, 6 Apr 2018 21:00:18 +0000 (22:00 +0100)]
Update bundled Dasynq to 1.1.4.
Davin McCall [Fri, 6 Apr 2018 18:25:04 +0000 (19:25 +0100)]
shutdown: push all output through a cyclic buffer.
Push all output, including from subprocesses, through a cyclic
buffer, and discard buffer contents if it cannot be output fast
enough. I.e. shutdown should not hang if the console is blocked
(such as due to a hardware issue with serial console, or user
having pressed ctrl+S to stop console output on a VT).
Davin McCall [Thu, 22 Mar 2018 18:26:49 +0000 (18:26 +0000)]
Update COMPARISON, TODO.
Shuffle around a few TODO items.
Davin McCall [Tue, 20 Mar 2018 20:40:25 +0000 (20:40 +0000)]
Update version number to 0.1.1.
Davin McCall [Tue, 20 Mar 2018 20:39:04 +0000 (20:39 +0000)]
Update man page with --log-file documentation.
Davin McCall [Tue, 20 Mar 2018 19:01:02 +0000 (19:01 +0000)]
Add --log-file (-l) option to specify logging to file.
The default is to log to the syslog facility. Also in this commit: start
logging from the beginning if not system init, rather than waiting for
logging service.
Davin McCall [Tue, 20 Mar 2018 18:28:40 +0000 (18:28 +0000)]
Make "syslog" formatting of main log entries optional.
Davin McCall [Tue, 20 Mar 2018 09:58:32 +0000 (09:58 +0000)]
load service: simplify conditional in while loop.
Davin McCall [Tue, 20 Mar 2018 09:54:23 +0000 (09:54 +0000)]
tests: add a new test.
Davin McCall [Tue, 20 Mar 2018 00:11:17 +0000 (00:11 +0000)]
Fix issue with incorrect acquisition counts with waits_for dependencies.
Davin McCall [Mon, 19 Mar 2018 22:59:32 +0000 (22:59 +0000)]
service stopped(): release console if have_console is set.
Previously relied on onstart_flags.runs_on_console, which should also be
accurate, but seeing as we have a flag available with the exact
semantics guaranteed then we should use that.
Davin McCall [Mon, 19 Mar 2018 22:57:00 +0000 (22:57 +0000)]
Handle startup timer expiry using failed_to_start.
Reduces code duplication, and probably handles some things that were not
being handled correctly.
Davin McCall [Mon, 19 Mar 2018 22:45:17 +0000 (22:45 +0000)]
Make sure listeners are notified of start cancellation.
Start cancellation was only working for process-based services.
Davin McCall [Mon, 19 Mar 2018 19:08:49 +0000 (19:08 +0000)]
Log service start timeout.
Davin McCall [Mon, 19 Mar 2018 19:08:12 +0000 (19:08 +0000)]
Add a test, adjustments to other tests.
Davin McCall [Mon, 19 Mar 2018 19:01:56 +0000 (19:01 +0000)]
When stopping dependents, also release waits_for/soft dependencies.
waits for / soft dependencies should treat a start failure or other
dependency stop as a prompt to check for start conditions having been
met, after the dependency link is unchained.
Davin McCall [Sun, 4 Mar 2018 02:28:54 +0000 (02:28 +0000)]
Minor fixes to README.
Davin McCall [Thu, 1 Mar 2018 19:59:20 +0000 (19:59 +0000)]
Bump version to 0.1.0.
Davin McCall [Wed, 28 Feb 2018 16:04:43 +0000 (16:04 +0000)]
Update COMPARISON with other systems.
Davin McCall [Wed, 28 Feb 2018 15:29:40 +0000 (15:29 +0000)]
tests: build fix for OpenBSD.