Compare commits

..

3 Commits
0.19 ... 0.18.1

Author SHA1 Message Date
William Hubbs
feba5d86b7 mountinfo: make sure the netdev variable is initialized on Linux
This fixes the following regression:

X-Gentoo-Bug: 562668
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668
2015-10-13 09:10:47 -05:00
William Hubbs
3b1e96a6a3 openrc-run.sh: allow spaces in required_{files,dirs}
X-Gentoo-Bug: 562320
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320
2015-10-13 09:10:47 -05:00
William Hubbs
79998bdf9c increment version number 2015-10-13 09:10:28 -05:00
32 changed files with 465 additions and 702 deletions

449
ChangeLog
View File

@@ -1,218 +1,3 @@
commit b810473e4f7218afbb7047890860c15a8c45472b
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
man/openrc-run.8: Clarify documentation on dependencies and keywords
Provide an example of using the -containers keyword and clarify
documentation on some of the dependency functions.
commit 627e925463068e754ffd869f99a43634d6d9631e
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
add support for -containers keyword
commit f5cf1136e70502ee530f20f0434f312611b12b51
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Use systype variable for rc_sys call
commit a4038e11712d4c3f87f541f90be0b88f2903b82d
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
rc.conf.Linux: document the rkt keyword
commit a0cf8f91246ff4487b36d6432dab787e5b10957d
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add detection for rkt containers
commit 9fedb3b40b5983372b2c2de29dfe321c6dfaadf4
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add detection for docker containers
commit 635e33cdc8f18bb290756633ce0714c496383cfb
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
librc: comsolidate rc_sys_v1 and rc_sys_v2 into rc_sys
These functions were never meant to be used outside of OpenRC, and they
were added when we thought we were going to do away with the automatic
detection of subsystems. Since the autodetection is not going away, we
can combine these functions into rc_sys.
commit bd9456ff3172cc88f32d67bd4e789e2beee43595
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
rc-functions.sh: add support for user-defined want dependencies
commit 33d3f33b3ca7dd2ce616b8182d588d0743c2f124
Author: Ian Stakenvicius <axs@gentoo.org>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Implement "want" dependency
The want dependency is similar to the use dependency. If a service
script, for example called service1, adds "want service2" to its depend
function, OpenRC will attempt to start service2, if it exists on the
system, when service1 is started.
However, service1 will start regardless of the status of
service2.
X-Gentoo-Bug: 406021
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=406021
commit ddb895b355e02c9c07b00bfaf00d1bf8a7abbc03
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
conf.d/netmount: typo fix
X-Gentoo-Bug: 564846
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=564846
commit 085d77f17e3bedd23ffa96fe7e4eb8515ae8bfc6
Author: Benda Xu <heroxbd@gentoo.org>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Standardize macro tests for gnu hurd
This also fixes breakage of GNU/hurd builds introduced by commit 3f82edbeb92.
commit c831f1f994e187afd8edfff15e4063b99440bbcb
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
librc: rework overriding rc.conf options from the kcl
Rename the rc_conf_override function to describe its purpose better,
drop one conditional compile by making it available everywhere, and move
the call to it after the optional rc.conf.d directory is processed.
commit 591aea28215a8b5ad8660184dc6f6f15ff0c18b4
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
librc: Remove redundant code from rc_config_load
commit c09eeca49145b034df6527c500099ba22f28e824
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add rc.conf.d support
This makes it possible to override settings in rc.conf by adding a
directory @SYSCONFDIR@/rc.conf.d and putting files in this directory.
The files will be processed in lexical order, and the last setting in
these files will be used.
commit 4cf6b0ecf7f5b35a6d80d76c60e77c3e1c7fee5c
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
consolefont: add after modules to dependencies
X-Gentoo-Bug: 559540
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=559540
commit ee944553a9ea35622046bd1ab5657fd416a7019a
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
bootmisc: optionally save the previous dmesg log
X-Gentoo-Bug: 561204
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=561204
commit 6cae41a4e63510cdcf3af1153d6e8300435e1838
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
etc/rc.conf: Clean up documentation for rc_hotplug
X-Gentoo-Bug: 554540
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=554540
commit 960881fcfe974178c0846a816663a258cdd488cc
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add net-online service
commit d26013494db8ea8699db9815ef4c4b0eb2f55e7f
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
mtab: typo fix
commit b29b2fb3cb3e73b4453483ced908f0ef10e47e9c
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
mtab: make /etc/mtab as a file configurable
commit 7da72ce487a8d92d992e7fd3db881c198ae02609
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
openrc-run.sh: fix new required_* tests to exit properly
commit fc777aeaf3e6e2d47f4599acfe6c8d1bf5bc760a
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
typo fix
X-Gentoo-Bug: 563010
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=563010
commit 9d53d436ae22d6f0f6fc1537e836dd1b4d31cf35
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
sysfs: consolidate cgroup processing code in a single function
commit b81317bdf8e3eed8b8ff2bef757ba29f362ed297
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
mountinfo: make sure the netdev variable is initialized on Linux
This fixes the following regression:
X-Gentoo-Bug: 562668
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668
commit 29f7e335927d4c1fb151124de8cdf01fb87723fa
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
openrc-run.sh: allow spaces in required_{files,dirs}
X-Gentoo-Bug: 562320
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320
commit 850ca030777cb0c3e2fb03d9ab1f0ccee7b89e93
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
increment version number
commit 050ddfae4ad1ad0dc5993766e0bd90739bd41de9
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Update ChangeLog
commit d5116cc697c9eb275ab8497939ab41504e5ce578
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
@@ -1212,3 +997,237 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
This is a more descriptive name since this file only sets the gitver
variable.
commit 30cc3cdb76a66c7c0f89a52db4e5cff77b570e31
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Make sysfs behave like netmount and localmount
sysfs now mounts all related sysfs file systems and returns success,
like netmount and localmount.
Also, we now check to make sure the cgroups are not mounted before we
mount them.
X-Gentoo-Bug: 530138
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=530138
commit dff6e4a004afeaa64f4ccb07c7d31bb821b043b4
Author: S. Gilles <sgilles@umd.edu>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix mdoc warning for empty line in rc-update man page.
X-Gentoo-Bug: 529374
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=529374
commit 3fad31a994f7eb14f3f001f3980eb2b0ae8fe4f1
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
init.d: add osclock to ignore patterns
commit 8d0ca13fbd38e782bae655eca6646dabc8d63899
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
devfs: optionally add missing symbolic links
If symbolic links for /dev/{fd,stdin,stdout,stderr,core} do not exist
once /dev is mounted, we should create them.
commit 93ba67eff9333e434c969bb8131467f777546764
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
netmount: unmount nfs file systems
commit 1932360adca3f9fe9b47bcfad7b8bd5efbd33bee
Author: Jason Zaman <jason@perfinion.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Integrate the functionality from runscript_selinux.so
runscript used to dlopen() runscript_selinux.so. This adds equivalent
functionality directly in to runscript instead. It authenticates with
either PAM or shadow and optionally has a dep on audit.
X-Gentoo-Bug: 517450
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=517450
commit be952bebb3647069fb93b9791ee3439698f697ca
Author: Alexander Vershilov <alexander.vershilov@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix incorrect handling of chroot option.
Fixes #28.
X-Gentoo-Bug: #527370
X-Gentoo-Bug-Url: https://bugs.gentoo.org/show_bug.cgi?id=527370
commit 0bfde472d0154f14ea88c0f5ddd21a510443d713
Author: Ralph Sennhauser <sera@gentoo.org>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add osclock service
This scripts sole purpose is to "provide clock" on OSs that already
take care of the clock being properly set.
commit ba0a11fc94d303e208dd364b06c1c2a75bcdd62b
Author: Johan Bergström <bugs@bergstroem.nu>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Pass ncurses cflags to build
Fixes #25
Note from William Hubbs:
The original patch overwrote CFLAGS. I modified this patch to add the
ncurses cflags to CPPFLAGS instead of overwriting CFLAGS.
commit 7700e6fe796cabfa22eefddc024d66257a28d4dc
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix compile errors created by bundling queue.h
commit 6ca79042b9aa9752e577346e6f355356ef8f2f9a
Author: Anthony G. Basile <blueness@gentoo.org>
Commit: William Hubbs <w.d.hubbs@gmail.com>
helpers.h, start-stop-daemon.c: remove uneeded macros
TAILQ_CONCAT, TAILQ_FOREACH_SAFE and LIST_FOREACH_SAFE are defined
in our bundled queue.h and are no longer required.
commit 1e0a4bebdefd06af09ba8f2459287d3ca28f89d7
Author: Anthony G. Basile <blueness@gentoo.org>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Bundle <sys/queue.h> from NetBSD
We are bundling this to allow building on musl-based systems since musl
does not include <sys/queue.h>.
commit ca6b86be44fc7ed618a7ab3bd021e208d38878b1
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix all tests for GNU/kFreeBSD
It is necessary to check for both the kernel and c library because
__FreeBSD_kernel is also defined on native FreeBSD [1].
[1] http://sourceforge.net/p/predef/wiki/OperatingSystems/
commit 4ac289b5397a688393c596a9a01651c94d3b5711
Author: Gabriele Giacone <1o5g4r8o@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix rc_svcdir for GNU/Hurd
commit 875f03e27c3475675f7b9572b071dd8c26257be7
Author: Svante Signell <svante.signell@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
fix defines for GNU/Hurd
commit 203b754f843fe6af0a40e983d557a9cdbc89f84b
Author: Svante Signell <svante.signell@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
add missing files for GNU/Hurd
commit 89c8a62a1078e770e12c47f06c8dbc9c2924e771
Author: Gabriele Giacone <1o5g4r8o@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix rc_svcdir for GNU/kFreeBSD
commit d8e1d9a6edf94ecac580e80e1113f4fdbdc5a23b
Author: Gabriele Giacone <1o5g4r8o@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add missing files for GNU/kFreeBSD
commit 3f82edbeb9251149c6aff071d6537379af4e5eea
Author: Svante Signell <svante.signell@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Fix GNU/kFreeBSD port
Check for __FreeBSD_kernel instead of __GLIBC__ in source files.
note from William Hubbs:
I was told this is a better check for GNU/kFreeBSD than checking the
C library the source is being compiled against.
GNU/kFreeBSD than checking which library we are using.
commit 86e9aa0d36813e2630c6613cd71c3ce8db642f71
Author: Anthony G. Basile <blueness@gentoo.org>
Commit: Anthony G. Basile <blueness@gentoo.org>
einfo.h, rc.h.in: simplify __BEGIN_DECLS logic
There is no need to redefine __BEGIN_DECLS and __END_DECLS.
We simplify the logic here and avoid undefining these macros.
commit 4a08517cac3c68c232694db7288654b58b68b8ba
Author: Anthony G. Basile <blueness@gentoo.org>
Commit: Anthony G. Basile <blueness@gentoo.org>
einfo.h, rc.h.in: ensure __BEGIN_DECLS is defined
Some Standard C Libraries, like musl, don't define __BEGIN_DECLS
or __END_DECLS. We add some ifdef magic to ensure these are
available.
commit 9bf789f78890c8b5879d29acb9fb0e23285baee4
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Update news file wrt chroot variable
commit f9acd65497c6e561fbf5420386a99d681fede859
Author: Alexander Vershilov <alexander.vershilov@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
librc:look for the pid file in a chroot if defined
X-Gentoo-Bug: 524388
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=524388
commit 8c7ea4e9e8da500877a514402bbe90aababda2d6
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
runscript.sh: add chroot support
This adds support for a chroot variable which will be passed to the
start-stop-daemon --chroot switch to runscript.sh when starting a
daemon. This also needs to be saved so it can be used in locating the
pid file when stopping the daemon.
X-Gentoo-Bug: 524388
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=524388
commit 5f1439f1aac14618592789042e05daaf80f55a15
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
Add NEWS file
commit 85da4a5e2621dc5f5356d440735aa058008a1b7e
Author: William Hubbs <w.d.hubbs@gmail.com>
Commit: William Hubbs <w.d.hubbs@gmail.com>
add back nfs and nfs4 file systems
Fix gentoo bug #427996 correctly.
We should attempt to mount the file systems, but not try to start the
daemons. The previous fix removed mounting the file systems as well as
starting the daemons.
X-Gentoo-Bug: 508574
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=508574

