Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc6ab0f8f3 | ||
|
|
248a7dcda3 | ||
|
|
bb451fd7b4 | ||
|
|
fb23cbe204 | ||
|
|
a4346bb7f5 | ||
|
|
776346e2cd | ||
|
|
ce71ffbfbe | ||
|
|
d9ee8ca584 | ||
|
|
4e44e2cd73 | ||
|
|
88b807f9bc | ||
|
|
feba5d86b7 | ||
|
|
3b1e96a6a3 | ||
|
|
79998bdf9c |
483
ChangeLog
483
ChangeLog
@@ -1,195 +1,46 @@
|
|||||||
commit f45f7243c19554090458183fbb22e1659d3f8ae5
|
commit 248a7dcda351ef4172c28cc686bfe7b93fa522ff
|
||||||
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 afe64e5e4942a1508ed301d900ec3fe8178e1bb6
|
|
||||||
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>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
mtab: typo fix
|
mtab: typo fix
|
||||||
|
|
||||||
commit b29b2fb3cb3e73b4453483ced908f0ef10e47e9c
|
commit bb451fd7b4a200b63ba355ef2ea5ba35444f49e7
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
update ChangeLog
|
||||||
|
|
||||||
|
commit fb23cbe204b9adeb817e2f5be7a1bb827bb9a477
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
mtab: make /etc/mtab as a file configurable
|
mtab: make /etc/mtab as a file configurable
|
||||||
|
|
||||||
commit 7da72ce487a8d92d992e7fd3db881c198ae02609
|
commit a4346bb7f5fc09e81a61032ebc05f70692a4a04c
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
start work on 0.18.3
|
||||||
|
|
||||||
|
commit 776346e2cd4a43ffeaf268b8a89927d9f3f9eca5
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
update changelog
|
||||||
|
|
||||||
|
commit ce71ffbfbe5e44bb61a3f00faf8466071dab5ea7
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: 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
|
openrc-run.sh: fix new required_* tests to exit properly
|
||||||
|
|
||||||
commit fc777aeaf3e6e2d47f4599acfe6c8d1bf5bc760a
|
commit d9ee8ca5842983b59cc2c6e595d21e9a26a4f000
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
update changelog
|
||||||
|
|
||||||
|
commit 4e44e2cd73fb7fe08fb229bc3192d14f97dc2aa2
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
@@ -198,13 +49,13 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|||||||
X-Gentoo-Bug: 563010
|
X-Gentoo-Bug: 563010
|
||||||
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=563010
|
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=563010
|
||||||
|
|
||||||
commit 9d53d436ae22d6f0f6fc1537e836dd1b4d31cf35
|
commit 88b807f9bcea5ec5bf5c5edb3c7161bf5c12d2d0
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
sysfs: consolidate cgroup processing code in a single function
|
increment version number
|
||||||
|
|
||||||
commit b81317bdf8e3eed8b8ff2bef757ba29f362ed297
|
commit feba5d86b73b0df5587b178e80e85129a60861cd
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
@@ -215,7 +66,7 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|||||||
X-Gentoo-Bug: 562668
|
X-Gentoo-Bug: 562668
|
||||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668
|
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668
|
||||||
|
|
||||||
commit 29f7e335927d4c1fb151124de8cdf01fb87723fa
|
commit 3b1e96a6a3af3de68a18558f3a6ebac31430a1cd
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
@@ -224,7 +75,7 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|||||||
X-Gentoo-Bug: 562320
|
X-Gentoo-Bug: 562320
|
||||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320
|
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320
|
||||||
|
|
||||||
commit 850ca030777cb0c3e2fb03d9ab1f0ccee7b89e93
|
commit 79998bdf9cb5089f423e00bfa4bc3816b64c58d4
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
@@ -1201,3 +1052,271 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|||||||
|
|
||||||
X-Gentoo-Bug: 531600
|
X-Gentoo-Bug: 531600
|
||||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=531600
|
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=531600
|
||||||
|
|
||||||
|
commit 6a9679377f4de257f02de1d16a513df14b4c25ba
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
Do not call the shell to evaluate CHANGELOG_LIMIT
|
||||||
|
|
||||||
|
The git log command understands dates such as "1 year ago", so there is
|
||||||
|
no need to use the date command.
|
||||||
|
|
||||||
|
commit 72186ea3bbbf0b09b88a6f3e1fb23bf04ce1ddad
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
etc/rc and etc/rc.shutdown: change references from rc to openrc
|
||||||
|
|
||||||
|
commit 3647db7a27f7a5ca14b33b14effeb945fd986210
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
Add target to create ChangeLog
|
||||||
|
|
||||||
|
This was added by request because some users are requesting a ChangeLog.
|
||||||
|
|
||||||
|
This fixes #29.
|
||||||
|
|
||||||
|
commit 7a92eb888794819a339babd0ee220b6aa3993db1
|
||||||
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
|
rename git.mk to gitver.mk
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
NAME= openrc
|
NAME= openrc
|
||||||
VERSION= 0.19.1
|
VERSION= 0.18.3
|
||||||
PKG= ${NAME}-${VERSION}
|
PKG= ${NAME}-${VERSION}
|
||||||
|
|||||||
12
NEWS.md
12
NEWS.md
@@ -3,18 +3,6 @@
|
|||||||
This file will contain a list of notable changes for each release. Note
|
This file will contain a list of notable changes for each release. Note
|
||||||
the information in this file is in reverse order.
|
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
|
## OpenRC-0.18.3
|
||||||
|
|
||||||
Modern Linux systems expect /etc/mtab to be a symbolic link to
|
Modern Linux systems expect /etc/mtab to be a symbolic link to
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ include ${MK}/os.mk
|
|||||||
|
|
||||||
CONF-FreeBSD= ipfw moused powerd rarpd savecore syscons
|
CONF-FreeBSD= ipfw moused powerd rarpd savecore syscons
|
||||||
|
|
||||||
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules mtab \
|
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules mtab
|
||||||
net-online
|
|
||||||
|
|
||||||
CONF-NetBSD= moused rarpd savecore
|
CONF-NetBSD= moused rarpd savecore
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,3 @@ wipe_tmp="YES"
|
|||||||
# Write the initial dmesg log into /var/log/dmesg after boot
|
# Write the initial dmesg log into /var/log/dmesg after boot
|
||||||
# This may be useful if you need the kernel boot log afterwards
|
# This may be useful if you need the kernel boot log afterwards
|
||||||
log_dmesg="YES"
|
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
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -25,11 +25,11 @@
|
|||||||
#rc_need="net.eth1 net.eth2"
|
#rc_need="net.eth1 net.eth2"
|
||||||
#
|
#
|
||||||
# If you are using a dynamic network management tool like
|
# 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
|
# manage the network interfaces with the routes to your netmounts, you
|
||||||
# should list that tool.
|
# should list that tool.
|
||||||
#
|
#
|
||||||
#rc_need="NetworkManager"
|
#rc_need="networkmanager"
|
||||||
#rc_need="dhcpcd"
|
#rc_need="dhcpcd"
|
||||||
#rc_need="wicd"
|
#rc_need="wicd"
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -3,11 +3,9 @@
|
|||||||
|
|
||||||
# This is the subsystem type. Valid options on Linux:
|
# This is the subsystem type. Valid options on Linux:
|
||||||
# "" - nothing special
|
# "" - nothing special
|
||||||
# "docker" - Docker container manager
|
|
||||||
# "lxc" - Linux Containers
|
# "lxc" - Linux Containers
|
||||||
# "openvz" - Linux OpenVZ
|
# "openvz" - Linux OpenVZ
|
||||||
# "prefix" - Prefix
|
# "prefix" - Prefix
|
||||||
# "rkt" - CoreOS container management system
|
|
||||||
# "uml" - Usermode Linux
|
# "uml" - Usermode Linux
|
||||||
# "vserver" - Linux vserver
|
# "vserver" - Linux vserver
|
||||||
# "systemd-nspawn" - Container created by the systemd-nspawn utility
|
# "systemd-nspawn" - Container created by the systemd-nspawn utility
|
||||||
|
|||||||
@@ -29,20 +29,17 @@
|
|||||||
# come up.
|
# come up.
|
||||||
#rc_depend_strict="YES"
|
#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
|
# A hotplugged service is one started by a dynamic dev manager when a matching
|
||||||
# hardware device is found.
|
# hardware device is found.
|
||||||
# Hotplugged services appear in the "hotplugged" runlevel.
|
# This service is intrinsically included in the boot runlevel.
|
||||||
# If rc_hotplug is set to any value, we compare the name of this service
|
# To disable services, prefix with a !
|
||||||
# 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.
|
|
||||||
# Example - rc_hotplug="net.wlan !net.*"
|
# Example - rc_hotplug="net.wlan !net.*"
|
||||||
# This allows net.wlan and any service not matching net.* to be hotplugged.
|
# This allows net.wlan and any service not matching net.* to be plugged.
|
||||||
# Example - rc_hotplug="!net.*"
|
# Example - rc_hotplug="*"
|
||||||
# This allows services that do not match "net.*" to be hotplugged.
|
# This allows all services to be hotplugged
|
||||||
|
#rc_hotplug="*"
|
||||||
|
|
||||||
# rc_logger launches a logging daemon to log the entire rc process to
|
# rc_logger launches a logging daemon to log the entire rc process to
|
||||||
# /var/log/rc.log
|
# /var/log/rc.log
|
||||||
|
|||||||
@@ -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 \
|
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 \
|
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
|
# Generic BSD scripts
|
||||||
SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
|
SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
|
||||||
|
|||||||
@@ -216,9 +216,6 @@ start()
|
|||||||
case "$RC_SYS" in
|
case "$RC_SYS" in
|
||||||
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
|
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
|
||||||
*)
|
*)
|
||||||
if yesno ${previous_dmesg:-no}; then
|
|
||||||
mv /var/log/dmesg /var/log/dmesg.old
|
|
||||||
fi
|
|
||||||
dmesg > /var/log/dmesg
|
dmesg > /var/log/dmesg
|
||||||
chmod 640 /var/log/dmesg
|
chmod 640 /var/log/dmesg
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ description="Sets a font for the consoles."
|
|||||||
depend()
|
depend()
|
||||||
{
|
{
|
||||||
need localmount termencoding
|
need localmount termencoding
|
||||||
after hotplug bootmisc modules
|
after hotplug bootmisc
|
||||||
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
|
||||||
}
|
|
||||||
@@ -61,6 +61,16 @@ mount_misc()
|
|||||||
fi
|
fi
|
||||||
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
|
# set up kernel support for fusectl
|
||||||
if [ -d /sys/fs/fuse/connections ] \
|
if [ -d /sys/fs/fuse/connections ] \
|
||||||
&& ! mountinfo -q /sys/fs/fuse/connections; then
|
&& ! mountinfo -q /sys/fs/fuse/connections; then
|
||||||
@@ -98,16 +108,6 @@ mount_misc()
|
|||||||
|
|
||||||
mount_cgroups()
|
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
|
mountinfo -q /sys/fs/cgroup || return 0
|
||||||
|
|
||||||
if ! mountinfo -q /sys/fs/cgroup/openrc; then
|
if ! mountinfo -q /sys/fs/cgroup/openrc; then
|
||||||
|
|||||||
@@ -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.
|
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
|
Here is a list of the functions you can use in a
|
||||||
.Ic depend
|
.Ic depend
|
||||||
function. You simply pass the names of the services you want to add to
|
function. You simply pass the names of the services to it to add to that
|
||||||
that dependency type to the function, or prefix the names with ! to
|
dependency type, or prefix it with ! to remove it.
|
||||||
remove them from the dependencies.
|
|
||||||
.Bl -tag -width "RC_DEFAULTLEVEL"
|
.Bl -tag -width "RC_DEFAULTLEVEL"
|
||||||
.It Ic need
|
.It Ic need
|
||||||
The service will refuse to start until needed services have started and it
|
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.
|
will refuse to stop until any services that need it have stopped.
|
||||||
.It Ic use
|
.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.
|
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
|
.It Ic after
|
||||||
The service will start after these services and stop before these services.
|
The service will start after these services and stop before these services.
|
||||||
.It Ic before
|
.It Ic before
|
||||||
The service will start before these services and stop after these services.
|
The service will start before these services and stop after these services.
|
||||||
.It Ic provide
|
.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
|
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
|
recommended that you do not have a real service that has the same name
|
||||||
as a virtual service.
|
as a virtual service.
|
||||||
@@ -217,8 +213,6 @@ Same as -jail, but for Linux Resource Containers (LXC).
|
|||||||
Same as -jail, but for OpenVZ systems.
|
Same as -jail, but for OpenVZ systems.
|
||||||
.It Dv -prefix
|
.It Dv -prefix
|
||||||
Same as -jail, but for Prefix systems.
|
Same as -jail, but for Prefix systems.
|
||||||
.It Dv -rkt
|
|
||||||
Same as -jail, but for RKT systems.
|
|
||||||
.It Dv -uml
|
.It Dv -uml
|
||||||
Same as -jail, but for UML systems.
|
Same as -jail, but for UML systems.
|
||||||
.It Dv -vserver
|
.It Dv -vserver
|
||||||
@@ -227,11 +221,6 @@ Same as -jail, but for VServer systems.
|
|||||||
Same as -jail, but for Xen DOM0 systems.
|
Same as -jail, but for Xen DOM0 systems.
|
||||||
.It Dv -xenu
|
.It Dv -xenu
|
||||||
Same as -jail, but for Xen DOMU systems.
|
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
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
@@ -473,9 +462,6 @@ rc_net_tap1_provide="!net"
|
|||||||
# It's also possible to negate keywords. This is mainly useful for prefix
|
# It's also possible to negate keywords. This is mainly useful for prefix
|
||||||
# users testing OpenRC.
|
# users testing OpenRC.
|
||||||
rc_keyword="!-prefix"
|
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
|
.Ed
|
||||||
.Sh EXAMPLES
|
.Sh EXAMPLES
|
||||||
.Pp
|
.Pp
|
||||||
|
|||||||
@@ -16,9 +16,6 @@ need() {
|
|||||||
use() {
|
use() {
|
||||||
[ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3
|
[ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3
|
||||||
}
|
}
|
||||||
want() {
|
|
||||||
[ -n "$*" ] && echo "$RC_SVCNAME iwant $*" >&3
|
|
||||||
}
|
|
||||||
before() {
|
before() {
|
||||||
[ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3
|
[ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3
|
||||||
}
|
}
|
||||||
@@ -29,18 +26,7 @@ provide() {
|
|||||||
[ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3
|
[ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3
|
||||||
}
|
}
|
||||||
keyword() {
|
keyword() {
|
||||||
local c x
|
[ -n "$*" ] && echo "$RC_SVCNAME keyword $*" >&3
|
||||||
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
|
|
||||||
}
|
}
|
||||||
depend() {
|
depend() {
|
||||||
:
|
:
|
||||||
@@ -96,11 +82,6 @@ do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[ -e @SYSCONFDIR@/rc.conf ] && . @SYSCONFDIR@/rc.conf
|
[ -e @SYSCONFDIR@/rc.conf ] && . @SYSCONFDIR@/rc.conf
|
||||||
if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then
|
|
||||||
for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do
|
|
||||||
[ -e "$_f" ] && . "$_f"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if . "$_dir/$RC_SVCNAME"; then
|
if . "$_dir/$RC_SVCNAME"; then
|
||||||
echo "$RC_SVCNAME" >&3
|
echo "$RC_SVCNAME" >&3
|
||||||
|
|||||||
@@ -23,11 +23,6 @@ mount_svcdir()
|
|||||||
|
|
||||||
. "$RC_LIBEXECDIR"/sh/functions.sh
|
. "$RC_LIBEXECDIR"/sh/functions.sh
|
||||||
[ -r "@SYSCONFDIR@/rc.conf" ] && . "@SYSCONFDIR@/rc.conf"
|
[ -r "@SYSCONFDIR@/rc.conf" ] && . "@SYSCONFDIR@/rc.conf"
|
||||||
if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then
|
|
||||||
for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do
|
|
||||||
[ -r "$_f" ] && . "$_f"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable devd until we need it
|
# Disable devd until we need it
|
||||||
if [ -z "$RC_SYS" -a "$RC_UNAME" = "FreeBSD" ]; then
|
if [ -z "$RC_SYS" -a "$RC_UNAME" = "FreeBSD" ]; then
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
|
|
||||||
. "$RC_LIBEXECDIR"/sh/functions.sh
|
. "$RC_LIBEXECDIR"/sh/functions.sh
|
||||||
[ -r "@SYSCONFDIR@/rc.conf" ] && . "@SYSCONFDIR@/rc.conf"
|
[ -r "@SYSCONFDIR@/rc.conf" ] && . "@SYSCONFDIR@/rc.conf"
|
||||||
if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then
|
|
||||||
for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do
|
|
||||||
[ -e "$_f" ] && . "$_f"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# By default VServer already has /proc mounted, but OpenVZ does not!
|
# By default VServer already has /proc mounted, but OpenVZ does not!
|
||||||
# However, some of our users have an old proc image in /proc
|
# However, some of our users have an old proc image in /proc
|
||||||
|
|||||||
@@ -66,9 +66,6 @@ need() {
|
|||||||
use() {
|
use() {
|
||||||
[ -n "$*" ] && echo "use $*"
|
[ -n "$*" ] && echo "use $*"
|
||||||
}
|
}
|
||||||
want() {
|
|
||||||
[ -n "$*" ] && echo "want $*"
|
|
||||||
}
|
|
||||||
before() {
|
before() {
|
||||||
[ -n "$*" ] && echo "before $*"
|
[ -n "$*" ] && echo "before $*"
|
||||||
}
|
}
|
||||||
@@ -79,18 +76,7 @@ provide() {
|
|||||||
[ -n "$*" ] && echo "provide $*"
|
[ -n "$*" ] && echo "provide $*"
|
||||||
}
|
}
|
||||||
keyword() {
|
keyword() {
|
||||||
local c x
|
[ -n "$*" ] && echo "keyword $*"
|
||||||
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"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Describe the init script to the user
|
# Describe the init script to the user
|
||||||
@@ -198,12 +184,6 @@ unset _conf_d
|
|||||||
|
|
||||||
# Load any system overrides
|
# Load any system overrides
|
||||||
sourcex -e "@SYSCONFDIR@/rc.conf"
|
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
|
# load service supervisor functions
|
||||||
sourcex "@LIBEXECDIR@/sh/s6.sh"
|
sourcex "@LIBEXECDIR@/sh/s6.sh"
|
||||||
|
|||||||
@@ -86,33 +86,12 @@ get_bootparam()
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Called from openrc-run.sh or gendepends.sh
|
# 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() {
|
||||||
depend
|
depend
|
||||||
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends=
|
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends=
|
||||||
|
|
||||||
# Add any user defined 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 \
|
after:AFTER before:BEFORE \
|
||||||
provide:PROVIDE keyword:KEYWORD; do
|
provide:PROVIDE keyword:KEYWORD; do
|
||||||
IFS=:
|
IFS=:
|
||||||
|
|||||||
@@ -31,8 +31,7 @@
|
|||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "librc.h"
|
#include "librc.h"
|
||||||
|
|
||||||
#if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__)) \
|
#if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__))
|
||||||
|| defined(__GNU__)
|
|
||||||
static bool
|
static bool
|
||||||
pid_is_exec(pid_t pid, const char *exec)
|
pid_is_exec(pid_t pid, const char *exec)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -192,9 +192,7 @@ valid_service(const char *runlevel, const char *service, const char *type)
|
|||||||
|
|
||||||
if (!runlevel ||
|
if (!runlevel ||
|
||||||
strcmp(type, "ineed") == 0 ||
|
strcmp(type, "ineed") == 0 ||
|
||||||
strcmp(type, "needsme") == 0 ||
|
strcmp(type, "needsme") == 0)
|
||||||
strcmp(type, "iwant") == 0 ||
|
|
||||||
strcmp(type, "wantsme") == 0)
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (rc_service_in_runlevel(service, runlevel))
|
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();
|
types = rc_stringlist_new();
|
||||||
rc_stringlist_add(types, "ineed");
|
rc_stringlist_add(types, "ineed");
|
||||||
rc_stringlist_add(types, "iuse");
|
rc_stringlist_add(types, "iuse");
|
||||||
rc_stringlist_add(types, "iwant");
|
|
||||||
rc_stringlist_add(types, "iafter");
|
rc_stringlist_add(types, "iafter");
|
||||||
services = rc_deptree_depends(deptree, types, list, runlevel,
|
services = rc_deptree_depends(deptree, types, list, runlevel,
|
||||||
RC_DEP_STRICT | RC_DEP_TRACE | options);
|
RC_DEP_STRICT | RC_DEP_TRACE | options);
|
||||||
@@ -651,7 +648,6 @@ typedef struct deppair
|
|||||||
static const DEPPAIR deppairs[] = {
|
static const DEPPAIR deppairs[] = {
|
||||||
{ "ineed", "needsme" },
|
{ "ineed", "needsme" },
|
||||||
{ "iuse", "usesme" },
|
{ "iuse", "usesme" },
|
||||||
{ "iwant", "wantsme" },
|
|
||||||
{ "iafter", "ibefore" },
|
{ "iafter", "ibefore" },
|
||||||
{ "ibefore", "iafter" },
|
{ "ibefore", "iafter" },
|
||||||
{ "iprovide", "providedby" },
|
{ "iprovide", "providedby" },
|
||||||
@@ -848,7 +844,6 @@ rc_deptree_update(void)
|
|||||||
/* If we're after something, remove us from the before list */
|
/* If we're after something, remove us from the before list */
|
||||||
if (strcmp(type, "iafter") == 0 ||
|
if (strcmp(type, "iafter") == 0 ||
|
||||||
strcmp(type, "ineed") == 0 ||
|
strcmp(type, "ineed") == 0 ||
|
||||||
strcmp(type, "iwant") == 0 ||
|
|
||||||
strcmp(type, "iuse") == 0) {
|
strcmp(type, "iuse") == 0) {
|
||||||
if ((dt = get_deptype(depinfo, "ibefore")))
|
if ((dt = get_deptype(depinfo, "ibefore")))
|
||||||
rc_stringlist_delete(dt->services, depend);
|
rc_stringlist_delete(dt->services, depend);
|
||||||
@@ -962,7 +957,6 @@ rc_deptree_update(void)
|
|||||||
/* Phase 5 - Remove broken before directives */
|
/* Phase 5 - Remove broken before directives */
|
||||||
types = rc_stringlist_new();
|
types = rc_stringlist_new();
|
||||||
rc_stringlist_add(types, "ineed");
|
rc_stringlist_add(types, "ineed");
|
||||||
rc_stringlist_add(types, "iwant");
|
|
||||||
rc_stringlist_add(types, "iuse");
|
rc_stringlist_add(types, "iuse");
|
||||||
rc_stringlist_add(types, "iafter");
|
rc_stringlist_add(types, "iafter");
|
||||||
TAILQ_FOREACH(depinfo, deptree, entries) {
|
TAILQ_FOREACH(depinfo, deptree, entries) {
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <fnmatch.h>
|
|
||||||
|
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "librc.h"
|
#include "librc.h"
|
||||||
|
|
||||||
@@ -216,78 +214,12 @@ rc_config_list(const char *file)
|
|||||||
}
|
}
|
||||||
librc_hidden_def(rc_config_list)
|
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.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config)
|
|
||||||
{
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
static RC_STRINGLIST *rc_config_override(RC_STRINGLIST *config)
|
||||||
|
{
|
||||||
RC_STRINGLIST *overrides;
|
RC_STRINGLIST *overrides;
|
||||||
RC_STRING *cline, *override, *config_np;
|
RC_STRING *cline, *override, *config_np;
|
||||||
char *tmp = NULL;
|
char *tmp = NULL;
|
||||||
@@ -336,60 +268,90 @@ static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rc_stringlist_free(overrides);
|
rc_stringlist_free(overrides);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
#endif
|
#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_STRINGLIST *
|
||||||
rc_config_load(const char *file)
|
rc_config_load(const char *file)
|
||||||
{
|
{
|
||||||
RC_STRINGLIST *list;
|
RC_STRINGLIST *list;
|
||||||
RC_STRINGLIST *config;
|
RC_STRINGLIST *config;
|
||||||
|
char *token;
|
||||||
RC_STRING *line;
|
RC_STRING *line;
|
||||||
|
RC_STRING *cline;
|
||||||
|
size_t i = 0;
|
||||||
|
bool replaced;
|
||||||
|
char *entry;
|
||||||
|
char *newline;
|
||||||
|
char *p;
|
||||||
|
|
||||||
list = rc_config_list(file);
|
list = rc_config_list(file);
|
||||||
config = rc_stringlist_new();
|
config = rc_stringlist_new();
|
||||||
TAILQ_FOREACH(line, list, entries) {
|
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);
|
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;
|
return config;
|
||||||
}
|
}
|
||||||
librc_hidden_def(rc_config_load)
|
librc_hidden_def(rc_config_load)
|
||||||
@@ -439,9 +401,6 @@ rc_conf_value(const char *setting)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
rc_conf = rc_config_directory(rc_conf);
|
|
||||||
rc_conf = rc_config_kcl(rc_conf);
|
|
||||||
|
|
||||||
/* Convert old uppercase to lowercase */
|
/* Convert old uppercase to lowercase */
|
||||||
TAILQ_FOREACH(s, rc_conf, entries) {
|
TAILQ_FOREACH(s, rc_conf, entries) {
|
||||||
p = s->value;
|
p = s->value;
|
||||||
|
|||||||
@@ -210,14 +210,14 @@ found:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* New sys identification code
|
||||||
|
* Not to be used for any binaries outside of openrc. */
|
||||||
const char *
|
const char *
|
||||||
rc_sys(void)
|
rc_sys_v2(void)
|
||||||
{
|
{
|
||||||
#ifdef PREFIX
|
#define __STRING_SWITCH(x) { char *__string_switch = x; if (false) {}
|
||||||
return RC_SYS_PREFIX;
|
#define __STRING_CASE(y) else if (strcmp(__string_switch,y) == 0)
|
||||||
#endif
|
#define __STRING_SWITCH_END() }
|
||||||
|
|
||||||
char *systype = rc_conf_value("rc_sys");
|
char *systype = rc_conf_value("rc_sys");
|
||||||
if (systype) {
|
if (systype) {
|
||||||
char *s = systype;
|
char *s = systype;
|
||||||
@@ -227,11 +227,43 @@ rc_sys(void)
|
|||||||
*s = toupper((unsigned char) *s);
|
*s = toupper((unsigned char) *s);
|
||||||
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__
|
#ifdef __FreeBSD__
|
||||||
if (systype && strcmp(systype, RC_SYS_JAIL) == 0)
|
|
||||||
return RC_SYS_JAIL;
|
|
||||||
int jailed = 0;
|
int jailed = 0;
|
||||||
size_t len = sizeof(jailed);
|
size_t len = sizeof(jailed);
|
||||||
|
|
||||||
@@ -241,12 +273,6 @@ rc_sys(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __NetBSD__
|
#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"))
|
if (exists("/kern/xen/privcmd"))
|
||||||
return RC_SYS_XEN0;
|
return RC_SYS_XEN0;
|
||||||
if (exists("/kern/xen"))
|
if (exists("/kern/xen"))
|
||||||
@@ -254,26 +280,6 @@ rc_sys(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
#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 (exists("/proc/xen")) {
|
||||||
if (file_regex("/proc/xen/capabilities", "control_d"))
|
if (file_regex("/proc/xen/capabilities", "control_d"))
|
||||||
return RC_SYS_XEN0;
|
return RC_SYS_XEN0;
|
||||||
@@ -290,15 +296,23 @@ rc_sys(void)
|
|||||||
return RC_SYS_OPENVZ; /* old test */
|
return RC_SYS_OPENVZ; /* old test */
|
||||||
else if (file_regex("/proc/1/environ", "container=lxc"))
|
else if (file_regex("/proc/1/environ", "container=lxc"))
|
||||||
return RC_SYS_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"))
|
else if (file_regex("/proc/1/environ", "container=systemd-nspawn"))
|
||||||
return RC_SYS_SYSTEMD_NSPAWN;
|
return RC_SYS_SYSTEMD_NSPAWN;
|
||||||
else if (file_regex("/proc/1/environ", "container=docker"))
|
|
||||||
return RC_SYS_DOCKER;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return NULL;
|
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)
|
librc_hidden_def(rc_sys)
|
||||||
|
|
||||||
|
|||||||
@@ -130,6 +130,8 @@ librc_hidden_proto(rc_stringlist_new)
|
|||||||
librc_hidden_proto(rc_stringlist_split)
|
librc_hidden_proto(rc_stringlist_split)
|
||||||
librc_hidden_proto(rc_stringlist_sort)
|
librc_hidden_proto(rc_stringlist_sort)
|
||||||
librc_hidden_proto(rc_sys)
|
librc_hidden_proto(rc_sys)
|
||||||
|
librc_hidden_proto(rc_sys_v1)
|
||||||
|
librc_hidden_proto(rc_sys_v2)
|
||||||
librc_hidden_proto(rc_yesno)
|
librc_hidden_proto(rc_yesno)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ extern "C" {
|
|||||||
#define RC_SYS_WHITELIST RC_LIBEXECDIR "/conf.d/env_whitelist"
|
#define RC_SYS_WHITELIST RC_LIBEXECDIR "/conf.d/env_whitelist"
|
||||||
#define RC_USR_WHITELIST RC_SYSCONFDIR "/conf.d/env_whitelist"
|
#define RC_USR_WHITELIST RC_SYSCONFDIR "/conf.d/env_whitelist"
|
||||||
#define RC_CONF RC_SYSCONFDIR "/rc.conf"
|
#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_CONF_OLD RC_SYSCONFDIR "/conf.d/rc"
|
||||||
|
|
||||||
#define RC_PATH_PREFIX RC_LIBEXECDIR "/bin:/bin:/sbin:/usr/bin:/usr/sbin"
|
#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
|
/*! @name System types
|
||||||
* OpenRC can support some special sub system types, normally virtualization.
|
* OpenRC can support some special sub system types, normally virtualization.
|
||||||
* Some services cannot work in these systems, or we do something else. */
|
* 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_JAIL "JAIL"
|
||||||
#define RC_SYS_OPENVZ "OPENVZ"
|
#define RC_SYS_OPENVZ "OPENVZ"
|
||||||
#define RC_SYS_LXC "LXC"
|
#define RC_SYS_LXC "LXC"
|
||||||
#define RC_SYS_PREFIX "PREFIX"
|
#define RC_SYS_PREFIX "PREFIX"
|
||||||
#define RC_SYS_RKT "RKT"
|
|
||||||
#define RC_SYS_SYSTEMD_NSPAWN "SYSTEMD-NSPAWN"
|
#define RC_SYS_SYSTEMD_NSPAWN "SYSTEMD-NSPAWN"
|
||||||
#define RC_SYS_UML "UML"
|
#define RC_SYS_UML "UML"
|
||||||
#define RC_SYS_VSERVER "VSERVER"
|
#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 */
|
* @return string from RC_SYS_* types or NULL if none detected */
|
||||||
const char *rc_sys(void);
|
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
|
/*! @name Dependency options
|
||||||
* These options can change the services found by the rc_get_depinfo and
|
* These options can change the services found by the rc_get_depinfo and
|
||||||
* rc_get_depends functions. */
|
* rc_get_depends functions. */
|
||||||
|
|||||||
@@ -39,8 +39,8 @@
|
|||||||
# include <sys/statvfs.h>
|
# include <sys/statvfs.h>
|
||||||
# define statfs statvfs
|
# define statfs statvfs
|
||||||
# define F_FLAGS f_flag
|
# define F_FLAGS f_flag
|
||||||
#elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \
|
#elif defined (__linux__) || (defined(__FreeBSD_kernel__) && \
|
||||||
defined(__GLIBC__)) || defined(__GNU__)
|
defined(__GLIBC__)) || defined(__GNU__)
|
||||||
# include <mntent.h>
|
# include <mntent.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -267,8 +267,8 @@ find_mounts(struct args *args)
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \
|
#elif defined (__linux__) || (defined (__FreeBSD_kernel__) && \
|
||||||
defined(__GLIBC__)) || defined(__GNU__)
|
defined(__GLIBC__))
|
||||||
static struct mntent *
|
static struct mntent *
|
||||||
getmntfile(const char *file)
|
getmntfile(const char *file)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,8 +51,8 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \
|
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && \
|
||||||
|| defined(__GNU__)
|
defined(__GLIBC__))
|
||||||
# include <pty.h>
|
# include <pty.h>
|
||||||
#elif defined(__NetBSD__) || defined(__OpenBSD__)
|
#elif defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
# include <util.h>
|
# include <util.h>
|
||||||
@@ -78,23 +78,19 @@ static const char *applet;
|
|||||||
static char *service, *runlevel, *ibsave, *prefix;
|
static char *service, *runlevel, *ibsave, *prefix;
|
||||||
static RC_DEPTREE *deptree;
|
static RC_DEPTREE *deptree;
|
||||||
static RC_STRINGLIST *applet_list, *services, *tmplist;
|
static RC_STRINGLIST *applet_list, *services, *tmplist;
|
||||||
static RC_STRINGLIST *restart_services;
|
static RC_STRINGLIST *restart_services, *need_services, *use_services;
|
||||||
static RC_STRINGLIST *need_services;
|
|
||||||
static RC_STRINGLIST *use_services;
|
|
||||||
static RC_STRINGLIST *want_services;
|
|
||||||
static RC_HOOK hook_out;
|
static RC_HOOK hook_out;
|
||||||
static int exclusive_fd = -1, master_tty = -1;
|
static int exclusive_fd = -1, master_tty = -1;
|
||||||
static bool sighup, in_background, deps, dry_run;
|
static bool sighup, in_background, deps, dry_run;
|
||||||
static pid_t service_pid;
|
static pid_t service_pid;
|
||||||
static int signal_pipe[2] = { -1, -1 };
|
static int signal_pipe[2] = { -1, -1 };
|
||||||
|
|
||||||
static RC_STRINGLIST *deptypes_b; /* broken deps */
|
static RC_STRINGLIST *deptypes_b;
|
||||||
static RC_STRINGLIST *deptypes_n; /* needed deps */
|
static RC_STRINGLIST *deptypes_n;
|
||||||
static RC_STRINGLIST *deptypes_nw; /* need+want deps */
|
static RC_STRINGLIST *deptypes_nu;
|
||||||
static RC_STRINGLIST *deptypes_nwu; /* need+want+use deps */
|
static RC_STRINGLIST *deptypes_nua;
|
||||||
static RC_STRINGLIST *deptypes_nwua; /* need+want+use+after deps */
|
static RC_STRINGLIST *deptypes_m;
|
||||||
static RC_STRINGLIST *deptypes_m; /* needed deps for stopping */
|
static RC_STRINGLIST *deptypes_mua;
|
||||||
static RC_STRINGLIST *deptypes_mwua; /* need+want+use+after deps for stopping */
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_signal(int sig)
|
handle_signal(int sig)
|
||||||
@@ -241,16 +237,14 @@ cleanup(void)
|
|||||||
#ifdef DEBUG_MEMORY
|
#ifdef DEBUG_MEMORY
|
||||||
rc_stringlist_free(deptypes_b);
|
rc_stringlist_free(deptypes_b);
|
||||||
rc_stringlist_free(deptypes_n);
|
rc_stringlist_free(deptypes_n);
|
||||||
rc_stringlist_free(deptypes_nw);
|
rc_stringlist_free(deptypes_nu);
|
||||||
rc_stringlist_free(deptypes_nwu);
|
rc_stringlist_free(deptypes_nua);
|
||||||
rc_stringlist_free(deptypes_nwua);
|
|
||||||
rc_stringlist_free(deptypes_m);
|
rc_stringlist_free(deptypes_m);
|
||||||
rc_stringlist_free(deptypes_mwua);
|
rc_stringlist_free(deptypes_mua);
|
||||||
rc_deptree_free(deptree);
|
rc_deptree_free(deptree);
|
||||||
rc_stringlist_free(restart_services);
|
rc_stringlist_free(restart_services);
|
||||||
rc_stringlist_free(need_services);
|
rc_stringlist_free(need_services);
|
||||||
rc_stringlist_free(use_services);
|
rc_stringlist_free(use_services);
|
||||||
rc_stringlist_free(want_services);
|
|
||||||
rc_stringlist_free(services);
|
rc_stringlist_free(services);
|
||||||
rc_stringlist_free(applet_list);
|
rc_stringlist_free(applet_list);
|
||||||
rc_stringlist_free(tmplist);
|
rc_stringlist_free(tmplist);
|
||||||
@@ -536,29 +530,22 @@ setup_deptypes(void)
|
|||||||
deptypes_n = rc_stringlist_new();
|
deptypes_n = rc_stringlist_new();
|
||||||
rc_stringlist_add(deptypes_n, "ineed");
|
rc_stringlist_add(deptypes_n, "ineed");
|
||||||
|
|
||||||
deptypes_nw = rc_stringlist_new();
|
deptypes_nu = rc_stringlist_new();
|
||||||
rc_stringlist_add(deptypes_nw, "ineed");
|
rc_stringlist_add(deptypes_nu, "ineed");
|
||||||
rc_stringlist_add(deptypes_nw, "iwant");
|
rc_stringlist_add(deptypes_nu, "iuse");
|
||||||
|
|
||||||
deptypes_nwu = rc_stringlist_new();
|
deptypes_nua = rc_stringlist_new();
|
||||||
rc_stringlist_add(deptypes_nwu, "ineed");
|
rc_stringlist_add(deptypes_nua, "ineed");
|
||||||
rc_stringlist_add(deptypes_nwu, "iwant");
|
rc_stringlist_add(deptypes_nua, "iuse");
|
||||||
rc_stringlist_add(deptypes_nwu, "iuse");
|
rc_stringlist_add(deptypes_nua, "iafter");
|
||||||
|
|
||||||
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_m = rc_stringlist_new();
|
deptypes_m = rc_stringlist_new();
|
||||||
rc_stringlist_add(deptypes_m, "needsme");
|
rc_stringlist_add(deptypes_m, "needsme");
|
||||||
|
|
||||||
deptypes_mwua = rc_stringlist_new();
|
deptypes_mua = rc_stringlist_new();
|
||||||
rc_stringlist_add(deptypes_mwua, "needsme");
|
rc_stringlist_add(deptypes_mua, "needsme");
|
||||||
rc_stringlist_add(deptypes_mwua, "wantsme");
|
rc_stringlist_add(deptypes_mua, "usesme");
|
||||||
rc_stringlist_add(deptypes_mwua, "usesme");
|
rc_stringlist_add(deptypes_mua, "beforeme");
|
||||||
rc_stringlist_add(deptypes_mwua, "beforeme");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -644,9 +631,7 @@ svc_start_deps(void)
|
|||||||
|
|
||||||
need_services = rc_deptree_depends(deptree, deptypes_n,
|
need_services = rc_deptree_depends(deptree, deptypes_n,
|
||||||
applet_list, runlevel, depoptions);
|
applet_list, runlevel, depoptions);
|
||||||
want_services = rc_deptree_depends(deptree, deptypes_nw,
|
use_services = rc_deptree_depends(deptree, deptypes_nu,
|
||||||
applet_list, runlevel, depoptions);
|
|
||||||
use_services = rc_deptree_depends(deptree, deptypes_nwu,
|
|
||||||
applet_list, runlevel, depoptions);
|
applet_list, runlevel, depoptions);
|
||||||
|
|
||||||
if (!rc_runlevel_starting()) {
|
if (!rc_runlevel_starting()) {
|
||||||
@@ -674,7 +659,7 @@ svc_start_deps(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* Now wait for them to start */
|
/* 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);
|
runlevel, depoptions);
|
||||||
/* We use tmplist to hold our scheduled by list */
|
/* We use tmplist to hold our scheduled by list */
|
||||||
tmplist = rc_stringlist_new();
|
tmplist = rc_stringlist_new();
|
||||||
@@ -689,7 +674,6 @@ svc_start_deps(void)
|
|||||||
state & RC_SERVICE_WASINACTIVE)
|
state & RC_SERVICE_WASINACTIVE)
|
||||||
{
|
{
|
||||||
if (!rc_stringlist_find(need_services, svc->value) &&
|
if (!rc_stringlist_find(need_services, svc->value) &&
|
||||||
!rc_stringlist_find(want_services, svc->value) &&
|
|
||||||
!rc_stringlist_find(use_services, svc->value))
|
!rc_stringlist_find(use_services, svc->value))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -943,7 +927,7 @@ svc_stop_deps(RC_SERVICE state)
|
|||||||
|
|
||||||
/* We now wait for other services that may use us and are
|
/* We now wait for other services that may use us and are
|
||||||
* stopping. This is important when a runlevel stops */
|
* 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);
|
runlevel, depoptions);
|
||||||
TAILQ_FOREACH(svc, services, entries) {
|
TAILQ_FOREACH(svc, services, entries) {
|
||||||
if (rc_service_state(svc->value) & RC_SERVICE_STOPPED)
|
if (rc_service_state(svc->value) & RC_SERVICE_STOPPED)
|
||||||
@@ -1314,10 +1298,8 @@ openrc_run(int argc, char **argv)
|
|||||||
prefix = save;
|
prefix = save;
|
||||||
} else if (strcmp(optarg, "ineed") == 0 ||
|
} else if (strcmp(optarg, "ineed") == 0 ||
|
||||||
strcmp(optarg, "iuse") == 0 ||
|
strcmp(optarg, "iuse") == 0 ||
|
||||||
strcmp(optarg, "iwant") == 0 ||
|
|
||||||
strcmp(optarg, "needsme") == 0 ||
|
strcmp(optarg, "needsme") == 0 ||
|
||||||
strcmp(optarg, "usesme") == 0 ||
|
strcmp(optarg, "usesme") == 0 ||
|
||||||
strcmp(optarg, "wantsme") == 0 ||
|
|
||||||
strcmp(optarg, "iafter") == 0 ||
|
strcmp(optarg, "iafter") == 0 ||
|
||||||
strcmp(optarg, "ibefore") == 0 ||
|
strcmp(optarg, "ibefore") == 0 ||
|
||||||
strcmp(optarg, "iprovide") == 0)
|
strcmp(optarg, "iprovide") == 0)
|
||||||
|
|||||||
@@ -44,8 +44,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \
|
#if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__))
|
||||||
|| defined(__GNU__)
|
|
||||||
# include <pty.h>
|
# include <pty.h>
|
||||||
#elif defined(__NetBSD__) || defined(__OpenBSD__)
|
#elif defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
# include <util.h>
|
# include <util.h>
|
||||||
|
|||||||
@@ -343,7 +343,6 @@ rc_status(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
needsme = rc_stringlist_new();
|
needsme = rc_stringlist_new();
|
||||||
rc_stringlist_add(needsme, "needsme");
|
rc_stringlist_add(needsme, "needsme");
|
||||||
rc_stringlist_add(needsme, "wantsme");
|
|
||||||
nservices = rc_stringlist_new();
|
nservices = rc_stringlist_new();
|
||||||
alist = rc_stringlist_new();
|
alist = rc_stringlist_new();
|
||||||
l = rc_stringlist_add(alist, "");
|
l = rc_stringlist_add(alist, "");
|
||||||
@@ -366,7 +365,7 @@ rc_status(int argc, char **argv)
|
|||||||
* be added to the list
|
* be added to the list
|
||||||
*/
|
*/
|
||||||
unsetenv("RC_SVCNAME");
|
unsetenv("RC_SVCNAME");
|
||||||
print_level("Dynamic", "needed/wanted");
|
print_level("Dynamic", "needed");
|
||||||
print_services(NULL, nservices);
|
print_services(NULL, nservices);
|
||||||
print_level("Dynamic", "manual");
|
print_level("Dynamic", "manual");
|
||||||
print_services(NULL, services);
|
print_services(NULL, services);
|
||||||
|
|||||||
41
src/rc/rc.c
41
src/rc/rc.c
@@ -155,8 +155,8 @@ cleanup(void)
|
|||||||
rc_stringlist_free(hotplugged_services);
|
rc_stringlist_free(hotplugged_services);
|
||||||
rc_stringlist_free(stop_services);
|
rc_stringlist_free(stop_services);
|
||||||
rc_stringlist_free(start_services);
|
rc_stringlist_free(start_services);
|
||||||
rc_stringlist_free(types_nw);
|
rc_stringlist_free(types_n);
|
||||||
rc_stringlist_free(types_nwua);
|
rc_stringlist_free(types_nua);
|
||||||
rc_deptree_free(deptree);
|
rc_deptree_free(deptree);
|
||||||
free(runlevel);
|
free(runlevel);
|
||||||
#endif
|
#endif
|
||||||
@@ -519,7 +519,7 @@ runlevel_config(const char *service, const char *level)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 RC_STRINGLIST *stop_services, const RC_DEPTREE *deptree,
|
||||||
const char *newlevel, bool parallel, bool going_down)
|
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;
|
RC_STRINGLIST *nostop;
|
||||||
bool crashed, nstop;
|
bool crashed, nstop;
|
||||||
|
|
||||||
if (!types_nw) {
|
if (!types_n) {
|
||||||
types_nw = rc_stringlist_new();
|
types_n = rc_stringlist_new();
|
||||||
rc_stringlist_add(types_nw, "needsme");
|
rc_stringlist_add(types_n, "needsme");
|
||||||
rc_stringlist_add(types_nw, "wantsme");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
crashed = rc_conf_yesno("rc_crashed_stop");
|
crashed = rc_conf_yesno("rc_crashed_stop");
|
||||||
@@ -592,7 +591,7 @@ do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services,
|
|||||||
if (!svc1) {
|
if (!svc1) {
|
||||||
tmplist = rc_stringlist_new();
|
tmplist = rc_stringlist_new();
|
||||||
rc_stringlist_add(tmplist, service->value);
|
rc_stringlist_add(tmplist, service->value);
|
||||||
deporder = rc_deptree_depends(deptree, types_nw,
|
deporder = rc_deptree_depends(deptree, types_n,
|
||||||
tmplist, newlevel ? newlevel : runlevel,
|
tmplist, newlevel ? newlevel : runlevel,
|
||||||
RC_DEP_STRICT | RC_DEP_TRACE);
|
RC_DEP_STRICT | RC_DEP_TRACE);
|
||||||
rc_stringlist_free(tmplist);
|
rc_stringlist_free(tmplist);
|
||||||
@@ -752,12 +751,11 @@ main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
const char *bootlevel = NULL;
|
const char *bootlevel = NULL;
|
||||||
char *newlevel = NULL;
|
char *newlevel = NULL;
|
||||||
const char *systype = NULL;
|
|
||||||
static RC_STRINGLIST *hotplugged_services;
|
static RC_STRINGLIST *hotplugged_services;
|
||||||
static RC_STRINGLIST *stop_services;
|
static RC_STRINGLIST *stop_services;
|
||||||
static RC_STRINGLIST *start_services;
|
static RC_STRINGLIST *start_services;
|
||||||
static RC_STRINGLIST *types_nw;
|
static RC_STRINGLIST *types_n;
|
||||||
static RC_STRINGLIST *types_nwua;
|
static RC_STRINGLIST *types_nua;
|
||||||
static RC_DEPTREE *deptree;
|
static RC_DEPTREE *deptree;
|
||||||
RC_STRINGLIST *deporder = NULL;
|
RC_STRINGLIST *deporder = NULL;
|
||||||
RC_STRINGLIST *tmplist;
|
RC_STRINGLIST *tmplist;
|
||||||
@@ -846,9 +844,9 @@ main(int argc, char **argv)
|
|||||||
eerrorx("%s: %s", applet, strerror(errno));
|
eerrorx("%s: %s", applet, strerror(errno));
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
case 'S':
|
case 'S':
|
||||||
systype = rc_sys();
|
bootlevel = rc_sys();
|
||||||
if (systype)
|
if (bootlevel)
|
||||||
printf("%s\n", systype);
|
printf("%s\n", bootlevel);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
case_RC_COMMON_GETOPT
|
case_RC_COMMON_GETOPT
|
||||||
@@ -998,14 +996,13 @@ main(int argc, char **argv)
|
|||||||
if (stop_services)
|
if (stop_services)
|
||||||
rc_stringlist_sort(&stop_services);
|
rc_stringlist_sort(&stop_services);
|
||||||
|
|
||||||
types_nwua = rc_stringlist_new();
|
types_nua = rc_stringlist_new();
|
||||||
rc_stringlist_add(types_nwua, "ineed");
|
rc_stringlist_add(types_nua, "ineed");
|
||||||
rc_stringlist_add(types_nwua, "iwant");
|
rc_stringlist_add(types_nua, "iuse");
|
||||||
rc_stringlist_add(types_nwua, "iuse");
|
rc_stringlist_add(types_nua, "iafter");
|
||||||
rc_stringlist_add(types_nwua, "iafter");
|
|
||||||
|
|
||||||
if (stop_services) {
|
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);
|
runlevel, depoptions | RC_DEP_STOP);
|
||||||
rc_stringlist_free(stop_services);
|
rc_stringlist_free(stop_services);
|
||||||
stop_services = tmplist;
|
stop_services = tmplist;
|
||||||
@@ -1050,7 +1047,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
/* Now stop the services that shouldn't be running */
|
/* Now stop the services that shouldn't be running */
|
||||||
if (stop_services && !nostop)
|
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 our services to finish */
|
||||||
wait_for_services();
|
wait_for_services();
|
||||||
@@ -1112,7 +1109,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
/* Start those services. */
|
/* Start those services. */
|
||||||
rc_stringlist_sort(&run_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);
|
rc_stringlist_free(run_services);
|
||||||
run_services = deporder;
|
run_services = deporder;
|
||||||
do_start_services(run_services, parallel);
|
do_start_services(run_services, parallel);
|
||||||
|
|||||||
@@ -112,5 +112,9 @@ rc_stringlist_split
|
|||||||
rc_stringlist_split@@RC_1.0
|
rc_stringlist_split@@RC_1.0
|
||||||
rc_sys
|
rc_sys
|
||||||
rc_sys@@RC_1.0
|
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_yesno@@RC_1.0
|
rc_yesno@@RC_1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user