From e77cea382ea8a0b56378e4d3662fd5803a19b628 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 24 Sep 2015 09:40:54 +0800 Subject: [PATCH] rpm: Improve rpm build scripts This makes we can build in a centos container. --- dist/redhat/build_rpm.sh | 2 +- dist/redhat/centos_dep/build_dependency.sh | 105 ++++++++++++++------- 2 files changed, 72 insertions(+), 35 deletions(-) diff --git a/dist/redhat/build_rpm.sh b/dist/redhat/build_rpm.sh index 65a25c48d7..6f3f5c9d00 100755 --- a/dist/redhat/build_rpm.sh +++ b/dist/redhat/build_rpm.sh @@ -37,6 +37,6 @@ if [ "$OS" = "Fedora" ]; then rpmbuild -bs --define "_topdir $RPMBUILD" $RPMBUILD/SPECS/scylla-server.spec mock rebuild --resultdir=`pwd`/build/rpms $RPMBUILD/SRPMS/scylla-server-$VERSION*.src.rpm else - sudo yum-builddep $RPMBUILD/SPECS/scylla-server.spec + sudo yum-builddep -y $RPMBUILD/SPECS/scylla-server.spec rpmbuild -ba --define "_topdir $RPMBUILD" $RPMBUILD/SPECS/scylla-server.spec fi diff --git a/dist/redhat/centos_dep/build_dependency.sh b/dist/redhat/centos_dep/build_dependency.sh index 18ee7b23b6..12452c3ecc 100755 --- a/dist/redhat/centos_dep/build_dependency.sh +++ b/dist/redhat/centos_dep/build_dependency.sh @@ -1,13 +1,36 @@ #!/bin/sh -e export RPMBUILD=`pwd`/build/rpmbuild +do_install() +{ + pkg=$1 + name=${pkg/%.rpm/} + if ! rpm -qs $name >/dev/null 2>&1; then + sudo yum install -y $RPMBUILD/RPMS/x86_64/$pkg || sudo yum install -y $RPMBUILD/RPMS/noarch/$pkg + fi + echo Install $name done +} + sudo yum install -y wget yum-utils rpm-build rpmdevtools gcc gcc-c++ make patch mkdir -p build/srpms cd build/srpms -wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/b/boost-1.57.0-6.fc22.src.rpm -wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/n/ninja-build-1.5.3-2.fc22.src.rpm -wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/r/ragel-6.8-3.fc22.src.rpm -wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/r/re2c-0.13.5-9.fc22.src.rpm + +if [ ! -f boost-1.57.0-6.fc22.src.rpm ]; then + wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/b/boost-1.57.0-6.fc22.src.rpm +fi + +if [ ! -f ninja-build-1.5.3-2.fc22.src.rpm ]; then + wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/n/ninja-build-1.5.3-2.fc22.src.rpm +fi + +if [ ! -f ragel-6.8-3.fc22.src.rpm ]; then + wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/r/ragel-6.8-3.fc22.src.rpm +fi + +if [ ! -f re2c-0.13.5-9.fc22.src.rpm ]; then + wget http://download.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/r/re2c-0.13.5-9.fc22.src.rpm +fi + cd - sudo yum install -y epel-release @@ -15,41 +38,55 @@ sudo yum install -y cryptopp cryptopp-devel jsoncpp jsoncpp-devel lz4 lz4-devel sudo ln -sf /usr/bin/python3.4 /usr/bin/python3 sudo yum install -y scl-utils -sudo yum install -y https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-7-x86_64/download/rhscl-devtoolset-3-epel-7-x86_64.noarch.rpm +if ! rpm -qs rhscl-devtoolset-3-epel-7-x86_64-1-2.noarch; then + sudo yum install -y https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-7-x86_64/download/rhscl-devtoolset-3-epel-7-x86_64.noarch.rpm +fi sudo yum install -y devtoolset-3-gcc-c++ sudo yum install -y python-devel libicu-devel openmpi-devel mpich-devel libstdc++-devel bzip2-devel zlib-devel -rpmbuild --define "_topdir $RPMBUILD" --without python3 --rebuild build/srpms/boost-1.57.0-6.fc22.src.rpm -sudo yum install -y `ls $RPMBUILD/RPMS/x86_64/boost*|grep -v debuginfo` +if [ ! -f $RPMBUILD/RPMS/x86_64/boost-1.57.0-6.el7.centos.x86_64.rpm ]; then + rpmbuild --define "_topdir $RPMBUILD" --without python3 --rebuild build/srpms/boost-1.57.0-6.fc22.src.rpm +fi +for i in `ls $RPMBUILD/RPMS/x86_64/boost*|grep -v debuginfo`;do + do_install `basename $i` +done -rpmbuild --define "_topdir $RPMBUILD" --rebuild build/srpms/re2c-0.13.5-9.fc22.src.rpm -sudo yum install -y $RPMBUILD/RPMS/x86_64/re2c-0.13.5-9.el7.centos.x86_64.rpm +if [ ! -f $RPMBUILD/RPMS/x86_64/re2c-0.13.5-9.el7.centos.x86_64.rpm ]; then + rpmbuild --define "_topdir $RPMBUILD" --rebuild build/srpms/re2c-0.13.5-9.fc22.src.rpm +fi +do_install re2c-0.13.5-9.el7.centos.x86_64.rpm -rpm --define "_topdir $RPMBUILD" -ivh build/srpms/ninja-build-1.5.3-2.fc22.src.rpm -patch $RPMBUILD/SPECS/ninja-build.spec < dist/redhat/centos_dep/ninja-build.diff -rpmbuild --define "_topdir $RPMBUILD" -ba $RPMBUILD/SPECS/ninja-build.spec -sudo yum install -y $RPMBUILD/RPMS/x86_64/ninja-build-1.5.3-2.el7.centos.x86_64.rpm +if [ ! -f $RPMBUILD/RPMS/x86_64/ninja-build-1.5.3-2.el7.centos.x86_64.rpm ]; then + rpm --define "_topdir $RPMBUILD" -ivh build/srpms/ninja-build-1.5.3-2.fc22.src.rpm + patch $RPMBUILD/SPECS/ninja-build.spec < dist/redhat/centos_dep/ninja-build.diff + rpmbuild --define "_topdir $RPMBUILD" -ba $RPMBUILD/SPECS/ninja-build.spec +fi +do_install ninja-build-1.5.3-2.el7.centos.x86_64.rpm -sudo yum install -y gcc-objc -rpm --define "_topdir $RPMBUILD" -ivh build/srpms/ragel-6.8-3.fc22.src.rpm -patch $RPMBUILD/SPECS/ragel.spec < dist/redhat/centos_dep/ragel.diff -rpmbuild --define "_topdir $RPMBUILD" -ba $RPMBUILD/SPECS/ragel.spec -sudo yum install -y $RPMBUILD/RPMS/x86_64/ragel-6.8-3.el7.centos.x86_64.rpm - -mkdir build/antlr3-tool-3.5.2 -cp dist/redhat/centos_dep/antlr3 build/antlr3-tool-3.5.2 -cd build/antlr3-tool-3.5.2 -wget http://www.antlr3.org/download/antlr-3.5.2-complete-no-st3.jar -cd - -cd build -tar cJpf $RPMBUILD/SOURCES/antlr3-tool-3.5.2.tar.xz antlr3-tool-3.5.2 -cd - -rpmbuild --define "_topdir $RPMBUILD" -ba dist/redhat/centos_dep/antlr3-tool.spec -sudo yum install -y $RPMBUILD/RPMS/noarch/antlr3-tool-3.5.2-1.el7.centos.noarch.rpm - -wget -O build/3.5.2.tar.gz https://github.com/antlr/antlr3/archive/3.5.2.tar.gz -mv build/3.5.2.tar.gz $RPMBUILD/SOURCES -rpmbuild --define "_topdir $RPMBUILD" -ba dist/redhat/centos_dep/antlr3-C++-devel.spec -sudo yum install -y $RPMBUILD/RPMS/x86_64/antlr3-C++-devel-3.5.2-1.el7.centos.x86_64.rpm +if [ ! -f $RPMBUILD/RPMS/x86_64/ragel-6.8-3.el7.centos.x86_64.rpm ]; then + sudo yum install -y gcc-objc + rpm --define "_topdir $RPMBUILD" -ivh build/srpms/ragel-6.8-3.fc22.src.rpm + patch $RPMBUILD/SPECS/ragel.spec < dist/redhat/centos_dep/ragel.diff + rpmbuild --define "_topdir $RPMBUILD" -ba $RPMBUILD/SPECS/ragel.spec +fi +do_install ragel-6.8-3.el7.centos.x86_64.rpm +if [ ! -f $RPMBUILD/RPMS/noarch/antlr3-tool-3.5.2-1.el7.centos.noarch.rpm ]; then + mkdir build/antlr3-tool-3.5.2 + cp dist/redhat/centos_dep/antlr3 build/antlr3-tool-3.5.2 + cd build/antlr3-tool-3.5.2 + wget http://www.antlr3.org/download/antlr-3.5.2-complete-no-st3.jar + cd - + cd build + tar cJpf $RPMBUILD/SOURCES/antlr3-tool-3.5.2.tar.xz antlr3-tool-3.5.2 + cd - + rpmbuild --define "_topdir $RPMBUILD" -ba dist/redhat/centos_dep/antlr3-tool.spec +fi +do_install antlr3-tool-3.5.2-1.el7.centos.noarch.rpm +if [ ! -f $RPMBUILD/RPMS/x86_64/antlr3-C++-devel-3.5.2-1.el7.centos.x86_64.rpm ];then + wget -O build/3.5.2.tar.gz https://github.com/antlr/antlr3/archive/3.5.2.tar.gz + mv build/3.5.2.tar.gz $RPMBUILD/SOURCES + rpmbuild --define "_topdir $RPMBUILD" -ba dist/redhat/centos_dep/antlr3-C++-devel.spec +fi +do_install antlr3-C++-devel-3.5.2-1.el7.centos.x86_64.rpm