View File

@@ -1,3 +1,3 @@
NAME= openrc
VERSION= 0.19
VERSION= 0.18.1
PKG= ${NAME}-${VERSION}

35
NEWS.md
View File

@@ -3,41 +3,6 @@
This file will contain a list of notable changes for each release. Note
the information in this file is in reverse order.
## OpenRC-0.19
This version adds a net-online service. By default, this
service will check all known network interfaces for a configured
interface or a carrier. It will register as started only when all
interfaces are configured and there is at least a carrier on one
interface. The behaviour of this service can be modified in
/etc/conf.d/net-online.
Currently, this only works on Linux, but if anyone wants to port to
*bsd, that would be welcomed.
## OpenRC-0.18.3
Modern Linux systems expect /etc/mtab to be a symbolic link to
/proc/self/mounts. Reasons for this change include support for mount
namespaces, which will not work if /etc/mtab is a file.
By default, the mtab service enforces this on each reboot.
If you find that this breaks your system in some way, please do the
following:
- Set mtab_is_file=yes in /etc/conf.d/mtab.
- Restart mtab. This will recreate the /etc/mtab file.
- Check for an issue on https://github.com/openrc/openrc/issues
explaining why you need /etc/mtab to be a file. If there isn't one,
please open one and explain in detail why you need this to be a file.
If there is one, please add your comments to it. Please give concrete
examples of why it is important that /etc/mtab be a file instead of a
symbolic link. Those comments will be taken into consideration for how
long to keep supporting mtab as a file or when the support can be
removed.
## OpenRC-0.18
The behaviour of localmount and netmount in this version is changing. In

View File

