oweals/dinit.git
4 years agoImprove unit test infrastructure - allow control of write()
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.

4 years agodinitcheck: fix nullptr deref if service can't be loaded
Davin McCall [Mon, 30 Dec 2019 22:28:35 +0000 (08:28 +1000)]
dinitcheck: fix nullptr deref if service can't be loaded

4 years agoAdd a simple logging test development
Davin McCall [Sun, 29 Dec 2019 06:05:41 +0000 (16:05 +1000)]
Add a simple logging test

4 years agoUse bp_sys aliases to write from log
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.

4 years agoMark main log closed on write failure
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.

4 years agodinitcheck: check for missing service command
Davin McCall [Thu, 26 Dec 2019 05:07:18 +0000 (05:07 +0000)]
dinitcheck: check for missing service command

4 years agoAdd int. test for failing to load service
Davin McCall [Thu, 26 Dec 2019 05:03:29 +0000 (05:03 +0000)]
Add int. test for failing to load service

4 years agoFlush main log (as well) before exit
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.

4 years agoFix issue when service fails to load
Davin McCall [Thu, 26 Dec 2019 04:15:27 +0000 (04:15 +0000)]
Fix issue when service fails to load

Introduced during earlier refactoring.

4 years agoFix error messages from proc_service launch stages
Davin McCall [Wed, 25 Dec 2019 07:42:28 +0000 (07:42 +0000)]
Fix error messages from proc_service launch stages

4 years agoBUILD: explain the USE_UTMPX option a little better
Davin McCall [Mon, 23 Dec 2019 05:19:29 +0000 (15:19 +1000)]
BUILD: explain the USE_UTMPX option a little better

4 years agoquery_name: always return with NAK if service handle invalid
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.

4 years agoAdd SHUTDOWN_PREFIX build variable, controls name of shutdown executable
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.

4 years agoAvoid building constant strings on the stack
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.

4 years agoAdd dinitcheck(8) to dinit.8 "see also" section
Davin McCall [Sun, 22 Dec 2019 12:59:35 +0000 (22:59 +1000)]
Add dinitcheck(8) to dinit.8 "see also" section

4 years agoUpdated bundled Dasynq to 1.1.7
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.

4 years agoFix --help option in dinitcheck
Davin McCall [Sun, 22 Dec 2019 10:25:05 +0000 (20:25 +1000)]
Fix --help option in dinitcheck

4 years agoUpdate COMPARISON; give more details of Dinit up-front
Davin McCall [Sat, 14 Dec 2019 08:49:52 +0000 (18:49 +1000)]
Update COMPARISON; give more details of Dinit up-front

4 years agoAvoid copying string arguments to log functions (always pass by ref)
Davin McCall [Fri, 13 Dec 2019 10:05:47 +0000 (20:05 +1000)]
Avoid copying string arguments to log functions (always pass by ref)

4 years agoBump version. v0.8.0
Davin McCall [Sun, 8 Dec 2019 09:09:48 +0000 (19:09 +1000)]
Bump version.

4 years agodinitctl: make unload/reload respect --quiet
Davin McCall [Sun, 8 Dec 2019 08:52:12 +0000 (18:52 +1000)]
dinitctl: make unload/reload respect --quiet

4 years agodinitcheck: output overall result after checks complete
Davin McCall [Sun, 8 Dec 2019 08:47:44 +0000 (18:47 +1000)]
dinitcheck: output overall result after checks complete

4 years agoPush some TODO items back to 0.9+
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.

4 years agodinitctl man: note that can't add non-running dep to started service
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

4 years agoClean up clang warnings
Davin McCall [Sun, 8 Dec 2019 07:29:36 +0000 (17:29 +1000)]
Clean up clang warnings

4 years agoUpdate default build configs
Davin McCall [Sun, 8 Dec 2019 07:26:08 +0000 (17:26 +1000)]
Update default build configs

4 years agoRefactoring: load new / reload existing service in single function
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.

4 years agoFix IGR makefile (spaces to tab)
Davin McCall [Sun, 8 Dec 2019 00:42:26 +0000 (00:42 +0000)]
Fix IGR makefile (spaces to tab)

