git-lfs/script/centos-build
2015-11-18 11:32:52 -07:00

123 lines
3.4 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# This script works with CentOS 6 or 7
# The CentOS 5 kernel is too old for go's liking, but this script works on CentOS 5
set -eu
trap 'echo FAIL' ERR
REDHAT_VERSION=($(head -n 1 /etc/redhat-release | \grep -Eo '[0-9]+'))
cd $(dirname ${BASH_SOURCE[0]})
if [[ ${REDHAT_VERSION[0]} == 5 ]]; then
if ! rpm -q epel-release; then
yum install -y epel-release
fi
yum install -y bison git make man which perl-Digest-SHA
else
if [[ ${REDHAT_VERSION[0]} == 6 ]]; then
rpm -q epel-release || yum install -y epel-release
yum install -y bison golang make man which perl-Digest-SHA
if which git > /dev/null 2>&1; then
GIT_VERSION=($(git --version))
IFS_OLD=${IFS}
IFS=.
GIT_VERSION=(${GIT_VERSION[2]})
IFS=${IFS_OLD}
else
GIT_VERSION=(0 0 0)
fi
if ( [[ ${GIT_VERSION[0]} == 1 ]] && [[ ${GIT_VERSION[1]} < 8 ]] ) || [[ ${GIT_VERSION[0]} < 1 ]]; then
mkdir -p git_build
pushd git_build
curl -L -O https://www.kernel.org/pub/software/scm/git/git-2.4.5.tar.xz
yum install -y curl-devel expat-devel gettext openssl-devel zlib-devel perl-Error perl-ExtUtils-MakeMaker emacs asciidoc xmlto gcc tar
tar Jxvf git-*.tar.xz
pushd git-*/
make
make install prefix=/usr/local
popd
popd
rm -rf git_build
fi
else
yum install -y bison git golang make man which perl-Digest-SHA
fi
fi
if git rev-parse; then
cd $(git rev-parse --show-toplevel)
elif [ -e bootstrap ];then
cd ..
else
cd /tmp
[ -d git-lfs ] || git clone https://github.com/github/git-lfs
cd git-lfs
fi
if [[ ${REDHAT_VERSION[0]} == 5 ]]; then
if ! env PATH=${PATH}:`pwd`/go/bin which gofmt > /dev/null 2>&1; then
yum install -y gcc glibc
curl -L -O https://storage.googleapis.com/golang/go1.4.2.src.tar.gz
tar -zxvf go1.4.2.src.tar.gz
rm go1.4.2.src.tar.gz
pushd ./go/src
sed -i 's|.*--build-id.*||' ./cmd/go/build.go
./make.bash
#This will have a few failures, but that is expected in CentOS 5
./run.bash | true
popd
fi
#If go isn't in the path, then it's in the go dir, so add it to the path
if ! which gofmt > /dev/null 2>&1; then
export PATH=${PATH}:`pwd`/go/bin
fi
fi
mkdir -p src/github.com/github
if [ ! -e "src/github.com/github/git-lfs" ]; then
ln -s $(pwd) src/github.com/github/git-lfs
fi
GOPATH=`pwd` ./script/bootstrap
install -D bin/git-lfs /usr/local/bin
git lfs install
if which ruby > /dev/null 2>&1; then
IFS_OLD=${IFS}
IFS=.
RUBY_VERSION=($(ruby -e "print RUBY_VERSION"))
IFS=${IFS_OLD}
else
RUBY_VERSION=(0 0 0) #Thanks -u!
fi
if [[ ${RUBY_VERSION[0]} < 2 ]]; then
if [[ ${REDHAT_VERSION[0]} < 7 ]]; then
yum install -y tar
#if gpg isn't installed, everything actually works. if it is, the key must be added or rvm won't work
which gpg2 > /dev/null 2>&1 &&
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
which gpg > /dev/null 2>&1 &&
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
set +e #For CentOS 5
curl -L get.rvm.io | bash -s stable
set +u
source /usr/local/rvm/scripts/rvm
rvm install ruby
rvm use ruby
set -ue
elif grep -q ' 7' /etc/redhat-release; then
yum install -y ruby ruby-devel
fi
fi
gem install ronn
GOPATH=`pwd` ./script/man
install -D man/*.1 /usr/local/share/man/man1
git help lfs > /dev/null
echo SUCCESS