@@ -15,8 +15,7 @@ include ${MK}/os.mk
CONF-FreeBSD= ipfw moused powerd rarpd savecore syscons
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules mtab \
net-online
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules
CONF-NetBSD= moused rarpd savecore

View File

@@ -8,8 +8,3 @@ wipe_tmp="YES"
# Write the initial dmesg log into /var/log/dmesg after boot
# This may be useful if you need the kernel boot log afterwards
log_dmesg="YES"
# Save the previous dmesg log to dmesc.old
# This may be useful if you need to compare the current boot to the
# previous one.
#previous_dmesg=no

View File

@@ -1,5 +0,0 @@
# This setting controls whether /etc/mtab is a file or symbolic link.
# Most of the time, you shouldn't touch this. However, if the default
# breaks your system in some way, please see the NEWS.md file that comes
# with OpenRC for the actions to take.
# mtab_is_file=no

View File

@@ -1,15 +0,0 @@
# The interfaces setting controls which interfaces the net-online
# service considers in deciding whether the network is active. By
# default, it is all ethernet or wireless LAN interfaces.
#interfaces=""
# This setting controls whether a ping to the default gateway is
# included in the test for network connectivity after all interfaces
# are active.
#ping_default_gateway=no
# The timeout setting controls how long the net-online service waits
# for the network to be configured.
# The default is 120 seconds.
# if this is set to 0, the wait is infinite.
#timeout=120

View File

@@ -25,11 +25,11 @@
#rc_need="net.eth1 net.eth2"
#
# If you are using a dynamic network management tool like
# NetworkManager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to
# networkmanager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to
# manage the network interfaces with the routes to your netmounts, you
# should list that tool.
#
#rc_need="NetworkManager"
#rc_need="networkmanager"
#rc_need="dhcpcd"
#rc_need="wicd"
#

View File

@@ -3,11 +3,9 @@
# This is the subsystem type. Valid options on Linux:
# "" - nothing special
# "docker" - Docker container manager
# "lxc" - Linux Containers
# "openvz" - Linux OpenVZ
# "prefix" - Prefix
# "rkt" - CoreOS container management system
# "uml" - Usermode Linux
# "vserver" - Linux vserver
# "systemd-nspawn" - Container created by the systemd-nspawn utility

View File

@@ -29,20 +29,17 @@
# come up.
#rc_depend_strict="YES"
# rc_hotplug controls which services we allow to be hotplugged.
# rc_hotplug is a list of services that we allow to be hotplugged.
# By default we do not allow hotplugging.
# A hotplugged service is one started by a dynamic dev manager when a matching
# hardware device is found.
# Hotplugged services appear in the "hotplugged" runlevel.
# If rc_hotplug is set to any value, we compare the name of this service
# to every pattern in the value, from left to right, and we allow the
# service to be hotplugged if it matches a pattern, or if it matches no
# patterns. Patterns can include shell wildcards.
# To disable services from being hotplugged, prefix patterns with "!".
#If rc_hotplug is not set or is empty, all hotplugging is disabled.
# This service is intrinsically included in the boot runlevel.
# To disable services, prefix with a !
# Example - rc_hotplug="net.wlan !net.*"
# This allows net.wlan and any service not matching net.* to be hotplugged.
# Example - rc_hotplug="!net.*"
# This allows services that do not match "net.*" to be hotplugged.
# This allows net.wlan and any service not matching net.* to be plugged.
# Example - rc_hotplug="*"
# This allows all services to be hotplugged
#rc_hotplug="*"
# rc_logger launches a logging daemon to log the entire rc process to
# /var/log/rc.log

View File

@@ -23,7 +23,7 @@ SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \
SRCS-Linux= binfmt.in devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \
killprocs.in modules.in mount-ro.in mtab.in numlock.in \
procfs.in net-online.in sysfs.in termencoding.in tmpfiles.dev.in
procfs.in sysfs.in termencoding.in tmpfiles.dev.in
# Generic BSD scripts
SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \

View File

@@ -216,9 +216,6 @@ start()
case "$RC_SYS" in
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
*)
if yesno ${previous_dmesg:-no}; then
mv /var/log/dmesg /var/log/dmesg.old
fi
dmesg > /var/log/dmesg
chmod 640 /var/log/dmesg
;;

View File

@@ -7,7 +7,7 @@ description="Sets a font for the consoles."
depend()
{
need localmount termencoding
after hotplug bootmisc modules
after hotplug bootmisc
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
}

View File

@@ -14,17 +14,16 @@ start()
{
local rc=0
ebegin "Updating /etc/mtab"
if ! checkpath -W /etc; then
if [ -L /etc/mtab ] ; then
ewarn "/etc/mtab is a symlink, not updating."
ewarn "FYI - You can safely remove mtab from your runlevels."
elif ! checkpath -W /etc; then
rc=1
elif ! yesno ${mtab_is_file:-no}; then
[ ! -L /etc/mtab ] && [ -f /etc/mtab ] &&
ewarn "Removing /etc/mtab file"
einfo "Creating mtab symbolic link"
elif [ ! -e /etc/mtab ]; then
einfo "Creating mtab symlink"
ln -snf /proc/self/mounts /etc/mtab
else
[ -L /etc/mtab ] && ewarn "Removing /etc/mtab symbolic link"
rm -f /etc/mtab
einfo "Creating mtab file"
einfo "Updating mtab file"
# With / as tmpfs we cannot umount -at tmpfs in localmount as that
# makes / readonly and dismounts all tmpfs even if in use which is
# not good. Luckily, umount uses /etc/mtab instead of /proc/mounts

View File

@@ -1,69 +0,0 @@
#!@SBINDIR@/openrc-run
# Copyright (C) 2015 William Hubbs <w.d.hubbs@gmail.com>
# Released under the 2-clause BSD license.
description="Delays until the network is online or a specific timeout"
depend()
{
after modules
need sysfs
keyword -jail -lxc -openvz -prefix -systemd-nspawn -uml -vserver
}
get_interfaces()
{
local ifname iftype
for ifname in /sys/class/net/*; do
read iftype < ${ifname}/type
[ "$iftype" = "1" ] && printf "%s " ${ifname##*/}
done
}
get_default_gateway()
{
local cmd gateway
if command -v ip > /dev/null 2>&1; then
cmd="ip route show"
else
cmd=route
fi
set -- $($cmd | grep default)
[ "$2" != via ] && gateway="$2" || gateway="$3"
printf "%s" $gateway
}
start ()
{
local carriers configured dev gateway ifcount infinite interfaces
local rc state timeout x
ebegin "Checking to see if the network is online"
rc=0
interfaces=${interfaces:-$(get_interfaces)}
timeout=${timeout:-120}
[ $timeout -eq 0 ] && infinite=true || infinite=false
while $infinite || [ $timeout -gt 0 ]; do
carriers=0
configured=0
ifcount=0
for dev in ${interfaces}; do
: $((ifcount += 1))
read x < /sys/class/net/$dev/carrier
[ $x -eq 1 ] && : $((carriers += 1))
read x < /sys/class/net/$dev/operstate
[ "$x" = up ] && : $((configured += 1))
done
[ $configured -eq $ifcount ] && [ $carriers -ge 1 ] && break
sleep 1
: $((timeout -= 1))
done
! $infinite && [ $timeout -eq 0 ] && rc=1
if [ $rc -eq 0 ] && yesno ${ping_default_gateway:-no}; then
gateway="$(get_default_gateway)"
if [ -n "$gateway" ] && ! ping -c 1 $gateway > /dev/null 2>&1; then
rc=1
fi
fi
eend $rc "The network is offline"
}