4 years agoUpdate TODO, minor updates to COMPARISON/DESIGN
Davin McCall [Thu, 5 Dec 2019 13:47:03 +0000 (23:47 +1000)]
Update TODO, minor updates to COMPARISON/DESIGN

4 years agoFix reload of stopped service
Davin McCall [Thu, 5 Dec 2019 13:45:45 +0000 (23:45 +1000)]
Fix reload of stopped service

4 years agoAdd 2nd reload test
Davin McCall [Thu, 5 Dec 2019 13:45:16 +0000 (23:45 +1000)]
Add 2nd reload test

4 years agoSet target state to STOPPED when stop is issued
Davin McCall [Wed, 4 Dec 2019 12:19:19 +0000 (22:19 +1000)]
Set target state to STOPPED when stop is issued

4 years agoAdd integration test for reload
Davin McCall [Tue, 3 Dec 2019 11:40:18 +0000 (21:40 +1000)]
Add integration test for reload

4 years agoImplement additional checks 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.

4 years agoImprove some dinitctl error messages
Davin McCall [Sun, 1 Dec 2019 05:55:10 +0000 (15:55 +1000)]
Improve some dinitctl error messages

4 years agoRemove unneeded release
Davin McCall [Sun, 1 Dec 2019 05:07:44 +0000 (15:07 +1000)]
Remove unneeded release

4 years agoImplement reload command for dinitctl
Davin McCall [Sun, 1 Dec 2019 04:46:27 +0000 (14:46 +1000)]
Implement reload command for dinitctl

4 years agoImplement control protocol for reloading services
Davin McCall [Sun, 1 Dec 2019 02:44:45 +0000 (12:44 +1000)]
Implement control protocol for reloading services

4 years agoInitial implementation of service reloading
Davin McCall [Sun, 1 Dec 2019 01:27:12 +0000 (11:27 +1000)]
Initial implementation of service reloading

5 years agodinitcheck: return EXIT_FAILURE if problem found
Davin McCall [Fri, 22 Nov 2019 14:40:32 +0000 (14:40 +0000)]
dinitcheck: return EXIT_FAILURE if problem found

5 years agoIntegration test for dinitcheck dependency cycles detection
Davin McCall [Fri, 22 Nov 2019 13:29:57 +0000 (13:29 +0000)]
Integration test for dinitcheck dependency cycles detection

5 years agodinitcheck: check for and report dependency cycles
Davin McCall [Fri, 22 Nov 2019 13:19:42 +0000 (13:19 +0000)]
dinitcheck: check for and report dependency cycles

5 years agoFix inconsistencies/typos in help text, man pages
Davin McCall [Thu, 21 Nov 2019 18:44:14 +0000 (18:44 +0000)]
Fix inconsistencies/typos in help text, man pages

5 years agodinitcheck: support specifying services to check on command line
Davin McCall [Thu, 21 Nov 2019 18:43:48 +0000 (18:43 +0000)]
dinitcheck: support specifying services to check on command line

5 years agoInitial manpage for dinitcheck
Davin McCall [Thu, 21 Nov 2019 16:51:37 +0000 (16:51 +0000)]
Initial manpage for dinitcheck

5 years agoUpdate TODO
Davin McCall [Thu, 21 Nov 2019 16:28:28 +0000 (16:28 +0000)]
Update TODO

5 years agoInstall dinitcheck on install, clean binary on clean
Davin McCall [Thu, 21 Nov 2019 16:28:12 +0000 (16:28 +0000)]
Install dinitcheck on install, clean binary on clean

5 years agoRemove accidental marker comment
Davin McCall [Thu, 21 Nov 2019 16:24:21 +0000 (16:24 +0000)]
Remove accidental marker comment

5 years agoAdd integration test for basic dinitcheck functionality
Davin McCall [Thu, 21 Nov 2019 12:09:43 +0000 (12:09 +0000)]
Add integration test for basic dinitcheck functionality

