Skip to content

0.64

@navi-desu navi-desu tagged this 15 Sep 17:16
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
Assets 2
Loading