Davin McCall [Wed, 1 Jan 2020 03:35:48 +0000 (13:35 +1000)]
Update TODO
Davin McCall [Wed, 1 Jan 2020 01:00:54 +0000 (11:00 +1000)]
Fix typo and use of hard-coded value
Davin McCall [Wed, 1 Jan 2020 01:00:06 +0000 (11:00 +1000)]
Add another log subsystem test
Davin McCall [Wed, 1 Jan 2020 00:53:13 +0000 (10:53 +1000)]
Improve unit test infrastructure - allow control of write()
In the unit test infrastructure, allow behaviour of the write() call
(i.e. bp_sys::write()) to be overridden with a custom handler.
Davin McCall [Mon, 30 Dec 2019 22:28:35 +0000 (08:28 +1000)]
dinitcheck: fix nullptr deref if service can't be loaded
Davin McCall [Sun, 29 Dec 2019 06:05:41 +0000 (16:05 +1000)]
Add a simple logging test
Davin McCall [Sun, 29 Dec 2019 04:17:09 +0000 (14:17 +1000)]
Use bp_sys aliases to write from log
This allows for future unit testing of the log infrastructure.
Davin McCall [Sun, 29 Dec 2019 04:16:12 +0000 (14:16 +1000)]
Mark main log closed on write failure
Record the main log as being closed (external_log_open false) if there
is a write failure while trying to write the log buffer. This allows the
log to be re-opened by restarting the logging service.
Also we avoid waiting for the log buffer to flush if it has failed.
Davin McCall [Thu, 26 Dec 2019 05:07:18 +0000 (05:07 +0000)]
dinitcheck: check for missing service command
Davin McCall [Thu, 26 Dec 2019 05:03:29 +0000 (05:03 +0000)]
Add int. test for failing to load service
Davin McCall [Thu, 26 Dec 2019 05:00:30 +0000 (05:00 +0000)]
Flush main log (as well) before exit
The console log is flushed before exit (with a timeout of 5 seconds),
but the primary log was not flushed until now.
Davin McCall [Thu, 26 Dec 2019 04:15:27 +0000 (04:15 +0000)]
Fix issue when service fails to load
Introduced during earlier refactoring.
Davin McCall [Wed, 25 Dec 2019 07:42:28 +0000 (07:42 +0000)]
Fix error messages from proc_service launch stages
Davin McCall [Mon, 23 Dec 2019 05:19:29 +0000 (15:19 +1000)]
BUILD: explain the USE_UTMPX option a little better
Davin McCall [Mon, 23 Dec 2019 03:44:22 +0000 (13:44 +1000)]
query_name: always return with NAK if service handle invalid
Existing code looks like a copy-pasto: returns ACK (not NAK?) and falls
through to a potential null-pointer dereference if the service handle
can't be found.
Davin McCall [Mon, 23 Dec 2019 02:57:49 +0000 (12:57 +1000)]
Add SHUTDOWN_PREFIX build variable, controls name of shutdown executable
Useful for installing Dinit alongside eg Sys V init.
Davin McCall [Mon, 23 Dec 2019 01:03:12 +0000 (11:03 +1000)]
Avoid building constant strings on the stack
In a few places cts::literal was used locally within a function,
resulting in the (constexpr) result string object being allocated on the
stack. Move these to namespace scope.
Davin McCall [Sun, 22 Dec 2019 12:59:35 +0000 (22:59 +1000)]
Add dinitcheck(8) to dinit.8 "see also" section
Davin McCall [Sun, 22 Dec 2019 10:28:42 +0000 (20:28 +1000)]
Updated bundled Dasynq to 1.1.7
This fixes a slow memory leak.
Davin McCall [Sun, 22 Dec 2019 10:25:05 +0000 (20:25 +1000)]
Fix --help option in dinitcheck
Davin McCall [Sat, 14 Dec 2019 08:49:52 +0000 (18:49 +1000)]
Update COMPARISON; give more details of Dinit up-front
Davin McCall [Fri, 13 Dec 2019 10:05:47 +0000 (20:05 +1000)]
Avoid copying string arguments to log functions (always pass by ref)
Davin McCall [Sun, 8 Dec 2019 09:09:48 +0000 (19:09 +1000)]
Bump version.
Davin McCall [Sun, 8 Dec 2019 08:52:12 +0000 (18:52 +1000)]
dinitctl: make unload/reload respect --quiet
Davin McCall [Sun, 8 Dec 2019 08:47:44 +0000 (18:47 +1000)]
dinitcheck: output overall result after checks complete
Davin McCall [Sun, 8 Dec 2019 08:23:00 +0000 (18:23 +1000)]
Push some TODO items back to 0.9+
We already have two major features in 0.8: dinitcheck, and dinitctl
reload; that's enough for a new version.
Davin McCall [Sun, 8 Dec 2019 07:45:30 +0000 (17:45 +1000)]
dinitctl man: note that can't add non-running dep to started service
Davin McCall [Sun, 8 Dec 2019 07:29:36 +0000 (17:29 +1000)]
Clean up clang warnings
Davin McCall [Sun, 8 Dec 2019 07:26:08 +0000 (17:26 +1000)]
Update default build configs
Davin McCall [Sun, 8 Dec 2019 03:43:59 +0000 (03:43 +0000)]
Refactoring: load new / reload existing service in single function
Loading a new service and reloading a service share a lot of common
code, so refactor them into a single function.
Davin McCall [Sun, 8 Dec 2019 00:42:26 +0000 (00:42 +0000)]
Fix IGR makefile (spaces to tab)
Davin McCall [Thu, 5 Dec 2019 13:47:03 +0000 (23:47 +1000)]
Update TODO, minor updates to COMPARISON/DESIGN
Davin McCall [Thu, 5 Dec 2019 13:45:45 +0000 (23:45 +1000)]
Fix reload of stopped service
Davin McCall [Thu, 5 Dec 2019 13:45:16 +0000 (23:45 +1000)]
Add 2nd reload test
Davin McCall [Wed, 4 Dec 2019 12:19:19 +0000 (22:19 +1000)]
Set target state to STOPPED when stop is issued
Davin McCall [Tue, 3 Dec 2019 11:40:18 +0000 (21:40 +1000)]
Add integration test for reload
Davin McCall [Mon, 2 Dec 2019 11:13:32 +0000 (21:13 +1000)]
Implement additional checks for reload
The settings/flags inittab-id, inittab-line, shares-console,
runs-on-console, and pid-file cannot be changed for a running service.
Davin McCall [Sun, 1 Dec 2019 05:55:10 +0000 (15:55 +1000)]
Improve some dinitctl error messages
Davin McCall [Sun, 1 Dec 2019 05:07:44 +0000 (15:07 +1000)]
Remove unneeded release
Davin McCall [Sun, 1 Dec 2019 04:46:27 +0000 (14:46 +1000)]
Implement reload command for dinitctl
Davin McCall [Sun, 1 Dec 2019 02:44:45 +0000 (12:44 +1000)]
Implement control protocol for reloading services
Davin McCall [Sun, 1 Dec 2019 01:27:12 +0000 (11:27 +1000)]
Initial implementation of service reloading
Davin McCall [Fri, 22 Nov 2019 14:40:32 +0000 (14:40 +0000)]
dinitcheck: return EXIT_FAILURE if problem found
Davin McCall [Fri, 22 Nov 2019 13:29:57 +0000 (13:29 +0000)]
Integration test for dinitcheck dependency cycles detection
Davin McCall [Fri, 22 Nov 2019 13:19:42 +0000 (13:19 +0000)]
dinitcheck: check for and report dependency cycles
Davin McCall [Thu, 21 Nov 2019 18:44:14 +0000 (18:44 +0000)]
Fix inconsistencies/typos in help text, man pages
Davin McCall [Thu, 21 Nov 2019 18:43:48 +0000 (18:43 +0000)]
dinitcheck: support specifying services to check on command line
Davin McCall [Thu, 21 Nov 2019 16:51:37 +0000 (16:51 +0000)]
Initial manpage for dinitcheck
Davin McCall [Thu, 21 Nov 2019 16:28:28 +0000 (16:28 +0000)]
Update TODO
Davin McCall [Thu, 21 Nov 2019 16:28:12 +0000 (16:28 +0000)]
Install dinitcheck on install, clean binary on clean
Davin McCall [Thu, 21 Nov 2019 16:24:21 +0000 (16:24 +0000)]
Remove accidental marker comment
Davin McCall [Thu, 21 Nov 2019 12:09:43 +0000 (12:09 +0000)]
Add integration test for basic dinitcheck functionality
Davin McCall [Thu, 21 Nov 2019 12:06:15 +0000 (12:06 +0000)]
dinitcheck: use previously factored-out parameter processing
dinitcheck now shares parameter processing with dinit, providing
consistent error messages and parsing.
Davin McCall [Thu, 21 Nov 2019 10:41:34 +0000 (10:41 +0000)]
Factor out service parameter processing
Factor service parameter processing into a template method, to enable
sharing (later) between load_service in dinit and dinitcheck.
Davin McCall [Tue, 19 Nov 2019 18:10:27 +0000 (18:10 +0000)]
Service description loading: improve error messages
Include parameter name and improve consistency in error messages when
parsing service descriptions.
Davin McCall [Sun, 17 Nov 2019 18:39:20 +0000 (18:39 +0000)]
dinitcheck: fix checking of dependencies
Davin McCall [Fri, 15 Nov 2019 19:39:27 +0000 (19:39 +0000)]
Use common option processing for dinit/dinitcheck service dir
Davin McCall [Sat, 9 Nov 2019 07:03:15 +0000 (17:03 +1000)]
Factor out service directory option processing
Service directory options need to be processed/handled by dinit and by
dinitcheck, so factor out the processing into a separate module.
Davin McCall [Sun, 6 Oct 2019 01:58:55 +0000 (02:58 +0100)]
Fix typo in comment
Davin McCall [Sun, 6 Oct 2019 01:58:38 +0000 (02:58 +0100)]
dinitcheck: process all dependencies
Davin McCall [Sat, 21 Sep 2019 01:35:25 +0000 (02:35 +0100)]
Don't enable reporting exceptions on failbit (only to then disable).
Davin McCall [Sat, 10 Aug 2019 04:20:40 +0000 (14:20 +1000)]
Beginnings of "dinitcheck" utility
This will be a utility to check service configuration for errors/lint.
Davin McCall [Mon, 16 Sep 2019 09:02:57 +0000 (19:02 +1000)]
Convert system_error to service_load_exc in load_service.
Davin McCall [Sat, 10 Aug 2019 04:09:31 +0000 (14:09 +1000)]
More re-wording of "dinit as init" Linux documentation
Davin McCall [Tue, 10 Sep 2019 21:57:39 +0000 (07:57 +1000)]
Restore -s option to dinitctl
This is hardly needed since it is the default if run as root now, but is
nice to have for backwards compatibility / overriding -u option.
Davin McCall [Tue, 10 Sep 2019 21:30:14 +0000 (07:30 +1000)]
Update gitignore
Davin McCall [Tue, 10 Sep 2019 21:28:27 +0000 (07:28 +1000)]
Remove integration test output
Davin McCall [Mon, 9 Sep 2019 21:21:09 +0000 (07:21 +1000)]
Merge pull request #22 from travankor/makefile
Fix missing dependencies on mconfig.h in Makefile.
travankor [Mon, 9 Sep 2019 06:22:29 +0000 (23:22 -0700)]
Fix makefile.
Davin McCall [Mon, 9 Sep 2019 12:05:05 +0000 (22:05 +1000)]
Merge pull request #23 from travankor/doc-fixes
Fix typo in dinitctl man page. Document restart for help option.
travankor [Sat, 7 Sep 2019 11:28:01 +0000 (04:28 -0700)]
Fix typo in dinitctl man page. Document restart for help option.
Davin McCall [Tue, 3 Sep 2019 12:15:04 +0000 (22:15 +1000)]
Merge pull request #21 from fpoussin/contrib
Adding fpoussin to contributors
Fabien Poussin [Tue, 3 Sep 2019 11:19:36 +0000 (13:19 +0200)]
Adding myself to contributors
Davin McCall [Tue, 3 Sep 2019 10:19:09 +0000 (20:19 +1000)]
Merge pull request #20 from fpoussin/root
Adding root check on default control socket
Closes #18
Fabien Poussin [Tue, 3 Sep 2019 09:09:01 +0000 (11:09 +0200)]
Updated documentation for the new user flag
Fabien Poussin [Tue, 3 Sep 2019 09:08:37 +0000 (11:08 +0200)]
Replaced system flag with user flag
Davin McCall [Mon, 26 Aug 2019 12:16:25 +0000 (22:16 +1000)]
Merge pull request #19 from fpoussin/modules
Kernel modules script
Fabien Poussin [Mon, 26 Aug 2019 10:28:44 +0000 (12:28 +0200)]
Adding boot link for modules
Fabien Poussin [Mon, 26 Aug 2019 10:25:52 +0000 (12:25 +0200)]
Adding kernel modules script
Davin McCall [Fri, 9 Aug 2019 11:52:25 +0000 (21:52 +1000)]
Up version to 0.7.0.
Davin McCall [Thu, 8 Aug 2019 13:07:31 +0000 (23:07 +1000)]
Some documentation updates.
Davin McCall [Thu, 8 Aug 2019 12:18:26 +0000 (22:18 +1000)]
Add integration test for service "restart" function.
Davin McCall [Thu, 8 Aug 2019 11:53:32 +0000 (21:53 +1000)]
Update man page for revised restart/wake semantics.
Davin McCall [Thu, 8 Aug 2019 11:48:33 +0000 (21:48 +1000)]
Change semantics of "wake" command.
"Wake" now re-attaches dependencies (from the dependents of the named
service). You can no longer wake a service if it has no active
dependents.
Davin McCall [Wed, 7 Aug 2019 11:53:16 +0000 (21:53 +1000)]
Avoid signed-unsigned comparison warning.
Davin McCall [Wed, 7 Aug 2019 11:39:21 +0000 (21:39 +1000)]
dinitctl: update restart handling.
As per changes in dinit daemon/control protocol.
Davin McCall [Wed, 7 Aug 2019 11:04:56 +0000 (21:04 +1000)]
Re-work restart function.
Restart is now always "gentle", i.e. cannot be forced and isn't possible
when dependents (with hard dependency) exist.
Davin McCall [Wed, 7 Aug 2019 10:09:56 +0000 (20:09 +1000)]
Properly issue STARTCANCELLED message if restart is cancelled
Davin McCall [Sun, 4 Aug 2019 04:23:15 +0000 (14:23 +1000)]
Re-work state propogation/transition logic.
This mostly keeps existing behaviour, hopefully making it more
consistent and predictable in other cases, and simplifies the code.
Davin McCall [Wed, 31 Jul 2019 11:21:57 +0000 (21:21 +1000)]
Improve/refactor static_membuf.
Davin McCall [Mon, 29 Jul 2019 10:41:23 +0000 (20:41 +1000)]
Refactor some packet-building for readability and safety
Davin McCall [Sun, 28 Jul 2019 07:09:30 +0000 (17:09 +1000)]
Document dinitctl "restart" command.
Davin McCall [Sun, 28 Jul 2019 05:49:23 +0000 (15:49 +1000)]
Update TODO.
Davin McCall [Sun, 28 Jul 2019 01:50:48 +0000 (11:50 +1000)]
Up version, update NEWS.
Davin McCall [Sat, 27 Jul 2019 12:22:02 +0000 (22:22 +1000)]
stop: if not required, treat stop as full manual stop.
This is needed to properly handle shutdown when a service is alive but
not marked active.
Davin McCall [Sat, 27 Jul 2019 10:45:29 +0000 (20:45 +1000)]
Implement dinitctl restart, addresses #14
Davin McCall [Sat, 27 Jul 2019 07:03:41 +0000 (17:03 +1000)]
Don't add console watcher if not PID 1.
If not PID 1, we don't need to ask for console input. Adding a watcher
fails if we don't have a (suitable) stdin, eg FreeBSD shell if dinit is
run in background.
Davin McCall [Sat, 27 Jul 2019 06:15:09 +0000 (16:15 +1000)]
Update manpage/README for new "dinitctl stop" semantics.
"dinitctl stop" will now issue an error if dependent services would be
forced to stop. The new --force option can be used to force a service
and dependents to stop.
Davin McCall [Sat, 27 Jul 2019 06:03:21 +0000 (16:03 +1000)]
Add integration test for gentle stop/force stop.
Davin McCall [Sat, 27 Jul 2019 05:01:56 +0000 (15:01 +1000)]
Fix a bunch of issues identified by Coverity scan