
- This should help avoid this regressing - Remove existing Homebrew installation(s) - Install it twice to ensure that installing over the top of an existing installation works as expected - Remove existing API cache to ensure we have the freshest files from the API in our package
63 lines
2.1 KiB
Bash
Executable File
63 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# $1 Full path to the installer (unused)
|
|
# $2 Location of the Homebrew installation we may need to move into place
|
|
# $3 Target install location (unused)
|
|
# $4 System root directory (unused)
|
|
set -eu
|
|
|
|
# disable analytics while installing
|
|
export HOMEBREW_NO_ANALYTICS_THIS_RUN=1
|
|
export HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT=1
|
|
|
|
# verify the installation exists
|
|
# default to /opt/homebrew to make development/testing easier
|
|
homebrew_directory="${2:-/opt/homebrew}"
|
|
if [[ ! -d "${homebrew_directory:?}" ]]
|
|
then
|
|
echo "no directory at ${homebrew_directory}!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# add Git to path
|
|
export PATH="/Library/Developer/CommandLineTools/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}"
|
|
|
|
# reset Git repository
|
|
cd "${homebrew_directory}"
|
|
git config --global --add safe.directory "${homebrew_directory}"
|
|
git reset --hard
|
|
git checkout --force master
|
|
git branch | grep -v '\*' | xargs -n 1 git branch --delete --force
|
|
git config --global --unset safe.directory "${homebrew_directory}"
|
|
|
|
# move to /usr/local if on x86_64
|
|
if [[ $(uname -m) == "x86_64" ]]
|
|
then
|
|
sudo mkdir -vp /usr/local/bin /usr/local/Homebrew
|
|
cp -a "${homebrew_directory}"/* "${homebrew_directory}/".??* "/usr/local/Homebrew/"
|
|
|
|
# create symlink to /usr/local/bin/brew
|
|
ln -svf "../Homebrew/bin/brew" "/usr/local/bin/brew"
|
|
|
|
homebrew_directory="/usr/local/Homebrew"
|
|
cd /usr/local
|
|
fi
|
|
|
|
# create missing directories
|
|
sudo mkdir -vp Cellar Frameworks etc include lib opt sbin share var/homebrew/linked
|
|
|
|
# set permissions
|
|
logged_in_user=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }')
|
|
group=$(id -gn "${logged_in_user}")
|
|
if [[ "${homebrew_directory}" == "/usr/local/Homebrew" ]]
|
|
then
|
|
chown -R "${logged_in_user}:${group}" Cellar Frameworks Homebrew bin etc include lib sbin share var/homebrew/linked
|
|
else
|
|
chown -R "${logged_in_user}:${group}" .
|
|
fi
|
|
|
|
# move API cache to ~/Library/Caches/Homebrew
|
|
user_api_cache_dir=~"${logged_in_user}"/Library/Caches/Homebrew/api
|
|
mkdir -vp "${user_api_cache_dir}"
|
|
mv -v "${homebrew_directory}/cache_api/"* "${user_api_cache_dir}"
|
|
rm -vrf "${homebrew_directory}/cache_api"
|