#!/usr/bin/env bash set -eu CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd) SPEC=${CURDIR}/SPECS/git-lfs.spec VERSION=$(\grep "^Version:" ${SPEC} | \grep -Eo [0-9.]+) RPMBUILD=(rpmbuild --define "_topdir ${CURDIR}") LOG=${CURDIR}/build.log SUDO=${SUDO=sudo} 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 $SUDO yum install -y make curl which rpm-build tar bison REDHAT_VERSION=($(head -n 1 /etc/redhat-release | \grep -Eo '[0-9]+')) REDHAT_NAME=$(awk '{print $1}' /etc/redhat-release) mkdir -p ${CURDIR}/{BUILD,BUILDROOT,SOURCES,RPMS,SRPMS} if [ ! -e ${CURDIR}/SOURCES/v${VERSION}.tar.gz ]; then if [ "${BUILD_LOCAL:=0}" == "1" ]; then echo "Zipping up current checkout of git-lfs..." >&6 if [[ ${REDHAT_VERSION} == 5 ]]; then rm -rvf ${CURDIR}/tmptar mkdir -p ${CURDIR}/tmptar/git-lfs-${VERSION} tar -c .. --exclude rpm --exclude .git --exclude tmptar | tar -x -C tmptar/git-lfs-${VERSION}/ pushd ${CURDIR}/tmptar tar -zcf ${CURDIR}/SOURCES/v${VERSION}.tar.gz git-lfs-${VERSION} popd rm -rvf ${CURDIR}/tmptar else pushd ${CURDIR}/.. tar -zcf ${CURDIR}/SOURCES/v${VERSION}.tar.gz --exclude v${VERSION}.tar.gz --exclude .git --exclude rpm . --transform "s:^:git-lfs-${VERSION}/:" popd fi else echo "Downloading git-lfs..." >&6 mkdir -p ${CURDIR}/SOURCES pushd ${CURDIR}/SOURCES curl -L -O https://github.com/github/git-lfs/archive/v${VERSION}.tar.gz 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[@]}" -bb SPECS/golang.spec $SUDO yum install -y --nogpgcheck RPMS/noarch/golang-1*.rpm RPMS/noarch/golang-pkg-bin-linux-amd64-1*.rpm RPMS/noarch/golang-src-1*.noarch.rpm RPMS/noarch/golang-pkg-linux-amd64-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 if [[ ${REDHAT_VERSION[0]} == 5 ]]; then pushd ${CURDIR} $SUDO rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt curl -L -O http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm $SUDO yum install -y rpmforge-release-0.5.3-1.el5.rf.*.rpm rm rpmforge-release-0.5.3-1.el5.rf.*.rpm popd else $SUDO yum install epel-release #Part of centos 6+ fi 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[@]}" -bb SPECS/ruby.spec echo "Installing ruby..." >&6 $SUDO yum install -y --nogpgcheck 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 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[@]}" -bb SPECS/rubygem-rdiscount.spec "${RPMBUILD[@]}" -bb SPECS/rubygem-mustache.spec "${RPMBUILD[@]}" -bb SPECS/rubygem-hpricot.spec "${RPMBUILD[@]}" -bb SPECS/rubygem-ronn.spec echo "Installing ruby gems..." >&6 $SUDO yum install -y --nogpgcheck $(ls RPMS/noarch/rubygem-*.rpm RPMS/x86_64/rubygem-*.rpm | grep -v debuginfo) fi echo "Build git-lfs rpm..." >&6 "${RPMBUILD[@]}" -bb SPECS/git-lfs.spec "${RPMBUILD[@]}" -bs SPECS/git-lfs.spec echo "All Done!" >&6