diff options
-rw-r--r-- | packages/frr/Jenkinsfile | 3 | ||||
-rwxr-xr-x | packages/frr/build-frr.sh | 41 | ||||
-rw-r--r-- | packages/frr/patches/0001-Fix-6062-frr-reload-always-seems-to-reapply-configs.patch | 31 |
3 files changed, 73 insertions, 2 deletions
diff --git a/packages/frr/Jenkinsfile b/packages/frr/Jenkinsfile index 48dc64c8..a5558556 100644 --- a/packages/frr/Jenkinsfile +++ b/packages/frr/Jenkinsfile @@ -21,11 +21,10 @@ @Library('vyos-build@current')_ def pkgList = [ - // pkg-libnftnl ['name': 'frr', 'scmCommit': 'frr-7.3.1', 'scmUrl': 'https://github.com/FRRouting/frr.git', - 'buildCmd': '''./tools/tarsource.sh -V; dpkg-buildpackage -us -uc -Ppkg.frr.rtrlib'''], + 'buildCmd': '''cd ..; ./build-frr.sh'''], ] // Start package build using library function from https://github.com/c-po/vyos-build diff --git a/packages/frr/build-frr.sh b/packages/frr/build-frr.sh new file mode 100755 index 00000000..59134832 --- /dev/null +++ b/packages/frr/build-frr.sh @@ -0,0 +1,41 @@ +#!/bin/sh +CWD=$(pwd) +set -e + +FRR_SRC=frr + +if [ ! -d ${FRR_SRC} ]; then + echo "FRR source directory does not exists, please 'git clone'" + exit 1 +fi + +# VyOS requires some small FRR Patches - apply them here +# It's easier to habe them here and make use of the upstream +# repository instead of maintaining a full Fork. +# Saving time/resources is essential :-) +cd ${FRR_SRC} + +PATCH_DIR=${CWD}/patches + +for patch in $(ls ${PATCH_DIR}) +do + echo "I: Apply FRR patch: ${PATCH_DIR}/${patch}" + patch -p1 < ${PATCH_DIR}/${patch} + git add $(lsdiff ${PATCH_DIR}/${patch} | sed -e 's#^[ab]/##') + if [ -z "$(git config --list | grep -e user.name -e user.email)" ]; then + # if git user.name and user.email is not set, -c sets temorary user.name and + # user.email variables as these is not set in the build container by default. + git -c user.name="VyOS CI" -c user.email="ci@vyos.io" commit -m "Applied patch: ${patch}" --author "VyOS CI <ci@vyos.io>" + else + git commit -m "Applied patch: ${patch}" --author "VyOS CI <ci@vyos.io>" + fi + +done + +# Prepare FRR source for building +echo "I: Prepare FRR source for building" +./tools/tarsource.sh -V + +# Build Debian FRR package +echo "I: Build Debian FRR Package" +dpkg-buildpackage -us -uc -Ppkg.frr.rtrlib diff --git a/packages/frr/patches/0001-Fix-6062-frr-reload-always-seems-to-reapply-configs.patch b/packages/frr/patches/0001-Fix-6062-frr-reload-always-seems-to-reapply-configs.patch new file mode 100644 index 00000000..ce74b25a --- /dev/null +++ b/packages/frr/patches/0001-Fix-6062-frr-reload-always-seems-to-reapply-configs.patch @@ -0,0 +1,31 @@ +From d3851bdceff09301e110f839af7878e1fb4607c8 Mon Sep 17 00:00:00 2001 +From: Runar Borge <runar@borge.nu> +Date: Thu, 25 Jun 2020 20:14:47 +0200 +Subject: [PATCH] Fix #6062 frr-reload always seems to reapply configs + +https://github.com/FRRouting/frr/issues/6062 +dteach-rv commented on 30 Apr +It looks like there was a concerted effort to handle the vtysh -> stderr output +change in frr-reload.py. But the subprocess call in def load-from_show_running +was missed, which is why frr-reload.py is trying to re-add every command. +It's comparing the file config to an empty running config. +--- + tools/frr-reload.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/frr-reload.py b/tools/frr-reload.py +index 3e97635df..f4eb8400e 100755 +--- a/tools/frr-reload.py ++++ b/tools/frr-reload.py +@@ -155,7 +155,7 @@ class Config(object): + try: + config_text = subprocess.check_output( + bindir + "/vtysh --config_dir " + confdir + " -c 'show run " + daemon + "' | /usr/bin/tail -n +4 | " + bindir + "/vtysh --config_dir " + confdir + " -m -f -", +- shell=True) ++ shell=True, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + ve = VtyshMarkException(e) + ve.output = e.output +-- +2.25.1 + |