git-lfs/rpm/build_rpms.bsh

165 lines
5.7 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bash
set -eu
CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd)
SPEC=${CURDIR}/SPECS/git-lfs.spec
VERSION=$(\grep '^const Version' "${CURDIR}/../lfs/lfs.go" | sed 's|const Version = "\([0-9.]*\)"|\1|')
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
2015-07-09 17:22:48 +00:00
if which git > /dev/null 2>&1; then
GIT_VERSION=($(git --version))
2015-07-12 19:56:00 +00:00
IFS_OLD=${IFS}
IFS=.
GIT_VERSION=(${GIT_VERSION[2]})
IFS=${IFS_OLD}
2015-07-09 17:22:48 +00:00
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}
2015-07-09 17:22:48 +00:00
if ( [[ ${GIT_VERSION[0]} == 1 ]] && [[ ${GIT_VERSION[1]} < 8 ]] ) || [[ ${GIT_VERSION[0]} < 1 ]]; then
if [[ ${REDHAT_VERSION[0]} != 6 ]]; then
2015-07-09 17:22:48 +00:00
$SUDO yum install -y git
else
2015-07-09 17:22:48 +00:00
$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
2015-07-09 17:22:48 +00:00
$SUDO yum install -y --nogpgcheck ${CURDIR}/RPMS/*/git-${NEW_GIT_VERSION}*.rpm ${CURDIR}/RPMS/*/perl-Git-${NEW_GIT_VERSION}*.rpm
popd
fi
fi
#Prep the SOURCES dir for git-lfs
if [ "${BUILD_LOCAL:=0}" == "1" ]; then
echo "Zipping up current checkout of git-lfs..." >&6
rm -rvf ${CURDIR}/tmptar
mkdir -p ${CURDIR}/tmptar/git-lfs-${VERSION}
pushd ${CURDIR}/..
tar -c . --exclude tmptar | tar -x -C ${CURDIR}/tmptar/git-lfs-${VERSION}/
popd
pushd ${CURDIR}/tmptar
git clean -xdf
rm -rvf ${CURDIR}/tmptar/.git
tar -zcf ${CURDIR}/SOURCES/git-lfs-${VERSION}.tar.gz git-lfs-${VERSION}
popd
rm -rvf ${CURDIR}/tmptar
else
echo "Downloading git-lfs..." >&6
mkdir -p ${CURDIR}/SOURCES
pushd ${CURDIR}/SOURCES
curl -L -o git-lfs-${VERSION}.tar.gz https://github.com/github/git-lfs/archive/v${VERSION}.tar.gz
popd
fi
cp ${CURDIR}/../docker/public.key ${CURDIR}/SOURCES/RPM-GPG-KEY-GITLFS
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
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
echo "Build git-lfs rpm..." >&6
sed -i 's|\(Version:\s*\).*|\1'"${VERSION}"'|' ${CURDIR}/SPECS/git-lfs.spec
cp ${CURDIR}/../docker/public.key ${CURDIR}/SOURCES/
"${RPMBUILD[@]}" -ba ${CURDIR}/SPECS/git-lfs.spec
#if [ "`stat -c '%U' ${CURDIR}/SPECS/git-lfs.spec`" == "UNKNOWN" ]; then
# $SUDO cp ${CURDIR}/SPECS/git-lfs.spec ${CURDIR}/SPECS/git-lfs2.spec
# "${RPMBUILD[@]}" -bs ${CURDIR}/SPECS/git-lfs2.spec
# $SUDO rm -f ${CURDIR}/SPECS/git-lfs2.spec
#else
# "${RPMBUILD[@]}" -bs ${CURDIR}/SPECS/git-lfs.spec
#fi
echo "All Done!" >&6