View File

@@ -61,6 +61,16 @@ mount_misc()
fi
fi
# set up kernel support for cgroups
if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
if grep -qs cgroup /proc/filesystems; then
ebegin "Mounting cgroup filesystem"
local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}"
mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
eend $?
fi
fi
# set up kernel support for fusectl
if [ -d /sys/fs/fuse/connections ] \
&& ! mountinfo -q /sys/fs/fuse/connections; then
@@ -98,16 +108,6 @@ mount_misc()
mount_cgroups()
{
# set up kernel support for cgroups
if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
if grep -qs cgroup /proc/filesystems; then
ebegin "Mounting cgroup filesystem"
local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}"
mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
eend $?
fi
fi
mountinfo -q /sys/fs/cgroup || return 0
if ! mountinfo -q /sys/fs/cgroup/openrc; then

View File

@@ -166,25 +166,21 @@ will start and stop it in the right order in relation to other services.
As it's a function it can be very flexible, see the example below.
Here is a list of the functions you can use in a
.Ic depend
function. You simply pass the names of the services you want to add to
that dependency type to the function, or prefix the names with ! to
remove them from the dependencies.
function. You simply pass the names of the services to it to add to that
dependency type, or prefix it with ! to remove it.
.Bl -tag -width "RC_DEFAULTLEVEL"
.It Ic need
The service will refuse to start until needed services have started and it
will refuse to stop until any services that need it have stopped.
.It Ic use
The service will attempt to start any services it uses that have been added
The service will attempt to start any services we use that have been added
to the runlevel.
.It Ic want
The service will attempt to start any services it wants, regardless of
whether they have been added to the runlevel.
.It Ic after
The service will start after these services and stop before these services.
.It Ic before
The service will start before these services and stop after these services.
.It Ic provide
The service provides this virtual service. For example, named provides dns.
We provide this virtual service. For example, named provides dns.
Virtual services take precedence over real services, so it is highly
recommended that you do not have a real service that has the same name
as a virtual service.
@@ -217,8 +213,6 @@ Same as -jail, but for Linux Resource Containers (LXC).
Same as -jail, but for OpenVZ systems.
.It Dv -prefix
Same as -jail, but for Prefix systems.
.It Dv -rkt
Same as -jail, but for RKT systems.
.It Dv -uml
Same as -jail, but for UML systems.
.It Dv -vserver
@@ -227,11 +221,6 @@ Same as -jail, but for VServer systems.
Same as -jail, but for Xen DOM0 systems.
.It Dv -xenu
Same as -jail, but for Xen DOMU systems.
.It Dv -docker
Same as -jail, but for docker systems.
.It Dv -containers
Same as -jail, but for all relevant container types on the operating
system.
.El
.El
.Pp
@@ -473,9 +462,6 @@ rc_net_tap1_provide="!net"
# It's also possible to negate keywords. This is mainly useful for prefix
# users testing OpenRC.
rc_keyword="!-prefix"
# This can also be used to block a script from runining in all
# containers except one or two
rc_keyword="!-containers !-docker"
.Ed
.Sh EXAMPLES
.Pp

View File

@@ -16,9 +16,6 @@ need() {
use() {
[ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3
}
want() {
[ -n "$*" ] && echo "$RC_SVCNAME iwant $*" >&3
}
before() {
[ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3
}
@@ -29,18 +26,7 @@ provide() {
[ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3
}
keyword() {
local c x
set -- $*
while [ -n "$*" ]; do
case "$1" in
-containers) x="$(_get_containers)" ;;
!-containers) x="$(_get_containers_remove)" ;;
*) x=$1 ;;
esac
c="${c}${x} "
shift
done
[ -n "$c" ] && echo "$RC_SVCNAME keyword $c" >&3
[ -n "$*" ] && echo "$RC_SVCNAME keyword $*" >&3
}
depend() {
:

View File

@@ -66,9 +66,6 @@ need() {
use() {
[ -n "$*" ] && echo "use $*"
}
want() {
[ -n "$*" ] && echo "want $*"
}
before() {
[ -n "$*" ] && echo "before $*"
}
@@ -79,18 +76,7 @@ provide() {
[ -n "$*" ] && echo "provide $*"
}
keyword() {
local c x
set -- $*
while [ -n "$*" ]; do
case "$1" in
-containers) x="$(_get_containers)" ;;
!-containers) x="$(_get_containers_remove)" ;;
*) x=$1 ;;
esac
c="${c}${x} "
shift
done
[ -n "$c" ] && echo "keyword $c"
[ -n "$*" ] && echo "keyword $*"
}
# Describe the init script to the user
@@ -198,12 +184,6 @@ 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/s6.sh"
@@ -242,21 +222,19 @@ done
sourcex "$RC_SERVICE"
eval "printf '%s\n' $required_dirs" | while read _d; do
if [ -n "$_d" ] && [ ! -d "$_d" ]; then
if [ ! -d "$_d" ]; then
eerror "$RC_SVCNAME: \`$_d' is not a directory"
exit 1
fi
done
[ $? -ne 0 ] && exit 1
unset _d
eval "printf '%s\n' $required_files" | while read _f; do
if [ -n "$_f" ] && [ ! -r "$_f" ]; then
if [ ! -r "$_f" ]; then
eerror "$RC_SVCNAME: \`$_f' is not readable"
exit 1
fi
done
[ $? -ne 0 ] && exit 1
unset _f
if [ -n "$opts" ]; then

View File

