diff --git a/NEWS.md b/NEWS.md index d50741ab..931d0abd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,12 @@ the information in this file is in reverse order. ## OpenRC-0.22 +In previous versions of OpenRC, configuration information was processed +so that service-specific configuration stored in /etc/conf.d/* was +overridden by global configuration stored in /etc/rc.conf. This release +reverses that. Global configuration is now overridden by +service-specific configuration. + The swapfiles service, which was basically a copy of the swap service, has been removed. If you are only using swap partitions, this change will not affect you. If you are using swap files, please adjust the diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in index ce5432f8..4cbfb162 100644 --- a/sh/openrc-run.sh.in +++ b/sh/openrc-run.sh.in @@ -193,6 +193,15 @@ status() yesno $RC_DEBUG && set -x +# Load configuration settings. First the global ones, then any +# service-specific settings. +sourcex -e "@SYSCONFDIR@/rc.conf" +if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then + for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do + sourcex -e "$_f" + done +fi + _conf_d=${RC_SERVICE%/*}/../conf.d # If we're net.eth0 or openvpn.work then load net or openvpn config _c=${RC_SVCNAME%%.*} @@ -209,15 +218,6 @@ if ! sourcex -e "$_conf_d/$RC_SVCNAME.$RC_RUNLEVEL"; then fi unset _conf_d -# Load any system overrides -sourcex -e "@SYSCONFDIR@/rc.conf" -if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then - for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do - sourcex -e "$_f" - done -fi - - # load service supervisor functions sourcex "@LIBEXECDIR@/sh/runit.sh" sourcex "@LIBEXECDIR@/sh/s6.sh"