5 years agodinitcheck: use previously factored-out parameter processing
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.

5 years agoFactor out service parameter processing
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.

5 years agoService description loading: improve error messages
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.

5 years agodinitcheck: fix checking of dependencies
Davin McCall [Sun, 17 Nov 2019 18:39:20 +0000 (18:39 +0000)]
dinitcheck: fix checking of dependencies

5 years agoUse common option processing for dinit/dinitcheck service dir
Davin McCall [Fri, 15 Nov 2019 19:39:27 +0000 (19:39 +0000)]
Use common option processing for dinit/dinitcheck service dir

5 years agoFactor out service directory option processing
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.

5 years agoFix typo in comment
Davin McCall [Sun, 6 Oct 2019 01:58:55 +0000 (02:58 +0100)]
Fix typo in comment

5 years agodinitcheck: process all dependencies
Davin McCall [Sun, 6 Oct 2019 01:58:38 +0000 (02:58 +0100)]
dinitcheck: process all dependencies

5 years agoDon't enable reporting exceptions on failbit (only to then disable).
Davin McCall [Sat, 21 Sep 2019 01:35:25 +0000 (02:35 +0100)]
Don't enable reporting exceptions on failbit (only to then disable).

5 years agoBeginnings of "dinitcheck" utility
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.

5 years agoConvert system_error to service_load_exc in load_service.
Davin McCall [Mon, 16 Sep 2019 09:02:57 +0000 (19:02 +1000)]
Convert system_error to service_load_exc in load_service.

5 years agoMore re-wording of "dinit as init" Linux documentation
Davin McCall [Sat, 10 Aug 2019 04:09:31 +0000 (14:09 +1000)]
More re-wording of "dinit as init" Linux documentation

5 years agoRestore -s option to dinitctl
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.

5 years agoUpdate gitignore
Davin McCall [Tue, 10 Sep 2019 21:30:14 +0000 (07:30 +1000)]
Update gitignore

5 years agoRemove integration test output
Davin McCall [Tue, 10 Sep 2019 21:28:27 +0000 (07:28 +1000)]
Remove integration test output

5 years agoMerge pull request #22 from travankor/makefile
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.

5 years agoFix makefile. 22/head
travankor [Mon, 9 Sep 2019 06:22:29 +0000 (23:22 -0700)]
Fix makefile.

5 years agoMerge pull request #23 from travankor/doc-fixes
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.

5 years agoFix typo in dinitctl man page. Document restart for help option. 23/head
travankor [Sat, 7 Sep 2019 11:28:01 +0000 (04:28 -0700)]
Fix typo in dinitctl man page. Document restart for help option.

5 years agoMerge pull request #21 from fpoussin/contrib
Davin McCall [Tue, 3 Sep 2019 12:15:04 +0000 (22:15 +1000)]
Merge pull request #21 from fpoussin/contrib

Adding fpoussin to contributors

5 years agoAdding myself to contributors 21/head
Fabien Poussin [Tue, 3 Sep 2019 11:19:36 +0000 (13:19 +0200)]
Adding myself to contributors

5 years agoMerge pull request #20 from fpoussin/root
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

5 years agoUpdated documentation for the new user flag 20/head
Fabien Poussin [Tue, 3 Sep 2019 09:09:01 +0000 (11:09 +0200)]
Updated documentation for the new user flag

5 years agoReplaced system flag with user flag
Fabien Poussin [Tue, 3 Sep 2019 09:08:37 +0000 (11:08 +0200)]
Replaced system flag with user flag

5 years agoMerge pull request #19 from fpoussin/modules
Davin McCall [Mon, 26 Aug 2019 12:16:25 +0000 (22:16 +1000)]
Merge pull request #19 from fpoussin/modules

Kernel modules script

5 years agoAdding boot link for modules 19/head
Fabien Poussin [Mon, 26 Aug 2019 10:28:44 +0000 (12:28 +0200)]
Adding boot link for modules

5 years agoAdding kernel modules script
Fabien Poussin [Mon, 26 Aug 2019 10:25:52 +0000 (12:25 +0200)]
Adding kernel modules script

