CloverBootloader/CloverPackage/package/Scripts.templates/RcScripts/postinstall
2020-11-08 08:37:29 +03:00

152 lines
6.2 KiB
Bash
Executable File

#!/bin/bash
echo "==============================================="
echo "Post-Install RC Scripts"
echo "==============================================="
#echo "DEBUG: $ 1 = Full path to the installation package the installer app is processing: " $1
#echo "DEBUG: $ 2 = Full path to the installation destination: " $2
#echo "DEBUG: $ 3 = Installation volume (mountpoint) to receive the payload: " $3
#echo "DEBUG: $ 4 = Root directory for the system: " $4
echo "preinstall: Path to installer....... $1"
echo "preinstall: Path to destination..... $2"
echo "preinstall: Path to dest volume..... $3"
echo "preinstall: Root of system folder... $4"
#############################################################################
DEST_VOL="$3"
EFI_ROOT_DIR=$(cd "${DEST_VOL}"/Private/tmp/EFIROOTDIR; pwd -P)
CLOVER_INSTALLER_PLIST_NEW="${DEST_VOL}@CLOVER_INSTALLER_PLIST_NEW@"
install_log="${DEST_VOL}/Private/tmp/Clover_Install_Log.txt"
srcvolume="$DEST_VOL"
destroot="$DEST_VOL"
plistbuddy='/usr/libexec/PlistBuddy'
installer_on_target_refid='@INSTALLER_ON_TARGET_REFID@'
installer_on_all_volumes_refid='@INSTALLER_ON_ALL_VOLUMES_REFID@'
echo "======================================================" >> "$install_log"
echo "Installing RC Scripts" >> "$install_log"
echo "" >> "$install_log"
# Get the options
install_on_target=$($plistbuddy -c "Print $installer_on_target_refid" \
"$CLOVER_INSTALLER_PLIST_NEW" 2>/dev/null)
install_on_all_volumes=$($plistbuddy -c "Print $installer_on_all_volumes_refid" \
"$CLOVER_INSTALLER_PLIST_NEW" 2>/dev/null)
# Source the rc scripts library
source ./rc_scripts.lib
# Installing the RC scripts on all internal OSX system Volumes
if [[ "$install_on_all_volumes" == true ]]; then
IFS=$'\n' # ' fix xemacs fontification
for mountPoint in $(getInternalOSXSystemVolumes); do
[[ "$mountPoint" == $destroot ]] && continue
rm -f "${mountPoint}/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist"
rm -f "${mountPoint}/Library/Application Support/Clover/CloverDaemonNew"
rm -f "${mountPoint}/Library/Application Support/Clover/CloverLogOut"
rm -f "${mountPoint}/Library/Application Support/Clover/CloverWrapper.sh"
echo "Installing RC scripts in '$mountPoint' volume" >> "$install_log"
# Remove old rc.local and rc.shutdown.local scripts
[[ $(grep -ic Clover "${mountPoint}/etc/rc.local" 2>/dev/null) -gt 0 ]] && \
rm -f "${mountPoint}/etc/rc.local"
[[ $(grep -ic Clover "${mountPoint}/etc/rc.shutdown.local" 2>/dev/null) -gt 0 ]] && \
rm -f "${mountPoint}/etc/rc.shutdown.local"
while read -r -u3 file; do
srcfile=$(echo "${srcvolume}/$file" | sed -E 's#[/]{2,}#/#g')
destfile=$(echo "${mountPoint}/$file" | sed -E 's#[/]{2,}#/#g')
destdir=$(dirname "$destfile")
if [[ ! -d "$destdir" ]]; then
mkdir -p "$destdir"
chown root:wheel "$destdir"
chmod 755 "$destdir"
fi
case "$file" in
*.d/*.local)
if [[ -f "$destfile.disabled" ]]; then
echo "Removing $destfile"
rm -f "$destfile"
destfile="$destfile.disabled"
fi
;;
*.d/*.local.disabled)
enabledfile="${file%.disabled}"
echo "Removing $destroot/$enabledfile"
rm -f "$destroot/$enabledfile"
;;
esac
echo "Copying $srcfile to $destfile"
cp -pvf "$srcfile" "$destfile"
chown root:wheel "$destfile"
case "$file" in
*.plist) chmod 600 "$destfile" ;;
*) chmod 755 "$destfile" ;;
esac
done 3< <(cat ./Tools/rc.files)
done
fi
# Installing the RC scripts on target volume
if [[ "$install_on_target" == true ]]; then
echo "Installing RC scripts on target volume '$destroot'" >> "$install_log"
# Remove old rc.local and rc.shutdown.local scripts
[[ $(grep -ic Clover "${destroot}/etc/rc.local" 2>/dev/null) -gt 0 ]] && \
rm -f "${destroot}/etc/rc.local"
[[ $(grep -ic Clover "${destroot}/etc/rc.shutdown.local" 2>/dev/null) -gt 0 ]] && \
rm -f "${destroot}/etc/rc.shutdown.local"
if [[ -f '/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist' ]]; then
launchctl unload '/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'
rm -f '/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'
fi
rm -f '/Library/Application Support/Clover/CloverDaemonNew'
rm -f '/Library/Application Support/Clover/CloverLogOut'
rm -f '/Library/Application Support/Clover/CloverWrapper.sh'
fi
while read -r -u3 file; do
srcfile=$(echo "${srcvolume}/$file" | sed -E 's#[/]{2,}#/#g')
if [[ "$install_on_target" == true ]]; then
case "$file" in
*.d/*.local)
[[ -f "$destroot/$file.disabled" ]] && \
mv -f "$srcfile" "$destroot/${file}.disabled"
;;
*.d/*.local.disabled)
enabledfile="${file%.disabled}"
rm -fv "$destroot/$enabledfile"
;;
esac
else
# Cleanup: remove file and dir
echo "Removing $srcfile"
rm -f "$srcfile"
localdir=$(dirname "$srcfile")
while [[ "$localdir" != '/' ]]; do
rmdir "$localdir" &>/dev/null
localdir=$(dirname "$localdir")
done
fi
done 3< <(cat ./Tools/rc.files)
# Compatibility with old custom scripts
if [[ "$install_on_target" == true ]]; then
if [[ -x "${destroot}/etc/custom.rc.local" ]]; then
echo "Moving ${destroot}/etc/custom.rc.local to ${destroot}/etc/rc.boot.d/50.custom.local" \
>> "$install_log"
mv -f "${destroot}/etc/custom.rc.local" "${destroot}/etc/rc.boot.d/50.custom.local"
fi
if [[ -x "${destroot}/etc/custom.rc.shutdown.local" ]]; then
echo "Moving ${destroot}/etc/custom.rc.shutdown.local to ${destroot}/etc/rc.shutdown.d/50.custom.local" \
>> "$install_log"
mv -f "${destroot}/etc/custom.rc.shutdown.local" "${destroot}/etc/rc.shutdown.d/50.custom.local"
fi
fi
echo "" >> "$install_log"