Re: Building lh-bootstrap-master
ImNotPC writes: Ahhh. The docs said make later than 3.81 so I assumed the option had been removed since then and I needed to downgrade. Laurent, Should the lh-bootstrap README be changed so that: GNU make, version 3.81 or later is replaced by something like: GNU make, version 3.81 or later. Versions prior to 4.4, released in October 2022, don't have the `--jobserver-style` option available; in these cases, avoid using the `-j` option, to allow (slow) building. Alexis.
Re: Building lh-bootstrap-master
ImNotPC writes: I'm attempting to build lh-bootstrap-master but make is complaining: make: unrecognized option '--jobserver-style=pipe' Indeed, my version of make doesn't have the --jobserver-style option. If I remove the reference to --jobserver-style option from ./make the package builds without any obvious errors but doesn't appear to be a complete build. My make is GNU Make 4.3 running on a Mageia 8 system. Do I need to downgrade make? Any suggestions? i take it you mean "_upgrade_ make"? According to the GNU Make ChangeLog, the `--jobserver-style` option was added on 2022-08-02, whereas 4.3 was released in January 2020, and 4.4 was released in October 2022. Alexis.
Re: [announce] small skarnet.org Spring 2024 update
"Laurent Bercot" writes: execline-2.9.5.0(minor) s6-2.12.0.4 (release) tipidee-0.0.4.0 (minor) Updates to the *-man-pages collections are now available: * https://git.sr.ht/~flexibeast/s6-man-pages/refs/v2.12.0.4.1 * https://git.sr.ht/~flexibeast/execline-man-pages/refs/v2.9.5.0.1 * https://git.sr.ht/~flexibeast/tipidee-man-pages/refs/v0.0.4.0.1 Alexis.
Re: s6-rc user services on Gentoo
Guillermo writes: 1) Why are you telling dbus-daemon to --fork? That defeats the purpose of service supervision. The service definition for the system-wide message bus that I have on a Gentoo VM of mine with s6 + s6-rc + s6-linux-init uses --nofork. 2) The presence of a notification-fd file tells s6 that dbus-daemon can be somehow coerced into producing an s6-style readiness notification using file descriptor 3 without changing its code, are you sure that's the case with this script? My service definition for the system-wide message bus polls for readiness using s6-notifyoncheck and a dbus-send command... These are both very reasonable questions, with the same answer: i hadn't got as far as actually properly setting up the services yet, but was merely creating 'placeholders' to (as i described in my email to Hoël) get the basic overall setup working. So the `dbus-daemon` command is literally just copy-and-pasted from what i currently use in my .zlogin to start a session bus. My apologies; i should have made this clear in my original post. Re. 1, i'm certainly aware that forking is undesirable in this context; cf. a comment of mine i posted yesterday, the second one in this comments section: https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdSocketActivationThoughts?showcomments#comments Re. 2, off the top of my head, i imagine you're correct; i haven't yet thought about it / looked at it in any detail. Most of the content is from around 2017, a time in which the s6 suite was less known, information in places other than the skarnet.org website was lacking and inaccurate —despite official documentation, while being short and to the point, has always been quite good and complete IMO; it seemed people just didn't bother reading it? [1]—, and there weren't many usage examples around. [1] I think I never said it, but what made me look at s6 for the first time (s6-rc and s6-linux-init didn't exist back then), after seeing a post in the Gentoo forums, was its documentation ("OK, nice explanations, let's try this"). *nod* Fair enough! Yeah, as i wrote in the first comment in the comments section i linked to above: [A]s someone who spends a lot of time writing and maintaining documentation, i know that people apparently don't like reading the documentation. :-) At the same time, i know that many people (including myself!) can sometimes struggle to "put all the pieces" together (either properly, or at all), even with excellent reference docs (as in the case of s6), in the absence of some basic, concrete, "actual implementation" examples. Like, the mdoc(7) man page is excellent and comprehensive, but to help people to get a sense of how easy it can be to use mdoc(7) in practice, and hopefully encourage them to use it, i wrote a quickstart guide: https://github.com/flexibeast/guides/blob/master/mdoc-quickstart.md Which is the sort of thing i'm hoping to do for s6-rc. :-) Alexis.
Re: s6-rc user services on Gentoo
Hi Hoël, Thanks for your reply! Hoël Bézier writes: I feel you. IRC without bouncer is not always great for getting help on some topics. ^^’ :-) Yeah, most of the time that i'm on IRC - which is rarely nowadays, due to the aforementioned "lots on my plate" issue - it's usually to try to offer help to others, rather than asking for help myself, where having a working bouncer is much less of an issue. Are you planning on having your user services supervisor itself supervised? And if so, by OpenRC or another instance of s6-svscan? Just asking out of curiosity. i hadn't really thought much about that, as i've been focusing on simply trying to understand the basics and get them working. My initial thinking is that i'd start by setting up the user services tree from .zlogin, i.e. the s6-svscan process itself would be unsupervised. Part of the reason for doing so is that, at this point, i primarily want to be using s6-rc to be able to manually restart user services in various situations (e.g. config changes), with service availability being secondary to that. But another part of the reason is that, in these contexts, i generally work best from the bottom-up, starting from what i consider to be the 'core' and then 'working outwards' from that. (Yes, i know that's not always the most appropriate approach, particularly in contexts where security topics are inherently part of the 'core', and can't just be "bolted on" afterwards. i don't feel this is particularly the case here.) i guess i'd probably want OpenRC supervising the user s6-svscan process, mainly because, at this point, i'd like to keep using OpenRC on my Gentoo system overall: since a lot of my volunteer tech work involves providing support to others and writing/maintaining documentation, it's useful to keep my own system fundamentally similar to what others are running. Your scandir and your service definitions are the same directory, which they should not be. You currently have: * service_definitions="${xdg_data_home}/s6-rc/services" * compiled_services="${xdg_state_home}/s6-rc/compiled" * scandir="${xdg_data_home}/s6-rc/services" * livedir="${xdg_runtime_dir}/s6-rc" However service definitions can not be used as a scandir: if your services are to be managed by s6-rc they should not be present at start in your scandir but should be added there by s6-rc-init. That’s why s6-rc-init complains about files already existing: it tries to create a symlink in the scandir pointing to the services it’s managing but it can’t because the service are already present in the scandir. Ah! Now i get it. Thank you. :-) i'm not sure how my reading of the s6-rc-init documentation led me to this; i'll need to review it, so that i can perhaps offer some changes/additions. :-) Moreover, had you had any oneshots in your service definition directory, I think s6-svscan would have simply failed to start, or complained about directories containing no service (oneshots are not supervised by s6-svscan, because there’s nothing to supervise in them, so it doesn’t know about them). *nod* What you should have is: * service_definitions="${xdg_data_home}/s6-rc/services" * compiled_services="${xdg_state_home}/s6-rc/compiled" * scandir="${xdg_runtime_dir}/services" * livedir="${xdg_runtime_dir}/s6-rc" Your scandir should be in your runtime dir because it does not contain data but the current running configuration of your system. It can be an empty directory when you start s6-svscan, there is nothing wrong with that. s6-rc will populate it according to the compiled services you feed him. *nod* Thanks for all this, it's been very helpful! You can see my own outdated s6-rc system service definitions at: * https://forge.dotslashplay.it/s6-rc/system-services and my (also outdated) s6-rc user tree service definitions at: * https://forge.dotslashplay.it/s6-rc/personal-services i'll definitely take a look! (resending this to the list as I only replied to Alexis, sorry Alexis for the double send.) No worries. :-) Alexis.
s6-rc user services on Gentoo
Hi all, Laurent has suggested i ask on IRC about this, but since (a) i'm in UTC+10, (b) i'm constantly moving between a few different networks, and (c) my bouncer is currently out of action (it's a Story), i thought i'd ask on these lists instead, to facilitate asynchronous replies. :-) When i was on Void, a few years ago, i used s6+66 in place of runit. Since moving to Gentoo, i've been using OpenRC. OpenRC currently doesn't have user services. They're gradually being worked on: https://github.com/OpenRC/openrc/pull/573 but the current state of things is that the contributor is rewriting the PR: https://github.com/OpenRC/openrc/pull/573#issuecomment-2007766162 i've had a lot on my plate for a while, but in more recent times i've had a bit more space to faff around with lower-priority stuff, and so i'm exploring setting up s6-rc to manage the user services i need. Once i've done so, i can: * write a guide on the Gentoo wiki[a]; and * provide service definitions for others to use via my personal overlay[b]. which might help more people to become familiar with the s6 ecosystem in general, and with s6-rc in particular (rather than trying to use s6 for service management as well as supervision). However, i've reached an impasse, and i'm hoping some can tell me what i'm missing / what i'm doing wrong / what i'm misunderstanding. Here's the situation: * S6RC_SERVICE_REPO=${HOME}/src/srht/gentoo-overlay/sys-apps/s6-rc-services/files/ * The above directory contains two service directories: ** dbus-session-bus/, containing: *** type: longrun *** notification-fd: 3 *** producer-for: dbus-session-bus-log *** run: #!/usr/bin/execlineb -P importas HOME HOME redirfd -w 4 ${HOME}/.env.d/DBUS_SESSION_BUS_ADDRESS dbus-daemon --session --fork --nopidfile --print-address=4 *** finish: #!/usr/bin/execlineb -P importas HOME HOME rm -f ${HOME}/.env.d/DBUS_SESSION_BUS_ADDRESS ** dbus-session-bus-log/, containing: *** type: longrun *** notification-fd: 3 *** consumer-for: dbus-session-bus *** pipeline-name: dbus-session-bus-pipeline *** run: #!/usr/bin/execlineb -P importas HOME HOME exec -c s6-log -d3 -- t ${HOME}/.logs/s6-rc-services/dbus-session-bus * SCANDIR="${XDG_DATA_HOME}/s6-rc/services" * The above directory contains symlinks to ${S6RC_SERVICE_REPO}/{dbus-session-bus,dbus-session-bus-log} * S6RC_COMPILED="${XDG_STATE_HOME}/s6-rc/compiled" * Running: s6-rc-compile "${S6RC_COMPILED}" "${SCANDIR}" completes successfully. * Running s6-svscan -- "${SCANDIR}" succeeds, with two s6-supervise processes created. * HOWEVER, running s6-rc-init -c "${S6RC_COMPILED}" -l "${XDG_RUNTIME_DIR}/s6-rc" "${SCANDIR}" fails, with the error message: unable to supervise service directories in /run/user/1000/s6-rc/servicedirs: File exists i've taken a look at s6rc_livedir_create.c: https://git.skarnet.org/cgi-bin/cgit.cgi/s6-rc/tree/src/libs6rc/s6rc_livedir_create.c but nothing is leaping out to me as explaining what's happening. Thoughts? Alexis. [a] The current s6 and s6-rc pages on the wiki have lot of detail, without any "quickstart" tutorials that might make it easy for people to get on board. A while ago i did a big restructure of the s6 article: https://wiki.gentoo.org/wiki/User:Flexibeast/drafts/S6 which i feel improves the current page: https://wiki.gentoo.org/wiki/S6 but which has been awaiting review by a more senior wiki editor than me. The s6-rc page is similarly detailed and similarly lacking a "quickstart": https://wiki.gentoo.org/wiki/S6-rc [b] Various people are providing s6 service definitions, e.g. https://codeberg.org/alecStewart1/gentoo-s6-scripts, but i'm not currently aware of any providing s6-rc service definitions - pointers welcome. :-)
Re: Prevent runit from deleting own processing file
Andrew Stiegmann writes: Evening folks. Wanted to share a patch I recently put together to prevent a runaway busyloop in svlogd when system time is far behind. It effectively prevents svlogd from deleting the file its about to process, which can happen when system time is far behind. Cheers. You might like to also consider opening a PR in Void's 'runit' repo: https://github.com/void-linux/runit Alexis.
Re: [announce] skarnet.org November 2023 release
Petr Vaněk writes: I was always wondering, do you synchronize man pages just by hand or is there some automation involved? By hand. i generate a diff of what's changed, and then manually convert that to mdoc(7). How long that takes varies between releases, due to various factors. The HTML source is mostly presentational markup, whereas mdoc(7) is semantic markup (in contrast to man(7), as used for the Linux man pages, which is mostly a presentational markup language). It's often not possible to algorithmically determine what semantic markup is required for a given presentational tag: for instance, is a given '' tag indicating an argument (= 'Ar' in mdoc), or a program (possibly 'Xr', possibly something else), 'mere' emphasis (= 'Em'), or something else? i personally find mdoc(7) far more pleasant to work with than man(7) - i probably wouldn't have done the port if use of the latter had been a requirement - and the fact that it's semantic means it's possible to do things like use apropos(1) to search for pages containing particular terms in particular contexts (e.g. uses of a specific environment variable). Anyway, I plan to package s6-*man-pages for gentoo. Wonderful, thank you! i would suggest they should go in the 'app-doc' category (but of course i'll defer to the Gentoo devs on this). Alexis.
Re: [announce] skarnet.org November 2023 release
aitor writes: Thanks for the man pages, Alexis. I'll work on an APT repository for Devuan. That'd be great, thanks! s6-man-pages is only packaged for a few distros: https://repology.org/project/s6-man-pages/versions (Not listed is Gentoo, my daily driver, although a package is available via the 'bgo-overlay' repo; it'd be nice if someone were willing to maintain a package in the 'gentoo' or 'GURU' repos, given that Gentoo is one of the main distros allowing a non-systemd-based setup.) And e.g. s6-linux-init-man-pages is only packaged for Alpine: https://repology.org/project/s6-linux-init-man-pages/versions Best wishes! Alexis.
Re: [announce] s6-2.12.0.2
"Laurent Bercot" writes: I don't normally spam all of you for bugfix releases, but this one is important. You definitely want to grab the 2.12.0.2 version of s6, not the 2.12.0.1 one. And for the man pages: https://git.sr.ht/~flexibeast/s6-man-pages/refs/v2.12.0.2.1 Alexis.
Re: [announce] but what about *second* skarnet.org November 2023 release?
Updates are now available for {s6,s6-networking,tipidee}-man-pages: https://git.sr.ht/~flexibeast/s6-man-pages/refs/v2.12.0.1.1 https://git.sr.ht/~flexibeast/s6-networking-man-pages/refs/v2.7.0.0.1 https://git.sr.ht/~flexibeast/tipidee-man-pages/refs/v0.0.2.0.1 Alexis.
Re: [announce] skarnet.org November 2023 release
Updated versions of my man page ports are now available: https://git.sr.ht/~flexibeast/s6-man-pages/refs/v2.12.0.0.1 https://git.sr.ht/~flexibeast/s6-networking-man-pages/refs/v2.6.0.0.1 https://git.sr.ht/~flexibeast/execline-man-pages/refs/v2.9.4.0.1 https://git.sr.ht/~flexibeast/s6-linux-init-man-pages/refs/v1.1.2.0.1 https://git.sr.ht/~flexibeast/s6-portable-utils-man-pages/refs/v2.3.0.3.1 https://git.sr.ht/~flexibeast/s6-rc-man-pages/refs/v0.5.4.2.1 Alexis.
Re: [announce] skarnet.org November 2023 release
An mdoc(7) port of the docs for tipidee is available: https://git.sr.ht/~flexibeast/tipidee-man-pages/archive/v0.0.1.0.1.tar.gz i hope to start work on updates to the other skaware man page ports in the coming days. "Laurent Bercot" writes: New versions of all the skarnet.org packages are available. This is a big one, fixing a lot of small bugs, optimizing a lot behind the scenes, adding some functionality. Some major version bumps were necessary, which means compatibility with previous versions is not guaranteed; updating the whole stack is strongly recommended. Also, tipidee is out! If you've been looking for a small inetd-like Web server that is still standards-compliant and fast, you should definitely check it out.
systemd/issues/28250: "System and user log rotation because of monotonic clock jumping backwards"
i felt compelled to share this here https://github.com/systemd/systemd/issues/28250
New URLs for the updates to s6-man-pages and execline-man-pages
Apologies, new URLs for the updates to s6-man-pages and execline-man-pages: https://git.sr.ht/~flexibeast/s6-man-pages/archive/v2.11.3.2.4.tar.gz https://git.sr.ht/~flexibeast/execline-man-pages/archive/v2.9.3.0.5.tar.gz Alexis.
s6-man-pages and execline-man-pages now on sr.ht; new releases of both
Hi all, Both s6-man-pages and execline-man-pages are now on sr.ht; their repos on GitHub have been set to read-only. With that, all the -man-pages projects are now on sr.ht. There are also new releases for s6-man-pages and execline-man-pages, which add the s6-why.7 and execline-why.7 pages, respectively: https://git.sr.ht/~flexibeast/s6-man-pages/archive/v2.11.3.2.3.tar.gz https://git.sr.ht/~flexibeast/execline-man-pages/archive/v2.9.3.0.4.tar.gz Alexis.
s6-linux-init-man-pages
Hi all, An mdoc(7) port of the documentation for s6-linux-init is now available: https://git.sr.ht/~flexibeast/s6-linux-init-man-pages/archive/v1.1.1.0.1.tar.gz Alexis.
New s6-rc-man-pages release
Hi all, A new release of s6-rc-man-pages is now available: https://git.sr.ht/~flexibeast/s6-rc-man-pages/archive/v0.5.4.1.2.tar.gz It adds three section 7 pages: * s6-rc-faq.7 * s6-rc-overview.7 * s6-rc-why.7 Alexis.
Re: [svlogd] / -ttt / why UTC?
"Laurent Bercot" writes: The way to go about it would be to implement the functionality yourself, and submit a patch; that said, since the last time we saw svlogd's maintainer was four years ago in a flash Well, Void maintains its own runit repo: https://github.com/void-linux/runit So one could open an issue there and ask if a PR implementing this functionality would be considered. Alexis.
*-man-pages: s6-rc port, Makefile fix
Hi all, An mdoc(7) port of the documentation for s6-rc is now available: https://git.sr.ht/~flexibeast/s6-rc-man-pages/refs/v0.5.4.1.1 Additionally, there are new releases for the other -man-pages repos, primarily fixing a Makefile bug: https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.3.2.2 https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.3.0.3 https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.5.1.3.3 https://git.sr.ht/~flexibeast/s6-portable-utils-man-pages/refs/v2.3.0.2.2 Alexis.
Re: [announce] April 2023 bugfix release
"Laurent Bercot" writes: skalibs-2.13.1.1 (release) execline-2.9.3.0 (minor) s6-2.11.3.2(release) s6-linux-init-1.1.1.0 (minor) s6-portable-utils-2.3.0.2 (release) The execline-man-pages repo has now been updated: https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.3.0.1 There were no doc changes in s6 and s6-portable-utils, but new tags have been created in their related -man-pages repos to indicate which version they're up-to-date with: https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.3.2.1 https://git.sr.ht/~flexibeast/s6-portable-utils-man-pages/refs/v2.3.0.2.1 s6-portable-utils-man-pages is the first -man-pages repo to be moved to sr.ht. The plan is to move the remaining three repos during the coming fortnight, with s6-networking-man-pages the next in line. Alexis.
*-man-pages repos moving to sr.ht
Hi all, In the coming weeks, i'm hoping to move the *-man-pages repos from GitHub to sr.ht. My plan is to do so gradually (e.g. one a week), in the following order: * s6-portable-utils-man-pages * s6-networking-man-pages * execline-man-pages * s6-man-pages i probably won't start this process for at least a week, to give relevant parties the chance to read this email. Alexis.
Re: [announce] skarnet.org February 2023 release
*sigh* Sorry everyone. The execline-man-pages release _also_ failed to include a Makefile update (to include execline.1, the man page for the new multicall binary). So there's a new release tag: * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.2.0.2 Hopefully everything is now in order! "alice" writes: On Sun Feb 19, 2023 at 7:39 AM CET, Alexis wrote: "alice" writes: > On Sun Feb 19, 2023 at 6:39 AM CET, Alexis wrote: >> https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.3.0.0.1 > > these (s6-portable-utils-man-pages) fail to make install, > because > s6-test.1 was removed. Gah, sorry about that! This should now be fixed. thanks! works now. don't mean to backseat the release process too much, but you should generally not retag a new commit (breaks history of the tag for whoever already had it, cached tarballs (me, funnily), ..), rather just release .2 .
Re: [announce] skarnet.org February 2023 release
"alice" writes: don't mean to backseat the release process too much, but you should generally not retag a new commit (breaks history of the tag for whoever already had it, cached tarballs (me, funnily), ..), rather just release .2 . You're quite right, and my apologies - it's been a challenging day, and i wasn't thinking clearly. i'll try to be more careful and mindful in the future. Alexis.
Re: [announce] skarnet.org February 2023 release
"alice" writes: On Sun Feb 19, 2023 at 6:39 AM CET, Alexis wrote: https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.3.0.0.1 these (s6-portable-utils-man-pages) fail to make install, because s6-test.1 was removed. Gah, sorry about that! This should now be fixed. Alexis.
Re: [announce] skarnet.org February 2023 release
Updates to the s6-man-pages, s6-portable-utils-man-pages and execline-man-pages repos are now available: * https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.3.0.1 * https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.3.0.0.1 * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.2.0.1 There were no documentation changes in the new s6-networking release, but i've added a new tag to the s6-networking-man-pages repo to indicate that it's current: * https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.5.1.3.1 Alexis.
Re: [announce] skarnet.org January 2023 release. man page ports.
Hi all, The relevant '*-man-pages' repos have now been updated accordingly: * https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.2.0.1 * https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.5.1.2.1 * https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.2.5.1.1 * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.1.0.1 Of particular note in the s6-man-pages update is that i've finally ported the following pages: * overview.html * s6-svscan-1.html * s6-svscan-not-1.html * socket-activation.html i highly recommend overview.html / s6-overview.7 as a general introduction to s6. :-) Alexis.
Re: s6-rc user experience question
Ihor Antonov writes: - there are no manual pages that would help with the point above, and short help messages are not very useful. ( I often resort to reading https://skarnet.org/software/s6 from my browser ) i might well be misunderstanding what you're saying, but as Laurent notes on the s6 Web page, i've ported the docs for s6 (and for execline, s6-networking and s6-portable-utils) to mdoc(7) man pages: https://github.com/flexibeast/s6-man-pages which at least some distros provide as a package. Alexis.
Re: gpg-agent runit run script
Guillermo writes: The combination of Duncaen's run script, and the Void Handbook's example /etc/sv/runsvdir-/run script, at least if used verbatim, does not appear to set up GPG_TTY. gpg-agent might start, but I'm not sure if things will work well if, e.g., it wants to run the pinentry program... Yeah. Trying to get a program to run in ways it's not intended to be run can get complex at the best of times, but i'd be particularly wary of trying to do so with a program that's security infrastructure; i'd worry about accidentally creating vulnerabilities not present when the program is used in the intended manner. Alexis.
Re: gpg-agent runit run script
João Pedro Malhado writes: The Void linux manual shows gpg-agent running as an example, but they don't show the run script, so I don't know how they set it up. https://docs.voidlinux.org/config/services/user-services.html Duncaen's run script for gpg-agent is here: https://github.com/Duncaen/dotfiles/blob/master/sv/gpg-agent/run It's actually an execline script that makes use of s6-ipcserver-socketbinder. Also note that the script calls gpg-agent with `--supervise`. This is a pity as gpg-agent is a long running process which is the sort of thing you would want to run under supervision. Well, the typical reason we want to run something under supervision is to ensure it's up, because (a) there are processes relying on it being up, and (b) those processes aren't themselves able to start the relevant process. But this isn't the case with gpg-agent: the main programs that utilise it know how to start it themselves if necessary, so it doesn't matter if a gpg-agent process exits abnormally, as a new one will get created when required. Alexis.
Re: [announce] skarnet.org Summer 2022 release
And the new releases in the man page repos: * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.9.0.0.1 * https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.1.1.1 * https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.5.1.1.1 * https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.2.5.0.1 Alexis.
Man page ports of s6-portable-utils docs now available
Hi all, Man page ports of the s6-portable-utils docs are now available: https://github.com/flexibeast/s6-portable-utils-man-pages/releases/tag/v2.2.4.0.1 Alexis.
Re: Supervision on the BSD's
"Scott Colby" writes: I started looking at how to configure daemons/services on OpenBSD and FreeBSD and am a little surprised at what I found. As far as I can tell, OpenBSD's rc assumes that services will background themselves and does no supervision at all. It seems like FreeBSD's daemon(8) has some supervision capabilities with the -r flag, but it is unclear to me how widely used that is. Given the apparently poor state of supervision, I'm considering using s6 when I configure this system. i run two OpenBSD servers, one of which i'd be happy to do some s6-related tinkering on, so i'm following this discussion with interest. :-) Alexis.
Re: [announce] Small skarnet.org update
i've just updated the execline-man-pages and s6-man-pages repos accordingly: * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.8.3.0.1 * https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.1.0.1 Alexis. "Laurent Bercot" writes: Hello, New versions of some skarnet.org packages are available. The changes are minor, mostly quality-of-life and small additions driven by the new version of s6-overlay. There are bugfixes all around, so users are encouraged to upgrade even if they're not using s6-overlay. The new versions are the following: skalibs-2.11.2.0(minor) execline-2.8.3.0(minor) s6-2.11.1.0 (minor) s6-portable-utils-2.2.4.0 (minor) s6-linux-init-1.0.7.3 (release)
[announce] Gentoo overlay for s6
Hi all, i recently started using Gentoo, and would like to be using s6/66 in place of OpenRC. However, the s6-related ebuilds are rather out-of-date (even those in testing, let alone in stable). There's this PR, created in May last year, to update them: https://github.com/gentoo/gentoo/pull/20895 but the last comment on it is from October last year, and i have no idea when/if it will get merged. So what i've done is created an overlay, 'flexibeast-s6': https://github.com/flexibeast/gentoo-s6-overlay which updates various s6-related ebuilds to the latest versions, and which is available via `eselect repository`. Since i'm new to Gentoo and ebuilds, any feedback on problems with the ebuilds, or ways in which they could be improved, would be most welcome. :-) Alexis.
[announce] {s6,s6-networking,execline}-man-pages updated
"Laurent Bercot" writes: New versions of all the skarnet.org packages are available. The {s6,s6-networking,execline}-man-pages repos have now been updated accordingly: * https://github.com/flexibeast/s6-man-pages/releases/tag/v2.11.0.0.1 * https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.5.0.0.1 * https://github.com/flexibeast/execline-man-pages/releases/tag/v2.8.1.0.1 Alexis.
[announce] s6-networking-man-pages
Hi all, i've just finished porting the s6-networking documentation to mdoc: https://github.com/flexibeast/s6-networking-man-pages/releases/tag/v2.4.0.0.1 For further information, refer to the repository README: https://github.com/flexibeast/s6-networking-man-pages Alexis.
Re: [announce] skalibs-2.10.0.1, execline-2.7.0.1, s6-2.10.0.1
Laurent Bercot writes: New skarnet.org packages are available: skalibs-2.10.0.1 execline-2.7.0.1 s6-2.10.0.1 And i've just updated the s6-man-pages repo accordingly: https://github.com/flexibeast/s6-man-pages/releases/tag/v2.10.0.1.1 Alexis.
s6-man-pages updated to 2.10.0.0
Hi all, i've now updated the s6-man-pages repo to reflect s6 2.10.0.0: https://github.com/flexibeast/s6-man-pages/releases/tag/v2.10.0.0.1 The final ".1" in the version indicates the first release for s6 2.10.0.0; it will be incremented when fixing any errors in the port. Please do let me know of any semantic discrepancies between the HTML original and the port! (i use the phrase "semantic discrepancies" as there are numerous structural and stylistic changes to match mdoc(7) conventions.) Opening an issue in the repo is preferred, but you can instead send me an email if that works better for you. :-) Alexis.
Re: s6-man-pages update
Laurent Bercot writes: That downside is simply too big, and also, I don't want to take responsibility in the official tarballs for content that I don't audit myself ... if a distribution has a link to get the man pages source, they will use it and will just be happy that there are man pages. Fair enough. :-) My thought is, to help distros with packaging, i can add tags to the s6-man-pages repo to match the corresponding s6 version on which they were based. So at the completion of this current process, i could add a 2.9.2.0 tag (assuming that the current docs on skarnet.org are from the 2.9.2.0 release). Does that sound reasonable? (i can put together a package template for Void.) Alexis.
Re: s6-man-pages update
Laurent Bercot writes: Nice work! If you feel they're ready enough, I can add a link to them in the s6 main page right away. Mm, thanks, but i think i'd prefer to wait until i've handled the link issue. :-) - The skarnet.org site is accessible in https, and is preferred. Intra-site links have no default protocol, so they will link in http if the client uses http, and in https if the client uses https; but for absolute URLS, it would probably be best to write them as https Sure, will do. - You should list yourself in the AUTHORS section: I wrote the content, but you wrote the man pages. Okay, i'll mention myself as the porter. I don't want to be making suggestions on work I'm not going to do myself and that I have no deep understanding of; but is there a way to have an alternative in .Xr, as in "print as a cross-ref if the man page exists, else print that text"? No, Xr only takes a manual name and section number as arguments. That would be ideal for placeholders until the documentation for other packages is ported (which may very well be "never"). Well, i'm willing to port the s6-networking and execline docs, unless the longer-term plan is to convert them to e.g. scdoc, since (having now looked into it) it's a very weak markup format that can't represent most of the semantic markup i'd be adding, including cross-references. No point doing work that is just going to be removed. :-) That said, for now i'll follow the footnote-style approach you suggested more generally, with numbered links to s6-networking and execline programs in the SEE ALSO section, and the appropriate number being mentioned inline. If/when the relevant man pages become available, conversion to use of Xr can be automated. Yes, I don't think it's reasonable to expect the whole Web to be converted to man pages. ;) *laugh* Indeed! Alexis.
s6-man-pages update
Hi again all, i've now completed the linting pass for the s6 man pages. The few remaining lint issues are either commented in the sources, or aren't actually an issue in this context. As per Laurent's request, i've also added a Makefile to facilitate installation; details in the repo README: https://github.com/flexibeast/s6-man-pages/ The main thing still left to do is work out how to deal with certain types of links. Laurent, you wrote: I think that solely depends on the number of such links. If there are just a few, it's fine. If there are a lot of links in a page, it would make reading pretty unwieldy. Because I think there are a few pages with too many links, maybe it would be best, for consistency, to just use footnotes? < a CDB file[1] cdbfile then exits 0. < < (...) < < SEE ALSO < < [1]: http://en.wikipedia.org/wiki/Cdb_(software) Maybe mdoc even has a mechanism for footnotes? I don't know. As far as i'm aware, mdoc has no built-in mechanism for footnotes (certainly the word isn't used in the mdoc(7) man page). Most of the links in the man pages are cross-references to other pages in the s6-man-pages collection, so they're already handled by the Xr macro. The remaining links aren't particularly numerous, and can basically be divided into two groups: * links to other skarnet.org documentation which does not yet have man pages: s6-networking (s6-tcpserver-access, s6-tcpserver, s6-tcpserver4, s6-tcpserver6), execline (execline and execlineb, maybe others as well?), and skalibs stuff. For an example of a page referring to s6-networking software, cf. s6-connlimit.1.in. If that documentation was available as man pages, these could just be made cross-references too. * links to non-skarnet.org sites, such as djb's site. These certainly seem amenable to use of the footnoting style you described above. Alexis.
Coda to the discussion on converting the HTML s6 documentation
Hi all, i've received an email offlist asking some clarifying questions about automating the conversion of the current HTML s6 documentation, and i thought it might be useful to post some of the things i noted in my reply. The issue isn't that the HTML is unparseable (it's not). A tool like `pandoc` can be used to convert the pages into other formats, including roff. Over at Void, we recently tried to make use of `pandoc` to create a man page for Érico's neat `void-docs` script, which allows viewing the Void Handbook locally in a number of formats. What i found is that the output of pandoc produced roff that was fine visually, but which relied on presentational markup, rather than semantic markup. i'll return to this issue below. The issue is twofold: * Things like bare "" tags (i.e. without a 'class' attribute describing their contents) are used in the HTML to convey multiple types of information that mdoc/roff distinguishes. Sometimes an "" is used for an argument (Ar in mdoc), sometimes it's simply used for emphasis (Em in mdoc). Similarly, bare "" tags are used for a path (Pa in mdoc), function types (Ft in mdoc), functions (Fn in mdoc), libraries (which could have a man page that should be cross-referenced with an Xr macro), and so on. A human is needed to decide the semantics involved (e.g. for Casper's putative IL), based on context. * Many things /simply aren't marked up at all/. The example i gave in my earlier post was environment variables: again, a human is needed to decide whether something in ALLCAPS is an env var, a cpp macro, or something else altogether (like a reference to the 'TAI64' concept.) The question might be asked: "Well, who cares? Why care about semantic markup? As long as the visual output is the same, what's the issue?" Two things: * Having the documentation source use semantic markup as much as possible facilitates conversion between formats. `mandoc(1)` doesn't only output man pages from mdoc source: it can also produce HTML (used on man.voidlinux.org, with some custom CSS for Void theming), PDF, PostScript, Markdown and plain ASCII. So if things like flags, arguments, paths, environment variables, variable types, variables, function types, functions etc. are marked up in the mdoc source, a PDF (for example) can be styled appropriately for each case. * Additionally, extensive semantic markup has a direct benefit to end-users: the ability to use the functionality of `apropos` to find appropriate content. For example, say one wished to find all uses of the 'GID' env var in the s6 man pages. One could use `apropos 'Ev=GID' | grep s6-`. (This sort of use-case is part of why i've made sure all the names of all the man pages i'm creating are prefixed with "s6-".) Similarly, one could search for all mentions of the 'notification-fd' file with `apropos 'Pa~.*notification-fd'`, with the '~' indicating an extended regular expression. However, this won't work without the relevant markup in the sources. Fwiw, my suggestion, for those interested in converting the documentation to One True Format as decided by Laurent, would be to leverage my efforts to use semantic markup extensively in the man pages. Once the s6-man-pages repo is ready, use `mandoc -T html` to convert the pages to HTML, which will contain consistent semantic markup (e.g. ''). That HTML can then be parsed and converted to the One True Format, an authoritative source from which man pages and HTML can be produced. Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
Steve Litt writes: Depends on how the HTML is written ... All I'm saying is don't assume, sight unseen, that the current HTML can't easily be converted to semantic LaTeX or Docbook or whatever. This is good advice in general; but in this particular case, there's no "sight unseen" involved on my part. i have actually looked at the HTML sources of the existing s6 documentation. (For some context, i've authored HTML professionally myself.) As i indicated in the post to which you responded, as well as in my last post to this list: https://www.mail-archive.com/supervision@list.skarnet.org/msg02560.html the current HTML markup is basically not semantic, but presentationally-based. (i'm not complaining about this. i'm very grateful that Laurent has provided such comprehensive documentation for s6; many software authors provide far less, or suggest that the source is the end-user documentation. i feel s6 is a sufficiently important project that i'm happy to help out with documentation stuff, rather than putting further demands on Laurent's already-saturated bandwidth.) To be more specific regarding one of the points in my last post, here's an excerpt from s6-envuidgid.html: s6-envuidgid [ -u | -g | -B ] [ -n ] [ -i | -D uid:gid:gidlist ] account prog... Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
Laurent Bercot writes: I'm totally willing to use a HTML schema we can negotiate, to write future documentation in. What I don't want to do is: - Touch existing documentation, unless I have to rewrite the content of a page for some reason. Of course, if the conversion work is done by somebody else, I have no objection to upstreaming the new documents. In terms of automating such a conversion, here are a few of the things the automation would need to do: * Determine whether some text is an environment variable. Environment variables in the current HTML aren't marked up. You might think that you could say "Well, if it's all caps it's an env var", but that won't work, because will catch things like SIGTERM and SO_REUSEADDR. You could special-case 'SIG*', but i'm not sure what could be done about things like SO_REUSEADDR. * Parse things like "s6-envuidgid [ -u | -g | -B ] [ -n ] [ -i | -D uid:gid:gidlist ] account prog..." appropriately, so that mdoc/roff using Op, Fl and Ar can be produced. The parsing will also need keep track of the fact that further uses of "account" in the mdoc/roff might need to be preceded by an Fl macro. Of course, the word "account" is not necessarily referring to the "account" argument, but also to the notion of an account in general: in "s6-envuidgid looks account up by name in the account database", the first "account" should be preceded by Fl, but the second shouldn't. So this sort of thing would somehow need to be handled as well. Note that "-D uid:gid:gidlist" will require special handling, as that seems to also need use of Ns to produce the correct output, i.e. ".Op Fl i | D Ar uid Ns : Ns Ar gid Ns : Ns Ar gidlist". Although, `mandoc -T lint` currently produces a warning about the use of Ns there; if mdoc/roff experts have any suggestions as to The Correct Way to do this, i'm all ears. :-) * In accessrules.html, is used to indicate file paths, function types, variable types and the accessrules library itself; these cases will somehow need to be distinguished. (There are currently places in s6-accessrules.7 where, in my first pass, i've used Ql when i should actually be using Vt; that's one of the things i still need to fix.) So my guess is that trying to automate a conversion will be much more work than simply doing a conversion manually. Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
Casper Ti. Vector writes: May I request a diff (via PM) between your attempt and the current HTMLs? That involves ~70 documents. Do you need all of them, or can i just provide a diff of a few examples? i don't currently have the HTML sources locally; i'd have to download them all. Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
Casper Ti. Vector writes: * We negotiate a HTML schema your documentation can be written in, which is based on current documentation; existing HTML documentation will be converted to the schema, with minimised changes. On the basis of my current experiences, it would be No Small Task to convert the current, presentationally-based, HTML documentation to markup that's sufficiently semantic to enable it to be mechanically converted to mdoc/roff. i estimate i've so far spent at least 30 hours over the last couple of weeks adding the relevant semantic (and occasionally presentational) macros, as well as modifying the page structure to match mdoc conventions; and i'm still not finished. Myself, i'm not willing to repeat this task again, as i have other volunteer and life commitments. Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
Laurent Bercot writes: This is clearly the most advanced conversion ever performed, well done! Thank you! Would you be willing to add a small Makefile that by default invokes the mandoc commands to produce the formatted man pages, and with an install target that installs the source to $(MANDIR), by default /usr/share/man ? I would then be able to review them. Thanks :) Certainly. i'll do that once i've completed a linting pass. (AS you're aware if you've been here a while, I don't read mdoc source, and I will. not. learn. it.) Heh, fair enough. :-) Would you be willing to maintain that repository for when I make changes to the s6 documentation? Changes should be few and far between, except for fixes and new feature additions (which I don't think there will be much of). If so, I would gladly add a link to that repository in the official s6 home page, for people who, like you, prefer man pages. Sure, i'd be happy to reflect any changes. I'd hold off on s6-rc for now, because I'm in the process of exploring a possible redesign (for better integration of features that distributions want before packaging and using s6-rc), so it's not improbable that all the documentation gets rewritten in a not-too-distant future. Ah, okay - thanks for the heads-up. What kind of changes to the text? if it's just the text of the link, such as changing the name of a package to the full URL of the package, then please go ahead and do what is needed. But relevant links in SEE ALSO works too. Now that i think about it some more, maybe i could simply put the link in parentheses? For example, with: a CDB file cdbfile then exits 0. where "CDB file" is a link to the relevant Wikipedia page, the mdoc would produce output like: a CDB file (http://en.wikipedia.org/wiki/Cdb_(software)) cdbfile then exits 0. Similarly, lines with a TAI64N timestamp and a space. would become: lines with a TAI64N timestamp (http://skarnet.org/software/skalibs/libstddjb/tai.html#timestamp) and a space. At any rate, i think it might be a good idea for such links to be mentioned in "SEE ALSO" regardless. If there are other typos or grammatical errors you've noticed, please send them to me (maybe privately in order not to spam the list) and I'll fix them. If the fixes need more explanation and interactive dialogue, hop on #s6 some time during the week to discuss them. :) *nod* i'll try to put together an email with the relevant information, and start hanging out on #s6. :-) i'm usually on Freenode, in #voidlinux in particular, but not necessarily active at the same time as others - i'm in Melbourne.au. Fixed in the latest git head, thanks! :-D Alexis.
Re: [request for review] Port of s6 documentation to mdoc(7)
eric vidal writes: You're welcome. Thank at you to use 66. i enjoy using it - trees are excellent. :-) This is really a hard job to do. Many thanks to make it. You're welcome! But i will do some publicizes about your work that be visible by user. Thank you, much appreciated. :-) Alexis.
[request for review] Port of s6 documentation to mdoc(7)
Hi all, i recently started using 66 instead of runit on Void - thanks to @Obarun, @mobinmob and @teldra for their work and help! Consequently, and further to https://www.mail-archive.com/supervision@list.skarnet.org/msg02278.html : if people like man pages, they should have man pages, so it's been a few years that I have appealed to the community for this ... I want s6 to be accessible, but I figure that if people really wanted man pages, they'd write man pages i've spent the last couple of weeks porting the s6 documentation to mdoc(7) format: https://github.com/flexibeast/s6-man-pages since i really want man pages, and much prefer them to HTML for system-level software. :-) i don't consider the current state of the repo to be 'ready' in a general sense, but i do feel it's mostly done, and certainly amenable to review. i think this might be a good time to give myself a short break from working on it, so i can then come back and do a review pass with fresher eyes. The porting has been done manually, with no automation involved; this has allowed me to use semantic markup as much as possible, which of course also facilitates searching for content with `apropos(1)`. Several things to note: * i've changed page layouts to fit mdoc(7) conventions. * During the porting process, i developed ideas about what might be the best way to do things, so documentation ported earlier might not follow the same style as the documentation ported more recently. This is something i hope to check in my review pass. * There are currently no cross-references to the execline suite or skalibs. However, i'm willing to port that documentation as well, together with the s6-rc documentation. * Inline links to things such as djb's software are not yet included. The `Lk` macro allows one to supply link text as well as the URL, but the resulting output would require changes to the text to make it read satisfactorily. Regardless, i can add the relevant links in "SEE ALSO" sections. * i've corrected a number of typos and grammatical issues, and discovered what i believe might be couple of errors: * s6-softlimit: The "Options" section refers to "-r allmem" rather than "-r res". * s6-ftrig-listen: The "Options" section says: "By default, s6-ftrig-listen1 waits indefinitely for a matching series of events." Given the context, i presume this should be "s6-ftrig-listen"? That said, although i've tried to be careful, i might have introduced new errors, or made mistakes in my choice of macros, so proofreading would be appreciated. :-) Alexis.