Quite a lot of changes piled up, i advise some caution upon bumping
openrc to 0.64
most notable changes are the introduction of RC_PATH, where init scripts
and configurations are looked up, the search path can now be changed
dynamically, with a build-time default that matches old behaviour
with the addition of /etc/rc and $libexec/rc to the default search path,
hopefully making it easier for distros to package init scripts
this feature is still experimental, and notably globs do not work across
entries, meaning `after *` or simialr will only apply to init scripts in
the same directory
a new dependency type is now implemented, `reexport`, when specified,
openrc will save the value of the listed variables after the service is
started, and any dependee service will have those variables as part of
their starting environment
rc-environ is shipped as a new binary for printing the stored values for
given services
this feature is also experimental for this release, but no notable bugs
are yet known
rc-update now behaves as is most expected when no runlevel is active,
falling back to 'default' (or $rc_default_runlevel), instead of 'sysinit'
the new sysv-initctl service provides a initctl wrapper for openrc-init,
aimed at helping those that switch between sysvinit and openrc-init,
e.g. for testing purposes
other less visible changes include moving a good chunk of code to use
posix_spawn, and unmounts at shutdown are now performed in parallel
---
Alexis (1):
openrc-run.8: Add "Default stop/start" section and table.
Aster Boese (1):
supervise-daemon: reverse meaning of respawn-delay value warning
Christopher Byrne (1):
openrc-user: copy uid/gid and shell data from struct passwd
Ethan Meng (1):
openrc.8: Document the --user/-U option
Ferass El Hafidi (3):
openrc-run: don't exec plugin hook in atexit
openrc: don't exec plugin hook in atexit
init.d: add backlight restore script
Haelwenn (lanodan) Monnier (2):
rc-service: print name of command on exec failure
man/openrc-run.8: Fix secbits formatting typo (AR -> Ar)
Hugo Osvaldo Barrera (3):
Document the no_new_privs setting
Document capabilities and secbits
Set default runlevel to 'default'
Jesse De Haan (1):
man/openrc-shutdown.8: correct kexec option
Laurent Bercot (6):
Add compatibility mode for s6 support
start-stop-daemon.c: fix failure case on --notify fd:4
s6-svscanboot: launch s6-svscan with notify=fd:4
Remove restart(); add framework for reload() support
supervisor=s6: support passing of environment by the service script
supervisor=s6: eval command first and don't invoke a shell at run-time
Mike Gilbert (8):
openrc-init: adjust handling of command line
openrc-init: move more logic into handle_single
openrc-init: factor out open_fifo
openrc-init: add progname global var
openrc-init: use progname global in handle_reexec()
openrc-init: remove excessive whitespace
openrc-init: factor signal and fifo processing into functions
openrc-init: handle kexec failure.
NRK (9):
rc.conf: change default fuser_timeout to 20 seconds
do_unmount: add parallel unmounting
fix error message when running as non-root
openrc-run: check state before locking
checkpath: remove unused variable
openrc-run: silence sign compare warning
sh/supervise-daemon.sh: respect stopsig
*-daemon: open the redirect files in nonblocking mode
shared: fix fcntl argument order
Peter Volkov (14):
sh/rc-cgroup.sh: fix minor cgroup handling issues
cgroups: avoid mounting over an existing cgroup v2 hierarchy
librc: guard pid_is_argv against long argument lists
libeinfo: avoid an unsigned underflow for empty EINFO_LASTCMD
librc: avoid an out-of-bounds read for malformed softlevel
librc: avoid a crash when loading malformed deptree files
openrc-run: fix service startup when PTY allocation fails
librc: reset rc_path.entries after freeing its memory
openrc-init: keep a dummy writer on the control FIFO
openrc-run: fix memory leaks in PID setup and dependency handling
shared: fix open_rwfifo descriptor handling
init.d/cgroups: tidy cgroup path and controller variables
init.d/cgroups: move cgroup2 root processes into rc.init
init.d/cgroups: skip kernel threads when moving cgroup2 root pids
Rhys Tumelty (1):
libeinfo: add xterm-ghostty to color_terms
Roman Kiselevich (2):
.gitignore: add IDE specific section
tools: fix lowercase linux string
Rosie K Languet (4):
document the scope of before/after
man/openrc.8: document order of stacked runlevels
man/rc-update.8: -a can apply to runlevels too
man/rc-update.8: generalize beyond just services
Sam James (1):
init.d/net-online: pass -n to ping to avoid rDNS overhead
Sertonix (1):
binfmt.sh: fix link to file format
Tomas Fabrizio Orsi (1):
Expand minimum padding to 26 in rc-update
Willow Barraco (2):
Add "stopgroup" to kill the whole process group
shared/misc: allow missing XDG user directories
navi (87):
sh/init.sh.Linux: make uucp group configurable
openrc-run: cleanup svc_exec
openrc-run: use posix_spawn
shared/misc.c: use posix_spawn in exec_service
openrc-run: formatting changes
openrc-user: use /bin/sh if user's login shell is not in /etc/shells
openrc-run: fix path to openrc-run.sh
shared/misc: close exclusive fd on exec_service
init.d/localmount: remove sourcing of rc-mount.sh
checkpath: formatting: remove odd line breaks
checkpath: formatting: use single quotes over backtick
checkpath: use early returns
checkpath: use switch over if-else chain
checkpath: formatting: unify variable declarations
checkpath: use result of basename_c(path) directly
checkpath: simplify open flags
checkpath: unify umask call when creating $path
checkpath: remove unnecessary memset
checkpath: formatting: check conditions in-place
checkpath: unify default mode check
checkpath: pass TRUNC to initial opening flags if used
checkpath: split out create code into a function
checkpath: factor openat call out of switch
checkpath: use mkfifoat
checkpath: use goto err
checkpath: don't break the format string
checkpath: allow -W with -f, -d, -p
init.d/*: check if RC_CACHEDIR is writtable
openrc-run: error check posix_spawn_file_actions_* calls
supervise-daemon: fix failure when notify fd matches pipe fd
librc: check of invalid rc_dir in rc_dirfd()
librc: check rc_dirs.*dir directly in rc_*dir functions
librc: read RC_SVCDIR from the environment
librc: add dynamic init.d and conf.d path resolution
env_config: export RC_PATH from scriptdirs
openrc-run: load conf.d from RC_PATH
meson.build: expose initdir and confdir on pkg-config
openrc-run.sh: Add missing /conf.d path suffix
openrc-run: adddup2 STDERR, not STDOUT a second time
openrc-run: remove unsetenv before setenv(..., true)
mountinfo: don't kill openrc on do_unmount
init.d/localmount: don't unmount /etc, our init scripts live there
supervise-daemon: properly error check dup2 on ready.fd
librc: add rc_service_{set,get}env and rc_env_{export,merge}
librc: clear service envdir on stop
value: add service_export helper
openrc-run: implement 'reexport' depend keyword.
openrc-run: import variables from dependent services
rc-environ: new binary
openrc-user: write startup environment for pam
pam_openrc: export user starting environment
sysv-initctl: add /run/initctl compatibility daemon
librc: unlink environ over rm_dir on mark stop
openrc-run.sh: extract _setup_cgroup function and replace break with return
openrc-run.sh: fixup permission check.
openrc-run: print argv[0], not openrc_sh
openrc-run: free openrc_sh
openrc-run: fix bitwise logic
checkpath: don't add O_TRUNC for -D
openrc-run: return error status from svc_exec on non-child failures
openrc-run: use shells' stdout over fd3
add .mailmap
sh/openrc-run.sh: check RC_USER_SERVICES in verify_boot
librc: rework service environment api
rc-environ: add service setenv functionality
openrc-run: always set RC_REEXPORT
librc: remove unused rc_dirs.datadir
librc: improve RC_PATH and use XDG_CONFIG_DIRS only for --user
librc, meson: remove PKG_PREFIX
librc: add build option to set default RC_PATH
librc: suffix /user to RC_PATH when --user is used
openrc-run: check if to-run command is declared
openrc-run.sh: brace ${_func} properly
*: untie RC_USER_SERVICES from rc_set_user
openrc-run.sh: fixup source path for rc.conf
rc-environ: remove extra vars assignment/iteration
librc: remove unused serrno variable from rc_service_getenv
shared/misc: allow RC_SVCDIR and RC_PATH
rc-service: call env_config before exec
librc: check RC_USER_SERVICES in rc_is_user
librc: create svcdir in rc_dirfd as well
shared/misc: allow globs in rc_env_allow
sysv-initctl: open write end of fifo to prevent busylooping
rc-service: also filter the environment
README: finally add no LLM contribution rule.
librc: load configs from RC_PATH, matching openrc-run.sh behaviour
release 0.64
neilpang (1):
ci: build and test on FreeBSD with GitHub Actions
nilninull (1):
Added missing options to the zsh completion definitions
zyxhere💭 (1):
openrc-run: document `SIGTERM` as default stop signal