@@ -86,33 +86,12 @@ get_bootparam()
}
# Called from openrc-run.sh or gendepends.sh
_get_containers() {
local c
case "${RC_UNAME}" in
FreeBSD)
c="-jail"
;;
Linux)
c="-docker -lxc -openvz -rkt -systemd-nspawn -uml -vserver"
;;
esac
echo $c
}
_get_containers_remove() {
local c
for x in $(_get_containers); do
c="${c}!${x} "
done
echo $c
}
_depend() {
depend
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends=
# Add any user defined depends
for _deptype in config:CONFIG need:NEED use:USE want:WANT \
for _deptype in config:CONFIG need:NEED use:USE \
after:AFTER before:BEFORE \
provide:PROVIDE keyword:KEYWORD; do
IFS=:

View File

@@ -31,8 +31,7 @@
#include "queue.h"
#include "librc.h"
#if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__)) \
|| defined(__GNU__)
#if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__))
static bool
pid_is_exec(pid_t pid, const char *exec)
{

View File

@@ -192,9 +192,7 @@ valid_service(const char *runlevel, const char *service, const char *type)
if (!runlevel ||
strcmp(type, "ineed") == 0 ||
strcmp(type, "needsme") == 0 ||
strcmp(type, "iwant") == 0 ||
strcmp(type, "wantsme") == 0)
strcmp(type, "needsme") == 0)
return true;
if (rc_service_in_runlevel(service, runlevel))
@@ -545,7 +543,6 @@ rc_deptree_order(const RC_DEPTREE *deptree, const char *runlevel, int options)
types = rc_stringlist_new();
rc_stringlist_add(types, "ineed");
rc_stringlist_add(types, "iuse");
rc_stringlist_add(types, "iwant");
rc_stringlist_add(types, "iafter");
services = rc_deptree_depends(deptree, types, list, runlevel,
RC_DEP_STRICT | RC_DEP_TRACE | options);
@@ -651,7 +648,6 @@ typedef struct deppair
static const DEPPAIR deppairs[] = {
{ "ineed", "needsme" },
{ "iuse", "usesme" },
{ "iwant", "wantsme" },
{ "iafter", "ibefore" },
{ "ibefore", "iafter" },
{ "iprovide", "providedby" },
@@ -848,7 +844,6 @@ rc_deptree_update(void)
/* If we're after something, remove us from the before list */
if (strcmp(type, "iafter") == 0 ||
strcmp(type, "ineed") == 0 ||
strcmp(type, "iwant") == 0 ||
strcmp(type, "iuse") == 0) {
if ((dt = get_deptype(depinfo, "ibefore")))
rc_stringlist_delete(dt->services, depend);
@@ -962,7 +957,6 @@ rc_deptree_update(void)
/* Phase 5 - Remove broken before directives */
types = rc_stringlist_new();
rc_stringlist_add(types, "ineed");
rc_stringlist_add(types, "iwant");
rc_stringlist_add(types, "iuse");
rc_stringlist_add(types, "iafter");
TAILQ_FOREACH(depinfo, deptree, entries) {

View File

@@ -28,8 +28,6 @@
* SUCH DAMAGE.
*/
#include <fnmatch.h>
#include "queue.h"
#include "librc.h"
@@ -216,78 +214,12 @@ rc_config_list(const char *file)
}
librc_hidden_def(rc_config_list)
static void rc_config_set_value(RC_STRINGLIST *config, char *value)
{
RC_STRING *cline;
char *entry;
size_t i = 0;
char *newline;
char *p = value;
bool replaced;
char *token;
if (! p)
return;
if (strncmp(p, "export ", 7) == 0)
p += 7;
if (! (token = strsep(&p, "=")))
return;
entry = xstrdup(token);
/* Preserve shell coloring */
if (*p == '$')
token = value;
else
do {
/* Bash variables are usually quoted */
token = strsep(&p, "\"\'");
} while (token && *token == '\0');
/* Drop a newline if that's all we have */
if (token) {
i = strlen(token) - 1;
if (token[i] == '\n')
token[i] = 0;
i = strlen(entry) + strlen(token) + 2;
newline = xmalloc(sizeof(char) * i);
snprintf(newline, i, "%s=%s", entry, token);
} else {
i = strlen(entry) + 2;
newline = xmalloc(sizeof(char) * i);
snprintf(newline, i, "%s=", entry);
}
replaced = false;
/* In shells the last item takes precedence, so we need to remove
any prior values we may already have */
TAILQ_FOREACH(cline, config, entries) {
i = strlen(entry);
if (strncmp(entry, cline->value, i) == 0 && cline->value[i] == '=') {
/* We have a match now - to save time we directly replace it */
free(cline->value);
cline->value = newline;
replaced = true;
break;
}
}
if (!replaced) {
rc_stringlist_add(config, newline);
free(newline);
}
free(entry);
}
/*
* Override some specific rc.conf options on the kernel command line.
* I only know how to do this in Linux, so if someone wants to supply
* a patch for this on *BSD or tell me how to write the code to do this,
* any suggestions are welcome.
* Override some specific rc.conf options on the kernel command line
*/
static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config)
{
#ifdef __linux__
static RC_STRINGLIST *rc_config_override(RC_STRINGLIST *config)
{
RC_STRINGLIST *overrides;
RC_STRING *cline, *override, *config_np;
char *tmp = NULL;
@@ -336,60 +268,90 @@ static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config)
}
rc_stringlist_free(overrides);
return config;
}
#endif
return config;
}
static RC_STRINGLIST * rc_config_directory(RC_STRINGLIST *config)
{
DIR *dp;
struct dirent *d;
RC_STRINGLIST *rc_conf_d_files = rc_stringlist_new();
RC_STRING *fname;
RC_STRINGLIST *rc_conf_d_list;
char path[PATH_MAX];
RC_STRING *line;
if ((dp = opendir(RC_CONF_D)) != NULL) {
while ((d = readdir(dp)) != NULL) {
if (fnmatch("*.conf", d->d_name, FNM_PATHNAME) == 0) {
rc_stringlist_addu(rc_conf_d_files, d->d_name);
}
}
closedir(dp);
if (rc_conf_d_files) {
rc_stringlist_sort(&rc_conf_d_files);
TAILQ_FOREACH(fname, rc_conf_d_files, entries) {
if (! fname->value)
continue;
sprintf(path, "%s/%s", RC_CONF_D, fname->value);
rc_conf_d_list = rc_config_list(path);
TAILQ_FOREACH(line, rc_conf_d_list, entries)
if (line->value)
rc_config_set_value(config, line->value);
rc_stringlist_free(rc_conf_d_list);
}
rc_stringlist_free(rc_conf_d_files);
}
}
return config;
}
RC_STRINGLIST *
rc_config_load(const char *file)
{
RC_STRINGLIST *list;
RC_STRINGLIST *config;
char *token;
RC_STRING *line;
RC_STRING *cline;
size_t i = 0;
bool replaced;
char *entry;
char *newline;
char *p;
list = rc_config_list(file);
config = rc_stringlist_new();
TAILQ_FOREACH(line, list, entries) {
rc_config_set_value(config, line->value);
/* Get entry */
p = line->value;
if (! p)
continue;
if (strncmp(p, "export ", 7) == 0)
p += 7;
if (! (token = strsep(&p, "=")))
continue;
entry = xstrdup(token);
/* Preserve shell coloring */
if (*p == '$')
token = line->value;
else
do {
/* Bash variables are usually quoted */
token = strsep(&p, "\"\'");
} while (token && *token == '\0');
/* Drop a newline if that's all we have */
if (token) {
i = strlen(token) - 1;
if (token[i] == '\n')
token[i] = 0;
i = strlen(entry) + strlen(token) + 2;
newline = xmalloc(sizeof(char) * i);
snprintf(newline, i, "%s=%s", entry, token);
} else {
i = strlen(entry) + 2;
newline = xmalloc(sizeof(char) * i);
snprintf(newline, i, "%s=", entry);
}
replaced = false;
/* In shells the last item takes precedence, so we need to remove
any prior values we may already have */
TAILQ_FOREACH(cline, config, entries) {
i = strlen(entry);
if (strncmp(entry, cline->value, i) == 0 && cline->value[i] == '=') {
/* We have a match now - to save time we directly replace it */
free(cline->value);
cline->value = newline;
replaced = true;
break;
}
}
if (!replaced) {
rc_stringlist_add(config, newline);
free(newline);
}
free(entry);
}
rc_stringlist_free(list);
#ifdef __linux__
/* Only override rc.conf settings */
if (strcmp(file, RC_CONF) == 0) {
config = rc_config_override(config);
}
#endif
return config;
}
librc_hidden_def(rc_config_load)
@@ -439,9 +401,6 @@ rc_conf_value(const char *setting)
#endif
}
rc_conf = rc_config_directory(rc_conf);
rc_conf = rc_config_kcl(rc_conf);
/* Convert old uppercase to lowercase */
TAILQ_FOREACH(s, rc_conf, entries) {
p = s->value;

View File

@@ -210,14 +210,14 @@ found:
}
#endif
/* New sys identification code
* Not to be used for any binaries outside of openrc. */
const char *
rc_sys(void)
rc_sys_v2(void)
{
#ifdef PREFIX
return RC_SYS_PREFIX;
#endif
#define __STRING_SWITCH(x) { char *__string_switch = x; if (false) {}
#define __STRING_CASE(y) else if (strcmp(__string_switch,y) == 0)
#define __STRING_SWITCH_END() }
char *systype = rc_conf_value("rc_sys");
if (systype) {
char *s = systype;
@@ -227,11 +227,43 @@ rc_sys(void)
*s = toupper((unsigned char) *s);
s++;
}
/* Now do detection */
__STRING_SWITCH(systype)
__STRING_CASE(RC_SYS_PREFIX) { return RC_SYS_PREFIX; }
#ifdef __FreeBSD__
__STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; }
#endif /* __FreeBSD__ */
#ifdef __NetBSD__
__STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; }
__STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; }
#endif /* __NetBSD__ */
#ifdef __linux__
__STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; }
__STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; }
__STRING_CASE(RC_SYS_UML) { return RC_SYS_UML; }
__STRING_CASE(RC_SYS_VSERVER) { return RC_SYS_VSERVER; }
__STRING_CASE(RC_SYS_OPENVZ) { return RC_SYS_OPENVZ; }
__STRING_CASE(RC_SYS_LXC) { return RC_SYS_LXC; }
#endif /* __linux__ */
__STRING_SWITCH_END()
}
#undef __STRING_SWITCH
#undef __STRING_CASE
#undef __STRING_SWITCH_END
return NULL;
}
librc_hidden_def(rc_sys_v2)
/* Old sys identification code.
* Not to be used for any binaries outside of openrc. */
const char *
rc_sys_v1(void)
{
#ifdef PREFIX
return RC_SYS_PREFIX;
#else
#ifdef __FreeBSD__
if (systype && strcmp(systype, RC_SYS_JAIL) == 0)
return RC_SYS_JAIL;
int jailed = 0;
size_t len = sizeof(jailed);
@@ -241,12 +273,6 @@ rc_sys(void)
#endif
#ifdef __NetBSD__
if (systype) {
if(strcmp(systype, RC_SYS_XEN0) == 0)
return RC_SYS_XEN0;
if (strcmp(systype, RC_SYS_XENU) == 0)
return RC_SYS_XENU;
}
if (exists("/kern/xen/privcmd"))
return RC_SYS_XEN0;
if (exists("/kern/xen"))
@@ -254,26 +280,6 @@ rc_sys(void)
#endif
#ifdef __linux__
if (systype) {
if (strcmp(systype, RC_SYS_XEN0) == 0)
return RC_SYS_XEN0;
if (strcmp(systype, RC_SYS_XENU) == 0)
return RC_SYS_XENU;
if (strcmp(systype, RC_SYS_UML) == 0)
return RC_SYS_UML;
if (strcmp(systype, RC_SYS_VSERVER) == 0)
return RC_SYS_VSERVER;
if (strcmp(systype, RC_SYS_OPENVZ) == 0)
return RC_SYS_OPENVZ;
if (strcmp(systype, RC_SYS_LXC) == 0)
return RC_SYS_LXC;
if (strcmp(systype, RC_SYS_RKT) == 0)
return RC_SYS_RKT;
if (strcmp(systype, RC_SYS_SYSTEMD_NSPAWN) == 0)
return RC_SYS_SYSTEMD_NSPAWN;
if (strcmp(systype, RC_SYS_DOCKER) == 0)
return RC_SYS_DOCKER;
}
if (exists("/proc/xen")) {
if (file_regex("/proc/xen/capabilities", "control_d"))
return RC_SYS_XEN0;
@@ -290,15 +296,23 @@ rc_sys(void)
return RC_SYS_OPENVZ; /* old test */
else if (file_regex("/proc/1/environ", "container=lxc"))
return RC_SYS_LXC;
else if (file_regex("/proc/1/environ", "container=rkt"))
return RC_SYS_RKT;
else if (file_regex("/proc/1/environ", "container=systemd-nspawn"))
return RC_SYS_SYSTEMD_NSPAWN;
else if (file_regex("/proc/1/environ", "container=docker"))
return RC_SYS_DOCKER;
#endif
return NULL;
#endif /* PREFIX */
}
librc_hidden_def(rc_sys_v1)
const char *
rc_sys(void)
{
if (rc_conf_value("rc_sys")) {
return rc_sys_v2();
} else {
return rc_sys_v1();
}
}
librc_hidden_def(rc_sys)

View File

@@ -130,6 +130,8 @@ librc_hidden_proto(rc_stringlist_new)
librc_hidden_proto(rc_stringlist_split)
librc_hidden_proto(rc_stringlist_sort)
librc_hidden_proto(rc_sys)
librc_hidden_proto(rc_sys_v1)
librc_hidden_proto(rc_sys_v2)
librc_hidden_proto(rc_yesno)
#endif

View File

@@ -56,7 +56,6 @@ extern "C" {
#define RC_SYS_WHITELIST RC_LIBEXECDIR "/conf.d/env_whitelist"
#define RC_USR_WHITELIST RC_SYSCONFDIR "/conf.d/env_whitelist"
#define RC_CONF RC_SYSCONFDIR "/rc.conf"
#define RC_CONF_D RC_SYSCONFDIR "/rc.conf.d"
#define RC_CONF_OLD RC_SYSCONFDIR "/conf.d/rc"
#define RC_PATH_PREFIX RC_LIBEXECDIR "/bin:/bin:/sbin:/usr/bin:/usr/sbin"
@@ -329,12 +328,10 @@ bool rc_service_daemons_crashed(const char *);
/*! @name System types
* OpenRC can support some special sub system types, normally virtualization.
* Some services cannot work in these systems, or we do something else. */
#define RC_SYS_DOCKER "DOCKER"
#define RC_SYS_JAIL "JAIL"
#define RC_SYS_OPENVZ "OPENVZ"
#define RC_SYS_LXC "LXC"
#define RC_SYS_PREFIX "PREFIX"
#define RC_SYS_RKT "RKT"
#define RC_SYS_SYSTEMD_NSPAWN "SYSTEMD-NSPAWN"
#define RC_SYS_UML "UML"
#define RC_SYS_VSERVER "VSERVER"
@@ -345,6 +342,14 @@ bool rc_service_daemons_crashed(const char *);
* @return string from RC_SYS_* types or NULL if none detected */
const char *rc_sys(void);
/*! Returns the type of subsystem using old automatic code
* @return string from RC_SYS_* types or NULL if none detected */
const char *rc_sys_v1(void);
/*! Returns the type of subsystem using new rc.conf rc_sys value
* @return string from RC_SYS_* types or NULL if none detected */
const char *rc_sys_v2(void);
/*! @name Dependency options
* These options can change the services found by the rc_get_depinfo and
* rc_get_depends functions. */

View File

@@ -39,8 +39,8 @@
# include <sys/statvfs.h>
# define statfs statvfs
# define F_FLAGS f_flag
#elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \
defined(__GLIBC__)) || defined(__GNU__)
#elif defined (__linux__) || (defined(__FreeBSD_kernel__) && \
defined(__GLIBC__)) || defined(__GNU__)
# include <mntent.h>
#endif
@@ -267,8 +267,8 @@ find_mounts(struct args *args)
return list;
}
#elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \
defined(__GLIBC__)) || defined(__GNU__)
#elif defined (__linux__) || (defined (__FreeBSD_kernel__) && \
defined(__GLIBC__))
static struct mntent *
getmntfile(const char *file)
{

View File

@@ -51,8 +51,8 @@
#include <time.h>
#include <unistd.h>
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \
|| defined(__GNU__)
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && \
defined(__GLIBC__))
# include <pty.h>
#elif defined(__NetBSD__) || defined(__OpenBSD__)
# include <util.h>
@@ -78,23 +78,19 @@ static const char *applet;
static char *service, *runlevel, *ibsave, *prefix;
static RC_DEPTREE *deptree;
static RC_STRINGLIST *applet_list, *services, *tmplist;
static RC_STRINGLIST *restart_services;
static RC_STRINGLIST *need_services;
static RC_STRINGLIST *use_services;
static RC_STRINGLIST *want_services;
static RC_STRINGLIST *restart_services, *need_services, *use_services;
static RC_HOOK hook_out;
static int exclusive_fd = -1, master_tty = -1;
static bool sighup, in_background, deps, dry_run;
static pid_t service_pid;
static int signal_pipe[2] = { -1, -1 };
static RC_STRINGLIST *deptypes_b; /* broken deps */
static RC_STRINGLIST *deptypes_n; /* needed deps */
static RC_STRINGLIST *deptypes_nw; /* need+want deps */
static RC_STRINGLIST *deptypes_nwu; /* need+want+use deps */
static RC_STRINGLIST *deptypes_nwua; /* need+want+use+after deps */
static RC_STRINGLIST *deptypes_m; /* needed deps for stopping */
static RC_STRINGLIST *deptypes_mwua; /* need+want+use+after deps for stopping */
static RC_STRINGLIST *deptypes_b;
static RC_STRINGLIST *deptypes_n;
static RC_STRINGLIST *deptypes_nu;
static RC_STRINGLIST *deptypes_nua;
static RC_STRINGLIST *deptypes_m;
static RC_STRINGLIST *deptypes_mua;
static void
handle_signal(int sig)
@@ -241,16 +237,14 @@ cleanup(void)
#ifdef DEBUG_MEMORY
rc_stringlist_free(deptypes_b);
rc_stringlist_free(deptypes_n);
rc_stringlist_free(deptypes_nw);
rc_stringlist_free(deptypes_nwu);
rc_stringlist_free(deptypes_nwua);
rc_stringlist_free(deptypes_nu);
rc_stringlist_free(deptypes_nua);
rc_stringlist_free(deptypes_m);
rc_stringlist_free(deptypes_mwua);
rc_stringlist_free(deptypes_mua);
rc_deptree_free(deptree);
rc_stringlist_free(restart_services);
rc_stringlist_free(need_services);
rc_stringlist_free(use_services);
rc_stringlist_free(want_services);
rc_stringlist_free(services);
rc_stringlist_free(applet_list);
rc_stringlist_free(tmplist);
@@ -536,29 +530,22 @@ setup_deptypes(void)
deptypes_n = rc_stringlist_new();
rc_stringlist_add(deptypes_n, "ineed");
deptypes_nw = rc_stringlist_new();
rc_stringlist_add(deptypes_nw, "ineed");
rc_stringlist_add(deptypes_nw, "iwant");
deptypes_nu = rc_stringlist_new();
rc_stringlist_add(deptypes_nu, "ineed");
rc_stringlist_add(deptypes_nu, "iuse");
deptypes_nwu = rc_stringlist_new();
rc_stringlist_add(deptypes_nwu, "ineed");
rc_stringlist_add(deptypes_nwu, "iwant");
rc_stringlist_add(deptypes_nwu, "iuse");
deptypes_nwua = rc_stringlist_new();
rc_stringlist_add(deptypes_nwua, "ineed");
rc_stringlist_add(deptypes_nwua, "iwant");
rc_stringlist_add(deptypes_nwua, "iuse");
rc_stringlist_add(deptypes_nwua, "iafter");
deptypes_nua = rc_stringlist_new();
rc_stringlist_add(deptypes_nua, "ineed");
rc_stringlist_add(deptypes_nua, "iuse");
rc_stringlist_add(deptypes_nua, "iafter");
deptypes_m = rc_stringlist_new();
rc_stringlist_add(deptypes_m, "needsme");
deptypes_mwua = rc_stringlist_new();
rc_stringlist_add(deptypes_mwua, "needsme");
rc_stringlist_add(deptypes_mwua, "wantsme");
rc_stringlist_add(deptypes_mwua, "usesme");
rc_stringlist_add(deptypes_mwua, "beforeme");
deptypes_mua = rc_stringlist_new();
rc_stringlist_add(deptypes_mua, "needsme");
rc_stringlist_add(deptypes_mua, "usesme");
rc_stringlist_add(deptypes_mua, "beforeme");
}
static void
@@ -644,9 +631,7 @@ svc_start_deps(void)
need_services = rc_deptree_depends(deptree, deptypes_n,
applet_list, runlevel, depoptions);
want_services = rc_deptree_depends(deptree, deptypes_nw,
applet_list, runlevel, depoptions);
use_services = rc_deptree_depends(deptree, deptypes_nwu,
use_services = rc_deptree_depends(deptree, deptypes_nu,
applet_list, runlevel, depoptions);
if (!rc_runlevel_starting()) {
@@ -674,7 +659,7 @@ svc_start_deps(void)
return;
/* Now wait for them to start */
services = rc_deptree_depends(deptree, deptypes_nwua, applet_list,
services = rc_deptree_depends(deptree, deptypes_nua, applet_list,
runlevel, depoptions);
/* We use tmplist to hold our scheduled by list */
tmplist = rc_stringlist_new();
@@ -689,7 +674,6 @@ svc_start_deps(void)
state & RC_SERVICE_WASINACTIVE)
{
if (!rc_stringlist_find(need_services, svc->value) &&
!rc_stringlist_find(want_services, svc->value) &&
!rc_stringlist_find(use_services, svc->value))
continue;
}
@@ -943,7 +927,7 @@ svc_stop_deps(RC_SERVICE state)
/* We now wait for other services that may use us and are
* stopping. This is important when a runlevel stops */
services = rc_deptree_depends(deptree, deptypes_mwua, applet_list,
services = rc_deptree_depends(deptree, deptypes_mua, applet_list,
runlevel, depoptions);
TAILQ_FOREACH(svc, services, entries) {
if (rc_service_state(svc->value) & RC_SERVICE_STOPPED)
@@ -1314,10 +1298,8 @@ openrc_run(int argc, char **argv)
prefix = save;
} else if (strcmp(optarg, "ineed") == 0 ||
strcmp(optarg, "iuse") == 0 ||
strcmp(optarg, "iwant") == 0 ||
strcmp(optarg, "needsme") == 0 ||
strcmp(optarg, "usesme") == 0 ||
strcmp(optarg, "wantsme") == 0 ||
strcmp(optarg, "iafter") == 0 ||
strcmp(optarg, "ibefore") == 0 ||
strcmp(optarg, "iprovide") == 0)

View File

@@ -44,8 +44,7 @@
#include <time.h>
#include <unistd.h>
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \
|| defined(__GNU__)
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__))
# include <pty.h>
#elif defined(__NetBSD__) || defined(__OpenBSD__)
# include <util.h>

View File

@@ -343,7 +343,6 @@ rc_status(int argc, char **argv)
}
needsme = rc_stringlist_new();
rc_stringlist_add(needsme, "needsme");
rc_stringlist_add(needsme, "wantsme");
nservices = rc_stringlist_new();
alist = rc_stringlist_new();
l = rc_stringlist_add(alist, "");
@@ -366,7 +365,7 @@ rc_status(int argc, char **argv)
* be added to the list
*/
unsetenv("RC_SVCNAME");
print_level("Dynamic", "needed/wanted");
print_level("Dynamic", "needed");
print_services(NULL, nservices);
print_level("Dynamic", "manual");
print_services(NULL, services);

