From 1e3982ebb17956daeaae322c485183135fc57b26 Mon Sep 17 00:00:00 2001
From: Laurent Bercot
Date: Sat, 4 Nov 2017 14:50:10 +0000
Subject: Update documentation, prepare for 0.4.0.0
---
doc/index.html | 4 ++--
doc/s6-rc-compile.html | 47 +++++++++++++++++++++++++++++++++--------------
doc/upgrade.html | 17 +++++++++++++++++
3 files changed, 52 insertions(+), 16 deletions(-)
(limited to 'doc')
diff --git a/doc/index.html b/doc/index.html
index 544fa85..5f1b401 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -48,7 +48,7 @@ scripts are also run in a controlled environment.
A POSIX-compliant system with a standard C development environment
GNU make, version 3.81 or later
skalibs version
-2.6.0.1 or later
+2.6.1.0 or later
execline version
2.3.0.3 or later
s6 version
@@ -66,7 +66,7 @@ scripts are also run in a controlled environment.
Alternatively, you can checkout a copy of the
s6-rc
git repository:
diff --git a/doc/s6-rc-compile.html b/doc/s6-rc-compile.html
index 14bec2f..4065689 100644
--- a/doc/s6-rc-compile.html
+++ b/doc/s6-rc-compile.html
@@ -287,19 +287,20 @@ be copied verbatim into the generated service directory.
it must contain the name of another longrun service servicelog;
service is then declared as a producer for servicelog.
servicelog must also, in its own definition directory,
-be declared as a consumer for service.
+be declared as a consumer for at least service.
An optional file named consumer-for. If this file exists, then
-it must contain the name of another longrun service serviceprod;
-service is then declared as a consumer for serviceprod.
-serviceprod must also, in its own definition directory,
+it must contain a list of longrun services serviceprod...:
+service is then declared as a consumer for all the services
+in serviceprod. Each of those services
+must also, in its own definition directory,
be declared as a producer for service.
An optional file named pipeline-name. If this file exists
-along with a producer-for file, and there is no
-consumer-for file, then a bundle will automatically be
+along with a consumer-for file, and there is no
+producer-for file, then a bundle will automatically be
created, named with the content of the pipeline-name file, and
-containing all the services in the pipeline that starts at service.
+containing all the services in the pipeline that ends at service.
See below for more about pipelining. The pipeline-name file
-is ignored if service is not a first producer.
+is ignored if service is not a last consumer.
@@ -342,12 +343,12 @@ indefinite number of longrun services this way.
- - The first producer declares its direct consumer in a producer-for file.
- - Intermediate services declare both their direct producer in their
+
- A producer declares its direct consumer in a producer-for file.
+ - Intermediate services declare both their direct producers in their
consumer-for file, and their direct consumer in their
producer-for file.
- - The last consumer only declares its direct producer in a consumer-for file.
- - The first producer may declare a name for the whole pipeline, in
+
- The last consumer only declares its direct producers in a consumer-for file.
+ - The last consumer may also declare a name for the whole pipeline, in
its pipeline-name file. If it does so, then a bundle is automatically
created with
the given name, and it contains all the services in the pipeline.
@@ -359,15 +360,33 @@ so that every producer's stdout is connected to its consumer's stdin, and
that the pipes are not broken whenever one element in the chain dies.
+
+ A service can only be declared as a producer for one other
+services, but it can be declared as a consumer for several other
+services: the consumer-for can have several lines. This
+means that one service can only send its output to one consumer, but
+it can read its input from several producers. If there are several
+producers to a service, they will all write to the same Unix pipe
+that the service reads.
+
+
+
+ This means that what s6-rc calls pipelines are really
+funnels: you can collapse multiple data streams into
+a single data stream, at every step of your processing chain.
+The pipeline terminology remains for history reasons:
+previous versions of s6-rc could not handle multiple producers.
+
+
s6-rc-compile checks for pipeline consistency. It must see a
-producer-for file in the producer's definition that is consistent
+producer-for file in the producers' definition that is consistent
with the consumer-for file in the consumer's definition. It will
detect and reject cycles as well as collisions.
- The pipe linking a producer with a consumer is created and stored at
+ The pipe linking a set of producers with a consumer is created and stored at
run-time in a
s6-fdholder-daemon
instance managed by an automatically generated longrun service named
diff --git a/doc/upgrade.html b/doc/upgrade.html
index fa441d1..444b763 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -30,6 +30,23 @@ minor and bugfix version changes.
What has changed in s6-rc
+ in 0.4.0.0
+
+
+ - skalibs
+dependency bumped to 2.6.1.0.
+ - s6-rc-compile now
+accepts multiple lines in a consumer-for file: a
+longrun can now have multiple producers, which means that
+pipelines are really funnels. The compiled databases are not
+compatible with previous versions, and the source databases
+are not compatible either, because the
+pipeline-name file must now be present in the definition of
+the final consumer of a pipeline, not in the definition of a first
+producer (to avoid ambiguity). Edit your databases and recompile
+them.
+
+
in 0.3.0.0