Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a15cff21c6 | ||
|
|
45aa36cc62 | ||
|
|
d3f833179b | ||
|
|
abe552b969 | ||
|
|
856eafb006 | ||
|
|
f27d60add9 | ||
|
|
8ad460c54c | ||
|
|
72c0824961 | ||
|
|
5b7e3490ef | ||
|
|
dd61e6bfc3 | ||
|
|
204971c6e2 | ||
|
|
3552f0ae54 | ||
|
|
42cb848829 | ||
|
|
e0ac661419 | ||
|
|
6414c3bc39 | ||
|
|
4f9bd7e4db | ||
|
|
bf539f2196 | ||
|
|
20b60ea904 | ||
|
|
f53c8baef3 | ||
|
|
be06cd250e | ||
|
|
003657c973 | ||
|
|
4fd144c0a6 | ||
|
|
c44c904a61 | ||
|
|
78146b0e14 | ||
|
|
deaae7ab5c | ||
|
|
3d2c2f0b87 | ||
|
|
6a0c033a64 | ||
|
|
6710316a18 | ||
|
|
61882821e0 | ||
|
|
969546bcf0 | ||
|
|
d0ae7ffc25 |
@@ -22,9 +22,6 @@ or recognize the nofail option in fstab.
|
||||
|
||||
CONFIG_SETFONT -- The setfont applet does not support the -u option from kbd.
|
||||
|
||||
CONFIG_IP -- The ip applet doesn't support the "scope" modifier for
|
||||
"ip route add" and "ip address add".
|
||||
|
||||
CONFIG_BB_SYSCTL -- The sysctl applet does not support the --system command
|
||||
line switch.
|
||||
|
||||
|
||||
734
ChangeLog
734
ChangeLog
@@ -1,3 +1,299 @@
|
||||
commit 45aa36cc623eeeb15fb6827b57e0c07a37cdef41
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
librc: detect loops in stacked runlevels and abort
|
||||
|
||||
This fixes #109.
|
||||
X-Gentoo-Bug: 558700
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=558700
|
||||
|
||||
commit d3f833179b39368442221c448f90b87f76d28ee8
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
sh/init.sh.Linux.in: remove unused check for Gnu/KFreeBSD
|
||||
|
||||
This script only runs on Linux, so the check will always be false.
|
||||
|
||||
commit abe552b969b6601f47ba0474f683d8cd80d53c9d
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
modules: get rid of printing each module on Linux
|
||||
|
||||
Now that we respect the module blacklists, don't print every module we
|
||||
try to load, because it might not end up loaded due to the blacklist,
|
||||
and modprobe doesn't consider that a failure.
|
||||
|
||||
commit 856eafb006655b7dda630a94cbd16f5db9f781be
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
sh/init.sh.Linux.in: skip /proc test if no md5sum
|
||||
|
||||
This will also warn users if md5sum is missing, which serves as a pretty
|
||||
good indicator that /usr is not mounted.
|
||||
|
||||
commit f27d60add9ee1ef8a90ea0034edf6f4e4e6d0ed8
|
||||
Author: Robin H. Johnson <robbat2@gentoo.org>
|
||||
Commit: Robin H. Johnson <robbat2@gentoo.org>
|
||||
|
||||
sh/openrc-run.sh: expose default start/stop/status
|
||||
|
||||
Supervisor setups break easily when start/stop/status functions are not
|
||||
default.
|
||||
|
||||
Applications that write multiple PIDs to a pidfile (eg HAProxy as
|
||||
described in bug 601540), can also benefit from being able to call the
|
||||
default start/stop/status with modified environment variables.
|
||||
|
||||
Expose the default start/stop/status functions as
|
||||
default_start/stop/status, and use them for the defaults
|
||||
start/stop/status.
|
||||
|
||||
Trivial usage example:
|
||||
```
|
||||
stop()
|
||||
{
|
||||
t=$(mktemp)
|
||||
for pid in $(cat $pidfile) ; do
|
||||
echo $pid >$t
|
||||
pidfile=$t default_stop
|
||||
done
|
||||
rm -f $t
|
||||
}
|
||||
```
|
||||
|
||||
X-Gentoo-Bug: 601540
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/601540
|
||||
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
|
||||
|
||||
commit 8ad460c54ce66aa0900cf872d9ebfacf0c03f9da
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
Fix typos
|
||||
|
||||
Fixes #99
|
||||
|
||||
commit 72c0824961fc257b634a9439496e04d1b3392ef1
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
localmount: add comment about types variable
|
||||
|
||||
commit 5b7e3490ef2ce96c35e6c18b4c64e8c61586bb7a
|
||||
Author: Alan Somers <asomers@gmail.com>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
Localmount shouldn't mount remote filesystems
|
||||
|
||||
The /etc/init.d/localmount script has a syntax error that causes it to
|
||||
attempt to mount remote filesystems, causing the boot to fail. The
|
||||
script appends a "no" to each remote filesystem type, but it should only
|
||||
be append the "no" to the beginning of the list. This patch fixes
|
||||
localmount on FreeBSD 12.0. A review of the mount(8) manpage on Ubuntu
|
||||
12.04 suggests that this patch is correct for Linux, too.
|
||||
|
||||
commit dd61e6bfc3fc1da011b01f4f6cf3e45e26c59dc1
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
rc.conf: fix the commented default setting for rc_logger
|
||||
|
||||
X-Gentoo-Bug: 601480
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=601480
|
||||
|
||||
commit 204971c6e2ea1e37fa037e09bff02eea3a07f843
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: GitHub <noreply@github.com>
|
||||
|
||||
runlevels: remove bad trailing backslash
|
||||
|
||||
commit 3552f0ae548d68effd4411ad4080e7b13fe627c5
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
man/start-stop-daemon.8: clarify documentation about --pidfile option
|
||||
|
||||
The documentation implied that if you stop a daemon we handle multiple
|
||||
pids in a pid file. This is not correct. We only handle the first pid.
|
||||
|
||||
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=601540
|
||||
|
||||
commit 42cb84882918a0c9dd93a89d92b0b4818dfb44b8
|
||||
Author: AndCycle <andcycle-github@andcycle.idv.tw>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
fix manual typo
|
||||
|
||||
This fixes #105.
|
||||
|
||||
commit e0ac661419042cb39c1ccf93df2981504d1e6339
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
split tmpfiles processing into opentmpfiles
|
||||
|
||||
The openntmpfiles package is designed so that it can be used on systems
|
||||
independently of whether openrc is used.
|
||||
|
||||
commit 6414c3bc394f86a5d6a5f02c934469e21bbbc923
|
||||
Author: Jason Zaman <jason@perfinion.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
selinux: fix SIGSEGV with invalid contexts
|
||||
|
||||
Fixes: https://github.com/openrc/openrc/issues/104
|
||||
|
||||
commit 4f9bd7e4db185ce6debbebb5242344d8ffadc3ae
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/loopback.in: drop the route to the loopback interface on Linux
|
||||
|
||||
This is related to #103.
|
||||
|
||||
commit bf539f2196290864ce5c5fd0d679b74ee016e2da
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/mount-ro: do not remount /usr read only if it is premounted
|
||||
|
||||
X-Gentoo-Bug: 573760
|
||||
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=573760
|
||||
|
||||
commit 20b60ea904612669dfb744beffcd8e7e447f69ef
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
conf.d/net-online: clarify comment about interfaces setting
|
||||
|
||||
This setting refers to all interfaces that support ethernet
|
||||
|
||||
commit f53c8baef3a6215077c00901759cbbcbe8f10e9b
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/net-online: remove interfaces and timeout from local declarations
|
||||
|
||||
X-Gentoo-Bug: 598621
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=598621
|
||||
|
||||
commit be06cd250e12e63b8eb704bb2508e06fb9791251
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
src/rc/rc: do not try to start services if fork fails
|
||||
|
||||
commit 003657c973ea338a19f2b7294190af9d76cf5cea
|
||||
Author: Robin H. Johnson <robbat2@gentoo.org>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/loopback: drop scope on loopback
|
||||
|
||||
Busybox does not support the 'scope' argument on 'ip address add' or 'ip
|
||||
route add', this is documented in BUSYBOX.md, but is no longer actually
|
||||
needed, as the kernel does get it right without manual specification,
|
||||
and the ifconfig variant already relies on the kernel to get it right.
|
||||
This is part of #103.
|
||||
|
||||
X-Gentoo-Bug: 487208
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=487208
|
||||
|
||||
commit 4fd144c0a6526963c70f18cb34a65354c2f0a48c
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
src/rc/rc-misc.c: report error if call to flock() fails
|
||||
|
||||
X-Gentoo-Bug: 597390
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=597390
|
||||
|
||||
commit c44c904a61418189c989e978b0237e5b161263ef
|
||||
Author: Joe Maloney <jpm820@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d.misc/wpa_supplicant: find wireless interface for FreeBSD
|
||||
|
||||
This fixes #101.
|
||||
|
||||
commit 78146b0e14cb57dda8a3aed3d4f8d6b1db7a3c7e
|
||||
Author: Sven Wegener <swegener@gentoo.org>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
do_service: Initialize idx to 0
|
||||
|
||||
If index is not explicitly specified for service_started_daemon, it will
|
||||
look for daemons by random index.
|
||||
|
||||
This fixes #100.
|
||||
|
||||
commit deaae7ab5c499191426cec81f6e803c972f0cca3
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/sysfs: load efivarfs module when booting in efi mode:1
|
||||
|
||||
The presence of /sys/firmware/efi is used to indicate that the system
|
||||
was booted in efi mode.
|
||||
|
||||
commit 3d2c2f0b871944492036d04b0c220ccba1fa2dd5
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/sysfs: fix efivarfs module test
|
||||
|
||||
commit 6a0c033a64ce18056625cd37a94b9810dc5784e3
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
init.d/sysfs: fix efivarfs handling
|
||||
|
||||
Separate loading the module, if it isn't built in or loaded, from
|
||||
mounting the file system.
|
||||
|
||||
This also makes sure the warning about configuring the module in
|
||||
/etc/conf.d/modules or building it in is displayed only if it is loaded
|
||||
successfully.
|
||||
|
||||
X-Gentoo-Bug: 595836
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=595836
|
||||
|
||||
commit 6710316a18c33601e780282e72c60f09b5175280
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
openrc-run: fix double free
|
||||
|
||||
commit 61882821e0d6110a2ca2f67fad7c362983a85cf0
|
||||
Author: Doug Freed <dwfreed@mtu.edu>
|
||||
Commit: Doug Freed <dwfreed@mtu.edu>
|
||||
|
||||
init.d: Clean up some bad ewarn output
|
||||
|
||||
commit 969546bcf0203379db286be21c7f709d27cc73b0
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
typo fix
|
||||
|
||||
X-Gentoo-Bug: 595306
|
||||
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=595306
|
||||
|
||||
commit d0ae7ffc2534fa65c2e8927931f5107ce4505ca6
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
version 0.23
|
||||
|
||||
commit b71bcc242202752bc74fce3a5c629f172b04fca5
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
update ChangeLog
|
||||
|
||||
commit 24010dcb483cf7284cd8a5db111ae63f0d4e1038
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
@@ -1101,441 +1397,3 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
maintenance.
|
||||
|
||||
[1] https://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html
|
||||
|
||||
commit 065f034059d7ca26bbb985158c5d361ff75df186
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
format fix
|
||||
|
||||
commit fe32ef8e09a2edf2690a3b281cea0be84a5541ca
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
FEATURE-REMOVAL-SCHEDULE: create section for librc API functions
|
||||
|
||||
commit c45313dfa9880c4aedb72da1b2ac3159eee05a93
|
||||
Author: Rick Farina (Zero_Chaos) <zerochaos@gentoo.org>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
netmount: use want dependency to start nfsclient
|
||||
|
||||
add in parsing of fstab to determine if nfsclient should be automatically
|
||||
started so that netmount can mount nfs without adding nfsclient
|
||||
to the default runlevel
|
||||
|
||||
This fixes #71.
|
||||
|
||||
commit 3ef2bbfb19fe3ca0c169f9dcf48b70a59321a5d1
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Add note about deprecating rc_getline()
|
||||
|
||||
commit cc9c23c8484ea7d07b1f8e54bcab46cc31ec727d
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Complete support for rc.conf.d
|
||||
|
||||
- gendepends.sh needs to read this directory to allow dependencies to be
|
||||
overridden
|
||||
- init.sh for Linux and Bsd need to read it to allow config settings
|
||||
they use to be overridden.
|
||||
|
||||
commit 935252b1152b4086ccbe76ace21e677d7ac8a357
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Add note about removing rc_sys() from librc
|
||||
|
||||
commit 0d202b5711228bb047140430ea8fe4f749503fb4
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Update feature-removal-schedule wrt mtab service
|
||||
|
||||
commit f9bdb072e8d88079a20834fe921d43e326a9a18a
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
rc.map: remove references to rc_sys_v{1,2}
|
||||
|
||||
commit 9f6e05671d6d48faa7b83aec05a637bcdfcb3f82
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Convert rc_sys() calls to detect_container() and detect_vm()
|
||||
|
||||
commit 8addd7913a743b75ef3854ab4a96fea81cc5245d
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Create detect_container() and detect_vm() functions
|
||||
|
||||
These functions replace rc_sys so that we can detect containers and vms
|
||||
separately.
|
||||
|
||||
Also, we copy file_regex() to rc-misc.c and open it to all operating
|
||||
systems.
|
||||
|
||||
commit 83cd7145e3e7c3ac453b6a87214cf5704e3875ce
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Rename bootlevel variable in _usage.c
|
||||
|
||||
In src/rc/_usage.c, we were using bootlevel as the variable to hold the
|
||||
return value of rc_sys.
|
||||
This changes the variable name to systype because this function returns
|
||||
a system type, not a runlevel.
|
||||
|
||||
commit a67e3495d0b54ac83a00fc04aef50951646814ad
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Increment version number
|
||||
|
||||
commit a1acdeb92ead07f2dc60cb9796aaf5b4ea377713
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
update ChangeLog
|
||||
|
||||
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>
|
||||
|
||||
localmount: white space cleanup
|
||||
|
||||
commit b86d170037197d7bdcda57c7d4c09c17bda97f31
|
||||
Author: Ian Stakenvicius <axs@gentoo.org>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
localmount: clean up handling of aufs branches
|
||||
|
||||
X-Gentoo-Bug: 560008
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=560008
|
||||
|
||||
commit 6fa0d6318bcd5c98548cff2ff840bca116892ca5
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
mtab: fix update logic
|
||||
|
||||
This advises users to remove mtab from their runlevels if /etc/mtab is a
|
||||
symlink, and it creates the symlink if /etc/mtab does not exist on a
|
||||
system.
|
||||
|
||||
X-Gentoo-Bug: 560060
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=560060
|
||||
|
||||
commit 80d3928b0d13f09a9c1e82bd27c9fff943d84d43
|
||||
Author: Austin S. Hemmelgarn <ahferroin7@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
cgroups: Add the hugetlb, net_cls and pids controllers
|
||||
|
||||
Note from WilliamH: I slightly rearranged the code and added the
|
||||
settings in rc.conf.
|
||||
|
||||
X-Gentoo-Bug: 555488
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=555488
|
||||
|
||||
commit 17ef205bc63a4e231dccee719394a7a8563f8c3f
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
sysfs: use printf instead of echo to write to cgroup files
|
||||
|
||||
This is needed for compatibility with musl and printf is also posix.
|
||||
|
||||
X-Gentoo-Bug: 562334
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562334
|
||||
|
||||
commit b20a1951adf9a705a903fb3047b7ef26c013103c
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
rc-cgroup.sh: Do not add leading spaces to cgroup values
|
||||
|
||||
We were starting the value we write to the cgroup setting file with
|
||||
leading spaces and this was causing issues. This change makes sure that
|
||||
we aren't adding leading spaces to the value.
|
||||
|
||||
X-Gentoo-Bug: 562354
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562354
|
||||
|
||||
commit bf0c0dd5644436efe4986c2b259b755d111266b9
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
bootmisc: convert errors in clean_run function to warnings
|
||||
|
||||
X-Gentoo-Bug: 552418
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=552418
|
||||
|
||||
commit 1558ad2b9ebf319b85876a940d31d513bf21324f
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
bootmisc: only remove temp directory if umount is successful
|
||||
|
||||
Change the clean_run function to only remove the temp directory if the
|
||||
umount was successful.
|
||||
|
||||
X-Gentoo-Bug: 561230
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=561230
|
||||
|
||||
commit 5f4f2420364098835522da868a9e75205c9e4f9c
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
mountinfo: fix --netdev and --nonetdev on Linux
|
||||
|
||||
On Linux, the --netdev and --nonetdev switches were not working. They
|
||||
were both returning false. After this change, they operate based on the
|
||||
presence or abscence of the _netdev option in mount options.
|
||||
|
||||
commit b3f7ff901f7d3ed00b9f73c601193ac507f62eaf
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
mountinfo: read /proc/self/mounts instead of /proc/mounts on Linux
|
||||
|
||||
commit a59365a582c3a8c9a8b863b572fddcb65fccadfd
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
start-stop-daemon.sh: complain in start if command is undefined
|
||||
|
||||
The default start-stop-daemon start function expects the command
|
||||
variable to be defined to point to the daemon we want to start.
|
||||
|
||||
If the variable is undefined, this means that there will be nothing to
|
||||
start, and in this case we should complain because it is possible that
|
||||
the script writer made a typo in the variable name.
|
||||
|
||||
commit dac5966ca40610797d2b2aabef17154ca3dc20af
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Revert "local/netmount: remove uses of -O [no]_netdev"
|
||||
|
||||
This reverts commit 2a439c85bd69efc14847b4397bd6783cac051405.
|
||||
There is another use case for -O involving iscsi, so we can't remove it.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
NAME= openrc
|
||||
VERSION= 0.22
|
||||
VERSION= 0.23
|
||||
PKG= ${NAME}-${VERSION}
|
||||
|
||||
8
NEWS.md
8
NEWS.md
@@ -3,6 +3,14 @@
|
||||
This file will contain a list of notable changes for each release. Note
|
||||
the information in this file is in reverse order.
|
||||
|
||||
## OpenRC-0.23
|
||||
|
||||
The tmpfiles.d processing code, which was part of previous versions of
|
||||
OpenRC, has been separated into its own package [1]. If you need to
|
||||
process systemd style tmpfiles.d files, please install this package.
|
||||
|
||||
[1] https://github.com/openrc/opentmpfiles
|
||||
|
||||
## OpenRC-0.22
|
||||
|
||||
In previous versions of OpenRC, configuration information was processed
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
include ../mk/net.mk
|
||||
|
||||
DIR= ${CONFDIR}
|
||||
CONF= bootmisc fsck hostname localmount netmount swap urandom tmpfiles \
|
||||
${CONF-${OS}}
|
||||
CONF= bootmisc fsck hostname localmount netmount swap urandom ${CONF-${OS}}
|
||||
|
||||
ifeq (${MKNET},yes)
|
||||
CONF+= network staticroute
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
# service considers in deciding whether the network is active. The
|
||||
# default is all interfaces that support ethernet.
|
||||
#interfaces=""
|
||||
|
||||
# This setting controls whether a ping to the default gateway is
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# Extra options for tmpfiles.sh
|
||||
#tmpfiles_opts="--verbose"
|
||||
tmpfiles_opts=""
|
||||
@@ -48,7 +48,7 @@
|
||||
# /var/log/rc.log
|
||||
# NOTE: Linux systems require the devfs service to be started before
|
||||
# logging can take place and as such cannot log the sysinit runlevel.
|
||||
#rc_logger="YES"
|
||||
#rc_logger="NO"
|
||||
|
||||
# Through rc_log_path you can specify a custom log file.
|
||||
# The default value is: /var/log/rc.log
|
||||
@@ -239,7 +239,7 @@ rc_tty_number=12
|
||||
# Set the pids controller settings for this service.
|
||||
#rc_cgroup_pids=""
|
||||
|
||||
# Set this to YES if yu want all of the processes in a service's cgroup
|
||||
# Set this to YES if you want all of the processes in a service's cgroup
|
||||
# killed when the service is stopped or restarted.
|
||||
# This should not be set globally because it kills all of the service's
|
||||
# child processes, and most of the time this is undesirable. Please set
|
||||
|
||||
@@ -14,7 +14,7 @@ trap : SIGINT SIGQUIT
|
||||
|
||||
# Try and use stuff in /lib over anywhere else so we can shutdown
|
||||
# local mounts correctly.
|
||||
LD_LIBRARY_PATH="/lib${LD_LIBRARY_PATH:+:}${LDLIBRARY_PATH}" ; export LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH="/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" ; export LD_LIBRARY_PATH
|
||||
|
||||
# If $TERM is not set then assume default of @TERM@
|
||||
# This gives us a nice colour boot :)
|
||||
|
||||
@@ -39,6 +39,11 @@ find_wireless()
|
||||
fi
|
||||
done
|
||||
;;
|
||||
FreeBSD)
|
||||
for iface in $(sysctl -b net.wlan.devices 2>/dev/null); do
|
||||
echo "${iface##*/}"
|
||||
done
|
||||
;;
|
||||
*)
|
||||
for iface in /dev/net/* $(ifconfig -l 2>/dev/null); do
|
||||
if ifconfig "${iface##*/}" 2>/dev/null | \
|
||||
|
||||
2
init.d/.gitignore
vendored
2
init.d/.gitignore
vendored
@@ -45,5 +45,3 @@ syslogd
|
||||
termencoding
|
||||
ttys
|
||||
wscons
|
||||
tmpfiles.dev
|
||||
tmpfiles.setup
|
||||
|
||||
@@ -2,8 +2,8 @@ include ../mk/net.mk
|
||||
|
||||
DIR= ${INITDIR}
|
||||
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \
|
||||
netmount.in osclock.in root.in savecache.in swap.in tmpfiles.setup.in \
|
||||
swclock.in sysctl.in runsvdir.in urandom.in s6-svscan.in ${SRCS-${OS}}
|
||||
netmount.in osclock.in root.in savecache.in swap.in swclock.in \
|
||||
sysctl.in runsvdir.in urandom.in s6-svscan.in ${SRCS-${OS}}
|
||||
BIN= ${OBJS}
|
||||
|
||||
# Are we installing our network scripts?
|
||||
@@ -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 modules-load.in mount-ro.in mtab.in numlock.in \
|
||||
procfs.in net-online.in sysfs.in termencoding.in tmpfiles.dev.in
|
||||
procfs.in net-online.in sysfs.in termencoding.in
|
||||
|
||||
# Generic BSD scripts
|
||||
SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
|
||||
|
||||
@@ -106,8 +106,8 @@ start()
|
||||
modprobe -q $x && rtc_exists && modname="$x" && break
|
||||
done
|
||||
[ -n "$modname" ] &&
|
||||
ewarn "The $modname module needs to be configured in \
|
||||
@SYSCONFDIR@/conf.d/modules or built in."
|
||||
ewarn "The $modname module needs to be configured in" \
|
||||
"@SYSCONFDIR@/conf.d/modules or built in."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -22,9 +22,10 @@ depend()
|
||||
start()
|
||||
{
|
||||
# Mount local filesystems in /etc/fstab.
|
||||
# The types variable must start with no, and must be a type
|
||||
local critical= types="noproc" x= no_netdev= rc=
|
||||
for x in $net_fs_list $extra_net_fs_list; do
|
||||
types="${types},no${x}"
|
||||
types="${types},${x}"
|
||||
done
|
||||
|
||||
if [ "$RC_UNAME" = Linux ]; then
|
||||
@@ -99,8 +100,8 @@ stop()
|
||||
aufs_branch=$(sed 's/=.*//g' $x)
|
||||
eindent
|
||||
if ! mount -o "remount,del:$aufs_branch" "$aufs_mount_point" > /dev/null 2>&1; then
|
||||
ewarn "Failed to remove branch $aufs_branch from aufs \
|
||||
$aufs_mount_point"
|
||||
ewarn "Failed to remove branch $aufs_branch from aufs" \
|
||||
"$aufs_mount_point"
|
||||
fi
|
||||
eoutdent
|
||||
sync
|
||||
|
||||
@@ -21,12 +21,10 @@ start()
|
||||
if [ "$RC_UNAME" = Linux ]; then
|
||||
ebegin "Bringing up network interface lo"
|
||||
if command -v ip > /dev/null 2>&1; then
|
||||
ip addr add 127.0.0.1/8 dev lo brd + scope host
|
||||
ip route add 127.0.0.0/8 dev lo scope host
|
||||
ip addr add 127.0.0.1/8 dev lo brd +
|
||||
ip link set lo up
|
||||
else
|
||||
ifconfig lo 127.0.0.1 netmask 255.0.0.0
|
||||
route add -net 127.0.0.0 netmask 255.0.0.0 gw 127.0.0.1
|
||||
fi
|
||||
else
|
||||
ebegin "Bringing up network interface lo0"
|
||||
|
||||
@@ -31,7 +31,7 @@ FreeBSD_modules()
|
||||
|
||||
Linux_modules()
|
||||
{
|
||||
# Should not fail if kernel do not have module
|
||||
# Should not fail if kernel does not have module
|
||||
# support compiled in ...
|
||||
[ ! -f /proc/modules ] && return 0
|
||||
|
||||
@@ -48,22 +48,21 @@ Linux_modules()
|
||||
x=${x%.*}
|
||||
done
|
||||
|
||||
local list= x= xx= y= args= mpargs= cnt=0 a=
|
||||
local list= x= xx= y= args= mpargs= a=
|
||||
for x in $kv_variant_list ; do
|
||||
eval list=\$modules_$(shell_var "$x")
|
||||
[ -n "$list" ] && break
|
||||
done
|
||||
[ -z "$list" ] && list=$modules
|
||||
|
||||
[ -n "$list" ] && ebegin "Loading kernel modules"
|
||||
for x in $list; do
|
||||
a=${x#*:}
|
||||
if [ "$a" = "$x" ]; then
|
||||
unset mpargs
|
||||
ebegin "Loading module $x"
|
||||
else
|
||||
x=${x%%:*}
|
||||
mpargs="-o $a"
|
||||
ebegin "Loading module $x as $a"
|
||||
fi
|
||||
aa=$(shell_var "$a")
|
||||
xx=$(shell_var "$x")
|
||||
@@ -75,10 +74,9 @@ Linux_modules()
|
||||
done
|
||||
[ -z "$args" ] && eval args=\$module_${aa}_args
|
||||
[ -z "$args" ] && eval args=\$module_${xx}_args
|
||||
eval modprobe --use-blacklist -q "$mpargs" "$x" "$args"
|
||||
eend $? "Failed to load $x" && : $(( cnt += 1 ))
|
||||
eval modprobe --use-blacklist --verbose "$mpargs" "$x" "$args"
|
||||
done
|
||||
einfo "Autoloaded $cnt module(s)"
|
||||
[ -n "$list" ] && eend
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -34,6 +34,9 @@ start()
|
||||
|
||||
local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|/run|${rc_svcdir}" x= fs=
|
||||
m="$m|/bin|/sbin|/lib(32|64)?|/libexec"
|
||||
if [ -e "$rc_svcdir"/usr_premounted ]; then
|
||||
m="$m|/usr"
|
||||
fi
|
||||
# RC_NO_UMOUNTS is an env var that can be set by plugins
|
||||
local IFS="$IFS:"
|
||||
for x in $no_umounts $RC_NO_UMOUNTS; do
|
||||
|
||||
@@ -42,8 +42,8 @@ get_default_gateway()
|
||||
|
||||
start ()
|
||||
{
|
||||
local carriers configured dev gateway ifcount infinite interfaces
|
||||
local rc state timeout x
|
||||
local carriers configured dev gateway ifcount infinite
|
||||
local rc state x
|
||||
|
||||
ebegin "Checking to see if the network is online"
|
||||
rc=0
|
||||
|
||||
@@ -26,8 +26,8 @@ start()
|
||||
[ ! -e /proc/sys/fs/binfmt_misc/register ]; then
|
||||
if ! grep -qs binfmt_misc /proc/filesystems &&
|
||||
modprobe -q binfmt-misc; then
|
||||
ewarn "The binfmt-misc module needs to be configured in \
|
||||
@SYSCONFDIR@/conf.d/modules or built in."
|
||||
ewarn "The binfmt-misc module needs to be configured in" \
|
||||
"@SYSCONFDIR@/conf.d/modules or built in."
|
||||
fi
|
||||
if grep -qs binfmt_misc /proc/filesystems; then
|
||||
ebegin "Mounting misc binary format filesystem"
|
||||
|
||||
@@ -98,20 +98,23 @@ mount_misc()
|
||||
fi
|
||||
fi
|
||||
|
||||
# setup up kernel support for efivarfs
|
||||
# slightly complicated, as if it's build as a module but NOT yet loaded,
|
||||
# it will NOT appear in /proc/filesystems yet
|
||||
if [ -d /sys/firmware/efi/efivars ] \
|
||||
&& ! mountinfo -q /sys/firmware/efi/efivars; then
|
||||
if modprobe -q efivarfs; then
|
||||
ewarn "The efivarfs module needs to be configured in \
|
||||
@SYSCONFDIR@/conf.d/modules or built in"
|
||||
# set up kernel support for efivarfs
|
||||
# The presence of /sys/firmware/efi indicates that the system was
|
||||
# booted in efi mode.
|
||||
if [ -d /sys/firmware/efi ]; then
|
||||
if [ ! -d /sys/firmware/efi/efivars ] &&
|
||||
modprobe -q efivarfs; then
|
||||
ewarn "The efivarfs module needs to be configured in " \
|
||||
"@SYSCONFDIR@/conf.d/modules or built in"
|
||||
fi
|
||||
if grep -qs efivarfs /proc/filesystems; then
|
||||
ebegin "Mounting efivarfs filesystem"
|
||||
mount -n -t efivarfs -o ${sysfs_opts} \
|
||||
efivarfs /sys/firmware/efi/efivars
|
||||
eend $?
|
||||
if [ -d /sys/firmware/efi/efivars ] &&
|
||||
! mountinfo -q /sys/firmware/efi/efivars; then
|
||||
if grep -qs efivarfs /proc/filesystems; then
|
||||
ebegin "Mounting efivarfs filesystem"
|
||||
mount -n -t efivarfs -o ${sysfs_opts} \
|
||||
efivarfs /sys/firmware/efi/efivars
|
||||
eend $?
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
#!@SBINDIR@/openrc-run
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
description="Set up tmpfiles.d entries"
|
||||
|
||||
depend()
|
||||
{
|
||||
use dev-mount
|
||||
before dev
|
||||
keyword -prefix -vserver
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
ebegin "Setting up tmpfiles.d entries for /dev"
|
||||
@LIBEXECDIR@/sh/tmpfiles.sh --prefix=/dev --create --boot ${tmpfiles_opts}
|
||||
eend $?
|
||||
return 0
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
#!@SBINDIR@/openrc-run
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
description="Set up tmpfiles.d entries"
|
||||
|
||||
depend()
|
||||
{
|
||||
need localmount
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
ebegin "Setting up tmpfiles.d entries"
|
||||
@LIBEXECDIR@/sh/tmpfiles.sh --exclude-prefix=/dev --create --remove --boot \
|
||||
${tmpfiles_opts}
|
||||
eend $?
|
||||
return 0
|
||||
}
|
||||
@@ -97,7 +97,7 @@ String describing the extra command.
|
||||
.It Ar supervisor
|
||||
Supervisor to use to monitor this daemon. If this is unset or invalid,
|
||||
start-stop-daemon will be used.
|
||||
Currently, we support s6 from scarnet software, and supervise-daemon
|
||||
Currently, we support s6 from skarnet software, and supervise-daemon
|
||||
which is a light-weight supervisor internal to OpenRC.
|
||||
To use s6, set
|
||||
supervisor=s6.
|
||||
|
||||
@@ -55,7 +55,7 @@ is used.
|
||||
.It Fl p , -pidfile Ar pidfile
|
||||
When starting, we expect the daemon to create a valid
|
||||
.Ar pidfile
|
||||
within a reasonable amount of time. When stopping we only stop the pid(s)
|
||||
within a reasonable amount of time. When stopping we only stop the first pid
|
||||
listed in the
|
||||
.Ar pidfile .
|
||||
.It Fl n , -name Ar name
|
||||
|
||||
@@ -36,10 +36,9 @@ BOOT-FreeBSD+= hostid modules newsyslog savecore syslogd
|
||||
# FreeBSD specific stuff
|
||||
BOOT-FreeBSD+= adjkerntz dumpon syscons
|
||||
|
||||
BOOT-Linux+= binfmt hwclock keymaps modules mtab procfs termencoding \
|
||||
tmpfiles.setup
|
||||
BOOT-Linux+= binfmt hwclock keymaps modules mtab procfs termencoding
|
||||
SHUTDOWN-Linux= killprocs mount-ro
|
||||
SYSINIT-Linux= devfs dmesg sysfs tmpfiles.dev
|
||||
SYSINIT-Linux= devfs dmesg sysfs
|
||||
|
||||
# Generic BSD stuff
|
||||
BOOT-NetBSD+= hostid newsyslog savecore syslogd
|
||||
|
||||
1
sh/.gitignore
vendored
1
sh/.gitignore
vendored
@@ -6,6 +6,5 @@ cgroup-release-agent.sh
|
||||
init.sh
|
||||
init-early.sh
|
||||
rc-cgroup.sh
|
||||
tmpfiles.sh
|
||||
migrate-to-run.sh
|
||||
binfmt.sh
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
DIR= ${LIBEXECDIR}/sh
|
||||
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
||||
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
||||
openrc-run.sh.in rc-functions.sh.in ${SRCS-${OS}}
|
||||
INC= rc-mount.sh functions.sh rc-functions.sh runit.sh s6.sh \
|
||||
start-stop-daemon.sh supervise-daemon.sh
|
||||
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
||||
BIN= gendepends.sh init.sh openrc-run.sh ${BIN-${OS}}
|
||||
|
||||
INSTALLAFTER= _installafter
|
||||
|
||||
|
||||
@@ -11,6 +11,16 @@ if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then
|
||||
done
|
||||
fi
|
||||
|
||||
# check for md5sum, and probably /usr too
|
||||
if command -v md5sum >/dev/null; then
|
||||
got_md5sum=true
|
||||
else
|
||||
eerror "md5sum is missing, which suggests /usr is not mounted"
|
||||
eerror "If you have separate /usr, it must be mounted by initramfs"
|
||||
eerror "If not, you should check coreutils is installed correctly"
|
||||
got_md5sum=false
|
||||
fi
|
||||
|
||||
# By default VServer already has /proc mounted, but OpenVZ does not!
|
||||
# However, some of our users have an old proc image in /proc
|
||||
# NFC how they managed that, but the end result means we have to test if
|
||||
@@ -21,9 +31,12 @@ fi
|
||||
mountproc=true
|
||||
f=/proc/self/environ
|
||||
if [ -e $f ]; then
|
||||
if [ "$(VAR=a md5sum $f)" = "$(VAR=b md5sum $f)" ]; then
|
||||
if $got_md5sum && [ "$(VAR=a md5sum $f)" = "$(VAR=b md5sum $f)" ]; then
|
||||
eerror "You have cruft in /proc that should be deleted"
|
||||
else
|
||||
# If they don't have md5sum, this will fail in pretty ways if
|
||||
# /proc isn't really mounted. Oh well, their system is busted
|
||||
# anyway, and they get to keep the pieces.
|
||||
einfo "/proc is already mounted"
|
||||
mountproc=false
|
||||
fi
|
||||
@@ -31,11 +44,9 @@ fi
|
||||
unset f
|
||||
|
||||
if $mountproc; then
|
||||
procfs="proc"
|
||||
[ "$RC_UNAME" = "GNU/kFreeBSD" ] && proc="linprocfs"
|
||||
ebegin "Mounting /proc"
|
||||
if ! fstabinfo --mount /proc; then
|
||||
mount -n -t "$procfs" -o noexec,nosuid,nodev proc /proc
|
||||
mount -n -t proc -o noexec,nosuid,nodev proc /proc
|
||||
fi
|
||||
eend $?
|
||||
fi
|
||||
|
||||
@@ -146,10 +146,9 @@ _status()
|
||||
fi
|
||||
}
|
||||
|
||||
# Template start / stop / status functions
|
||||
# These functions select the appropriate function to call from the
|
||||
# supervisor modules
|
||||
start()
|
||||
default_start()
|
||||
{
|
||||
local func=ssd_start
|
||||
case "$supervisor" in
|
||||
@@ -163,7 +162,7 @@ start()
|
||||
$func
|
||||
}
|
||||
|
||||
stop()
|
||||
default_stop()
|
||||
{
|
||||
local func=ssd_stop
|
||||
case "$supervisor" in
|
||||
@@ -177,7 +176,7 @@ stop()
|
||||
$func
|
||||
}
|
||||
|
||||
status()
|
||||
default_status()
|
||||
{
|
||||
local func=ssd_status
|
||||
case "$supervisor" in
|
||||
@@ -191,6 +190,26 @@ status()
|
||||
$func
|
||||
}
|
||||
|
||||
# Template start / stop / status functions
|
||||
# package init scripts may override these, but the bodies are as minimal as
|
||||
# possible, so that the init scripts can creatively wrap default_*
|
||||
# functions.
|
||||
start()
|
||||
{
|
||||
default_start
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
default_stop
|
||||
}
|
||||
|
||||
status()
|
||||
{
|
||||
default_status
|
||||
}
|
||||
|
||||
# Start debug output
|
||||
yesno $RC_DEBUG && set -x
|
||||
|
||||
# Load configuration settings. First the global ones, then any
|
||||
|
||||
@@ -1,457 +0,0 @@
|
||||
#!/bin/sh
|
||||
# This is a reimplementation of the systemd tmpfiles.d code
|
||||
# Control creation, deletion, and cleaning of volatile and temporary files
|
||||
#
|
||||
# Copyright (c) 2012 Gentoo Foundation
|
||||
# Released under the 2-clause BSD license.
|
||||
#
|
||||
# This instance is a pure-POSIX sh version, written by Robin H Johnson
|
||||
# <robbat2@gentoo.org>, based on the Arch Linux version as of 2012/01/01:
|
||||
# http://projects.archlinux.org/initscripts.git/tree/arch-tmpfiles
|
||||
#
|
||||
# See the tmpfiles.d manpage as well:
|
||||
# https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
|
||||
# This script should match the old manpage
|
||||
# http://0pointer.de/public/systemd-man/tmpfiles.d.html
|
||||
# as of 2012/03/12 and also implements some more recent features
|
||||
#
|
||||
|
||||
DRYRUN=0
|
||||
CHECKPATH="@LIBEXECDIR@/bin/checkpath"
|
||||
|
||||
checkprefix() {
|
||||
n=$1
|
||||
shift
|
||||
for x in $@; do
|
||||
case $n in
|
||||
${x}*) return 0 ;;
|
||||
esac
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
warninvalid() {
|
||||
printf "tmpfiles: ignoring invalid entry on line %d of \`%s'\n" "$LINENUM" "$FILE"
|
||||
error=$(( error+1 ))
|
||||
} >&2
|
||||
|
||||
invalid_option() {
|
||||
printf "tmpfiles: invalid option '%s'\n" "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
dryrun_or_real() {
|
||||
local dryrun=
|
||||
[ $DRYRUN -eq 1 ] && dryrun=echo
|
||||
$dryrun "$@"
|
||||
}
|
||||
|
||||
_chattr() {
|
||||
local attr="$2"
|
||||
case $attr in
|
||||
[+-=]*) : ;;
|
||||
'') return ;;
|
||||
*) attr="+$attr" ;;
|
||||
esac
|
||||
local IFS=
|
||||
dryrun_or_real chattr $1 "$attr" -- $3
|
||||
}
|
||||
|
||||
relabel() {
|
||||
local path
|
||||
local paths=$1 mode=$2 uid=$3 gid=$4
|
||||
|
||||
for path in ${paths}; do
|
||||
if [ -e "$path" ]; then
|
||||
[ -x /sbin/restorecon ] && dryrun_or_real restorecon $CHOPTS "$path"
|
||||
[ $uid != '-' ] && dryrun_or_real chown $CHOPTS "$uid" "$path"
|
||||
[ $gid != '-' ] && dryrun_or_real chgrp $CHOPTS "$gid" "$path"
|
||||
[ $mode != '-' ] && dryrun_or_real chmod $CHOPTS "$mode" "$path"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
splitpath() {
|
||||
local path=$1
|
||||
while [ -n "$path" ]; do
|
||||
echo $path
|
||||
path=${path%/*}
|
||||
done
|
||||
}
|
||||
|
||||
_restorecon() {
|
||||
local path=$1
|
||||
if [ -x /sbin/restorecon ]; then
|
||||
dryrun_or_real restorecon -F $(splitpath "$path")
|
||||
fi
|
||||
}
|
||||
|
||||
_b() {
|
||||
# Create a block device node if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
if [ ! -e "$path" ]; then
|
||||
dryrun_or_real mknod -m $mode $path b ${arg%:*} ${arg#*:}
|
||||
_restorecon "$path"
|
||||
dryrun_or_real chown $uid:$gid $path
|
||||
fi
|
||||
}
|
||||
|
||||
_c() {
|
||||
# Create a character device node if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
if [ ! -e "$path" ]; then
|
||||
dryrun_or_real mknod -m $mode $path c ${arg%:*} ${arg#*:}
|
||||
_restorecon "$path"
|
||||
dryrun_or_real chown $uid:$gid $path
|
||||
fi
|
||||
}
|
||||
|
||||
_C() {
|
||||
# recursively copy a file or directory
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
if [ ! -e "$path" ]; then
|
||||
dryrun_or_real cp -r "$arg" "$path"
|
||||
_restorecon "$path"
|
||||
[ $uid != '-' ] && dryrun_or_real chown "$uid" "$path"
|
||||
[ $gid != '-' ] && dryrun_or_real chgrp "$gid" "$path"
|
||||
[ $mode != '-' ] && dryrun_or_real chmod "$mode" "$path"
|
||||
fi
|
||||
}
|
||||
|
||||
_f() {
|
||||
# Create a file if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
if [ ! -e "$path" ]; then
|
||||
dryrun_or_real $CHECKPATH -fq -m "$mode" -o "$uid:$gid" "$path"
|
||||
[ -z "$arg" ] || _w "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
_F() {
|
||||
# Create or truncate a file
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
dryrun_or_real $CHECKPATH -Fq -m "$mode" -o "$uid:$gid" "$path"
|
||||
[ -z "$arg" ] || _w "$@"
|
||||
}
|
||||
|
||||
_d() {
|
||||
# Create a directory if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4
|
||||
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
if [ ! -d "$path" ]; then
|
||||
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
||||
_restorecon "$path"
|
||||
dryrun_or_real $CHECKPATH -dq -m "$mode" -o "$uid:$gid" "$path"
|
||||
fi
|
||||
}
|
||||
|
||||
_D() {
|
||||
# Create or empty a directory
|
||||
local path=$1 mode=$2 uid=$3 gid=$4
|
||||
|
||||
if [ -d "$path" ] && [ $REMOVE -gt 0 ]; then
|
||||
dryrun_or_real find "$path" -mindepth 1 -maxdepth 1 -xdev -exec rm -rf {} +
|
||||
_restorecon "$path"
|
||||
fi
|
||||
|
||||
if [ $CREATE -gt 0 ]; then
|
||||
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
||||
_restorecon "$path"
|
||||
dryrun_or_real $CHECKPATH -Dq -m "$mode" -o "$uid:$gid" "$path"
|
||||
fi
|
||||
}
|
||||
|
||||
_v() {
|
||||
# Create a subvolume if the path does not exist yet and the file system
|
||||
# supports this (btrfs). Otherwise create a normal directory.
|
||||
# TODO: Implement btrfs subvol creation.
|
||||
_d "$@"
|
||||
}
|
||||
|
||||
_q() {
|
||||
# Similar to _v. However, make sure that the subvolume will be assigned
|
||||
# to the same higher-level quota groups as the subvolume it has
|
||||
# been created in.
|
||||
# TODO: Implement btrfs subvol creation.
|
||||
_d "$@"
|
||||
}
|
||||
|
||||
_Q() {
|
||||
# Similar to q. However, instead of copying the higher-level quota
|
||||
# group assignments from the parent as-is, the lowest quota group
|
||||
# of the parent subvolume is determined that is not the
|
||||
# leaf quota group.
|
||||
# TODO: Implement btrfs subvol creation.
|
||||
_d "$@"
|
||||
}
|
||||
|
||||
_h() {
|
||||
# Set file/directory attributes. Lines of this type accept
|
||||
# shell-style globs in place of normal path names.
|
||||
# The format of the argument field matches chattr
|
||||
_chattr '' "$6" "$1"
|
||||
}
|
||||
|
||||
_H() {
|
||||
# Recursively set file/directory attributes. Lines of this type accept
|
||||
# shell-syle globs in place of normal path names.
|
||||
# Does not follow symlinks
|
||||
_chattr -R "$6" "$1"
|
||||
}
|
||||
|
||||
_L() {
|
||||
# Create a symlink if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
[ ! -e "$path" ] && dryrun_or_real ln -s "$arg" "$path"
|
||||
_restorecon "$path"
|
||||
}
|
||||
|
||||
_p() {
|
||||
# Create a named pipe (FIFO) if it doesn't exist yet
|
||||
local path=$1 mode=$2 uid=$3 gid=$4
|
||||
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
if [ ! -p "$path" ]; then
|
||||
dryrun_or_real $CHECKPATH -pq -m $mode -o "$uid:$gid" "$path"
|
||||
fi
|
||||
}
|
||||
|
||||
_x() {
|
||||
# Ignore a path during cleaning. Use this type to exclude paths from clean-up as
|
||||
# controlled with the Age parameter. Note that lines of this type do not
|
||||
# influence the effect of r or R lines. Lines of this type accept shell-style
|
||||
# globs in place of of normal path names.
|
||||
:
|
||||
# XXX: we don't implement this
|
||||
}
|
||||
|
||||
_X() {
|
||||
# Ignore a path during cleanup. Use this type to prevent path
|
||||
# removal as controled with the age parameter. Note that if path is
|
||||
# a directory, the content of the directory is not excluded from
|
||||
# clean-up, only the directory itself.
|
||||
# Lines of this type accept shell-style globs in place of normal path names.
|
||||
:
|
||||
# XXX: we don't implement this
|
||||
}
|
||||
|
||||
_r() {
|
||||
# Remove a file or directory if it exists. This may not be used to remove
|
||||
# non-empty directories, use R for that. Lines of this type accept shell-style
|
||||
# globs in place of normal path names.
|
||||
local path
|
||||
local paths=$1
|
||||
|
||||
[ $REMOVE -gt 0 ] || return 0
|
||||
|
||||
for path in ${paths}; do
|
||||
if [ -f "$path" ]; then
|
||||
dryrun_or_real rm -f "$path"
|
||||
elif [ -d "$path" ]; then
|
||||
dryrun_or_real rmdir "$path"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
_R() {
|
||||
# Recursively remove a path and all its subdirectories (if it is a directory).
|
||||
# Lines of this type accept shell-style globs in place of normal path names.
|
||||
local path
|
||||
local paths=$1
|
||||
|
||||
[ $REMOVE -gt 0 ] || return 0
|
||||
|
||||
for path in ${paths}; do
|
||||
[ -d "$path" ] && dryrun_or_real rm -rf --one-file-system "$path"
|
||||
done
|
||||
}
|
||||
|
||||
_w() {
|
||||
# Write the argument parameter to a file, if it exists.
|
||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||
if [ -f "$path" ]; then
|
||||
if [ $DRYRUN -eq 1 ]; then
|
||||
echo "echo \"$arg\" >>\"$path\""
|
||||
else
|
||||
echo "$arg" >>"$path"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_z() {
|
||||
# Set ownership, access mode and relabel security context of a file or
|
||||
# directory if it exists. Lines of this type accept shell-style globs in
|
||||
# place of normal path names.
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
relabel "$@"
|
||||
}
|
||||
|
||||
_Z() {
|
||||
# Recursively set ownership, access mode and relabel security context of a
|
||||
# path and all its subdirectories (if it is a directory). Lines of this type
|
||||
# accept shell-style globs in place of normal path names.
|
||||
[ $CREATE -gt 0 ] || return 0
|
||||
|
||||
CHOPTS=-R relabel "$@"
|
||||
}
|
||||
|
||||
BOOT=0 CREATE=0 REMOVE=0 CLEAN=0 VERBOSE=0 DRYRUN=0 error=0 LINENO=0
|
||||
EXCLUDE=
|
||||
PREFIX=
|
||||
FILES=
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
--boot) BOOT=1 ;;
|
||||
--create) CREATE=1 ;;
|
||||
--remove) REMOVE=1 ;;
|
||||
--clean) CLEAN=1 ;; # TODO: Not implemented
|
||||
--verbose) VERBOSE=1 ;;
|
||||
--dryrun|--dry-run) DRYRUN=1 ;;
|
||||
--exclude-prefix=*) EXCLUDE="${EXCLUDE}${1##--exclude-prefix=} " ;;
|
||||
--prefix=*) PREFIX="${PREFIX}${1##--prefix=} " ;;
|
||||
-*) invalid_option "$1" ;;
|
||||
*) FILES="${FILES} $1"
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ $(( CLEAN )) -eq 1 ] ; then
|
||||
printf '%s clean mode is not implemented\n' "${0##*/}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$CREATE$REMOVE" = '00' ]; then
|
||||
printf 'usage: %s [--exclude-prefix=path] [--prefix=path] [--boot] [--create] [--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# XXX: The harcoding of /usr/lib/ is an explicit choice by upstream
|
||||
tmpfiles_dirs='/usr/lib/tmpfiles.d /run/tmpfiles.d /etc/tmpfiles.d'
|
||||
tmpfiles_basenames=''
|
||||
|
||||
if [ -z "${FILES}" ]; then
|
||||
# Build a list of sorted unique basenames
|
||||
# directories declared later in the tmpfiles_d array will override earlier
|
||||
# directories, on a per file basename basis.
|
||||
# `/etc/tmpfiles.d/foo.conf' supersedes `/usr/lib/tmpfiles.d/foo.conf'.
|
||||
# `/run/tmpfiles/foo.conf' will always be read after `/etc/tmpfiles.d/bar.conf'
|
||||
for d in ${tmpfiles_dirs} ; do
|
||||
[ -d $d ] && for f in ${d}/*.conf ; do
|
||||
case "${f##*/}" in
|
||||
systemd.conf|systemd-*.conf) continue;;
|
||||
esac
|
||||
[ -f $f ] && tmpfiles_basenames="${tmpfiles_basenames}\n${f##*/}"
|
||||
done # for f in ${d}
|
||||
done # for d in ${tmpfiles_dirs}
|
||||
FILES="$(printf "${tmpfiles_basenames}\n" | sort -u )"
|
||||
fi
|
||||
|
||||
tmpfiles_d=''
|
||||
|
||||
for b in ${FILES} ; do
|
||||
if [ "${b##*/}" != "${b}" ]; then
|
||||
# The user specified a path on the command line
|
||||
# Just pass it through unaltered
|
||||
tmpfiles_d="${tmpfiles_d} ${b}"
|
||||
else
|
||||
real_f=''
|
||||
for d in $tmpfiles_dirs ; do
|
||||
f=${d}/${b}
|
||||
[ -f "${f}" ] && real_f=$f
|
||||
done
|
||||
[ -f "${real_f}" ] && tmpfiles_d="${tmpfiles_d} ${real_f}"
|
||||
fi
|
||||
done
|
||||
|
||||
error=0
|
||||
|
||||
# loop through the gathered fragments, sorted globally by filename.
|
||||
# `/run/tmpfiles/foo.conf' will always be read after `/etc/tmpfiles.d/bar.conf'
|
||||
FILE=
|
||||
for FILE in $tmpfiles_d ; do
|
||||
LINENUM=0
|
||||
|
||||
### FILE FORMAT ###
|
||||
# XXX: We ignore the 'Age' parameter
|
||||
# 1 2 3 4 5 6 7
|
||||
# Cmd Path Mode UID GID Age Argument
|
||||
# d /run/user 0755 root root 10d -
|
||||
# Mode, UID, GID, Age, Argument may be omitted!
|
||||
# If Cmd ends with !, the line is only processed if --boot is passed
|
||||
|
||||
# XXX: Upstream says whitespace is NOT permitted in the Path argument.
|
||||
# But IS allowed when globs are expanded for the x/r/R/z/Z types.
|
||||
while read cmd path mode uid gid age arg; do
|
||||
LINENUM=$(( LINENUM+1 ))
|
||||
FORCE=0
|
||||
|
||||
# Unless we have both command and path, skip this line.
|
||||
if [ -z "$cmd" -o -z "$path" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
case $cmd in
|
||||
\#*) continue ;;
|
||||
esac
|
||||
|
||||
while [ ${#cmd} -gt 1 ]; do
|
||||
case $cmd in
|
||||
*!) cmd=${cmd%!}; [ "$BOOT" -eq "1" ] || continue 2 ;;
|
||||
*+) cmd=${cmd%+}; FORCE=1; ;;
|
||||
*) warninvalid ; continue 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# whine about invalid entries
|
||||
case $cmd in
|
||||
f|F|w|d|D|v|p|L|c|C|b|x|X|r|R|z|Z|q|Q|h|H) ;;
|
||||
*) warninvalid ; continue ;;
|
||||
esac
|
||||
|
||||
# fall back on defaults when parameters are passed as '-'
|
||||
if [ "$mode" = '-' -o "$mode" = '' ]; then
|
||||
case "$cmd" in
|
||||
p|f|F) mode=0644 ;;
|
||||
d|D|v) mode=0755 ;;
|
||||
C|z|Z|x|r|R|L) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
[ "$uid" = '-' -o "$uid" = '' ] && uid=0
|
||||
[ "$gid" = '-' -o "$gid" = '' ] && gid=0
|
||||
[ "$age" = '-' -o "$age" = '' ] && age=0
|
||||
[ "$arg" = '-' -o "$arg" = '' ] && arg=''
|
||||
set -- "$path" "$mode" "$uid" "$gid" "$age" "$arg"
|
||||
|
||||
[ -n "$EXCLUDE" ] && checkprefix $path $EXCLUDE && continue
|
||||
[ -n "$PREFIX" ] && ! checkprefix $path $PREFIX && continue
|
||||
|
||||
if [ $FORCE -gt 0 ]; then
|
||||
case $cmd in
|
||||
p|L|c|b) [ -f "$path" ] && dryrun_or_real rm -f "$path"
|
||||
esac
|
||||
fi
|
||||
|
||||
[ "$VERBOSE" -eq "1" ] && echo _$cmd "$@"
|
||||
_$cmd "$@"
|
||||
rc=$?
|
||||
if [ "${DRYRUN}" -eq "0" ]; then
|
||||
[ $rc -ne 0 ] && error=$((error + 1))
|
||||
fi
|
||||
done <$FILE
|
||||
done
|
||||
|
||||
exit $error
|
||||
|
||||
# vim: set ts=2 sw=2 sts=2 noet ft=sh:
|
||||
@@ -367,11 +367,12 @@ rc_parse_service_state(RC_SERVICE state)
|
||||
* specified runlevel in dependency order, including the
|
||||
* specified runlevel. */
|
||||
static void
|
||||
get_runlevel_chain(const char *runlevel, RC_STRINGLIST *level_list)
|
||||
get_runlevel_chain(const char *runlevel, RC_STRINGLIST *level_list, RC_STRINGLIST *ancestor_list)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
RC_STRINGLIST *dirs;
|
||||
RC_STRING *d, *dn;
|
||||
RC_STRING *d, *parent;
|
||||
const char *nextlevel;
|
||||
|
||||
/*
|
||||
* If we haven't been passed a runlevel or a level list, or
|
||||
@@ -395,8 +396,27 @@ get_runlevel_chain(const char *runlevel, RC_STRINGLIST *level_list)
|
||||
*/
|
||||
snprintf(path, sizeof(path), "%s/%s", RC_RUNLEVELDIR, runlevel);
|
||||
dirs = ls_dir(path, LS_DIR);
|
||||
TAILQ_FOREACH_SAFE(d, dirs, entries, dn)
|
||||
get_runlevel_chain(d->value, level_list);
|
||||
TAILQ_FOREACH(d, dirs, entries) {
|
||||
nextlevel = d->value;
|
||||
|
||||
/* Check for loop */
|
||||
if (rc_stringlist_find(ancestor_list, nextlevel)) {
|
||||
fprintf(stderr, "Loop detected in stacked runlevels attempting to enter runlevel %s!\n",
|
||||
nextlevel);
|
||||
fprintf(stderr, "Ancestors:\n");
|
||||
TAILQ_FOREACH(parent, ancestor_list, entries)
|
||||
fprintf(stderr, "\t%s\n", parent->value);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Add new ancestor */
|
||||
rc_stringlist_add(ancestor_list, nextlevel);
|
||||
|
||||
get_runlevel_chain(nextlevel, level_list, ancestor_list);
|
||||
|
||||
rc_stringlist_delete(ancestor_list, nextlevel);
|
||||
}
|
||||
rc_stringlist_free(dirs);
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -500,9 +520,12 @@ librc_hidden_def(rc_runlevel_unstack)
|
||||
RC_STRINGLIST *
|
||||
rc_runlevel_stacks(const char *runlevel)
|
||||
{
|
||||
RC_STRINGLIST *stack;
|
||||
RC_STRINGLIST *stack, *ancestor_list;
|
||||
stack = rc_stringlist_new();
|
||||
get_runlevel_chain(runlevel, stack);
|
||||
ancestor_list = rc_stringlist_new();
|
||||
rc_stringlist_add(ancestor_list, runlevel);
|
||||
get_runlevel_chain(runlevel, stack, ancestor_list);
|
||||
rc_stringlist_free(ancestor_list);
|
||||
return stack;
|
||||
}
|
||||
librc_hidden_def(rc_runlevel_stacks)
|
||||
|
||||
@@ -36,7 +36,7 @@ int main(int argc, char **argv)
|
||||
bool ok = false;
|
||||
char *service;
|
||||
char *exec;
|
||||
int idx;
|
||||
int idx = 0;
|
||||
RC_SERVICE state, bit;
|
||||
|
||||
applet = basename_c(argv[0]);
|
||||
|
||||
@@ -1344,6 +1344,7 @@ int main(int argc, char **argv)
|
||||
applet_list,
|
||||
runlevel, depoptions);
|
||||
rc_stringlist_free(tmplist);
|
||||
tmplist = NULL;
|
||||
TAILQ_FOREACH(svc, services, entries)
|
||||
printf("%s ", svc->value);
|
||||
printf ("\n");
|
||||
|
||||
@@ -228,6 +228,7 @@ svc_lock(const char *applet)
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
if (flock(fd, LOCK_EX | LOCK_NB) == -1) {
|
||||
eerror("Call to flock failed: %s", strerror(errno));
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -334,7 +334,19 @@ void selinux_setup(char **argv)
|
||||
|
||||
/* extract the type from the context */
|
||||
curr_con = context_new(curr_context);
|
||||
curr_t = xstrdup(context_type_get(curr_con));
|
||||
if (!curr_con) {
|
||||
free(curr_context);
|
||||
goto out;
|
||||
}
|
||||
|
||||
curr_t = context_type_get(curr_con);
|
||||
if (!curr_t) {
|
||||
context_free(curr_con);
|
||||
free(curr_context);
|
||||
goto out;
|
||||
}
|
||||
|
||||
curr_t = xstrdup(curr_t);
|
||||
/* dont need them anymore so free() now */
|
||||
context_free(curr_con);
|
||||
free(curr_context);
|
||||
|
||||
@@ -683,6 +683,8 @@ do_start_services(const RC_STRINGLIST *start_services, bool parallel)
|
||||
}
|
||||
|
||||
pid = service_start(service->value);
|
||||
if (pid == -1)
|
||||
break;
|
||||
/* Remember the pid if we're running in parallel */
|
||||
if (pid > 0) {
|
||||
add_pid(pid);
|
||||
|
||||
Reference in New Issue
Block a user