Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 0/8] init scripts: rewrite S01logging
Date: Tue, 10 Jul 2018 23:04:05 +0200	[thread overview]
Message-ID: <20180710210405.GA2555@scaer> (raw)
In-Reply-To: <20180709033134.22175-1-casantos@datacom.com.br>

Carlos, All,

On 2018-07-09 00:31 -0300, Carlos Santos spake thusly:
> Continuing our effort to improve daemon startup scripts. This series
> focuses on S01logging, which starts the logging daemon.

Nice to see someone tackling the issue! :-)

I don't have much more to say than what Arnout and Nicolas already said,
i.e.:

  - use if-then-else blocks rather than the {}||{} construct;

  - allow restarting a stopped process;

  - restart and reload can be different: restart is stop-n-start, while
    reload should just instruct the daemon to reload its configuration.
    IFF the dameon does not handle reload, then reload should behave
    the same as restart;

  - starting an already started daemon is a noop, but is not an error;

  - don't try to protexct against stupidity in configuration files:
    users are expected to know what they will set in there. If they
    don't, they'll learn;

> Common features
> are:
> 
> - Indent with tabs, not spaces.
> - Implement start, stop, restart and reload as functions.
> - Use start-stop-daemon.
> - Use logic operators && and || to detect/handle errors, which provides
>   better readability than nested if/then/else blocks.
> - Use brackets for blocking, also improving readability.

Sorry, not that last two. if-then-else are very readable, and they are
very well knwon; while the {} || {} && {} constrcut is a bit convoluted
(that comment coming from the guy who's known for writing a *lot* of
big and complex shell scripts).

> - Correctly Detect and report start/stop/restart/reload errors.
> - Use separate functions for restart and reload; report the result of
>   the whole operations instead of invoking stop, start and report OK
>   twice.

I prefer that restart is an actual stop followed by an actual start. For
reload, it should, when supoprted by the daemon, ask it to just reload
its configuration' otherwise, reload is a restart.

Regards,
Yann E. MORIN.

> - Support a configuration file at /etc/default (example files for each
>   package will be added in separate patches).
> - Support a configuration variable that completely disables the service
>   and issues a warning message on any invocation.
> 
> The configuration files are provided mostly as examples for init script
> authors but they also contain information about options that cannot be
> used when running in background. 
> 
> All files implement the following FSM:
> 
>                                                   +---------+
>              +-------stop--------+   +----(1s)----| stopped |
>              |                   |   |            |   (*)   |
>              |                   |   |            +---------+
>              v                   |   v                 ^
>       +---------+             +---------+              |
>       |         |             |         |----restart---+
>       | STOPPED |----start--->| STARTED |
>       |         |             |         |----reload----+
>       +---------+             +---------+              |
>                                      ^                 |
>                                      |                 |
>                                      +-----------------+
> 
> * "stopped" is an intermediary state that transitions automatically to
>   STARTED after one second.
> 
> Attempts to do invalid transitions (e.g. start from STARTED state) will
> fail. That's why we don't pass -o (--oknodo) to start-stop-daemon. This
> changes the script behavior, in some cases, while in other cases just
> reports errors that were ignored previously.
> 
> We could interpret "start from STARTED" as "do nothing, ok" to match
> systemctl (systemd). Leave such change for later, however, since the
> current behavior matches most existing scripts.
> 
> Carlos Santos (8):
>   busybox: update S01logging
>   busybox: add logging configuration file
>   rsyslog: update S01logging
>   rsyslog: add logging configuration file
>   sysklogd: update S01logging
>   sysklogd: add logging configuration file
>   rsyslog: update S01logging
>   syslog-ng: add logging configuration file
> 
>  package/busybox/S01logging            | 87 +++++++++++++++++--------
>  package/busybox/busybox.mk            |  2 +
>  package/busybox/etc.default.logging   | 13 ++++
>  package/rsyslog/S01logging            | 74 ++++++++++++++-------
>  package/rsyslog/etc.default.logging   | 14 ++++
>  package/rsyslog/rsyslog.mk            |  2 +
>  package/sysklogd/S01logging           | 93 +++++++++++++++++++++------
>  package/sysklogd/etc.default.logging  | 25 +++++++
>  package/sysklogd/sysklogd.mk          |  2 +
>  package/syslog-ng/S01logging          | 83 +++++++++++++++++-------
>  package/syslog-ng/etc.default.logging | 14 ++++
>  package/syslog-ng/syslog-ng.mk        |  2 +
>  12 files changed, 316 insertions(+), 95 deletions(-)
>  create mode 100644 package/busybox/etc.default.logging
>  create mode 100644 package/rsyslog/etc.default.logging
>  create mode 100644 package/sysklogd/etc.default.logging
>  create mode 100644 package/syslog-ng/etc.default.logging
> 
> -- 
> 2.17.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

      parent reply	other threads:[~2018-07-10 21:04 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-09  3:31 [Buildroot] [PATCH 0/8] init scripts: rewrite S01logging Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 1/8] busybox: update S01logging Carlos Santos
2018-07-09  8:33   ` Nicolas Cavallari
2018-07-09 21:23     ` Arnout Vandecappelle
2018-07-09 21:35   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 2/8] busybox: add logging configuration file Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 3/8] rsyslog: update S01logging Carlos Santos
2018-07-09  8:03   ` Nicolas Cavallari
2018-07-09 23:31     ` Carlos Santos
2018-07-10  7:58       ` Arnout Vandecappelle
2018-07-09 21:52   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 4/8] rsyslog: add logging configuration file Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 5/8] sysklogd: update S01logging Carlos Santos
2018-07-09 22:00   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 6/8] sysklogd: add logging configuration file Carlos Santos
2018-07-09 22:04   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 7/8] rsyslog: update S01logging Carlos Santos
2018-07-09 22:05   ` Arnout Vandecappelle
2018-07-09 23:37     ` Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 8/8] syslog-ng: add logging configuration file Carlos Santos
2018-07-09 21:09 ` [Buildroot] [PATCH 0/8] init scripts: rewrite S01logging Arnout Vandecappelle
2018-07-10 21:04 ` Yann E. MORIN [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180710210405.GA2555@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox