[Asterisk-code-review] A systemd service (asterisk[master])

George Joseph asteriskteam at digium.com
Mon Jun 6 09:17:31 CDT 2016


George Joseph has posted comments on this change.

Change subject: A systemd service
......................................................................


Patch Set 4:

(2 comments)

https://gerrit.asterisk.org/#/c/2844/4/Makefile
File Makefile:

PS4, Line 826: config:
             : 	# FIXME: this is not the final result. Merely a quick and dirty
             : 	# fix to get the patch applied. A proper condition needs to be
             : 	# added around it.
             : 	$(INSTALL) -d $(DESTDIR)$(SYSTEMD_DIR); \
             : 	./build_tools/install_subst -d contrib/asterisk.service $(DESTDIR)$(SYSTEMD_DIR)/asterisk.service; \
             : 	if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
             : 		./build_tools/install_subst contrib/init.d/rc.redhat.asterisk  "$(DESTDIR)/etc/rc.d/init.d/asterisk"; \
             : 		if [ ! -f "$(DESTDIR)/etc/sysconfig/asterisk" ] ; then \
             : 			$(INSTALL) -m 644 contrib/init.d/etc_default_asterisk "$(DESTDIR)/etc/sysconfig/asterisk" ; \
             : 		fi ; \
             : 		if [ -z "$(DESTDIR)" ] ; then \
             : 			/sbin/chkconfig --add asterisk ; \
             : 		fi ; \
             : 	elif [ -f /etc/debian_version ] ; then \
             : 		./build_tools/install_subst contrib/init.d/rc.debian.asterisk  "$(DESTDIR)/etc/init.d/asterisk"; \
             : 		if [ ! -f "$(DESTDIR)/etc/default/asterisk" ] ; then \
             : 			$(INSTALL) -m 644 contrib/init.d/etc_default_asterisk "$(DESTDIR)/etc/default/asterisk" ; \
             : 		fi ; \
             : 		if [ -z "$(DESTDIR)" ] ; then \
             : 			/usr/sbin/update-rc.d asterisk defaults 50 91 ; \
             : 		fi ; \
             : 	elif [ -f /etc/gentoo-release ] ; then \
             : 		./build_tools/install_subst contrib/init.d/rc.gentoo.asterisk  "$(DESTDIR)/etc/init.d/asterisk"; \
             : 		if [ -z "$(DESTDIR)" ] ; then \
             : 			/sbin/rc-update add asterisk default ; \
             : 		fi ; \
             : 	elif [ -f /etc/mandrake-release -o -f /etc/mandriva-release ] ; then \
             : 		./build_tools/install_subst contrib/init.d/rc.mandriva.asterisk  "$(DESTDIR)/etc/rc.d/init.d/asterisk"; \
             : 		if [ ! -f /etc/sysconfig/asterisk ] ; then \
             : 			$(INSTALL) -m 644 contrib/init.d/etc_default_asterisk "$(DESTDIR)/etc/sysconfig/asterisk" ; \
             : 		fi ; \
             : 		if [ -z "$(DESTDIR)" ] ; then \
             : 			/sbin/chkconfig --add asterisk ; \
             : 		fi ; \
             : 	elif [ -f /etc/SuSE-release -o -f /etc/novell-release ] ; then \
             : 		./build_tools/install_subst contrib/init.d/rc.suse.asterisk  "$(DESTDIR)/etc/init.d/asterisk"; \
             : 		if [ ! -f /etc/sysconfig/asterisk ] ; then \
             : 			$(INSTALL) -m 644 contrib/init.d/etc_default_asterisk "$(DESTDIR)/etc/sysconfig/asterisk" ; \
             : 		fi ; \
             : 		if [ -z "$(DESTDIR)" ] ; then \
             : 			/sbin/chkconfig --add asterisk ; \
             : 		fi ; \
             : 	elif [ -f /etc/arch-release -o -f /etc/arch-release ] ; then \
             : 		./build_tools/install_subst contrib/init.d/rc.archlinux.asterisk  "$(DESTDIR)/etc/init.d/asterisk"; \
             : 	elif [ -d "$(DESTDIR)/Library/LaunchDaemons" ]; then \
             : 		if [ ! -f "$(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist" ]; then \
             : 			./build_tools/install_subst contrib/init.d/org.asterisk.asterisk.plist "$(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist"; \
             : 		fi; \
             : 		if [ ! -f "$(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist" ]; then \
             : 			./build_tools/install_subst contrib/init.d/org.asterisk.muted.plist "$(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist"; \
             : 		fi; \
             : 	elif [ -f /etc/slackware-version ]; then \
             : 		echo "Slackware is not currently supported, although an init script does exist for it."; \
             : 	else \
             : 		echo "We could not install init scripts for your distribution." ; \
             : 	fi
So, this would be my approach...

I'd split this one big 'if' statement into multiple targets and decide which target to use based on $(wildcard) tests.
(formatting may be messed up a little)

_install_sysconfig:
    if [ ! -f "$(DESTDIR)/$(SYSCONF_FILE)" ] ; then \
        $(INSTALL) -m 644 contrib/init.d/$(SYSCONF_SRC_FILE) \
        $(DESTDIR)/$(SYSCONF_FILE)" ; \
    fi ;
#
_install_initd:
    ./build_tools/install_subst contrib/init.d/$(INIT_SCRIPT)  \
        "$(DESTDIR)/etc/rc.d/init.d/asterisk"
#
_install_service:
    $(INSTALL) -d $(DESTDIR)$(SYSTEMD_DIR);
    ./build_tools/install_subst -d contrib/asterisk.service \
        $(DESTDIR)$(SYSTEMD_DIR)/asterisk.service;
    /usr/sbin/systemctl enable asterisk
#
# (or maybe add another configure.ac test for SYSTEMCTL
ifneq ($(wildcard /usr/sbin/systemctl),)
config: _install_service
#
#
else ifneq ($(wildcard /etc/redhat-release)$(wildcard /etc/fedora-release),)
INIT_SCRIPT=rc.redhat.asterisk
SYSCONF_FILE=/etc/sysconfig/asterisk
SYSCONF_SRC_FILE=etc_default_asterisk
config: _install_initd _install_sysconfig
    @test [ -z "$(DESTDIR)" ] && /sbin/chkconfig --add asterisk
#
# For debian you wanted both service and init right?
else ifneq ($(wildcard /etc/debian_version),)
INIT_SCRIPT=rc.debian.asterisk
SYSCONF_FILE=/etc/sysconfig/asterisk
SYSCONF_SRC_FILE=etc_default_asterisk
config: _install_service _install_initd _install_sysconfig
    @test [ -z "$(DESTDIR)" ] && /usr/sbin/update-rc.d asterisk defaults 50 91 


etc...


https://gerrit.asterisk.org/#/c/2844/4/contrib/asterisk.service
File contrib/asterisk.service:

Line 8: ExecStart=__ASTERISK_SBIN_DIR__/asterisk -g -f -U asterisk
Why not add another sysconfig file as an environment file with extra params?  If you use PBX_LUA you probably need to set the LUA_PATH at least

#/etc/sysconfig/asterisk_service
ASTARGS="-g -U asterisk"
ASTCONF=/etc/asterisk/asterisk.conf
LUA_PATH="?;?.lua;/etc/asterisk/?;/etc/asterisk/?.lua"

#asterisk.service
EnvironmentFile=-/etc/sysconfig/asterisk_service
ExecStart=__ASTERISK_SBIN_DIR__/asterisk -f -C $ASTCONF  $ASTARGS


-- 
To view, visit https://gerrit.asterisk.org/2844
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ifde5d054ea0ba23d833e28ba80a6105d80070bc6
Gerrit-PatchSet: 4
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Corey Farrell <git at cfware.com>
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Sean Brady <sbrady at haikuengineering.com>
Gerrit-Reviewer: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
Gerrit-HasComments: Yes



More information about the asterisk-code-review mailing list