mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-20 15:48:18 +01:00
152 lines
6.2 KiB
Bash
Executable File
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}"/EFIROOTDIR; pwd -P)
|
|
CLOVER_INSTALLER_PLIST_NEW="${DEST_VOL}@CLOVER_INSTALLER_PLIST_NEW@"
|
|
install_log="${DEST_VOL}/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"
|