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 | ||||
| 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 | ||||
| commit 248a7dcda351ef4172c28cc686bfe7b93fa522ff | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     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> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     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> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     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> | ||||
| 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: https://bugs.gentoo.org/show_bug.cgi?id=563010 | ||||
|  | ||||
| commit 9d53d436ae22d6f0f6fc1537e836dd1b4d31cf35 | ||||
| commit 88b807f9bcea5ec5bf5c5edb3c7161bf5c12d2d0 | ||||
| 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 | ||||
|     increment version number | ||||
|  | ||||
| commit b81317bdf8e3eed8b8ff2bef757ba29f362ed297 | ||||
| commit feba5d86b73b0df5587b178e80e85129a60861cd | ||||
| Author: 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-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668 | ||||
|  | ||||
| commit 29f7e335927d4c1fb151124de8cdf01fb87723fa | ||||
| commit 3b1e96a6a3af3de68a18558f3a6ebac31430a1cd | ||||
| Author: 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-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320 | ||||
|  | ||||
| commit 850ca030777cb0c3e2fb03d9ab1f0ccee7b89e93 | ||||
| commit 79998bdf9cb5089f423e00bfa4bc3816b64c58d4 | ||||
| Author: 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-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 | ||||
| VERSION=	0.19.1 | ||||
| VERSION=	0.18.3 | ||||
| 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 | ||||
| the information in this file is in reverse order. | ||||
|  | ||||
| ## OpenRC-0.19 | ||||
|  | ||||
| This version adds a net-online service. By default, this | ||||
| service will check all known network interfaces for a configured | ||||
| interface or a carrier. It will register as started only when all | ||||
| interfaces are configured and there is at least a carrier on one | ||||
| interface. The behaviour of this service can be modified in | ||||
| /etc/conf.d/net-online. | ||||
|  | ||||
| Currently, this only works on Linux, but if anyone wants to port to | ||||
| *bsd, that would be welcomed. | ||||
|  | ||||
| ## OpenRC-0.18.3 | ||||
|  | ||||
| Modern Linux systems expect /etc/mtab to be a symbolic link to | ||||
|   | ||||
| @@ -15,8 +15,7 @@ include ${MK}/os.mk | ||||
|  | ||||
| CONF-FreeBSD=	ipfw moused powerd rarpd savecore syscons | ||||
|  | ||||
| CONF-Linux=	consolefont devfs dmesg hwclock keymaps killprocs modules mtab \ | ||||
| 	net-online | ||||
| CONF-Linux=	consolefont devfs dmesg hwclock keymaps killprocs modules mtab | ||||
|  | ||||
| CONF-NetBSD=	moused rarpd savecore | ||||
|  | ||||
|   | ||||
| @@ -8,8 +8,3 @@ wipe_tmp="YES" | ||||
| # Write the initial dmesg log into /var/log/dmesg after boot | ||||
| # This may be useful if you need the kernel boot log afterwards | ||||
| log_dmesg="YES" | ||||
|  | ||||
| # Save the previous dmesg log to dmesc.old | ||||
| # This may be useful if you need to compare the current boot to the | ||||
| # previous one. | ||||
| #previous_dmesg=no | ||||
|   | ||||
| @@ -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" | ||||
| # | ||||
| # If you are using a dynamic network management tool like | ||||
| # NetworkManager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to | ||||
| # networkmanager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to | ||||
| # manage the network interfaces with the routes to your netmounts, you | ||||
| # should list that tool. | ||||
| # | ||||
| #rc_need="NetworkManager" | ||||
| #rc_need="networkmanager" | ||||
| #rc_need="dhcpcd" | ||||
| #rc_need="wicd" | ||||
| # | ||||
|   | ||||
| @@ -3,11 +3,9 @@ | ||||
|  | ||||
| # This is the subsystem type. Valid options on Linux: | ||||
| # ""               - nothing special | ||||
| # "docker"         - Docker container manager | ||||
| # "lxc"            - Linux Containers | ||||
| # "openvz"         - Linux OpenVZ | ||||
| # "prefix"         - Prefix | ||||
| # "rkt"            - CoreOS container management system | ||||
| # "uml"            - Usermode Linux | ||||
| # "vserver"        - Linux vserver | ||||
| # "systemd-nspawn" - Container created by the systemd-nspawn utility | ||||
|   | ||||
| @@ -29,20 +29,17 @@ | ||||
| # come up. | ||||
| #rc_depend_strict="YES" | ||||
|  | ||||
| # rc_hotplug controls which services we allow to be hotplugged. | ||||
| # rc_hotplug is a list of services that we allow to be hotplugged. | ||||
| # By default we do not allow hotplugging. | ||||
| # A hotplugged service is one started by a dynamic dev manager when a matching | ||||
| # hardware device is found. | ||||
| # Hotplugged services appear in the "hotplugged" runlevel. | ||||
| # If rc_hotplug is set to any value, we compare the name of this service | ||||
| # to every pattern in the value, from left to right, and we allow the | ||||
| # service to be hotplugged if it matches a pattern, or if it matches no | ||||
| # patterns. Patterns can include shell wildcards. | ||||
| # To disable services from being hotplugged, prefix patterns with "!". | ||||
| #If rc_hotplug is not set or is empty, all hotplugging is disabled. | ||||
| # This service is intrinsically included in the boot runlevel. | ||||
| # To disable services, prefix with a ! | ||||
| # Example - rc_hotplug="net.wlan !net.*" | ||||
| # This allows net.wlan and any service not matching net.* to be hotplugged. | ||||
| # Example - rc_hotplug="!net.*" | ||||
| # This allows services that do not match "net.*" to be hotplugged. | ||||
| # This allows net.wlan and any service not matching net.* to be plugged. | ||||
| # Example - rc_hotplug="*" | ||||
| # This allows all services to be hotplugged | ||||
| #rc_hotplug="*" | ||||
|  | ||||
| # rc_logger launches a logging daemon to log the entire rc process to | ||||
| # /var/log/rc.log | ||||
|   | ||||
| @@ -23,7 +23,7 @@ SRCS-FreeBSD+=	adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ | ||||
|  | ||||
| SRCS-Linux=	binfmt.in devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ | ||||
| 		killprocs.in modules.in mount-ro.in mtab.in numlock.in \ | ||||
| 		procfs.in net-online.in sysfs.in termencoding.in tmpfiles.dev.in | ||||
| 		procfs.in sysfs.in termencoding.in tmpfiles.dev.in | ||||
|  | ||||
| # Generic BSD scripts | ||||
| SRCS-NetBSD=	hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ | ||||
|   | ||||
| @@ -216,9 +216,6 @@ start() | ||||
| 			case "$RC_SYS" in | ||||
| 				VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;; | ||||
| 				*) | ||||
| 					if yesno ${previous_dmesg:-no}; then | ||||
| 						mv /var/log/dmesg /var/log/dmesg.old | ||||
| 					fi | ||||
| 					dmesg > /var/log/dmesg | ||||
| 					chmod 640 /var/log/dmesg | ||||
| 					;; | ||||
|   | ||||
| @@ -7,7 +7,7 @@ description="Sets a font for the consoles." | ||||
| depend() | ||||
| { | ||||
| 	need localmount termencoding | ||||
| 	after hotplug bootmisc modules | ||||
| 	after hotplug bootmisc | ||||
| 	keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
|  | ||||
| 	# set up kernel support for cgroups | ||||
| 	if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then | ||||
| 		if grep -qs cgroup /proc/filesystems; then | ||||
| 			ebegin "Mounting cgroup filesystem" | ||||
| 			local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}" | ||||
| 			mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup | ||||
| 			eend $? | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
| 	# set up kernel support for fusectl | ||||
| 	if [ -d /sys/fs/fuse/connections ] \ | ||||
| 		&& ! mountinfo -q /sys/fs/fuse/connections; then | ||||
| @@ -98,16 +108,6 @@ mount_misc() | ||||
|  | ||||
| mount_cgroups() | ||||
| { | ||||
| 	# set up kernel support for cgroups | ||||
| 	if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then | ||||
| 		if grep -qs cgroup /proc/filesystems; then | ||||
| 			ebegin "Mounting cgroup filesystem" | ||||
| 			local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}" | ||||
| 			mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup | ||||
| 			eend $? | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
| 	mountinfo -q /sys/fs/cgroup || return 0 | ||||
|  | ||||
| 	if ! mountinfo -q /sys/fs/cgroup/openrc; then | ||||
|   | ||||
| @@ -166,25 +166,21 @@ will start and stop it in the right order in relation to other services. | ||||
| As it's a function it can be very flexible, see the example below. | ||||
| Here is a list of the functions you can use in a | ||||
| .Ic depend | ||||
| function. You simply pass the names of the services you want to add to | ||||
| that dependency type to the function, or prefix the names with ! to | ||||
| remove them from the dependencies. | ||||
| function. You simply pass the names of the services to it to add to that | ||||
| dependency type, or prefix it with ! to remove it. | ||||
| .Bl -tag -width "RC_DEFAULTLEVEL" | ||||
| .It Ic need | ||||
| The service will refuse to start until needed services have started and it | ||||
| will refuse to stop until any services that need it have stopped. | ||||
| .It Ic use | ||||
| The service will attempt to start any services it uses that have been added | ||||
| The service will attempt to start any services we use that have been added | ||||
| to the runlevel. | ||||
| .It Ic want | ||||
| The service will attempt to start any services it wants, regardless of | ||||
| whether they have been added to the runlevel. | ||||
| .It Ic after | ||||
| The service will start after these services and stop before these services. | ||||
| .It Ic before | ||||
| The service will start before these services and stop after these services. | ||||
| .It Ic provide | ||||
| The service provides this virtual service. For example, named provides dns. | ||||
| We provide this virtual service. For example, named provides dns. | ||||
| Virtual services take precedence over real services, so it is highly | ||||
| recommended that you do not have a real service that has the same name | ||||
| as a virtual service. | ||||
| @@ -217,8 +213,6 @@ Same as -jail, but for Linux Resource Containers (LXC). | ||||
| Same as -jail, but for OpenVZ systems. | ||||
| .It Dv -prefix | ||||
| Same as -jail, but for Prefix systems. | ||||
| .It Dv -rkt | ||||
| Same as -jail, but for RKT systems. | ||||
| .It Dv -uml | ||||
| Same as -jail, but for UML systems. | ||||
| .It Dv -vserver | ||||
| @@ -227,11 +221,6 @@ Same as -jail, but for VServer systems. | ||||
| Same as -jail, but for Xen DOM0 systems. | ||||
| .It Dv -xenu | ||||
| Same as -jail, but for Xen DOMU systems. | ||||
| .It Dv -docker | ||||
| Same as -jail, but for docker systems. | ||||
| .It Dv -containers | ||||
| Same as -jail, but for all relevant container types on the operating | ||||
| system. | ||||
| .El | ||||
| .El | ||||
| .Pp | ||||
| @@ -473,9 +462,6 @@ rc_net_tap1_provide="!net" | ||||
| # It's also possible to negate keywords. This is mainly useful for prefix | ||||
| # users testing OpenRC. | ||||
| rc_keyword="!-prefix" | ||||
| # This can also be used to block a script from runining in all | ||||
| # containers except one or two | ||||
| rc_keyword="!-containers !-docker" | ||||
| .Ed | ||||
| .Sh EXAMPLES | ||||
| .Pp | ||||
|   | ||||
| @@ -16,9 +16,6 @@ need() { | ||||
| use() { | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3 | ||||
| } | ||||
| want() { | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME iwant $*" >&3 | ||||
| } | ||||
| before() { | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3 | ||||
| } | ||||
| @@ -29,18 +26,7 @@ provide() { | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3 | ||||
| } | ||||
| keyword() { | ||||
| 	local c x | ||||
| 	set -- $* | ||||
| 	while [ -n "$*" ]; do | ||||
| 		case "$1" in | ||||
| 			-containers) x="$(_get_containers)" ;; | ||||
| 			!-containers) x="$(_get_containers_remove)" ;; | ||||
| 			*) x=$1 ;; | ||||
| 		esac | ||||
| 		c="${c}${x} " | ||||
| 		shift | ||||
| 	done | ||||
| 	[ -n "$c" ] && echo "$RC_SVCNAME keyword $c" >&3 | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME keyword $*" >&3 | ||||
| } | ||||
| depend() { | ||||
| 	: | ||||
| @@ -96,11 +82,6 @@ do | ||||
| 		fi | ||||
|  | ||||
| 		[ -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 | ||||
| 			echo "$RC_SVCNAME" >&3 | ||||
|   | ||||
| @@ -23,11 +23,6 @@ mount_svcdir() | ||||
|  | ||||
| . "$RC_LIBEXECDIR"/sh/functions.sh | ||||
| [ -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 | ||||
| if [ -z "$RC_SYS" -a "$RC_UNAME" = "FreeBSD" ]; then | ||||
|   | ||||
| @@ -5,11 +5,6 @@ | ||||
|  | ||||
| . "$RC_LIBEXECDIR"/sh/functions.sh | ||||
| [ -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! | ||||
| # However, some of our users have an old proc image in /proc | ||||
|   | ||||
| @@ -66,9 +66,6 @@ need() { | ||||
| use() { | ||||
| 	[ -n "$*" ] && echo "use $*" | ||||
| } | ||||
| want() { | ||||
| 	[ -n "$*" ] && echo "want $*" | ||||
| } | ||||
| before() { | ||||
| 	[ -n "$*" ] && echo "before $*" | ||||
| } | ||||
| @@ -79,18 +76,7 @@ provide() { | ||||
| 	[ -n "$*" ] && echo "provide $*" | ||||
| } | ||||
| keyword() { | ||||
| 	local c x | ||||
| 	set -- $* | ||||
| 	while [ -n "$*" ]; do | ||||
| 		case "$1" in | ||||
| 			-containers) x="$(_get_containers)" ;; | ||||
| 			!-containers) x="$(_get_containers_remove)" ;; | ||||
| 			*) x=$1 ;; | ||||
| 		esac | ||||
| 		c="${c}${x} " | ||||
| 		shift | ||||
| 	done | ||||
| 	[ -n "$c" ] && echo "keyword $c" | ||||
| 	[ -n "$*" ] && echo "keyword $*" | ||||
| } | ||||
|  | ||||
| # Describe the init script to the user | ||||
| @@ -198,12 +184,6 @@ unset _conf_d | ||||
|  | ||||
| # Load any system overrides | ||||
| sourcex -e "@SYSCONFDIR@/rc.conf" | ||||
| if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then | ||||
| 	for _f in "@SYSCONFDIR@"/rc.conf.d/*.conf; do | ||||
| 		sourcex -e "$_f" | ||||
| 	done | ||||
| fi | ||||
|  | ||||
|  | ||||
| # load service supervisor functions | ||||
| sourcex "@LIBEXECDIR@/sh/s6.sh" | ||||
|   | ||||
| @@ -86,33 +86,12 @@ get_bootparam() | ||||
| } | ||||
|  | ||||
| # Called from openrc-run.sh or gendepends.sh | ||||
| _get_containers() { | ||||
| 	local c | ||||
| 	case "${RC_UNAME}" in | ||||
| 	FreeBSD) | ||||
| 		c="-jail" | ||||
| 		;; | ||||
| 	Linux) | ||||
| 		c="-docker -lxc -openvz -rkt -systemd-nspawn -uml -vserver" | ||||
| 		;; | ||||
| 	esac | ||||
| 	echo $c | ||||
| } | ||||
|  | ||||
| _get_containers_remove() { | ||||
| 	local c | ||||
| 	for x in $(_get_containers); do | ||||
| 		c="${c}!${x} " | ||||
| 	done | ||||
| 	echo $c | ||||
| } | ||||
|  | ||||
| _depend() { | ||||
| 	depend | ||||
| 	local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends= | ||||
|  | ||||
| 	# Add any user defined depends | ||||
| 	for _deptype in config:CONFIG need:NEED use:USE want:WANT \ | ||||
| 	for _deptype in config:CONFIG need:NEED use:USE \ | ||||
| 	after:AFTER before:BEFORE \ | ||||
| 	provide:PROVIDE keyword:KEYWORD; do | ||||
| 		IFS=: | ||||
|   | ||||
| @@ -31,8 +31,7 @@ | ||||
| #include "queue.h" | ||||
| #include "librc.h" | ||||
|  | ||||
| #if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__)) \ | ||||
| 	|| defined(__GNU__) | ||||
| #if defined(__linux__) || (defined (__FreeBSD_kernel__) && defined(__GLIBC__)) | ||||
| static bool | ||||
| pid_is_exec(pid_t pid, const char *exec) | ||||
| { | ||||
|   | ||||
| @@ -192,9 +192,7 @@ valid_service(const char *runlevel, const char *service, const char *type) | ||||
|  | ||||
| 	if (!runlevel || | ||||
| 	    strcmp(type, "ineed") == 0 || | ||||
| 	    strcmp(type, "needsme") == 0  || | ||||
| 	    strcmp(type, "iwant") == 0 || | ||||
| 	    strcmp(type, "wantsme") == 0) | ||||
| 	    strcmp(type, "needsme") == 0) | ||||
| 		return true; | ||||
|  | ||||
| 	if (rc_service_in_runlevel(service, runlevel)) | ||||
| @@ -545,7 +543,6 @@ rc_deptree_order(const RC_DEPTREE *deptree, const char *runlevel, int options) | ||||
| 	types = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(types, "ineed"); | ||||
| 	rc_stringlist_add(types, "iuse"); | ||||
| 	rc_stringlist_add(types, "iwant"); | ||||
| 	rc_stringlist_add(types, "iafter"); | ||||
| 	services = rc_deptree_depends(deptree, types, list, runlevel, | ||||
| 				      RC_DEP_STRICT | RC_DEP_TRACE | options); | ||||
| @@ -651,7 +648,6 @@ typedef struct deppair | ||||
| static const DEPPAIR deppairs[] = { | ||||
| 	{ "ineed",	"needsme" }, | ||||
| 	{ "iuse",	"usesme" }, | ||||
| 	{ "iwant",	"wantsme" }, | ||||
| 	{ "iafter",	"ibefore" }, | ||||
| 	{ "ibefore",	"iafter" }, | ||||
| 	{ "iprovide",	"providedby" }, | ||||
| @@ -848,7 +844,6 @@ rc_deptree_update(void) | ||||
| 			/* If we're after something, remove us from the before list */ | ||||
| 			if (strcmp(type, "iafter") == 0 || | ||||
| 			    strcmp(type, "ineed") == 0 || | ||||
| 			    strcmp(type, "iwant") == 0 || | ||||
| 			    strcmp(type, "iuse") == 0) { | ||||
| 				if ((dt = get_deptype(depinfo, "ibefore"))) | ||||
| 					rc_stringlist_delete(dt->services, depend); | ||||
| @@ -962,7 +957,6 @@ rc_deptree_update(void) | ||||
| 	/* Phase 5 - Remove broken before directives */ | ||||
| 	types = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(types, "ineed"); | ||||
| 	rc_stringlist_add(types, "iwant"); | ||||
| 	rc_stringlist_add(types, "iuse"); | ||||
| 	rc_stringlist_add(types, "iafter"); | ||||
| 	TAILQ_FOREACH(depinfo, deptree, entries) { | ||||
|   | ||||
| @@ -28,8 +28,6 @@ | ||||
|  * SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| #include <fnmatch.h> | ||||
|  | ||||
| #include "queue.h" | ||||
| #include "librc.h" | ||||
|  | ||||
| @@ -216,78 +214,12 @@ rc_config_list(const char *file) | ||||
| } | ||||
| librc_hidden_def(rc_config_list) | ||||
|  | ||||
| static void rc_config_set_value(RC_STRINGLIST *config, char *value) | ||||
| { | ||||
| 	RC_STRING *cline; | ||||
| 	char *entry; | ||||
| 	size_t i = 0; | ||||
| 	char *newline; | ||||
| 	char *p = value; | ||||
| 	bool replaced; | ||||
| 	char *token; | ||||
|  | ||||
| 	if (! p) | ||||
| 		return; | ||||
| 	if (strncmp(p, "export ", 7) == 0) | ||||
| 		p += 7; | ||||
| 	if (! (token = strsep(&p, "="))) | ||||
| 		return; | ||||
|  | ||||
| 	entry = xstrdup(token); | ||||
| 	/* Preserve shell coloring */ | ||||
| 	if (*p == '$') | ||||
| 		token = value; | ||||
| 	else | ||||
| 		do { | ||||
| 			/* Bash variables are usually quoted */ | ||||
| 			token = strsep(&p, "\"\'"); | ||||
| 		} while (token && *token == '\0'); | ||||
|  | ||||
| 	/* Drop a newline if that's all we have */ | ||||
| 	if (token) { | ||||
| 		i = strlen(token) - 1; | ||||
| 		if (token[i] == '\n') | ||||
| 			token[i] = 0; | ||||
|  | ||||
| 		i = strlen(entry) + strlen(token) + 2; | ||||
| 		newline = xmalloc(sizeof(char) * i); | ||||
| 		snprintf(newline, i, "%s=%s", entry, token); | ||||
| 	} else { | ||||
| 		i = strlen(entry) + 2; | ||||
| 		newline = xmalloc(sizeof(char) * i); | ||||
| 		snprintf(newline, i, "%s=", entry); | ||||
| 	} | ||||
|  | ||||
| 	replaced = false; | ||||
| 	/* In shells the last item takes precedence, so we need to remove | ||||
| 	   any prior values we may already have */ | ||||
| 	TAILQ_FOREACH(cline, config, entries) { | ||||
| 		i = strlen(entry); | ||||
| 		if (strncmp(entry, cline->value, i) == 0 && cline->value[i] == '=') { | ||||
| 			/* We have a match now - to save time we directly replace it */ | ||||
| 			free(cline->value); | ||||
| 			cline->value = newline; | ||||
| 			replaced = true; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (!replaced) { | ||||
| 		rc_stringlist_add(config, newline); | ||||
| 		free(newline); | ||||
| 	} | ||||
| 	free(entry); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Override some specific rc.conf options on the kernel command line. | ||||
|  * I only know how to do this in Linux, so if someone wants to supply | ||||
|  * a patch for this on *BSD or tell me how to write the code to do this, | ||||
|  * any suggestions are welcome. | ||||
|  * Override some specific rc.conf options on the kernel command line | ||||
|  */ | ||||
| static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config) | ||||
| { | ||||
| #ifdef __linux__ | ||||
| static RC_STRINGLIST *rc_config_override(RC_STRINGLIST *config) | ||||
| { | ||||
| 	RC_STRINGLIST *overrides; | ||||
| 	RC_STRING *cline, *override, *config_np; | ||||
| 	char *tmp = NULL; | ||||
| @@ -336,60 +268,90 @@ static RC_STRINGLIST *rc_config_kcl(RC_STRINGLIST *config) | ||||
| 	} | ||||
|  | ||||
| 	rc_stringlist_free(overrides); | ||||
| 	return config; | ||||
| } | ||||
| #endif | ||||
| 	return config; | ||||
| } | ||||
|  | ||||
| static RC_STRINGLIST * rc_config_directory(RC_STRINGLIST *config) | ||||
| { | ||||
| 	DIR *dp; | ||||
| 	struct dirent *d; | ||||
| 	RC_STRINGLIST *rc_conf_d_files = rc_stringlist_new(); | ||||
| 	RC_STRING *fname; | ||||
| 	RC_STRINGLIST *rc_conf_d_list; | ||||
| 	char path[PATH_MAX]; | ||||
| 	RC_STRING *line; | ||||
|  | ||||
| 	if ((dp = opendir(RC_CONF_D)) != NULL) { | ||||
| 		while ((d = readdir(dp)) != NULL) { | ||||
| 			if (fnmatch("*.conf", d->d_name, FNM_PATHNAME) == 0) { | ||||
| 				rc_stringlist_addu(rc_conf_d_files, d->d_name); | ||||
| 			} | ||||
| 		} | ||||
| 		closedir(dp); | ||||
|  | ||||
| 		if (rc_conf_d_files) { | ||||
| 			rc_stringlist_sort(&rc_conf_d_files); | ||||
| 			TAILQ_FOREACH(fname, rc_conf_d_files, entries) { | ||||
| 				if (! fname->value) | ||||
| 					continue; | ||||
| 				sprintf(path, "%s/%s", RC_CONF_D, fname->value); | ||||
| 				rc_conf_d_list = rc_config_list(path); | ||||
| 				TAILQ_FOREACH(line, rc_conf_d_list, entries) | ||||
| 					if (line->value) | ||||
| 						rc_config_set_value(config, line->value); | ||||
| 				rc_stringlist_free(rc_conf_d_list); | ||||
| 			} | ||||
| 			rc_stringlist_free(rc_conf_d_files); | ||||
| 		} | ||||
| 	} | ||||
| 	return config; | ||||
| } | ||||
|  | ||||
| RC_STRINGLIST * | ||||
| rc_config_load(const char *file) | ||||
| { | ||||
| 	RC_STRINGLIST *list; | ||||
| 	RC_STRINGLIST *config; | ||||
| 	char *token; | ||||
| 	RC_STRING *line; | ||||
| 	RC_STRING *cline; | ||||
| 	size_t i = 0; | ||||
| 	bool replaced; | ||||
| 	char *entry; | ||||
| 	char *newline; | ||||
| 	char *p; | ||||
|  | ||||
| 	list = rc_config_list(file); | ||||
| 	config = rc_stringlist_new(); | ||||
| 	TAILQ_FOREACH(line, list, entries) { | ||||
| 		rc_config_set_value(config, line->value); | ||||
| 		/* Get entry */ | ||||
| 		p = line->value; | ||||
| 		if (! p) | ||||
| 			continue; | ||||
| 		if (strncmp(p, "export ", 7) == 0) | ||||
| 			p += 7; | ||||
| 		if (! (token = strsep(&p, "="))) | ||||
| 			continue; | ||||
|  | ||||
| 		entry = xstrdup(token); | ||||
| 		/* Preserve shell coloring */ | ||||
| 		if (*p == '$') | ||||
| 			token = line->value; | ||||
| 		else | ||||
| 			do { | ||||
| 				/* Bash variables are usually quoted */ | ||||
| 				token = strsep(&p, "\"\'"); | ||||
| 			} while (token && *token == '\0'); | ||||
|  | ||||
| 		/* Drop a newline if that's all we have */ | ||||
| 		if (token) { | ||||
| 			i = strlen(token) - 1; | ||||
| 			if (token[i] == '\n') | ||||
| 				token[i] = 0; | ||||
|  | ||||
| 			i = strlen(entry) + strlen(token) + 2; | ||||
| 			newline = xmalloc(sizeof(char) * i); | ||||
| 			snprintf(newline, i, "%s=%s", entry, token); | ||||
| 		} else { | ||||
| 			i = strlen(entry) + 2; | ||||
| 			newline = xmalloc(sizeof(char) * i); | ||||
| 			snprintf(newline, i, "%s=", entry); | ||||
| 		} | ||||
|  | ||||
| 		replaced = false; | ||||
| 		/* In shells the last item takes precedence, so we need to remove | ||||
| 		   any prior values we may already have */ | ||||
| 		TAILQ_FOREACH(cline, config, entries) { | ||||
| 			i = strlen(entry); | ||||
| 			if (strncmp(entry, cline->value, i) == 0 && cline->value[i] == '=') { | ||||
| 				/* We have a match now - to save time we directly replace it */ | ||||
| 				free(cline->value); | ||||
| 				cline->value = newline; | ||||
| 				replaced = true; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if (!replaced) { | ||||
| 			rc_stringlist_add(config, newline); | ||||
| 			free(newline); | ||||
| 		} | ||||
| 		free(entry); | ||||
| 	} | ||||
| 	rc_stringlist_free(list); | ||||
|  | ||||
| #ifdef __linux__ | ||||
| 	/* Only override rc.conf settings */ | ||||
| 	if (strcmp(file, RC_CONF) == 0) { | ||||
| 		config = rc_config_override(config); | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	return config; | ||||
| } | ||||
| librc_hidden_def(rc_config_load) | ||||
| @@ -439,9 +401,6 @@ rc_conf_value(const char *setting) | ||||
| #endif | ||||
| 		} | ||||
|  | ||||
| 		rc_conf = rc_config_directory(rc_conf); | ||||
| 	rc_conf = rc_config_kcl(rc_conf); | ||||
|  | ||||
| 		/* Convert old uppercase to lowercase */ | ||||
| 		TAILQ_FOREACH(s, rc_conf, entries) { | ||||
| 			p = s->value; | ||||
|   | ||||
| @@ -210,14 +210,14 @@ found: | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* New sys identification code | ||||
|  * Not to be used for any binaries outside of openrc. */ | ||||
| const char * | ||||
| rc_sys(void) | ||||
| rc_sys_v2(void) | ||||
| { | ||||
| #ifdef PREFIX | ||||
| 	return RC_SYS_PREFIX; | ||||
| #endif | ||||
|  | ||||
| #define __STRING_SWITCH(x) { char *__string_switch = x; if (false) {} | ||||
| #define __STRING_CASE(y) else if (strcmp(__string_switch,y) == 0) | ||||
| #define __STRING_SWITCH_END() } | ||||
| 	char *systype = rc_conf_value("rc_sys"); | ||||
| 	if (systype) { | ||||
| 		char *s = systype; | ||||
| @@ -227,11 +227,43 @@ rc_sys(void) | ||||
| 				*s = toupper((unsigned char) *s); | ||||
| 			s++; | ||||
| 		} | ||||
| 		/* Now do detection */ | ||||
| 		__STRING_SWITCH(systype) | ||||
| 		__STRING_CASE(RC_SYS_PREFIX)	{ return RC_SYS_PREFIX; } | ||||
| #ifdef __FreeBSD__ | ||||
| 		__STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; } | ||||
| #endif /* __FreeBSD__ */ | ||||
| #ifdef __NetBSD__ | ||||
| 		__STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; } | ||||
| 		__STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; } | ||||
| #endif /* __NetBSD__ */ | ||||
| #ifdef __linux__ | ||||
| 		__STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; } | ||||
| 		__STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; } | ||||
| 		__STRING_CASE(RC_SYS_UML) { return RC_SYS_UML; } | ||||
| 		__STRING_CASE(RC_SYS_VSERVER) { return RC_SYS_VSERVER; } | ||||
| 		__STRING_CASE(RC_SYS_OPENVZ) { return RC_SYS_OPENVZ; } | ||||
| 		__STRING_CASE(RC_SYS_LXC) { return RC_SYS_LXC; } | ||||
| #endif /* __linux__ */ | ||||
| 		__STRING_SWITCH_END() | ||||
| 	} | ||||
| #undef __STRING_SWITCH | ||||
| #undef __STRING_CASE | ||||
| #undef __STRING_SWITCH_END | ||||
| 	return NULL; | ||||
| } | ||||
| librc_hidden_def(rc_sys_v2) | ||||
|  | ||||
| /* Old sys identification code. | ||||
|  * Not to be used for any binaries outside of openrc. */ | ||||
| const char * | ||||
| rc_sys_v1(void) | ||||
| { | ||||
| #ifdef PREFIX | ||||
| 	return RC_SYS_PREFIX; | ||||
| #else | ||||
|  | ||||
| #ifdef __FreeBSD__ | ||||
| 	if (systype && strcmp(systype, RC_SYS_JAIL) == 0) | ||||
| 		return RC_SYS_JAIL; | ||||
| 	int jailed = 0; | ||||
| 	size_t len = sizeof(jailed); | ||||
|  | ||||
| @@ -241,12 +273,6 @@ rc_sys(void) | ||||
| #endif | ||||
|  | ||||
| #ifdef __NetBSD__ | ||||
| 	if (systype) { | ||||
| 		if(strcmp(systype, RC_SYS_XEN0) == 0) | ||||
| 				return RC_SYS_XEN0; | ||||
| 		if (strcmp(systype, RC_SYS_XENU) == 0) | ||||
| 			return RC_SYS_XENU; | ||||
| 	} | ||||
| 	if (exists("/kern/xen/privcmd")) | ||||
| 		return RC_SYS_XEN0; | ||||
| 	if (exists("/kern/xen")) | ||||
| @@ -254,26 +280,6 @@ rc_sys(void) | ||||
| #endif | ||||
|  | ||||
| #ifdef __linux__ | ||||
| 	if (systype) { | ||||
| 		if (strcmp(systype, RC_SYS_XEN0) == 0) | ||||
| 			return RC_SYS_XEN0; | ||||
| 		if (strcmp(systype, RC_SYS_XENU) == 0) | ||||
| 			return RC_SYS_XENU; | ||||
| 		if (strcmp(systype, RC_SYS_UML) == 0) | ||||
| 			return RC_SYS_UML; | ||||
| 		if (strcmp(systype, RC_SYS_VSERVER) == 0) | ||||
| 			return RC_SYS_VSERVER; | ||||
| 		if (strcmp(systype, RC_SYS_OPENVZ) == 0) | ||||
| 			return RC_SYS_OPENVZ; | ||||
| 		if (strcmp(systype, RC_SYS_LXC) == 0) | ||||
| 			return RC_SYS_LXC; | ||||
| 		if (strcmp(systype, RC_SYS_RKT) == 0) | ||||
| 				return RC_SYS_RKT; | ||||
| 		if (strcmp(systype, RC_SYS_SYSTEMD_NSPAWN) == 0) | ||||
| 				return RC_SYS_SYSTEMD_NSPAWN; | ||||
| 		if (strcmp(systype, RC_SYS_DOCKER) == 0) | ||||
| 				return RC_SYS_DOCKER; | ||||
| 	} | ||||
| 	if (exists("/proc/xen")) { | ||||
| 		if (file_regex("/proc/xen/capabilities", "control_d")) | ||||
| 			return RC_SYS_XEN0; | ||||
| @@ -290,15 +296,23 @@ rc_sys(void) | ||||
| 		return RC_SYS_OPENVZ; /* old test */ | ||||
| 	else if (file_regex("/proc/1/environ", "container=lxc")) | ||||
| 		return RC_SYS_LXC; | ||||
| 	else if (file_regex("/proc/1/environ", "container=rkt")) | ||||
| 		return RC_SYS_RKT; | ||||
| 	else if (file_regex("/proc/1/environ", "container=systemd-nspawn")) | ||||
| 		return RC_SYS_SYSTEMD_NSPAWN; | ||||
| 	else if (file_regex("/proc/1/environ", "container=docker")) | ||||
| 		return RC_SYS_DOCKER; | ||||
| #endif | ||||
|  | ||||
| 	return NULL; | ||||
| #endif /* PREFIX */ | ||||
| } | ||||
| librc_hidden_def(rc_sys_v1) | ||||
|  | ||||
| const char * | ||||
| rc_sys(void) | ||||
| { | ||||
| 	if (rc_conf_value("rc_sys")) { | ||||
| 		return rc_sys_v2(); | ||||
| 	} else { | ||||
| 		return rc_sys_v1(); | ||||
| 	} | ||||
| } | ||||
| librc_hidden_def(rc_sys) | ||||
|  | ||||
|   | ||||
| @@ -130,6 +130,8 @@ librc_hidden_proto(rc_stringlist_new) | ||||
| librc_hidden_proto(rc_stringlist_split) | ||||
| librc_hidden_proto(rc_stringlist_sort) | ||||
| librc_hidden_proto(rc_sys) | ||||
| librc_hidden_proto(rc_sys_v1) | ||||
| librc_hidden_proto(rc_sys_v2) | ||||
| librc_hidden_proto(rc_yesno) | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -56,7 +56,6 @@ extern "C" { | ||||
| #define RC_SYS_WHITELIST   RC_LIBEXECDIR "/conf.d/env_whitelist" | ||||
| #define RC_USR_WHITELIST   RC_SYSCONFDIR "/conf.d/env_whitelist" | ||||
| #define RC_CONF         RC_SYSCONFDIR "/rc.conf" | ||||
| #define RC_CONF_D         RC_SYSCONFDIR "/rc.conf.d" | ||||
| #define RC_CONF_OLD     RC_SYSCONFDIR "/conf.d/rc" | ||||
|  | ||||
| #define RC_PATH_PREFIX     RC_LIBEXECDIR "/bin:/bin:/sbin:/usr/bin:/usr/sbin" | ||||
| @@ -329,12 +328,10 @@ bool rc_service_daemons_crashed(const char *); | ||||
| /*! @name System types | ||||
|  * OpenRC can support some special sub system types, normally virtualization. | ||||
|  * Some services cannot work in these systems, or we do something else. */ | ||||
| #define RC_SYS_DOCKER  "DOCKER" | ||||
| #define RC_SYS_JAIL    "JAIL" | ||||
| #define RC_SYS_OPENVZ  "OPENVZ" | ||||
| #define RC_SYS_LXC     "LXC" | ||||
| #define RC_SYS_PREFIX  "PREFIX" | ||||
| #define RC_SYS_RKT  "RKT" | ||||
| #define RC_SYS_SYSTEMD_NSPAWN "SYSTEMD-NSPAWN" | ||||
| #define RC_SYS_UML     "UML" | ||||
| #define RC_SYS_VSERVER "VSERVER" | ||||
| @@ -345,6 +342,14 @@ bool rc_service_daemons_crashed(const char *); | ||||
|  * @return string from RC_SYS_* types or NULL if none detected */ | ||||
| const char *rc_sys(void); | ||||
|  | ||||
| /*! Returns the type of subsystem using old automatic code | ||||
|  * @return string from RC_SYS_* types or NULL if none detected */ | ||||
| const char *rc_sys_v1(void); | ||||
|  | ||||
| /*! Returns the type of subsystem using new rc.conf rc_sys value | ||||
|  * @return string from RC_SYS_* types or NULL if none detected */ | ||||
| const char *rc_sys_v2(void); | ||||
|  | ||||
| /*! @name Dependency options | ||||
|  * These options can change the services found by the rc_get_depinfo and | ||||
|  * rc_get_depends functions. */ | ||||
|   | ||||
| @@ -39,8 +39,8 @@ | ||||
| #  include <sys/statvfs.h> | ||||
| #  define statfs statvfs | ||||
| #  define F_FLAGS f_flag | ||||
| #elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \ | ||||
| 	defined(__GLIBC__)) || defined(__GNU__) | ||||
| #elif defined (__linux__) || (defined(__FreeBSD_kernel__) && \ | ||||
| 		defined(__GLIBC__)) || defined(__GNU__) | ||||
| #  include <mntent.h> | ||||
| #endif | ||||
|  | ||||
| @@ -267,8 +267,8 @@ find_mounts(struct args *args) | ||||
| 	return list; | ||||
| } | ||||
|  | ||||
| #elif defined(__linux__) || (defined(__FreeBSD_kernel__) && \ | ||||
| 	defined(__GLIBC__)) || defined(__GNU__) | ||||
| #elif defined (__linux__) || (defined (__FreeBSD_kernel__) && \ | ||||
| 		defined(__GLIBC__)) | ||||
| static struct mntent * | ||||
| getmntfile(const char *file) | ||||
| { | ||||
|   | ||||
| @@ -51,8 +51,8 @@ | ||||
| #include <time.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| #if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \ | ||||
| 	|| defined(__GNU__) | ||||
| #if defined(__linux__) || (defined(__FreeBSD_kernel__) && \ | ||||
| 		defined(__GLIBC__)) | ||||
| #  include <pty.h> | ||||
| #elif defined(__NetBSD__) || defined(__OpenBSD__) | ||||
| #  include <util.h> | ||||
| @@ -78,23 +78,19 @@ static const char *applet; | ||||
| static char *service, *runlevel, *ibsave, *prefix; | ||||
| static RC_DEPTREE *deptree; | ||||
| static RC_STRINGLIST *applet_list, *services, *tmplist; | ||||
| static RC_STRINGLIST *restart_services; | ||||
| static RC_STRINGLIST *need_services; | ||||
| static RC_STRINGLIST *use_services; | ||||
| static RC_STRINGLIST *want_services; | ||||
| static RC_STRINGLIST *restart_services, *need_services, *use_services; | ||||
| static RC_HOOK hook_out; | ||||
| static int exclusive_fd = -1, master_tty = -1; | ||||
| static bool sighup, in_background, deps, dry_run; | ||||
| static pid_t service_pid; | ||||
| static int signal_pipe[2] = { -1, -1 }; | ||||
|  | ||||
| static RC_STRINGLIST *deptypes_b;	/* broken deps */ | ||||
| static RC_STRINGLIST *deptypes_n;	/* needed deps */ | ||||
| static RC_STRINGLIST *deptypes_nw;	/* need+want deps */ | ||||
| static RC_STRINGLIST *deptypes_nwu;	/* need+want+use deps */ | ||||
| static RC_STRINGLIST *deptypes_nwua;	/* need+want+use+after deps */ | ||||
| static RC_STRINGLIST *deptypes_m;	/* needed deps for stopping */ | ||||
| static RC_STRINGLIST *deptypes_mwua;	/* need+want+use+after deps for stopping */ | ||||
| static RC_STRINGLIST *deptypes_b; | ||||
| static RC_STRINGLIST *deptypes_n; | ||||
| static RC_STRINGLIST *deptypes_nu; | ||||
| static RC_STRINGLIST *deptypes_nua; | ||||
| static RC_STRINGLIST *deptypes_m; | ||||
| static RC_STRINGLIST *deptypes_mua; | ||||
|  | ||||
| static void | ||||
| handle_signal(int sig) | ||||
| @@ -241,16 +237,14 @@ cleanup(void) | ||||
| #ifdef DEBUG_MEMORY | ||||
| 	rc_stringlist_free(deptypes_b); | ||||
| 	rc_stringlist_free(deptypes_n); | ||||
| 	rc_stringlist_free(deptypes_nw); | ||||
| 	rc_stringlist_free(deptypes_nwu); | ||||
| 	rc_stringlist_free(deptypes_nwua); | ||||
| 	rc_stringlist_free(deptypes_nu); | ||||
| 	rc_stringlist_free(deptypes_nua); | ||||
| 	rc_stringlist_free(deptypes_m); | ||||
| 	rc_stringlist_free(deptypes_mwua); | ||||
| 	rc_stringlist_free(deptypes_mua); | ||||
| 	rc_deptree_free(deptree); | ||||
| 	rc_stringlist_free(restart_services); | ||||
| 	rc_stringlist_free(need_services); | ||||
| 	rc_stringlist_free(use_services); | ||||
| 	rc_stringlist_free(want_services); | ||||
| 	rc_stringlist_free(services); | ||||
| 	rc_stringlist_free(applet_list); | ||||
| 	rc_stringlist_free(tmplist); | ||||
| @@ -536,29 +530,22 @@ setup_deptypes(void) | ||||
| 	deptypes_n = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_n, "ineed"); | ||||
|  | ||||
| 	deptypes_nw = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_nw, "ineed"); | ||||
| 	rc_stringlist_add(deptypes_nw, "iwant"); | ||||
| 	deptypes_nu = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_nu, "ineed"); | ||||
| 	rc_stringlist_add(deptypes_nu, "iuse"); | ||||
|  | ||||
| 	deptypes_nwu = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_nwu, "ineed"); | ||||
| 	rc_stringlist_add(deptypes_nwu, "iwant"); | ||||
| 	rc_stringlist_add(deptypes_nwu, "iuse"); | ||||
|  | ||||
| 	deptypes_nwua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_nwua, "ineed"); | ||||
| 	rc_stringlist_add(deptypes_nwua, "iwant"); | ||||
| 	rc_stringlist_add(deptypes_nwua, "iuse"); | ||||
| 	rc_stringlist_add(deptypes_nwua, "iafter"); | ||||
| 	deptypes_nua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_nua, "ineed"); | ||||
| 	rc_stringlist_add(deptypes_nua, "iuse"); | ||||
| 	rc_stringlist_add(deptypes_nua, "iafter"); | ||||
|  | ||||
| 	deptypes_m = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_m, "needsme"); | ||||
|  | ||||
| 	deptypes_mwua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_mwua, "needsme"); | ||||
| 	rc_stringlist_add(deptypes_mwua, "wantsme"); | ||||
| 	rc_stringlist_add(deptypes_mwua, "usesme"); | ||||
| 	rc_stringlist_add(deptypes_mwua, "beforeme"); | ||||
| 	deptypes_mua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(deptypes_mua, "needsme"); | ||||
| 	rc_stringlist_add(deptypes_mua, "usesme"); | ||||
| 	rc_stringlist_add(deptypes_mua, "beforeme"); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -644,9 +631,7 @@ svc_start_deps(void) | ||||
|  | ||||
| 	need_services = rc_deptree_depends(deptree, deptypes_n, | ||||
| 	    applet_list, runlevel, depoptions); | ||||
| 	want_services = rc_deptree_depends(deptree, deptypes_nw, | ||||
| 	    applet_list, runlevel, depoptions); | ||||
| 	use_services = rc_deptree_depends(deptree, deptypes_nwu, | ||||
| 	use_services = rc_deptree_depends(deptree, deptypes_nu, | ||||
| 	    applet_list, runlevel, depoptions); | ||||
|  | ||||
| 	if (!rc_runlevel_starting()) { | ||||
| @@ -674,7 +659,7 @@ svc_start_deps(void) | ||||
| 		return; | ||||
|  | ||||
| 	/* Now wait for them to start */ | ||||
| 	services = rc_deptree_depends(deptree, deptypes_nwua, applet_list, | ||||
| 	services = rc_deptree_depends(deptree, deptypes_nua, applet_list, | ||||
| 	    runlevel, depoptions); | ||||
| 	/* We use tmplist to hold our scheduled by list */ | ||||
| 	tmplist = rc_stringlist_new(); | ||||
| @@ -689,7 +674,6 @@ svc_start_deps(void) | ||||
| 		    state & RC_SERVICE_WASINACTIVE) | ||||
| 		{ | ||||
| 			if (!rc_stringlist_find(need_services, svc->value) && | ||||
| 			    !rc_stringlist_find(want_services, svc->value) && | ||||
| 			    !rc_stringlist_find(use_services, svc->value)) | ||||
| 				continue; | ||||
| 		} | ||||
| @@ -943,7 +927,7 @@ svc_stop_deps(RC_SERVICE state) | ||||
|  | ||||
| 	/* We now wait for other services that may use us and are | ||||
| 	 * stopping. This is important when a runlevel stops */ | ||||
| 	services = rc_deptree_depends(deptree, deptypes_mwua, applet_list, | ||||
| 	services = rc_deptree_depends(deptree, deptypes_mua, applet_list, | ||||
| 	    runlevel, depoptions); | ||||
| 	TAILQ_FOREACH(svc, services, entries) { | ||||
| 		if (rc_service_state(svc->value) & RC_SERVICE_STOPPED) | ||||
| @@ -1314,10 +1298,8 @@ openrc_run(int argc, char **argv) | ||||
| 			prefix = save; | ||||
| 		} else if (strcmp(optarg, "ineed") == 0 || | ||||
| 		    strcmp(optarg, "iuse") == 0 || | ||||
| 		    strcmp(optarg, "iwant") == 0 || | ||||
| 		    strcmp(optarg, "needsme") == 0 || | ||||
| 		    strcmp(optarg, "usesme") == 0 || | ||||
| 		    strcmp(optarg, "wantsme") == 0 || | ||||
| 		    strcmp(optarg, "iafter") == 0 || | ||||
| 		    strcmp(optarg, "ibefore") == 0 || | ||||
| 		    strcmp(optarg, "iprovide") == 0) | ||||
|   | ||||
| @@ -44,8 +44,7 @@ | ||||
| #include <time.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| #if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) \ | ||||
| 	|| defined(__GNU__) | ||||
| #if defined(__linux__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) | ||||
| #  include <pty.h> | ||||
| #elif defined(__NetBSD__) || defined(__OpenBSD__) | ||||
| #  include <util.h> | ||||
|   | ||||
| @@ -343,7 +343,6 @@ rc_status(int argc, char **argv) | ||||
| 		} | ||||
| 		needsme = rc_stringlist_new(); | ||||
| 		rc_stringlist_add(needsme, "needsme"); | ||||
| 		rc_stringlist_add(needsme, "wantsme"); | ||||
| 		nservices = rc_stringlist_new(); | ||||
| 		alist = rc_stringlist_new(); | ||||
| 		l = rc_stringlist_add(alist, ""); | ||||
| @@ -366,7 +365,7 @@ rc_status(int argc, char **argv) | ||||
| 		 * be added to the list | ||||
| 		 */ | ||||
| 		unsetenv("RC_SVCNAME"); | ||||
| 		print_level("Dynamic", "needed/wanted"); | ||||
| 		print_level("Dynamic", "needed"); | ||||
| 		print_services(NULL, nservices); | ||||
| 		print_level("Dynamic", "manual"); | ||||
| 		print_services(NULL, services); | ||||
|   | ||||
							
								
								
									
										41
									
								
								src/rc/rc.c
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								src/rc/rc.c
									
									
									
									
									
								
							| @@ -155,8 +155,8 @@ cleanup(void) | ||||
| 	rc_stringlist_free(hotplugged_services); | ||||
| 	rc_stringlist_free(stop_services); | ||||
| 	rc_stringlist_free(start_services); | ||||
| 	rc_stringlist_free(types_nw); | ||||
| 	rc_stringlist_free(types_nwua); | ||||
| 	rc_stringlist_free(types_n); | ||||
| 	rc_stringlist_free(types_nua); | ||||
| 	rc_deptree_free(deptree); | ||||
| 	free(runlevel); | ||||
| #endif | ||||
| @@ -519,7 +519,7 @@ runlevel_config(const char *service, const char *level) | ||||
| } | ||||
|  | ||||
| static void | ||||
| do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services, | ||||
| do_stop_services(RC_STRINGLIST *types_n, RC_STRINGLIST *start_services, | ||||
| 				 const RC_STRINGLIST *stop_services, const RC_DEPTREE *deptree, | ||||
| 				 const char *newlevel, bool parallel, bool going_down) | ||||
| { | ||||
| @@ -530,10 +530,9 @@ do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services, | ||||
| 	RC_STRINGLIST *nostop; | ||||
| 	bool crashed, nstop; | ||||
|  | ||||
| 	if (!types_nw) { | ||||
| 		types_nw = rc_stringlist_new(); | ||||
| 		rc_stringlist_add(types_nw, "needsme"); | ||||
| 		rc_stringlist_add(types_nw, "wantsme"); | ||||
| 	if (!types_n) { | ||||
| 		types_n = rc_stringlist_new(); | ||||
| 		rc_stringlist_add(types_n, "needsme"); | ||||
| 	} | ||||
|  | ||||
| 	crashed = rc_conf_yesno("rc_crashed_stop"); | ||||
| @@ -592,7 +591,7 @@ do_stop_services(RC_STRINGLIST *types_nw, RC_STRINGLIST *start_services, | ||||
| 		if (!svc1) { | ||||
| 			tmplist = rc_stringlist_new(); | ||||
| 			rc_stringlist_add(tmplist, service->value); | ||||
| 			deporder = rc_deptree_depends(deptree, types_nw, | ||||
| 			deporder = rc_deptree_depends(deptree, types_n, | ||||
| 			    tmplist, newlevel ? newlevel : runlevel, | ||||
| 			    RC_DEP_STRICT | RC_DEP_TRACE); | ||||
| 			rc_stringlist_free(tmplist); | ||||
| @@ -752,12 +751,11 @@ main(int argc, char **argv) | ||||
| { | ||||
| 	const char *bootlevel = NULL; | ||||
| 	char *newlevel = NULL; | ||||
| 	const char *systype = NULL; | ||||
| 	static RC_STRINGLIST *hotplugged_services; | ||||
| 	static RC_STRINGLIST *stop_services; | ||||
| 	static RC_STRINGLIST *start_services; | ||||
| 	static RC_STRINGLIST *types_nw; | ||||
| 	static RC_STRINGLIST *types_nwua; | ||||
| 	static RC_STRINGLIST *types_n; | ||||
| 	static RC_STRINGLIST *types_nua; | ||||
| 	static RC_DEPTREE *deptree; | ||||
| 	RC_STRINGLIST *deporder = NULL; | ||||
| 	RC_STRINGLIST *tmplist; | ||||
| @@ -846,9 +844,9 @@ main(int argc, char **argv) | ||||
| 			eerrorx("%s: %s", applet, strerror(errno)); | ||||
| 			/* NOTREACHED */ | ||||
| 		case 'S': | ||||
| 			systype = rc_sys(); | ||||
| 			if (systype) | ||||
| 				printf("%s\n", systype); | ||||
| 			bootlevel = rc_sys(); | ||||
| 			if (bootlevel) | ||||
| 				printf("%s\n", bootlevel); | ||||
| 			exit(EXIT_SUCCESS); | ||||
| 			/* NOTREACHED */ | ||||
| 		case_RC_COMMON_GETOPT | ||||
| @@ -998,14 +996,13 @@ main(int argc, char **argv) | ||||
| 	if (stop_services) | ||||
| 		rc_stringlist_sort(&stop_services); | ||||
|  | ||||
| 	types_nwua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(types_nwua, "ineed"); | ||||
| 	rc_stringlist_add(types_nwua, "iwant"); | ||||
| 	rc_stringlist_add(types_nwua, "iuse"); | ||||
| 	rc_stringlist_add(types_nwua, "iafter"); | ||||
| 	types_nua = rc_stringlist_new(); | ||||
| 	rc_stringlist_add(types_nua, "ineed"); | ||||
| 	rc_stringlist_add(types_nua, "iuse"); | ||||
| 	rc_stringlist_add(types_nua, "iafter"); | ||||
|  | ||||
| 	if (stop_services) { | ||||
| 		tmplist = rc_deptree_depends(deptree, types_nwua, stop_services, | ||||
| 		tmplist = rc_deptree_depends(deptree, types_nua, stop_services, | ||||
| 		    runlevel, depoptions | RC_DEP_STOP); | ||||
| 		rc_stringlist_free(stop_services); | ||||
| 		stop_services = tmplist; | ||||
| @@ -1050,7 +1047,7 @@ main(int argc, char **argv) | ||||
|  | ||||
| 	/* Now stop the services that shouldn't be running */ | ||||
| 	if (stop_services && !nostop) | ||||
| 		do_stop_services(types_nw, start_services, stop_services, deptree, newlevel, parallel, going_down); | ||||
| 		do_stop_services(types_n, start_services, stop_services, deptree, newlevel, parallel, going_down); | ||||
|  | ||||
| 	/* Wait for our services to finish */ | ||||
| 	wait_for_services(); | ||||
| @@ -1112,7 +1109,7 @@ main(int argc, char **argv) | ||||
|  | ||||
| 			/* Start those services. */ | ||||
| 			rc_stringlist_sort(&run_services); | ||||
| 			deporder = rc_deptree_depends(deptree, types_nwua, run_services, rlevel->value, depoptions | RC_DEP_START); | ||||
| 			deporder = rc_deptree_depends(deptree, types_nua, run_services, rlevel->value, depoptions | RC_DEP_START); | ||||
| 			rc_stringlist_free(run_services); | ||||
| 			run_services = deporder; | ||||
| 			do_start_services(run_services, parallel); | ||||
|   | ||||
| @@ -112,5 +112,9 @@ rc_stringlist_split | ||||
| rc_stringlist_split@@RC_1.0 | ||||
| rc_sys | ||||
| rc_sys@@RC_1.0 | ||||
| rc_sys_v1 | ||||
| rc_sys_v1@@RC_1.0 | ||||
| rc_sys_v2 | ||||
| rc_sys_v2@@RC_1.0 | ||||
| rc_yesno | ||||
| rc_yesno@@RC_1.0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user