forked from artix/alpm-hooks
		
	Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fbeb2749c9 | 
							
								
								
									
										42
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								Makefile
									
									
									
									
									
								
							| @@ -16,16 +16,18 @@ RUNITHOOKS = $(wildcard runit/hooks/*) | |||||||
| S6SCRIPTS = $(wildcard s6/scripts/*) | S6SCRIPTS = $(wildcard s6/scripts/*) | ||||||
| S6HOOKS = $(wildcard s6/hooks/*) | S6HOOKS = $(wildcard s6/hooks/*) | ||||||
|  |  | ||||||
|  | S6EXTRA = s6/s6-rc-bundle-update | ||||||
|  |  | ||||||
| S6CRONIEHOOKS = $(wildcard s6/cronie-hooks/*) | S6CRONIEHOOKS = $(wildcard s6/cronie-hooks/*) | ||||||
| S6DBUSHOOKS = $(wildcard s6/dbus-hooks/*) | S6DBUSHOOKS = $(wildcard s6/dbus-hooks/*) | ||||||
| S6ATDHOOKS = $(wildcard s6/atd-hooks/*) | S6ATDHOOKS = $(wildcard s6/atd-hooks/*) | ||||||
|  |  | ||||||
| DINITSCRIPTS = $(wildcard dinit/scripts/*) | SUITE66SCRIPTS = $(wildcard suite66/scripts/*) | ||||||
| DINITHOOKS = $(wildcard dinit/hooks/*) | SUITE66HOOKS = $(wildcard suite66/hooks/*) | ||||||
|  |  | ||||||
| DINITCRONIEHOOKS = $(wildcard dinit/cronie-hooks/*) | SUITE66CRONIEHOOKS = $(wildcard suite66/cronie-hooks/*) | ||||||
| DINITDBUSHOOKS = $(wildcard dinit/dbus-hooks/*) | SUITE66DBUSHOOKS = $(wildcard suite66/dbus-hooks/*) | ||||||
| DINITATDHOOKS = $(wildcard dinit/atd-hooks/*) | SUITE66ATDHOOKS = $(wildcard suite66/atd-hooks/*) | ||||||
|  |  | ||||||
| UDEVSCRIPTS = $(wildcard udev/scripts/*) | UDEVSCRIPTS = $(wildcard udev/scripts/*) | ||||||
| UDEVHOOKS = $(wildcard udev/hooks/*) | UDEVHOOKS = $(wildcard udev/hooks/*) | ||||||
| @@ -48,6 +50,10 @@ install_common: | |||||||
| install_hook_common: | install_hook_common: | ||||||
| 	install $(DMODE) $(DESTDIR)$(HOOKSDIR) | 	install $(DMODE) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
|  | install_s6_extra: | ||||||
|  | 	install $(DMODE) $(DESTDIR)$(PREFIX)/bin | ||||||
|  | 	install $(EMODE) $(S6EXTRA) $(DESTDIR)$(PREFIX)/bin | ||||||
|  |  | ||||||
| install_base: install_common | install_base: install_common | ||||||
| 	install $(EMODE) $(BASESCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | 	install $(EMODE) $(BASESCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | ||||||
| 	install $(MODE) $(BASEHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(BASEHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
| @@ -56,10 +62,10 @@ install_udev: install_common | |||||||
| 	install $(EMODE) $(UDEVSCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | 	install $(EMODE) $(UDEVSCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | ||||||
| 	install $(MODE) $(UDEVHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(UDEVHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_tmpfiles: install_hook_common | install_tmpfiles: install_common | ||||||
| 	install $(MODE) $(TMPFILESHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(TMPFILESHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_sysusers: install_hook_common | install_sysusers: install_common | ||||||
| 	install $(MODE) $(SYSUSERSHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(SYSUSERSHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_openrc: install_common | install_openrc: install_common | ||||||
| @@ -70,13 +76,13 @@ install_runit: install_common | |||||||
| 	install $(EMODE) $(RUNITSCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | 	install $(EMODE) $(RUNITSCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | ||||||
| 	install $(MODE) $(RUNITHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(RUNITHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_s6: install_common | install_s6: install_common install_s6_extra | ||||||
| 	install $(EMODE) $(S6SCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | 	install $(EMODE) $(S6SCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | ||||||
| 	install $(MODE) $(S6HOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(S6HOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_dinit: install_common | install_suite66: install_common | ||||||
| 	install $(EMODE) $(DINITSCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | 	install $(EMODE) $(SUITE66SCRIPTS) $(DESTDIR)$(SCRIPTSDIR) | ||||||
| 	install $(MODE) $(DINITHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(SUITE66HOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_openrc_cronie: install_hook_common | install_openrc_cronie: install_hook_common | ||||||
| 	install $(MODE) $(OPENRCCRONIEHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(OPENRCCRONIEHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
| @@ -96,13 +102,13 @@ install_s6_at: install_hook_common | |||||||
| install_s6_dbus: install_hook_common | install_s6_dbus: install_hook_common | ||||||
| 	install $(MODE) $(S6DBUSHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(S6DBUSHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_dinit_cronie: install_hook_common | install_suite66_cronie: install_hook_common | ||||||
| 	install $(MODE) $(DINITCRONIEHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(SUITE66CRONIEHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_dinit_at: install_hook_common | install_suite66_dbus: install_hook_common | ||||||
| 	install $(MODE) $(DINITATDHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(SUITE66DBUSHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| install_dinit_dbus: install_hook_common | install_suite66_at: install_hook_common | ||||||
| 	install $(MODE) $(DINITDBUSHOOKS) $(DESTDIR)$(HOOKSDIR) | 	install $(MODE) $(SUITE66ATDHOOKS) $(DESTDIR)$(HOOKSDIR) | ||||||
|  |  | ||||||
| .PHONY: install install_base install_s6 install_openrc install_runit install_dinit | .PHONY: install install_base install_s6 install_openrc install_runit install_suite66 | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ Type = Path | |||||||
| Target = usr/bin/openrc-init | Target = usr/bin/openrc-init | ||||||
| Target = usr/bin/runit-init | Target = usr/bin/runit-init | ||||||
| Target = usr/bin/s6-init | Target = usr/bin/s6-init | ||||||
| Target = usr/bin/dinit-init | Target = usr/bin/suite66-init | ||||||
|  |  | ||||||
| [Action] | [Action] | ||||||
| Description = Setting init symlink ... | Description = Setting init symlink ... | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ init_conf(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| init_detect(){ | init_detect(){ | ||||||
|     artix_inits="openrc-init runit-init s6-init dinit-init" |     artix_inits="openrc-init runit-init s6-init suite66-init" | ||||||
|     for supported in ${artix_inits}; do |     for supported in ${artix_inits}; do | ||||||
|         bin=/usr/bin/"$supported" |         bin=/usr/bin/"$supported" | ||||||
|         if [ -f "$bin" ];then |         if [ -f "$bin" ];then | ||||||
|   | |||||||
| @@ -1,11 +0,0 @@ | |||||||
| [Trigger] |  | ||||||
| Type = Path |  | ||||||
| Operation = Install |  | ||||||
| Operation = Upgrade |  | ||||||
| Target = etc/dinit.d/* |  | ||||||
|  |  | ||||||
| [Action] |  | ||||||
| Description = Displaying dinit service help ... |  | ||||||
| When = PostTransaction |  | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook add |  | ||||||
| NeedsTargets |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| [Trigger] |  | ||||||
| Type = Path |  | ||||||
| Operation = Remove |  | ||||||
| Target = etc/dunit.d/* |  | ||||||
|  |  | ||||||
| [Action] |  | ||||||
| Description = Displaying dinit service help ... |  | ||||||
| When = PostTransaction |  | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook del |  | ||||||
| NeedsTargets |  | ||||||
| @@ -1,59 +0,0 @@ | |||||||
| #!/bin/sh -e |  | ||||||
|  |  | ||||||
| dinit_live() { |  | ||||||
|   if [ ! -S /run/dinitctl ]; then |  | ||||||
|     echo >&2 "  Skipped: Current root is not booted." |  | ||||||
|     exit 0 |  | ||||||
|   fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| svc_help(){ |  | ||||||
|     echo "	==> Start/stop/restart a service:" |  | ||||||
|     echo "	dinitctl <start/stop/restart> <service>" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| svc_add_help(){ |  | ||||||
|     echo "	==> Add a service:" |  | ||||||
|     echo "	dinitctl enable <service>" |  | ||||||
|     svc_help |  | ||||||
| } |  | ||||||
|  |  | ||||||
| svc_del_help(){ |  | ||||||
|     echo "	==> Remove a service:" |  | ||||||
|     echo "	dinitctl disable <service>" |  | ||||||
|     svc_help |  | ||||||
| } |  | ||||||
|  |  | ||||||
| each_conf() { |  | ||||||
|   while read -r f; do |  | ||||||
|     "$@" "/$f" |  | ||||||
|   done |  | ||||||
| } |  | ||||||
|  |  | ||||||
| reload_dbus() { |  | ||||||
|     dbus-send --print-reply --system --type=method_call \ |  | ||||||
|             --dest=org.freedesktop.DBus \ |  | ||||||
|             / org.freedesktop.DBus.ReloadConfig > /dev/null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| restart_service() { |  | ||||||
|     if dinitctl list | grep -qF "[[+]     ] $1"; then |  | ||||||
|         dinitctl restart "$1" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| op="$1"; shift |  | ||||||
|  |  | ||||||
| case $op in |  | ||||||
|   sysctl)   dinit_live; each_conf /usr/bin/sysctl -q -p ;; |  | ||||||
|   binfmt)   dinit_live; /usr/bin/dinitctl restart binfmt ;; |  | ||||||
|   dbus_reload) dinit_live; reload_dbus ;; |  | ||||||
|     # For use by other packages |  | ||||||
|   reload)   dinit_live; /usr/bin/dinitctl reload "$@"; /usr/bin/dinitctl restart "$@" ;; |  | ||||||
|   restart)  dinit_live; restart_service "$1" ;; |  | ||||||
|   add)      svc_add_help ;; |  | ||||||
|   del)      svc_del_help ;; |  | ||||||
|   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| exit 0 |  | ||||||
| @@ -1,6 +1,7 @@ | |||||||
| [Trigger] | [Trigger] | ||||||
| Type = Path | Type = Path | ||||||
| Operation = Install | Operation = Install | ||||||
|  | Operation = Upgrade | ||||||
| Target = etc/runit/sv/* | Target = etc/runit/sv/* | ||||||
| 
 | 
 | ||||||
| [Action] | [Action] | ||||||
| @@ -14,13 +14,13 @@ svc_help(){ | |||||||
|  |  | ||||||
| svc_add_help(){ | svc_add_help(){ | ||||||
|     echo "	==> Add a service:" |     echo "	==> Add a service:" | ||||||
|     echo "	ln -s ../../sv/<service> /run/runit/service/" |     echo "	ln -s /etc/runit/sv/<service> /run/runit/service/" | ||||||
|     svc_help |     svc_help | ||||||
| } | } | ||||||
|  |  | ||||||
| svc_del_help(){ | svc_del_help(){ | ||||||
|     echo "	==> Remove a service:" |     echo "	==> Remove a service:" | ||||||
|     echo "	unlink /run/runit/service/<service>" |     echo "	rm /run/runit/service/<service>" | ||||||
|     svc_help |     svc_help | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								s6/hooks/s6-pre-remove.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								s6/hooks/s6-pre-remove.hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | [Trigger] | ||||||
|  | Type = Path | ||||||
|  | Operation = Remove | ||||||
|  | Target = etc/s6/sv/* | ||||||
|  |  | ||||||
|  | [Action] | ||||||
|  | Description = Shutting down services ... | ||||||
|  | When = PreTransaction | ||||||
|  | Exec = /usr/share/libalpm/scripts/s6-rc-hook shutdown_sv | ||||||
|  | NeedsTargets | ||||||
| @@ -8,4 +8,4 @@ Target = etc/s6/sv/* | |||||||
| [Action] | [Action] | ||||||
| Description = Updating s6-rc database... | Description = Updating s6-rc database... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/bin/s6-db-reload | Exec = /usr/share/libalpm/scripts/s6-rc-db-update-hook | ||||||
|   | |||||||
							
								
								
									
										166
									
								
								s6/s6-rc-bundle-update
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										166
									
								
								s6/s6-rc-bundle-update
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,166 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | # {{{ functions | ||||||
|  |  | ||||||
|  | db_action() { | ||||||
|  |     s6-rc-db -c "${DATABASE}" "$@" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_action() { | ||||||
|  |     s6-rc-bundle -c "${DATABASE}" "$@" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | db_err_msg() { | ||||||
|  |     echo "${CMD_UPD}: fatal: unable to take lock on ${DATABASE} Permission denied" | ||||||
|  |     exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_err_msg() { | ||||||
|  |     echo "${BUNDLE} is not an existing bundle. Create it with ${CMD}." | ||||||
|  |     exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_entry_err_msg() { | ||||||
|  |     name="$1" | ||||||
|  |     echo "$name does not exist in bundle ${BUNDLE}!" | ||||||
|  |     exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_add_err_msg() { | ||||||
|  |     echo "Error when trying to add ${CONTENTS}!" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cmd_help() { | ||||||
|  |     echo "${CMD_UPD} help" | ||||||
|  |     echo "${CMD_UPD} add bundlename contents..." | ||||||
|  |     echo "${CMD_UPD} delete bundlename contents..." | ||||||
|  |     echo "${CMD_UPD} list bundlename" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_action_check() { | ||||||
|  |     pos="$1" | ||||||
|  |     num="$2" | ||||||
|  |  | ||||||
|  |     if [ "$pos" -lt "$num" ]; then | ||||||
|  |         echo "${HELP_MSG}" | ||||||
|  |         exit 1 | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     isbundle=$(db_action type "${BUNDLE}" 2> /dev/null) | ||||||
|  |  | ||||||
|  |     if [ "$?" = 111 ]; then | ||||||
|  |         db_err_msg | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     if [ "$isbundle" != "bundle" ]; then | ||||||
|  |         bundle_err_msg | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bundle_to_backup() { | ||||||
|  |     backup=$(db_action contents "${BUNDLE}") | ||||||
|  |  | ||||||
|  |     for entry in ${CONTENTS}; do | ||||||
|  |  | ||||||
|  |         isbundle=$(db_action type "$entry" 2> /dev/null) | ||||||
|  |  | ||||||
|  |         entrycontents=$entry | ||||||
|  |         if [ "$isbundle" = "bundle" ]; then | ||||||
|  |             entrycontents=$(db_action contents "$entry") | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         for srv in $entrycontents; do | ||||||
|  |             if ! echo $backup | grep -w "$srv" > /dev/null; then | ||||||
|  |                 bundle_entry_err_msg "$entry" | ||||||
|  |             else | ||||||
|  |                 oldupdated="" | ||||||
|  |                 for oldsrv in $backup; do | ||||||
|  |                     if [ "$oldsrv" != "$srv" ]; then | ||||||
|  |                         oldupdated="${oldupdated} $oldsrv" | ||||||
|  |                     fi | ||||||
|  |                 done | ||||||
|  |                 backup=$oldupdated | ||||||
|  |             fi | ||||||
|  |         done | ||||||
|  |  | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     echo "$backup" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cmd_add() { | ||||||
|  |     pos="$1" | ||||||
|  |     bundle_action_check "$pos" 3 | ||||||
|  |  | ||||||
|  |     old="$(db_action contents "${BUNDLE}")" | ||||||
|  |  | ||||||
|  |     bundle_action delete "${BUNDLE}" | ||||||
|  |  | ||||||
|  |     if ! bundle_action add "${BUNDLE}" $old ${CONTENTS}; then | ||||||
|  |         bundle_add_err_msg | ||||||
|  |         bundle_action add "${BUNDLE}" $old | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cmd_delete() { | ||||||
|  |     pos="$1" | ||||||
|  |     bundle_action_check "$pos" 3 | ||||||
|  |  | ||||||
|  |     old="$(bundle_to_backup)" | ||||||
|  |     if [ "$?" = 1 ]; then | ||||||
|  |         echo $old | ||||||
|  |         exit 1 | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     bundle_action delete "${BUNDLE}" | ||||||
|  |     bundle_action add "${BUNDLE}" $old | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cmd_list() { | ||||||
|  |     pos="$1" | ||||||
|  |     bundle_action_check "$pos" 2 | ||||||
|  |  | ||||||
|  |     db_action contents "${BUNDLE}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # }}} | ||||||
|  |  | ||||||
|  | BUNDLE="" | ||||||
|  | COMMAND="" | ||||||
|  | CONTENTS="" | ||||||
|  | DATABASE="/run/s6-rc/compiled" | ||||||
|  |  | ||||||
|  | CMD="s6-rc-bundle" | ||||||
|  | CMD_UPD="${CMD}-update" | ||||||
|  | HELP_MSG="${CMD_UPD}: usage: ${CMD_UPD} [ -c compiled ] command... (use ${CMD_UPD} help for more information)" | ||||||
|  |  | ||||||
|  | c_arg=false | ||||||
|  |  | ||||||
|  | for arg in "$@"; do | ||||||
|  |     if [ "$c_arg" = true ]; then | ||||||
|  |         DATABASE=$arg | ||||||
|  |         c_arg=false | ||||||
|  |         continue | ||||||
|  |     fi | ||||||
|  |     if [ "$arg" = "-c" ]; then | ||||||
|  |         c_arg=true | ||||||
|  |         continue | ||||||
|  |     fi | ||||||
|  |     if [ "${COMMAND}" = "" ]; then | ||||||
|  |         COMMAND=$arg | ||||||
|  |         continue | ||||||
|  |     fi | ||||||
|  |     if [ "${BUNDLE}" = "" ]; then | ||||||
|  |         BUNDLE=$arg | ||||||
|  |         continue | ||||||
|  |     fi | ||||||
|  |     CONTENTS="${CONTENTS} $arg" | ||||||
|  | done | ||||||
|  |  | ||||||
|  | case "${COMMAND}" in | ||||||
|  |     help) cmd_help ;; | ||||||
|  |     add) cmd_add "$#" ;; | ||||||
|  |     delete) cmd_delete "$#" ;; | ||||||
|  |     list) cmd_list "$#" ;; | ||||||
|  |     *) echo "${HELP_MSG}" ;; | ||||||
|  | esac | ||||||
							
								
								
									
										122
									
								
								s6/scripts/s6-rc-db-update-hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								s6/scripts/s6-rc-db-update-hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # {{{ functions | ||||||
|  |  | ||||||
|  | db_action() { | ||||||
|  |     s6-rc-db -c "${DBPATH}" "$@" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | a_newbundle() { | ||||||
|  |     for j in $new_bundles; do | ||||||
|  |         if [ "$j" = "$1" ]; then | ||||||
|  |             return 0 | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | service_exists() { | ||||||
|  |     for k in $all_services; do | ||||||
|  |         if [ "$k" = "$1" ]; then | ||||||
|  |             return 0 | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | in_newbundle() { | ||||||
|  |     bundle_contents=$(db_action contents "$1") | ||||||
|  |     for l in $bundle_contents; do | ||||||
|  |         if [ "$l" = "$2" ]; then | ||||||
|  |             return 0 | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # }}} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # main | ||||||
|  |  | ||||||
|  | RCPATH='/etc/s6/rc' | ||||||
|  | DBPATH="${RCPATH}/compiled" | ||||||
|  | SVPATH='/etc/s6/sv' | ||||||
|  | SVDIRS='/run/s6-rc/servicedirs' | ||||||
|  | TIMESTAMP=$(date +%s) | ||||||
|  |  | ||||||
|  | if [ -e "${DBPATH}" ]; then | ||||||
|  |     old_bundles="$(db_action list bundles)" | ||||||
|  |     len=0 | ||||||
|  |     for bundle in $old_bundles; do | ||||||
|  |         contents[$len]=$(db_action contents "$bundle") | ||||||
|  |         len=$(( len + 1 )) | ||||||
|  |     done | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if ! s6-rc-compile "${DBPATH}"-"${TIMESTAMP}" "${SVPATH}"; then | ||||||
|  |     echo "Error compiling database." | ||||||
|  |     echo "Please double check the ${SVPATH} directories. Exiting." | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ -e "/run/s6-rc" ]; then | ||||||
|  |     for dir in ${SVDIRS}/*; do | ||||||
|  |         if [ -e "${dir}/down" ]; then | ||||||
|  |             s6-svc -x "${dir}" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |     s6-rc-update "${DBPATH}"-"${TIMESTAMP}" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ -d "${DBPATH}" ]; then | ||||||
|  |     ln -sf "${DBPATH}"-"${TIMESTAMP}" "${DBPATH}"/compiled | ||||||
|  |     mv -f "${DBPATH}"/compiled "${RCPATH}" | ||||||
|  | else | ||||||
|  |     ln -sf "${DBPATH}"-"${TIMESTAMP}" "${DBPATH}" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | new_bundles=$(db_action list bundles) | ||||||
|  | all_services=$(db_action list all) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if [ -n "$old_bundles" ]; then | ||||||
|  |     len=0 | ||||||
|  |     for m in $old_bundles; do | ||||||
|  |         old_contents=${contents[$len]} | ||||||
|  |         a_newbundle "$m" | ||||||
|  |         ret=$? | ||||||
|  |  | ||||||
|  |         for n in $old_contents; do | ||||||
|  |             service_exists "$n" | ||||||
|  |             ret2=$? | ||||||
|  |  | ||||||
|  |             if [ $ret -eq 1 ]; then | ||||||
|  |                 if [ $ret2 -eq 0 ]; then | ||||||
|  |                     new_contents="$new_contents $n" | ||||||
|  |                 fi | ||||||
|  |             else | ||||||
|  |                 if [ $ret2 -eq 0 ]; then | ||||||
|  |                     in_newbundle "$m" "$n" | ||||||
|  |                     ret3=$? | ||||||
|  |  | ||||||
|  |                     if [ $ret3 -eq 1 ]; then | ||||||
|  |                         s6-rc-bundle-update -c "${DBPATH}" add "$m" "$n" | ||||||
|  |                     fi | ||||||
|  |  | ||||||
|  |                 fi | ||||||
|  |             fi | ||||||
|  |  | ||||||
|  |         done | ||||||
|  |  | ||||||
|  |         if [ -n "$new_contents" ]; then | ||||||
|  |             s6-rc-bundle -c "${DBPATH}" add "$m" $new_contents | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         new_contents="" | ||||||
|  |         len=$(( len + 1 )) | ||||||
|  |     done | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo "==> Switched to a new database." | ||||||
|  | echo "    Remove any old unwanted/unneeded database directories in ${RCPATH}." | ||||||
| @@ -10,19 +10,17 @@ s6_live() { | |||||||
| svc_help(){ | svc_help(){ | ||||||
|     echo "	==> Start/stop a service:" |     echo "	==> Start/stop a service:" | ||||||
|     echo "  s6-rc -u/-d change <service>" |     echo "  s6-rc -u/-d change <service>" | ||||||
|     echo "	==> Recompile the service database:" |  | ||||||
|     echo "  s6-db-reload <args>" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| svc_add_help(){ | svc_add_help(){ | ||||||
|     echo "	==> Add a service:" |     echo "	==> Add a service:" | ||||||
|     echo "  s6-service add default <service>" |     echo "  s6-rc-bundle-update add default <service>" | ||||||
|     svc_help |     svc_help | ||||||
| } | } | ||||||
|  |  | ||||||
| svc_del_help(){ | svc_del_help(){ | ||||||
|     echo "	==> Remove a service:" |     echo "	==> Remove a service:" | ||||||
|     echo "  s6-service delete default <service>" |     echo "  s6-rc-bundle-update delete default <service>" | ||||||
|     svc_help |     svc_help | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -32,6 +30,18 @@ reload_dbus() { | |||||||
|             / org.freedesktop.DBus.ReloadConfig > /dev/null |             / org.freedesktop.DBus.ReloadConfig > /dev/null | ||||||
| } | } | ||||||
|  |  | ||||||
|  | shutdown_service() { | ||||||
|  |   while read -r dir; do | ||||||
|  |     if [ -d "$dir" ] && [ "$dir" != "etc/s6/sv/" ]; then | ||||||
|  |       sv=$(basename "$dir") | ||||||
|  |       active=$(s6-rc -a list | grep -Fx "$sv" || true) | ||||||
|  |       if [ -n $active ]; then | ||||||
|  |         s6-rc -d change "$sv" | ||||||
|  |       fi | ||||||
|  |     fi | ||||||
|  |   done | ||||||
|  | } | ||||||
|  |  | ||||||
| restart_service() { | restart_service() { | ||||||
|   if [ -e /run/s6-rc/servicedirs/"$1" ]; then |   if [ -e /run/s6-rc/servicedirs/"$1" ]; then | ||||||
|     s6-svc -r /run/s6-rc/servicedirs/"$1" |     s6-svc -r /run/s6-rc/servicedirs/"$1" | ||||||
| @@ -57,6 +67,7 @@ case $op in | |||||||
|   add)      svc_add_help ;; |   add)      svc_add_help ;; | ||||||
|   del)      svc_del_help ;; |   del)      svc_del_help ;; | ||||||
|   longrun_restart) s6_live; restart_service "$1" ;; |   longrun_restart) s6_live; restart_service "$1" ;; | ||||||
|  |   shutdown_sv) s6_live; shutdown_service ;; | ||||||
|   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; |   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; | ||||||
| esac | esac | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,4 +6,4 @@ Target = glibc | |||||||
| [Action] | [Action] | ||||||
| Description = Restarting atd for libc upgrade... | Description = Restarting atd for libc upgrade... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook restart atd | Exec = /usr/share/libalpm/scripts/66-hook longrun_restart atd | ||||||
| @@ -6,4 +6,4 @@ Target = glibc | |||||||
| [Action] | [Action] | ||||||
| Description = Restarting cronie for libc upgrade... | Description = Restarting cronie for libc upgrade... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook restart cronie | Exec = /usr/share/libalpm/scripts/66-hook longrun_restart cronie | ||||||
| @@ -10,4 +10,4 @@ Target = usr/share/dbus-1/system-services/*.service | |||||||
| [Action] | [Action] | ||||||
| Description = Reloading system bus configuration... | Description = Reloading system bus configuration... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook dbus_reload | Exec = /usr/share/libalpm/scripts/66-hook dbus_reload | ||||||
							
								
								
									
										11
									
								
								suite66/help-hooks/66-install.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								suite66/help-hooks/66-install.hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | [Trigger] | ||||||
|  | Type = Path | ||||||
|  | Operation = Install | ||||||
|  | Operation = Upgrade | ||||||
|  | Target = etc/66/service/* | ||||||
|  |  | ||||||
|  | [Action] | ||||||
|  | Description = Displaying 66 service help ... | ||||||
|  | When = PostTransaction | ||||||
|  | Exec = /usr/share/libalpm/scripts/66-hook add | ||||||
|  | NeedsTargets | ||||||
							
								
								
									
										10
									
								
								suite66/help-hooks/66-remove.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								suite66/help-hooks/66-remove.hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | [Trigger] | ||||||
|  | Type = Path | ||||||
|  | Operation = Remove | ||||||
|  | Target = etc/66/service/* | ||||||
|  |  | ||||||
|  | [Action] | ||||||
|  | Description = Displaying 66 service help ... | ||||||
|  | When = PostTransaction | ||||||
|  | Exec = /usr/share/libalpm/scripts/66-hook del | ||||||
|  | NeedsTargets | ||||||
| @@ -7,5 +7,5 @@ Target = usr/lib/binfmt.d/*.conf | |||||||
| [Action] | [Action] | ||||||
| Description = Registering binary formats... | Description = Registering binary formats... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook binfmt | Exec = /usr/share/libalpm/scripts/66-hook binfmt | ||||||
| NeedsTargets | NeedsTargets | ||||||
| @@ -8,5 +8,5 @@ Target = usr/lib/sysctl.d/*.conf | |||||||
| [Action] | [Action] | ||||||
| Description = Applying kernel sysctl settings... | Description = Applying kernel sysctl settings... | ||||||
| When = PostTransaction | When = PostTransaction | ||||||
| Exec = /usr/share/libalpm/scripts/dinit-hook sysctl | Exec = /usr/share/libalpm/scripts/66-hook sysctl | ||||||
| NeedsTargets | NeedsTargets | ||||||
							
								
								
									
										10
									
								
								suite66/hooks/66-bootmodule.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								suite66/hooks/66-bootmodule.hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | [Trigger] | ||||||
|  | Operation = Upgrade | ||||||
|  | Type = Package | ||||||
|  | Target = suite66-scripts | ||||||
|  | Target = 66 | ||||||
|  |  | ||||||
|  | [Action] | ||||||
|  | Description = Updating boot tree module  | ||||||
|  | When = PostTransaction | ||||||
|  | Exec = /usr/share/libalpm/scripts/66-bootmodule | ||||||
							
								
								
									
										10
									
								
								suite66/hooks/66-postinstall.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								suite66/hooks/66-postinstall.hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | [Trigger] | ||||||
|  | Operation = Install  | ||||||
|  | Type = Package | ||||||
|  | Target = suite66-base | ||||||
|  | Target = 66 | ||||||
|  |  | ||||||
|  | [Action] | ||||||
|  | Description = Creating initial boot and default tree  | ||||||
|  | When = PostTransaction | ||||||
|  | Exec = /usr/share/libalpm/scripts/66-postinstall | ||||||
							
								
								
									
										2
									
								
								suite66/scripts/66-bootmodule
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								suite66/scripts/66-bootmodule
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | #!/usr/bin/sh | ||||||
|  | 66-enable -t boot -F boot@system | ||||||
							
								
								
									
										54
									
								
								suite66/scripts/66-hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								suite66/scripts/66-hook
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | #!/bin/sh -e | ||||||
|  |  | ||||||
|  | suite66_live() { | ||||||
|  |   if [ ! -d /run/dbus ]; then | ||||||
|  |     echo >&2 "  Skipped: 66 is not running." | ||||||
|  |     exit 0 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | svc_help(){ | ||||||
|  |     echo "	==> Start/stop a service:" | ||||||
|  |     echo "  66-start <service>" | ||||||
|  |     echo "  66-stop <service>" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | svc_add_help(){ | ||||||
|  |     echo "	==> Add a service:" | ||||||
|  |     echo "  66-enable <service>" | ||||||
|  |     svc_help | ||||||
|  | } | ||||||
|  |  | ||||||
|  | svc_del_help(){ | ||||||
|  |     echo "	==> Remove a service:" | ||||||
|  |     echo "  66-disable <service>" | ||||||
|  |     svc_help | ||||||
|  | } | ||||||
|  |  | ||||||
|  | reload_dbus() { | ||||||
|  |   dbus-send --print-reply --system --type=method_call \ | ||||||
|  |             --dest=org.freedesktop.DBus \ | ||||||
|  |             / org.freedesktop.DBus.ReloadConfig > /dev/null | ||||||
|  | } | ||||||
|  |  | ||||||
|  | each_conf() { | ||||||
|  |   while read -r f; do | ||||||
|  |     "$@" "/$f" | ||||||
|  |   done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | op="$1"; shift | ||||||
|  | sv="$2" | ||||||
|  |  | ||||||
|  | case $op in | ||||||
|  |   sysctl)   suite66_live; each_conf /usr/bin/sysctl -q -p ;; | ||||||
|  |   binfmt)   suite66_live; /etc/66/script/binfmt.sh ;; | ||||||
|  |   dbus_reload)  suite66_live; reload_dbus ;; | ||||||
|  |     # For use by other packages | ||||||
|  |   add)      svc_add_help ;; | ||||||
|  |   del)      svc_del_help ;; | ||||||
|  |   longrun_restart) suite66_live; 66-svctl -r "$1" ;; | ||||||
|  |   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
							
								
								
									
										9
									
								
								suite66/scripts/66-postinstall
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								suite66/scripts/66-postinstall
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | #!/usr/bin/sh | ||||||
|  | if [ ! -d /var/lib/66/system/boot ]; then | ||||||
|  |   66-tree -n boot | ||||||
|  |   66-enable -t boot -F boot@system | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ ! -d /var/lib/66/system/default ]; then | ||||||
|  |   66-tree -ncE default | ||||||
|  | fi | ||||||
| @@ -10,6 +10,7 @@ udevd_live() { | |||||||
| op="$1"; shift | op="$1"; shift | ||||||
|  |  | ||||||
| case "$op" in | case "$op" in | ||||||
|  |   #hwdb)     /usr/bin/udev-hwdb --usr update ;; | ||||||
|   hwdb)     /usr/bin/udevadm hwdb --update ;; |   hwdb)     /usr/bin/udevadm hwdb --update ;; | ||||||
|   udev-reload)   udevd_live;   /usr/bin/udevadm control --reload ;; |   udev-reload)   udevd_live;   /usr/bin/udevadm control --reload ;; | ||||||
|   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; |   *) echo >&2 "  Invalid operation '$op'"; exit 1 ;; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user