summaryrefslogtreecommitdiffstats
path: root/build/build_quagga.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/build_quagga.sh')
-rwxr-xr-xbuild/build_quagga.sh251
1 files changed, 0 insertions, 251 deletions
diff --git a/build/build_quagga.sh b/build/build_quagga.sh
deleted file mode 100755
index e33cd27..0000000
--- 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