5 years agoUp version to 0.7.0. v0.7.0
Davin McCall [Fri, 9 Aug 2019 11:52:25 +0000 (21:52 +1000)]
Up version to 0.7.0.

5 years agoSome documentation updates.
Davin McCall [Thu, 8 Aug 2019 13:07:31 +0000 (23:07 +1000)]
Some documentation updates.

5 years agoAdd integration test for service "restart" function.
Davin McCall [Thu, 8 Aug 2019 12:18:26 +0000 (22:18 +1000)]
Add integration test for service "restart" function.

5 years agoUpdate man page for revised restart/wake semantics.
Davin McCall [Thu, 8 Aug 2019 11:53:32 +0000 (21:53 +1000)]
Update man page for revised restart/wake semantics.

5 years agoChange semantics of "wake" command.
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.

5 years agoAvoid signed-unsigned comparison warning.
Davin McCall [Wed, 7 Aug 2019 11:53:16 +0000 (21:53 +1000)]
Avoid signed-unsigned comparison warning.

5 years agodinitctl: update restart handling.
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.

5 years agoRe-work restart function.
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.

5 years agoProperly issue STARTCANCELLED message if restart is cancelled
Davin McCall [Wed, 7 Aug 2019 10:09:56 +0000 (20:09 +1000)]
Properly issue STARTCANCELLED message if restart is cancelled

5 years agoRe-work state propogation/transition logic.
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.

5 years agoImprove/refactor static_membuf.
Davin McCall [Wed, 31 Jul 2019 11:21:57 +0000 (21:21 +1000)]
Improve/refactor static_membuf.

5 years agoRefactor some packet-building for readability and safety
Davin McCall [Mon, 29 Jul 2019 10:41:23 +0000 (20:41 +1000)]
Refactor some packet-building for readability and safety

5 years agoDocument dinitctl "restart" command.
Davin McCall [Sun, 28 Jul 2019 07:09:30 +0000 (17:09 +1000)]
Document dinitctl "restart" command.

5 years agoUpdate TODO.
Davin McCall [Sun, 28 Jul 2019 05:49:23 +0000 (15:49 +1000)]
Update TODO.

5 years agoUp version, update NEWS.
Davin McCall [Sun, 28 Jul 2019 01:50:48 +0000 (11:50 +1000)]
Up version, update NEWS.

5 years agostop: if not required, treat stop as full manual stop.
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.

5 years agoImplement dinitctl restart, addresses #14
Davin McCall [Sat, 27 Jul 2019 10:45:29 +0000 (20:45 +1000)]
Implement dinitctl restart, addresses #14

5 years agoDon't add console watcher if not PID 1.
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.

5 years agoUpdate manpage/README for new "dinitctl stop" semantics.
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.

5 years agoAdd integration test for gentle stop/force stop.
Davin McCall [Sat, 27 Jul 2019 06:03:21 +0000 (16:03 +1000)]
Add integration test for gentle stop/force stop.

5 years agoFix a bunch of issues identified by Coverity scan
Davin McCall [Sat, 27 Jul 2019 05:01:56 +0000 (15:01 +1000)]
Fix a bunch of issues identified by Coverity scan

5 years agodinitctl: print names of dependents which are inhibiting stop
Davin McCall [Sat, 27 Jul 2019 00:16:53 +0000 (10:16 +1000)]
dinitctl: print names of dependents which are inhibiting stop

5 years agodinitctl stop: gentle by default, implement --force.
Davin McCall [Tue, 23 Jul 2019 11:09:15 +0000 (21:09 +1000)]
dinitctl stop: gentle by default, implement --force.

A "gentle" stop won't stop if dependents will be affected, i.e. it warns
and aborts. The `--force' option (or `-f') can be used to force the
service to stop, which will also cause the dependents to stop.

Also sneak in a bug fix where certain options were not recognised.

5 years agoAdd control protocol query-name test
Davin McCall [Mon, 22 Jul 2019 09:14:45 +0000 (19:14 +1000)]
Add control protocol query-name test