# Version: 0.3.4 # Copyright (c) 2005-2017: # Darren 'Tadgy' Austin # Licensed under the terms of the GNU General Public License version 3. install_file() { # $1 = Path of file to process (without leading /, with .new extension) [ -z "$1" -o ! -e "$1" ] && return local OLDFILE="${1%.new}" local NEWMD5="$(md5sum "$1" 2>/dev/null | cut -d' ' -f1)" local OLDMD5="$(md5sum "$OLDFILE" 2>/dev/null | cut -d' ' -f1)" local PREVMD5S="$(grep -P "^[[:alnum:]]{32}[[:blank:]]+(/)?\Q$OLDFILE\E(\.new)?[[:blank:]]*$" \ install/slack-install 2>/dev/null | grep -Eo '^[[:alnum:]]{32}')" if [ ! -e "$OLDFILE" ]; then mv "$1" "$OLDFILE" elif [ "$NEWMD5" = "$OLDMD5" ]; then rm -f "$1" elif echo "$PREVMD5S" | grep -v "^$NEWMD5$" | grep "^$OLDMD5$" >/dev/null 2>&1; then cat "$1" >"$OLDFILE" && rm -f "$1" else # |--------|-----------------------------------------------------------| echo "WARNING: $OLDFILE" echo " has been customised since original installation and was not" echo " replaced with the incoming .new file." echo fi } # Install new configuration files. install_file "FIXME/FIXME.new" # List info pages in the directory. [ -x usr/bin/install-info ] && usr/bin/install-info %BUILD_PREFIX%/info/FIXME.info.gz %BUILD_PREFIX%/info/dir # Add required user/group. # Note: groups need to be added before users. grep "^FIXME_GROUPNAME:" etc/group >/dev/null 2>&1 || { if chroot . usr/sbin/groupadd -g FIXME_GID -r FIXME_GROUPNAME && chroot . usr/sbin/grpconv; then echo -e "NOTICE: Added new system group: FIXME_GROUPNAME (FIXME_GID).\n" else echo -e "WARNING: Failed to add required group: FIXME_GROUPNAME.\n" fi } grep "^FIXME_USERNAME:" etc/passwd >/dev/null 2>&1 || { if chroot . usr/sbin/useradd -d FIXME_HOMEDIR -g FIXME_GROUPNAME -M -N -r -s /bin/false -u FIXME_UID FIXME_USERNAME && chroot . usr/sbin/pwconv; then echo -e "NOTICE: Added new system user: FIXME_USERNAME (FIXME_UID)\n" else echo -e "WARNING: Failed to add required user: FIXME_USERNAME.\n" fi } # Add service start to rc.local fgrep '/etc/rc.d/rc.FIXME' etc/rc.d/rc.local >/dev/null 2>&1 || { echo >>etc/rc.d/rc.local echo 'if [ -x /etc/rc.d/rc.FIXME ]; then' >>etc/rc.d/rc.local echo ' /etc/rc.d/rc.FIXME start' >>etc/rc.d/rc.local echo 'fi' >>etc/rc.d/rc.local } # If rc.local_shutdown doesn't exist, create it. [ -e etc/rc.d/rc.local_shutdown ] || { echo '#!/bin/sh' >etc/rc.d/rc.local_shutdown chmod 755 etc/rc.d/rc.local_shutdown } # Add service shutdown to rc.local_shutdown fgrep '/etc/rc.d/rc.FIXME' etc/rc.d/rc.local_shutdown || { echo >>etc/rc.d/rc.local_shutdown echo 'if [ -x /etc/rc.d/rc.FIXME ]; then' >>etc/rc.d/rc.local_shutdown echo ' /etc/rc.d/rc.FIXME stop' >>etc/rc.d/rc.local_shutdown echo 'fi' >>etc/rc.d/rc.local_shutdown }