mirror of
https://github.com/gosticks/SwiftGit2.git
synced 2025-10-16 11:55:34 +00:00
The xcpretty gem is used for CI builds, but not for local Xcode builds. The Travis configuration already ensures that xcpretty is installed, so including it in the main bootstrap script is unnecessary.
131 lines
2.8 KiB
Bash
Executable File
131 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export SCRIPT_DIR=$(dirname "$0")
|
|
|
|
##
|
|
## Configuration Variables
|
|
##
|
|
|
|
config ()
|
|
{
|
|
# A whitespace-separated list of executables that must be present and locatable.
|
|
# These will each be installed through Homebrew if not found.
|
|
: ${REQUIRED_TOOLS="cmake libssh2 libtool autoconf automake pkg-config"}
|
|
|
|
export REQUIRED_TOOLS
|
|
}
|
|
|
|
##
|
|
## Bootstrap Process
|
|
##
|
|
|
|
main ()
|
|
{
|
|
config
|
|
|
|
local submodules=$(git submodule status)
|
|
local result=$?
|
|
|
|
if [ "$result" -ne "0" ]
|
|
then
|
|
exit $result
|
|
fi
|
|
|
|
if [ -n "$submodules" ]
|
|
then
|
|
echo "*** Updating submodules..."
|
|
update_submodules
|
|
fi
|
|
|
|
if [ -n "$REQUIRED_TOOLS" ]
|
|
then
|
|
echo "*** Checking dependencies..."
|
|
check_deps
|
|
fi
|
|
}
|
|
|
|
check_deps ()
|
|
{
|
|
# Check if Homebrew is installed
|
|
which -s brew
|
|
local result=$?
|
|
|
|
if [ "$result" -ne "0" ]
|
|
then
|
|
echo
|
|
echo "Homebrew is not installed (http://brew.sh). You will need to manually ensure the following tools are installed:"
|
|
echo " $REQUIRED_TOOLS"
|
|
echo
|
|
echo "Additionally, the following libssh2 files must be symlinked under /usr/local:"
|
|
echo " lib/libssh2.a include/libssh2.h include/libssh2_sftp.h include/libssh2_publickey.h"
|
|
exit $result
|
|
fi
|
|
|
|
# Ensure that we have libgit2's dependencies installed.
|
|
installed=`brew list`
|
|
|
|
for tool in $REQUIRED_TOOLS
|
|
do
|
|
# Skip packages that are already installed.
|
|
echo "$installed" | grep -q "$tool" && code=$? || code=$?
|
|
|
|
if [ "$code" -eq "0" ]
|
|
then
|
|
continue
|
|
elif [ "$code" -ne "1" ]
|
|
then
|
|
exit $code
|
|
fi
|
|
|
|
echo "*** Installing $tool with Homebrew..."
|
|
brew install "$tool"
|
|
done
|
|
|
|
brew_prefix=`brew --prefix`
|
|
expected_prefix=/usr/local
|
|
|
|
if [ "$brew_prefix" != "$expected_prefix" ]
|
|
then
|
|
echo "*** Adding soft links into $expected_prefix..."
|
|
|
|
products=(lib/libssh2.a include/libssh2.h include/libssh2_sftp.h include/libssh2_publickey.h)
|
|
|
|
for product in "${products[@]}"
|
|
do
|
|
destination="$expected_prefix/$product"
|
|
if [ -e "$destination" ]
|
|
then
|
|
continue
|
|
fi
|
|
|
|
sudo mkdir -p "$(dirname "$destination")"
|
|
sudo ln -s "$brew_prefix/$product" "$destination"
|
|
done
|
|
fi
|
|
}
|
|
|
|
bootstrap_submodule ()
|
|
{
|
|
local bootstrap="script/bootstrap"
|
|
|
|
if [ -e "$bootstrap" ]
|
|
then
|
|
echo "*** Bootstrapping $name..."
|
|
"$bootstrap" >/dev/null
|
|
else
|
|
update_submodules
|
|
fi
|
|
}
|
|
|
|
update_submodules ()
|
|
{
|
|
git submodule sync --quiet && \
|
|
git submodule update --init && \
|
|
git submodule foreach --quiet bootstrap_submodule
|
|
}
|
|
|
|
export -f bootstrap_submodule
|
|
export -f update_submodules
|
|
|
|
main
|