43624a3c77
Changed DOCKER_LFS_BUILD_VERSION to default 0.5.3 for now instead of auto updating by version. Added complexity and delays with no real utility Removed BUILD_LOCAL option so that it always built local. Added complexity with no real utility Fixed default key behavior
169 lines
5.7 KiB
Bash
Executable File
169 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
|
|
CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd)
|
|
SPEC=${CURDIR}/SPECS/git-lfs.spec
|
|
if [[ ${NODEPS:-0} == 0 ]]; then
|
|
RPMBUILD=(rpmbuild --define "_topdir ${CURDIR}")
|
|
else
|
|
RPMBUILD=(rpmbuild --define "_topdir ${CURDIR}" --nodeps)
|
|
fi
|
|
LOG=${CURDIR}/build.log
|
|
SUDO=${SUDO=`if which sudo > /dev/null 2>&1; then echo sudo; fi`}
|
|
export PATH=${PATH}:/usr/local/bin
|
|
|
|
exec 6>&1
|
|
exec 7>&2
|
|
|
|
exec > $LOG
|
|
exec 2>> $LOG
|
|
|
|
set -vx
|
|
|
|
echo "Downloading/checking for some essentials..." >&6
|
|
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
|
|
|
|
REDHAT_VERSION=($(head -n 1 /etc/redhat-release | \grep -Eo '[0-9]+'))
|
|
REDHAT_NAME=$(awk '{print $1}' /etc/redhat-release)
|
|
|
|
if [[ ${REDHAT_VERSION[0]} == 5 ]]; then
|
|
if ! rpm -q epel-release > /dev/null 2>&1; then
|
|
$SUDO yum install -y epel-release
|
|
fi
|
|
fi
|
|
$SUDO yum install -y make curl which rpm-build tar bison perl-Digest-SHA
|
|
|
|
mkdir -p ${CURDIR}/{BUILD,BUILDROOT,SOURCES,RPMS,SRPMS}
|
|
|
|
if ( [[ ${GIT_VERSION[0]} == 1 ]] && [[ ${GIT_VERSION[1]} < 8 ]] ) || [[ ${GIT_VERSION[0]} < 1 ]]; then
|
|
if [[ ${REDHAT_VERSION[0]} != 6 ]]; then
|
|
$SUDO yum install -y git
|
|
else
|
|
$SUDO yum install -y curl-devel expat-devel gettext openssl-devel zlib-devel perl-Error perl-ExtUtils-MakeMaker emacs asciidoc xmlto gcc
|
|
#I only include emacs here because the real RHEL rpm create emacs hook, so I will too for MAX compatibility
|
|
pushd ${CURDIR}/SOURCES
|
|
curl -L -O http://vault.centos.org/6.6/os/Source/SPackages/git-1.7.1-3.el6_4.1.src.rpm
|
|
rpm2cpio git-1.7.1-3.el6_4.1.src.rpm | cpio -div git-init.el git.xinetd.in git.conf.httpd git-gui.desktop gitweb.conf.in
|
|
NEW_GIT_VERSION=$(\grep ^Version: ${CURDIR}/SPECS/git.spec | sed 's|Version:\s*\(.*\)|\1|')
|
|
curl -L -O http://kernel.org/pub/software/scm/git/git-${NEW_GIT_VERSION}.tar.xz
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/git.spec
|
|
$SUDO yum install -y --nogpgcheck ${CURDIR}/RPMS/*/git-${NEW_GIT_VERSION}*.rpm ${CURDIR}/RPMS/*/perl-Git-${NEW_GIT_VERSION}*.rpm
|
|
popd
|
|
fi
|
|
fi
|
|
|
|
if ! which go; then
|
|
echo "Installing go... one way or another" >&6
|
|
if [[ ${REDHAT_VERSION[0]} == 5 ]]; then
|
|
$SUDO yum install -y curl.x86_64 glibc gcc
|
|
${CURDIR}/golang_patch.bsh
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/golang.spec
|
|
$SUDO yum install -y --nogpgcheck ${CURDIR}/RPMS/noarch/golang-1*.rpm \
|
|
${CURDIR}/RPMS/noarch/golang-pkg-bin-linux-amd64-1*.rpm \
|
|
${CURDIR}/RPMS/noarch/golang-src-1*.noarch.rpm \
|
|
${CURDIR}/RPMS/noarch/golang-pkg-linux-amd64-1*.noarch.rpm \
|
|
${CURDIR}/RPMS/noarch/golang-pkg-linux-386-1*.noarch.rpm
|
|
else
|
|
$SUDO yum install -y epel-release
|
|
$SUDO yum install -y golang
|
|
fi
|
|
fi
|
|
|
|
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)
|
|
fi
|
|
|
|
if [[ ${RUBY_VERSION[0]} < 2 ]]; then
|
|
if [[ ${REDHAT_VERSION[0]} < 7 ]]; then
|
|
echo "Downloading ruby..." >&6
|
|
|
|
if ! rpm -q epel-release; then
|
|
$SUDO yum install -y epel-release #Optional part of centos
|
|
fi
|
|
|
|
$SUDO yum install -y patch libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel zlib-devel libffi-devel openssl-devel automake libtool sqlite-devel
|
|
pushd ${CURDIR}/SOURCES
|
|
curl -L -O http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
|
|
popd
|
|
echo "Building ruby..." >&6
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/ruby.spec
|
|
echo "Installing ruby..." >&6
|
|
$SUDO yum install -y --nogpgcheck ${CURDIR}/RPMS/x86_64/ruby*.rpm
|
|
else
|
|
$SUDO yum install -y ruby ruby-devel
|
|
fi
|
|
fi
|
|
|
|
if ! which ronn; then
|
|
echo "Downloading some ruby gems..." >&6
|
|
pushd ${CURDIR}/SOURCES
|
|
curl -L -O https://rubygems.org/downloads/rdiscount-2.1.8.gem
|
|
curl -L -O https://rubygems.org/downloads/hpricot-0.8.6.gem
|
|
curl -L -O https://rubygems.org/downloads/mustache-1.0.1.gem
|
|
curl -L -O https://rubygems.org/downloads/ronn-0.7.3.gem
|
|
popd
|
|
|
|
echo "Building ruby gems..." >&6
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/rubygem-rdiscount.spec
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/rubygem-mustache.spec
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/rubygem-hpricot.spec
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/rubygem-ronn.spec
|
|
|
|
echo "Installing ruby gems..." >&6
|
|
$SUDO yum install -y --nogpgcheck $(ls ${CURDIR}/RPMS/noarch/rubygem-*.rpm ${CURDIR}/RPMS/x86_64/rubygem-*.rpm | grep -v debuginfo)
|
|
fi
|
|
|
|
pushd ${CURDIR}/..
|
|
#Yes, compile lfs before compiling lfs...
|
|
./script/bootstrap
|
|
#Use the version output to grab the version number and short sha
|
|
#(that yes, I could have gotten from git myself)
|
|
LFS_VERSION=$(./bin/git-lfs version | sed -r 's|.*/([0-9.]*).*|\1|')
|
|
sed -i 's|\(^Version:\s*\).*|\1'"${LFS_VERSION}"'|' ${CURDIR}/SPECS/git-lfs.spec
|
|
LFS_SHA=$(git rev-parse --short HEAD)
|
|
sed -i 's|\(^commit=*\).*|\1'"${LFS_VERSION}"'|' ./script/run
|
|
popd
|
|
|
|
#Prep the SOURCES dir for git-lfs
|
|
echo "Zipping up current checkout of git-lfs..." >&6
|
|
|
|
rm -rvf ${CURDIR}/tmptar
|
|
mkdir -p ${CURDIR}/tmptar/git-lfs-${LFS_VERSION}
|
|
pushd ${CURDIR}/..
|
|
#I started running out of space in the docker, so I needed to copy a little less waste
|
|
tar -c . --exclude tmptar --exclude repos | tar -x -C ${CURDIR}/tmptar/git-lfs-${LFS_VERSION}/
|
|
popd
|
|
pushd ${CURDIR}/tmptar/git-lfs-${LFS_VERSION}
|
|
git clean -xdf
|
|
rm -rvf .git
|
|
popd
|
|
pushd ${CURDIR}/tmptar
|
|
tar -zcf ${CURDIR}/SOURCES/git-lfs-${LFS_VERSION}.tar.gz git-lfs-${LFS_VERSION}
|
|
popd
|
|
rm -rvf ${CURDIR}/tmptar
|
|
|
|
#TODO TASK 2
|
|
#cp ${CURDIR}/../docker/public.key ${CURDIR}/SOURCES/RPM-GPG-KEY-GITLFS
|
|
touch ${CURDIR}/SOURCES/RPM-GPG-KEY-GITLFS
|
|
|
|
|
|
echo "Build git-lfs rpm..." >&6
|
|
|
|
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/git-lfs.spec
|
|
|
|
echo "All Done!" >&6
|