View File

@@ -155,8 +155,8 @@ cleanup(void)
rc_stringlist_free(hotplugged_services);
rc_stringlist_free(stop_services);
rc_stringlist_free(start_services);
rc_stringlist_free(types_nw);
rc_stringlist_free(types_nwua);
rc_stringlist_free(types_n);
rc_stringlist_free(types_nua);
rc_deptree_free(deptree);
free(runlevel);
#endif
@@ -519,7 +519,7 @@ runlevel_config(const char *service, const char *level)
}
static void
do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services,
do_stop_services(RC_STRINGLIST *types_n, RC_STRINGLIST *start_services,
const RC_STRINGLIST *stop_services, const RC_DEPTREE *deptree,
const char *newlevel, bool parallel, bool going_down)
{
@@ -530,10 +530,9 @@ do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services,
RC_STRINGLIST *nostop;
bool crashed, nstop;
if (!types_nw) {
types_nw = rc_stringlist_new();
rc_stringlist_add(types_nw, "needsme");
rc_stringlist_add(types_nw, "wantsme");
if (!types_n) {
types_n = rc_stringlist_new();
rc_stringlist_add(types_n, "needsme");
}
crashed = rc_conf_yesno("rc_crashed_stop");
@@ -592,7 +591,7 @@ do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services,
if (!svc1) {
tmplist = rc_stringlist_new();
rc_stringlist_add(tmplist, service->value);
deporder = rc_deptree_depends(deptree, types_nw,
deporder = rc_deptree_depends(deptree, types_n,
tmplist, newlevel ? newlevel : runlevel,
RC_DEP_STRICT | RC_DEP_TRACE);
rc_stringlist_free(tmplist);
@@ -752,12 +751,11 @@ main(int argc, char **argv)
{
const char *bootlevel = NULL;
char *newlevel = NULL;
const char *systype = NULL;
static RC_STRINGLIST *hotplugged_services;
static RC_STRINGLIST *stop_services;
static RC_STRINGLIST *start_services;
static RC_STRINGLIST *types_nw;
static RC_STRINGLIST *types_nwua;
static RC_STRINGLIST *types_n;
static RC_STRINGLIST *types_nua;
static RC_DEPTREE *deptree;
RC_STRINGLIST *deporder = NULL;
RC_STRINGLIST *tmplist;
@@ -846,9 +844,9 @@ main(int argc, char **argv)
eerrorx("%s: %s", applet, strerror(errno));
/* NOTREACHED */
case 'S':
systype = rc_sys();
if (systype)
printf("%s\n", systype);
bootlevel = rc_sys();
if (bootlevel)
printf("%s\n", bootlevel);
exit(EXIT_SUCCESS);
/* NOTREACHED */
case_RC_COMMON_GETOPT
@@ -998,14 +996,13 @@ main(int argc, char **argv)
if (stop_services)
rc_stringlist_sort(&stop_services);
types_nwua = rc_stringlist_new();
rc_stringlist_add(types_nwua, "ineed");
rc_stringlist_add(types_nwua, "iwant");
rc_stringlist_add(types_nwua, "iuse");
rc_stringlist_add(types_nwua, "iafter");
types_nua = rc_stringlist_new();
rc_stringlist_add(types_nua, "ineed");
rc_stringlist_add(types_nua, "iuse");
rc_stringlist_add(types_nua, "iafter");
if (stop_services) {
tmplist = rc_deptree_depends(deptree, types_nwua, stop_services,
tmplist = rc_deptree_depends(deptree, types_nua, stop_services,
runlevel, depoptions | RC_DEP_STOP);
rc_stringlist_free(stop_services);
stop_services = tmplist;
@@ -1050,7 +1047,7 @@ main(int argc, char **argv)
/* Now stop the services that shouldn't be running */
if (stop_services && !nostop)
do_stop_services(types_nw, start_services, stop_services, deptree, newlevel, parallel, going_down);
do_stop_services(types_n, start_services, stop_services, deptree, newlevel, parallel, going_down);
/* Wait for our services to finish */
wait_for_services();
@@ -1112,7 +1109,7 @@ main(int argc, char **argv)
/* Start those services. */
rc_stringlist_sort(&run_services);
deporder = rc_deptree_depends(deptree, types_nwua, run_services, rlevel->value, depoptions | RC_DEP_START);
deporder = rc_deptree_depends(deptree, types_nua, run_services, rlevel->value, depoptions | RC_DEP_START);
rc_stringlist_free(run_services);
run_services = deporder;
do_start_services(run_services, parallel);

View File

@@ -112,5 +112,9 @@ rc_stringlist_split
rc_stringlist_split@@RC_1.0
rc_sys
rc_sys@@RC_1.0
rc_sys_v1
rc_sys_v1@@RC_1.0
rc_sys_v2
rc_sys_v2@@RC_1.0
rc_yesno
rc_yesno@@RC_1.0