diff options
Diffstat (limited to 'build/build_quagga.sh')
-rwxr-xr-x | build/build_quagga.sh | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/build/build_quagga.sh b/build/build_quagga.sh deleted file mode 100755 index e33cd274..00000000 --- a/build/build_quagga.sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/env bash -############################################################################## -# Copyright (c) 2017 Tim Rozet (Red Hat) and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -set -xe - -ARTIFACT=None - -# Builds Quagga, Zebra and other dependency RPMs for CentOS 7 -# Install package dependencies -install_quagga_build_deps() { - sudo yum -y install automake bison flex libtool make readline-devel \ - texinfo texi2html rpm-build libcap-devel groff net-snmp-devel pam-devel glib2 glib2-devel epel-release spectool \ - wget git gcc-c++ openssl-devel boost-devel boost-static gtest zeromq-4.1.4 zeromq-devel-4.1.4 \ - capnproto-devel capnproto-libs capnproto - sudo yum -y groupinstall "Development Tools" -} - -display_usage () -{ -cat << EOF -$0 Builds Quagga/ZRPC and Dependency RPMs - -usage: $0 [ [-a | --artifact] artifact ] - -OPTIONS: - -a artifact to build (thrift, capnproto, quagga, zrpc). Default: All artifacts. - -c clean all build directories - -h help, prints this help text - -Example: -build_quagga.sh -a thrift -EOF -} - -parse_cmdline() { - while [ "${1:0:1}" = "-" ] - do - case "$1" in - -h|--help) - display_usage - exit 0 - ;; - -a|--artifact) - ARTIFACT=${2} - shift 2 - ;; - -c|--clean) - CLEAN="True" - shift 1 - ;; - *) - display_usage - exit 1 - ;; - esac - done - -} - -# Removes build directory folder and re-creates RPM DIRs to use -function quagga_clean(){ - rm -rf ${QUAGGA_BUILD_DIR} - sudo yum remove -y zrpc* quagga* thrift* c-capnproto* -} - -# Build Thrift RPM -function build_thrift(){ - rm -rf thrift - git clone https://git-wip-us.apache.org/repos/asf/thrift.git - pushd thrift - git checkout 0.10.0 - wget https://issues.apache.org/jira/secure/attachment/12840511/0002-THRIFT-3986-using-autoreconf-i-fails-because-of-miss.patch - wget https://issues.apache.org/jira/secure/attachment/12840512/0001-THRIFT-3987-externalise-declaration-of-thrift-server.patch - patch -p1 < 0002-THRIFT-3986-using-autoreconf-i-fails-because-of-miss.patch - patch -p1 < 0001-THRIFT-3987-externalise-declaration-of-thrift-server.patch - autoreconf -i - ./configure --without-qt4 --without-qt5 --without-csharp --without-java \ - --without-erlang --without-nodejs --without-perl --without-python \ - --without-php --without-php_extension --without-dart --without-ruby \ - --without-haskell --without-go --without-haxe --without-d - # Hack somehow the testing file of php is not there - # We will disable php anyhow later on. - touch lib/php/src/ext/thrift_protocol/run-tests.php - make dist - pushd contrib/ - spectool -g -R thrift.spec - mv ../thrift-*.tar.gz $rpmbuild/SOURCES/ - rpmbuild --define "_topdir $rpmbuild" -ba thrift.spec --define "without_ruby 1" --define "without-php 1" - popd > /dev/null - popd > /dev/null -} - -# c-capnproto RPM -# This is a library for capnproto in C. Not to be confused with -# the capnproto provided by the repos -function build_capnproto(){ - rm -rf c-capnproto - git clone https://github.com/opensourcerouting/c-capnproto - pushd c-capnproto - git checkout 332076e52257 - autoreconf -i - ./configure --without-gtest - make dist - - cp ${BUILD_ROOT}/rpm_specs/c_capnproto.spec $rpmbuild/SPECS/ - cp c-capnproto-*.tar.gz $rpmbuild/SOURCES/ - rpmbuild --define "_topdir $rpmbuild" -ba $rpmbuild/SPECS/c_capnproto.spec - popd > /dev/null -} - -build_quagga(){ - # Build Quagga - rm -rf quagga - sudo yum -y install $rpmbuild/RPMS/x86_64/*.rpm - git clone https://github.com/6WIND/quagga.git - pushd quagga > /dev/null - # checkout the parent of the bellow patch. - # Once the issue addressed by the patch is fixed - # these two lines can be removed. - git checkout 95bb0f4a - patch -p1 < ${PATCHES_DIR}/fix_quagga_make_dist.patch - autoreconf -i - ./configure --with-zeromq --with-ccapnproto --enable-user=quagga \ - --enable-group=quagga --enable-vty-group=quagga \ - --disable-doc --enable-multipath=64 - - # Quagga RPM - make dist - cp ${BUILD_ROOT}/rpm_specs/quagga.spec $rpmbuild/SPECS/ - cp quagga*.tar.gz $rpmbuild/SOURCES/ - cat > $rpmbuild/SOURCES/bgpd.conf <<EOF -hostname bgpd -password sdncbgpc -service advanced-vty -log stdout -line vty - exec-timeout 0 0 -debug bgp -debug bgp updates -debug bgp events -debug bgp fsm -EOF - rpmbuild --define "_topdir $rpmbuild" -ba $rpmbuild/SPECS/quagga.spec - popd > /dev/null -} - -# Build ZPRC -build_zrpc(){ - sudo yum -y install $rpmbuild/RPMS/x86_64/*.rpm - rm -rf zrpcd - git clone https://github.com/6WIND/zrpcd.git - pushd zrpcd > /dev/null - touch NEWS README - export QUAGGA_CFLAGS='-I/usr/include/quagga/' - # checkout the parent of the bellow patch. - # Once the issue addressed by the patch is fixed - # these two lines can be removed. - git checkout 9bd1ee8e - patch -p1 < ${PATCHES_DIR}/fix_zrpcd_make_dist.patch - patch -p1 < ${PATCHES_DIR}/zrpcd_hardcoded_paths.patch - autoreconf -i - - # ZRPC RPM - ./configure --enable-zrpcd \ - --enable-user=quagga --enable-group=quagga \ - --enable-vty-group=quagga --with-thrift-version=4 - make dist - - cat > $rpmbuild/SOURCES/zrpcd.service <<EOF -[Unit] -Description=ZRPC daemon for quagga -After=network.service - -[Service] -ExecStart=/usr/sbin/zrpcd -Type=simple -ExecStartPre=-/usr/bin/mkdir /var/run/quagga/ -ExecStartPre=/usr/bin/chown -R quagga:quagga /var/run/quagga/ -PIDFile=/var/run/zrpcd.pid - -[Install] -WantedBy=default.target -EOF - cp zrpcd-*.tar.gz $rpmbuild/SOURCES/ - cp ${BUILD_ROOT}/rpm_specs/zrpc.spec $rpmbuild/SPECS/ - rpmbuild --define "_topdir $rpmbuild" -ba $rpmbuild/SPECS/zrpc.spec -} - -# Main -parse_cmdline "$@" - -# Check env vars -if [ -z "$QUAGGA_BUILD_DIR" ]; then - echo "ERROR: You must set QUAGGA_BUILD_DIR env variable as the location to build!" - exit 1 -elif [ -z "$QUAGGA_RPMS_DIR" ]; then - echo "WARN: QUAGGA_RPMS_DIR env var is not set, will default to QUAGGA_BUILD_DIR/rpmbuild" - rpmbuild=${QUAGGA_BUILD_DIR}/rpmbuild -else - rpmbuild=${QUAGGA_RPMS_DIR} -fi - -if [ -z "$BUILD_ROOT" ]; then - echo "WARN: BUILD_ROOT env var not set, will default to $(pwd)" - BUILD_ROOT=$(pwd) -fi - -if [ -z "$PATCHES_DIR" ]; then - echo "WARN: PATCHES_DIR env var not set, will default to ${BUILD_ROOT}/patches" - PATCHES_DIR=${BUILD_ROOT}/patches -fi - -if [ -n "$CLEAN" ]; then - quagga_clean -fi - -install_quagga_build_deps - -mkdir -p ${QUAGGA_BUILD_DIR} -mkdir -p $rpmbuild $rpmbuild/SOURCES $rpmbuild/SPECS $rpmbuild/RPMS -pushd $QUAGGA_BUILD_DIR > /dev/null - -case "$ARTIFACT" in - thrift) - build_thrift - ;; - capnproto) - build_capnproto - ;; - quagga) - build_quagga - ;; - zrpc) - build_zrpc - ;; - *) - build_thrift - build_capnproto - build_quagga - build_zprc - ;; -esac - -popd > /dev/null |