From 1592985fbc80b83929d042c984567f686d8bf9dc Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Thu, 25 Jul 2019 12:46:20 -0400 Subject: [PATCH 1/8] Build infrastructure changes to support sflow docker, hsflowd and necessary utilities on the VS. --- dockers/docker-sflow/Dockerfile.j2 | 31 +++++++++++++ dockers/docker-sflow/base_image_files/psample | 10 +++++ .../docker-sflow/base_image_files/sflowtool | 10 +++++ dockers/docker-sflow/start.sh | 9 ++++ dockers/docker-sflow/supervisord.conf | 28 ++++++++++++ files/build_templates/sflow.service.j2 | 14 ++++++ .../build_templates/sonic_debian_extension.j2 | 8 ++++ platform/vs/docker-syncd-vs.mk | 2 + platform/vs/docker-syncd-vs/Dockerfile.j2 | 2 + .../docker-syncd-vs/base_image_files/tc-syncd | 10 +++++ rules/config | 3 ++ rules/docker-sflow.mk | 35 +++++++++++++++ rules/sflow.mk | 45 +++++++++++++++++++ slave.mk | 5 +++ src/sflow/hsflowd/Makefile | 21 +++++++++ .../patch/0001-host_sflow_psample.patch | 39 ++++++++++++++++ src/sflow/hsflowd/patch/series | 1 + src/sflow/psample/Makefile | 19 ++++++++ src/sflow/psample/debian/changelog | 6 +++ src/sflow/psample/debian/compat | 1 + src/sflow/psample/debian/control | 11 +++++ src/sflow/psample/debian/psample.install | 4 ++ src/sflow/psample/debian/rules | 19 ++++++++ src/sflow/sflowtool/Makefile | 19 ++++++++ src/sflow/sflowtool/debian/changelog | 6 +++ src/sflow/sflowtool/debian/compat | 1 + src/sflow/sflowtool/debian/control | 11 +++++ src/sflow/sflowtool/debian/rules | 19 ++++++++ src/sflow/sflowtool/debian/sflowtool.install | 1 + 29 files changed, 390 insertions(+) create mode 100644 dockers/docker-sflow/Dockerfile.j2 create mode 100755 dockers/docker-sflow/base_image_files/psample create mode 100755 dockers/docker-sflow/base_image_files/sflowtool create mode 100755 dockers/docker-sflow/start.sh create mode 100644 dockers/docker-sflow/supervisord.conf create mode 100644 files/build_templates/sflow.service.j2 create mode 100755 platform/vs/docker-syncd-vs/base_image_files/tc-syncd create mode 100644 rules/docker-sflow.mk create mode 100644 rules/sflow.mk create mode 100644 src/sflow/hsflowd/Makefile create mode 100644 src/sflow/hsflowd/patch/0001-host_sflow_psample.patch create mode 100644 src/sflow/hsflowd/patch/series create mode 100644 src/sflow/psample/Makefile create mode 100644 src/sflow/psample/debian/changelog create mode 100644 src/sflow/psample/debian/compat create mode 100644 src/sflow/psample/debian/control create mode 100644 src/sflow/psample/debian/psample.install create mode 100755 src/sflow/psample/debian/rules create mode 100644 src/sflow/sflowtool/Makefile create mode 100644 src/sflow/sflowtool/debian/changelog create mode 100644 src/sflow/sflowtool/debian/compat create mode 100644 src/sflow/sflowtool/debian/control create mode 100755 src/sflow/sflowtool/debian/rules create mode 100644 src/sflow/sflowtool/debian/sflowtool.install diff --git a/dockers/docker-sflow/Dockerfile.j2 b/dockers/docker-sflow/Dockerfile.j2 new file mode 100644 index 000000000000..9d4b6b9c8888 --- /dev/null +++ b/dockers/docker-sflow/Dockerfile.j2 @@ -0,0 +1,31 @@ +{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %} +FROM docker-config-engine-stretch + +ARG docker_container_name +RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf + +## Make apt-get non-interactive +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -f -y \ + dmidecode \ + libmnl0=1.0.4-2 + +{% if docker_sflow_debs.strip() -%} +# Copy locally-built Debian package dependencies +{{ copy_files("debs/", docker_sflow_debs.split(' '), "/debs/") }} + +# Install locally-built Debian packages and implicitly install their dependencies +{{ install_debian_packages(docker_sflow_debs.split(' ')) }} +{%- endif %} + +RUN apt-get clean -y && \ + apt-get autoclean -y && \ + apt-get autoremove -y && \ + rm -rf /debs + +COPY ["start.sh", "/usr/bin/"] +COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] + +ENTRYPOINT ["/usr/bin/supervisord"] diff --git a/dockers/docker-sflow/base_image_files/psample b/dockers/docker-sflow/base_image_files/psample new file mode 100755 index 000000000000..0269eb6e5d09 --- /dev/null +++ b/dockers/docker-sflow/base_image_files/psample @@ -0,0 +1,10 @@ +#!/bin/bash + +DOCKER_EXEC_FLAGS="i" + +# Determine whether stdout is on a terminal +if [ -t 1 ] ; then + DOCKER_EXEC_FLAGS+="t" +fi + +docker exec -$DOCKER_EXEC_FLAGS sflow psample "$@" diff --git a/dockers/docker-sflow/base_image_files/sflowtool b/dockers/docker-sflow/base_image_files/sflowtool new file mode 100755 index 000000000000..26e5c7d967cf --- /dev/null +++ b/dockers/docker-sflow/base_image_files/sflowtool @@ -0,0 +1,10 @@ +#!/bin/bash + +DOCKER_EXEC_FLAGS="i" + +# Determine whether stdout is on a terminal +if [ -t 1 ] ; then + DOCKER_EXEC_FLAGS+="t" +fi + +docker exec -$DOCKER_EXEC_FLAGS sflow sflowtool "$@" diff --git a/dockers/docker-sflow/start.sh b/dockers/docker-sflow/start.sh new file mode 100755 index 000000000000..3002ffc1fbbd --- /dev/null +++ b/dockers/docker-sflow/start.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +rm -f /var/run/rsyslogd.pid + +supervisorctl start rsyslogd + +supervisorctl start sflowmgrd + +service hsflowd restart diff --git a/dockers/docker-sflow/supervisord.conf b/dockers/docker-sflow/supervisord.conf new file mode 100644 index 000000000000..26bbe9849d38 --- /dev/null +++ b/dockers/docker-sflow/supervisord.conf @@ -0,0 +1,28 @@ +[supervisord] +logfile_maxbytes=1MB +logfile_backups=2 +nodaemon=true + +[program:start.sh] +command=/usr/bin/start.sh +priority=1 +autostart=true +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:rsyslogd] +command=/usr/sbin/rsyslogd -n +priority=2 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:sflowmgrd] +command=/usr/bin/sflowmgrd +priority=17 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog diff --git a/files/build_templates/sflow.service.j2 b/files/build_templates/sflow.service.j2 new file mode 100644 index 000000000000..d77979bb338d --- /dev/null +++ b/files/build_templates/sflow.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=sFlow container +Requires=swss.service +After=swss.service +Before=ntp-config.service + +[Service] +User={{ sonicadmin_user }} +ExecStartPre=/usr/bin/{{docker_container_name}}.sh start +ExecStart=/usr/bin/{{docker_container_name}}.sh wait +ExecStop=/usr/bin/{{docker_container_name}}.sh stop + +[Install] +WantedBy=multi-user.target diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 70f0273b9b2b..5be7903b49fd 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -290,6 +290,14 @@ sudo cp $IMAGE_CONFIGS/platform/rc.local $FILESYSTEM_ROOT/etc/ ## copy blacklist file sudo cp $IMAGE_CONFIGS/platform/linux_kernel_bde.conf $FILESYSTEM_ROOT/etc/modprobe.d/ +# Enable psample drivers to support sFlow on vs +{% if sonic_asic_platform == "vs" %} +sudo tee -a $FILESYSTEM_ROOT/etc/modules-load.d/modules.conf > /dev/null < Mon, 29 Jul 2019 07:08:02 -0400 diff --git a/src/sflow/psample/debian/compat b/src/sflow/psample/debian/compat new file mode 100644 index 000000000000..ec635144f600 --- /dev/null +++ b/src/sflow/psample/debian/compat @@ -0,0 +1 @@ +9 diff --git a/src/sflow/psample/debian/control b/src/sflow/psample/debian/control new file mode 100644 index 000000000000..5c65e1e774a6 --- /dev/null +++ b/src/sflow/psample/debian/control @@ -0,0 +1,11 @@ +Source: psample +Maintainer: DellEMC +Section: devel +Priority: optional +Build-Depends: dh-exec (>=0.3), debhelper (>= 9), autotools-dev +Standards-Version: 1.0.0 + +Package: psample +Architecture: any +Depends: ${shlibs:Depends} +Description: This package contains psample from https://github.com/Mellanox/libpsample diff --git a/src/sflow/psample/debian/psample.install b/src/sflow/psample/debian/psample.install new file mode 100644 index 000000000000..36d4eac1a85b --- /dev/null +++ b/src/sflow/psample/debian/psample.install @@ -0,0 +1,4 @@ +bin/psample usr/bin +lib/libpsample.so.1.0 lib/x86_64-linux-gnu +lib/libpsample.so.1 lib/x86_64-linux-gnu +lib/libpsample.so lib/x86_64-linux-gnu diff --git a/src/sflow/psample/debian/rules b/src/sflow/psample/debian/rules new file mode 100755 index 000000000000..73f484d32581 --- /dev/null +++ b/src/sflow/psample/debian/rules @@ -0,0 +1,19 @@ +#!/usr/bin/make -f + +# main packaging script based on dh7 syntax +%: + dh $@ + +override_dh_auto_build: + cmake . && make + +override_dh_auto_install: + +override_dh_auto_test: + +override_dh_auto_clean: + +override_dh_strip: + +override_dh_clean: + diff --git a/src/sflow/sflowtool/Makefile b/src/sflow/sflowtool/Makefile new file mode 100644 index 000000000000..10a3f2d24dea --- /dev/null +++ b/src/sflow/sflowtool/Makefile @@ -0,0 +1,19 @@ +.ONESHELL: +SHELL = /bin/bash +.SHELLFLAGS += -e + +MAIN_TARGET = $(SFLOWTOOL) + +$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : + + rm -fr ./sflowtool + git clone https://github.com/sflow/sflowtool + cp -r debian sflowtool + + pushd ./sflowtool + git checkout -b sflowtool -f 6c2963b + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) + popd + + mv $* $(DEST)/ + diff --git a/src/sflow/sflowtool/debian/changelog b/src/sflow/sflowtool/debian/changelog new file mode 100644 index 000000000000..df40c7c37de1 --- /dev/null +++ b/src/sflow/sflowtool/debian/changelog @@ -0,0 +1,6 @@ +sflowtool (5.04) UNRELEASED; urgency=medium + + [ DellEMC ] + * Initial release : based on https://github.com/sflow/sflowtool + + -- DellEMC Mon, 29 Jul 2019 07:08:02 -0400 diff --git a/src/sflow/sflowtool/debian/compat b/src/sflow/sflowtool/debian/compat new file mode 100644 index 000000000000..ec635144f600 --- /dev/null +++ b/src/sflow/sflowtool/debian/compat @@ -0,0 +1 @@ +9 diff --git a/src/sflow/sflowtool/debian/control b/src/sflow/sflowtool/debian/control new file mode 100644 index 000000000000..f2d971aee2bd --- /dev/null +++ b/src/sflow/sflowtool/debian/control @@ -0,0 +1,11 @@ +Source: sflowtool +Maintainer: DellEMC +Section: devel +Priority: optional +Build-Depends: dh-exec (>=0.3), debhelper (>= 9), autotools-dev +Standards-Version: 1.0.0 + +Package: sflowtool +Architecture: any +Depends: ${shlibs:Depends} +Description: This package contains sflowtool from https://github.com/sflow/sflowtool diff --git a/src/sflow/sflowtool/debian/rules b/src/sflow/sflowtool/debian/rules new file mode 100755 index 000000000000..37ee344a2a4a --- /dev/null +++ b/src/sflow/sflowtool/debian/rules @@ -0,0 +1,19 @@ +#!/usr/bin/make -f + +# main packaging script based on dh7 syntax +%: + dh $@ + +override_dh_auto_build: + ./boot.sh && ./configure && make + +override_dh_auto_install: + +override_dh_auto_test: + +override_dh_auto_clean: + +override_dh_strip: + +override_dh_clean: + diff --git a/src/sflow/sflowtool/debian/sflowtool.install b/src/sflow/sflowtool/debian/sflowtool.install new file mode 100644 index 000000000000..9b32e0709b5a --- /dev/null +++ b/src/sflow/sflowtool/debian/sflowtool.install @@ -0,0 +1 @@ +src/sflowtool usr/bin From 3417f28b3f3f0bc40aaee0c43b0fc468450e1ef5 Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Thu, 1 Aug 2019 14:25:44 -0400 Subject: [PATCH 2/8] Fix priority for sflowmgrd --- dockers/docker-sflow/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-sflow/supervisord.conf b/dockers/docker-sflow/supervisord.conf index 26bbe9849d38..e4f9259712b5 100644 --- a/dockers/docker-sflow/supervisord.conf +++ b/dockers/docker-sflow/supervisord.conf @@ -21,7 +21,7 @@ stderr_logfile=syslog [program:sflowmgrd] command=/usr/bin/sflowmgrd -priority=17 +priority=3 autostart=false autorestart=false stdout_logfile=syslog From 57306f24c3566a4776b2c6904c19a842f2819e9a Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Fri, 2 Aug 2019 15:57:56 -0400 Subject: [PATCH 3/8] Upgrade hsflod (to pick up mod_sonic changes) & remove dbus (based on InMon feedback) --- dockers/docker-sflow/Dockerfile.j2 | 2 ++ rules/sflow.mk | 2 +- src/sflow/hsflowd/Makefile | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dockers/docker-sflow/Dockerfile.j2 b/dockers/docker-sflow/Dockerfile.j2 index 9d4b6b9c8888..cd6e4de97731 100644 --- a/dockers/docker-sflow/Dockerfile.j2 +++ b/dockers/docker-sflow/Dockerfile.j2 @@ -20,6 +20,8 @@ RUN apt-get update && \ {{ install_debian_packages(docker_sflow_debs.split(' ')) }} {%- endif %} +RUN rm -rf /etc/dbus-1 + RUN apt-get clean -y && \ apt-get autoclean -y && \ apt-get autoremove -y && \ diff --git a/rules/sflow.mk b/rules/sflow.mk index 575db509833e..6fdee33fdd47 100644 --- a/rules/sflow.mk +++ b/rules/sflow.mk @@ -1,7 +1,7 @@ # host-sflow package HSFLOWD_VERSION = 2.0.21 -HSFLOWD_SUBVERSION = 3 +HSFLOWD_SUBVERSION = 4 export HSFLOWD_VERSION HSFLOWD_SUBVERSION HSFLOWD = hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_amd64.deb diff --git a/src/sflow/hsflowd/Makefile b/src/sflow/hsflowd/Makefile index 7f78b160cfc7..421c5baff8d4 100644 --- a/src/sflow/hsflowd/Makefile +++ b/src/sflow/hsflowd/Makefile @@ -9,7 +9,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : git clone https://github.com/sflow/host-sflow pushd ./host-sflow - git checkout -b sflow -f 08c00e2 + git checkout -b sflow -f 5f171bb # Apply patch series stg init From d8235926790b14bf28e34978be397444494a55a4 Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Fri, 16 Aug 2019 17:30:49 -0400 Subject: [PATCH 4/8] Address review comments, update hsflowd version and additional changes --- dockers/docker-sflow/Dockerfile.j2 | 4 ++-- dockers/docker-sflow/start.sh | 2 -- platform/vs/docker-syncd-vs.mk | 2 -- .../docker-syncd-vs/base_image_files/tc-syncd | 10 ---------- rules/config | 2 +- rules/docker-sflow.mk | 1 + rules/sflow.mk | 18 ++++++------------ src/sflow/hsflowd/Makefile | 2 +- src/sflow/psample/Makefile | 8 ++++++++ 9 files changed, 19 insertions(+), 30 deletions(-) delete mode 100755 platform/vs/docker-syncd-vs/base_image_files/tc-syncd diff --git a/dockers/docker-sflow/Dockerfile.j2 b/dockers/docker-sflow/Dockerfile.j2 index cd6e4de97731..e88789fb6992 100644 --- a/dockers/docker-sflow/Dockerfile.j2 +++ b/dockers/docker-sflow/Dockerfile.j2 @@ -20,13 +20,13 @@ RUN apt-get update && \ {{ install_debian_packages(docker_sflow_debs.split(' ')) }} {%- endif %} -RUN rm -rf /etc/dbus-1 - RUN apt-get clean -y && \ apt-get autoclean -y && \ apt-get autoremove -y && \ rm -rf /debs +RUN sed -ri '/^DAEMON_ARGS=""/c DAEMON_ARGS="-c /var/log/hsflowd.crash"' /etc/init.d/hsflowd + COPY ["start.sh", "/usr/bin/"] COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] diff --git a/dockers/docker-sflow/start.sh b/dockers/docker-sflow/start.sh index 3002ffc1fbbd..aaefb4d6d004 100755 --- a/dockers/docker-sflow/start.sh +++ b/dockers/docker-sflow/start.sh @@ -5,5 +5,3 @@ rm -f /var/run/rsyslogd.pid supervisorctl start rsyslogd supervisorctl start sflowmgrd - -service hsflowd restart diff --git a/platform/vs/docker-syncd-vs.mk b/platform/vs/docker-syncd-vs.mk index 1fe89b754ecd..15d94c5854d2 100644 --- a/platform/vs/docker-syncd-vs.mk +++ b/platform/vs/docker-syncd-vs.mk @@ -12,5 +12,3 @@ $(DOCKER_SYNCD_BASE)_DBG_DEPENDS += $(SYNCD_VS_DBG) \ $(LIBSAIVS_DBG) $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot - -$(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += tc-syncd:/usr/bin/tc-syncd diff --git a/platform/vs/docker-syncd-vs/base_image_files/tc-syncd b/platform/vs/docker-syncd-vs/base_image_files/tc-syncd deleted file mode 100755 index 79a67fe613cb..000000000000 --- a/platform/vs/docker-syncd-vs/base_image_files/tc-syncd +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -DOCKER_EXEC_FLAGS="i" - -# Determine whether stdout is on a terminal -if [ -t 1 ] ; then - DOCKER_EXEC_FLAGS+="t" -fi - -docker exec -$DOCKER_EXEC_FLAGS syncd tc "$@" diff --git a/rules/config b/rules/config index 58a97009195a..bc02934f0b17 100644 --- a/rules/config +++ b/rules/config @@ -97,4 +97,4 @@ FRR_USER_GID = 300 DEFAULT_VS_PREPARE_MEM = yes # ENABLE_SYSTEM_SFLOW - build docker-sonic-sflow for sFlow support -ENABLE_SFLOW = n +ENABLE_SFLOW = y diff --git a/rules/docker-sflow.mk b/rules/docker-sflow.mk index 19b0f290bf99..3f90157b904f 100644 --- a/rules/docker-sflow.mk +++ b/rules/docker-sflow.mk @@ -29,6 +29,7 @@ $(DOCKER_SFLOW)_CONTAINER_NAME = sflow $(DOCKER_SFLOW)_RUN_OPT += --net=host --privileged -t $(DOCKER_SFLOW)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SFLOW)_RUN_OPT += -v /host/warmboot:/var/warmboot +$(DOCKER_SFLOW)_RUN_OPT += --pid=host $(DOCKER_SFLOW)_BASE_IMAGE_FILES += psample:/usr/bin/psample $(DOCKER_SFLOW)_BASE_IMAGE_FILES += sflowtool:/usr/bin/sflowtool diff --git a/rules/sflow.mk b/rules/sflow.mk index 6fdee33fdd47..2f925584ea25 100644 --- a/rules/sflow.mk +++ b/rules/sflow.mk @@ -1,15 +1,16 @@ # host-sflow package HSFLOWD_VERSION = 2.0.21 -HSFLOWD_SUBVERSION = 4 +HSFLOWD_SUBVERSION = 6 export HSFLOWD_VERSION HSFLOWD_SUBVERSION -HSFLOWD = hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_amd64.deb +HSFLOWD = hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb $(HSFLOWD)_DEPENDS += $(LIBHIREDIS_DEV) $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) $(HSFLOWD)_SRC_PATH = $(SRC_PATH)/sflow/hsflowd SONIC_MAKE_DEBS += $(HSFLOWD) SONIC_STRETCH_DEBS += $(HSFLOWD) + export HSFLOWD # sflowtool package @@ -17,27 +18,20 @@ export HSFLOWD SFLOWTOOL_VERSION = 5.04 export SFLOWTOOL_VERSION -SFLOWTOOL = sflowtool_$(SFLOWTOOL_VERSION)_amd64.deb +SFLOWTOOL = sflowtool_$(SFLOWTOOL_VERSION)_$(CONFIGURED_ARCH).deb $(SFLOWTOOL)_SRC_PATH = $(SRC_PATH)/sflow/sflowtool SONIC_MAKE_DEBS += $(SFLOWTOOL) SONIC_STRETCH_DEBS += $(SFLOWTOOL) export SFLOWTOOL -# libmnl & psample packages - -LIBMNL_DEV_VERSION = 1.0.4-2 -export LIBMNL_DEV_VERSION -LIBMNL_DEV = libmnl-dev_$(LIBMNL_DEV_VERSION)_amd64.deb -$(LIBMNL_DEV)_URL = http://ftp.debian.org/debian/pool/main/libm/libmnl/libmnl-dev_1.0.4-2_amd64.deb -SONIC_ONLINE_DEBS += $(LIBMNL_DEV) +# psample package PSAMPLE_VERSION = 1.1 PSAMPLE_SUBVERSION = 1 export PSAMPLE_VERSION PSAMPLE_SUBVERSION -PSAMPLE = psample_$(PSAMPLE_VERSION)-$(PSAMPLE_SUBVERSION)_amd64.deb -$(PSAMPLE)_DEPENDS += $(LIBMNL_DEV) +PSAMPLE = psample_$(PSAMPLE_VERSION)-$(PSAMPLE_SUBVERSION)_$(CONFIGURED_ARCH).deb $(PSAMPLE)_SRC_PATH = $(SRC_PATH)/sflow/psample SONIC_MAKE_DEBS += $(PSAMPLE) diff --git a/src/sflow/hsflowd/Makefile b/src/sflow/hsflowd/Makefile index 421c5baff8d4..e25478dd24b2 100644 --- a/src/sflow/hsflowd/Makefile +++ b/src/sflow/hsflowd/Makefile @@ -9,7 +9,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : git clone https://github.com/sflow/host-sflow pushd ./host-sflow - git checkout -b sflow -f 5f171bb + git checkout -b sflow -f cab7079 # Apply patch series stg init diff --git a/src/sflow/psample/Makefile b/src/sflow/psample/Makefile index 175f27375421..c62dc875bb3d 100644 --- a/src/sflow/psample/Makefile +++ b/src/sflow/psample/Makefile @@ -12,6 +12,14 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : pushd ./libpsample git checkout -b libpsample -f e48fad2 + + # get the dpkg lock and install libmnl-dev + while true; do + if mkdir $(DEST)/dpkg_lock &> /dev/null; then + { sudo apt-get install -f -y libmnl-dev=1.0.4-2 && rm -d $(DEST)/dpkg_lock && break; } || { rm -d $(DEST)/dpkg_lock && exit 1 ; } + fi + done + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) popd From 7bcf08992f057743595fceaffd121bd8b91febf3 Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Tue, 20 Aug 2019 01:34:26 -0400 Subject: [PATCH 5/8] Create a patch to hsflowd makefiles to build hsflowd-dbg. Also, archive source. --- rules/sflow.mk | 12 +- src/sflow/hsflowd/Makefile | 12 +- .../patch/0002-host_sflow_debian.patch | 108 ++++++++++++++++++ src/sflow/hsflowd/patch/series | 1 + 4 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 src/sflow/hsflowd/patch/0002-host_sflow_debian.patch diff --git a/rules/sflow.mk b/rules/sflow.mk index 2f925584ea25..a322b6ff4db6 100644 --- a/rules/sflow.mk +++ b/rules/sflow.mk @@ -11,7 +11,12 @@ $(HSFLOWD)_SRC_PATH = $(SRC_PATH)/sflow/hsflowd SONIC_MAKE_DEBS += $(HSFLOWD) SONIC_STRETCH_DEBS += $(HSFLOWD) -export HSFLOWD +HSFLOWD_DBG = hsflowd-dbg_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb +$(HSFLOWD_DBG)_DEPENDS += $(HSFLOWD) +$(HSFLOWD_DBG)_RDEPENDS += $(HSFLOWD) +$(eval $(call add_derived_package,$(HSFLOWD),$(HSFLOWD_DBG))) + +export HSFLOWD HSFLOWD_DBG # sflowtool package @@ -37,3 +42,8 @@ $(PSAMPLE)_SRC_PATH = $(SRC_PATH)/sflow/psample SONIC_MAKE_DEBS += $(PSAMPLE) SONIC_STRETCH_DEBS += $(PSAMPLE) export PSAMPLE + +# The .c, .cpp, .h & .hpp files under src/{$DBG_SRC_ARCHIVE list} +# are archived into debug one image to facilitate debugging. +# +DBG_SRC_ARCHIVE += sflow diff --git a/src/sflow/hsflowd/Makefile b/src/sflow/hsflowd/Makefile index e25478dd24b2..18de1adf2f2d 100644 --- a/src/sflow/hsflowd/Makefile +++ b/src/sflow/hsflowd/Makefile @@ -3,6 +3,7 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = $(HSFLOWD) +DERIVED_TARGET = $(HSFLOWD_DBG) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : rm -fr ./host-sflow @@ -15,7 +16,14 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : stg init stg import -s ../patch/series - make deb FEATURES="SONIC" - mv $* $(DEST)/ + mkdir -p debian + cp -r DEBIAN_build/* debian + chmod u+x debian/rules + sed -i -e s/_VERSION_/$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)/g debian/changelog + + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --buildinfo-option=-u. --changes-option=-u. + + mv $(DERIVED_TARGET) $* $(DEST)/ popd +$(addprefix $(DEST)/, $(DERIVED_TARGET)): $(DEST)/% : $(DEST)/$(MAIN_TARGET) diff --git a/src/sflow/hsflowd/patch/0002-host_sflow_debian.patch b/src/sflow/hsflowd/patch/0002-host_sflow_debian.patch new file mode 100644 index 000000000000..86ebab723351 --- /dev/null +++ b/src/sflow/hsflowd/patch/0002-host_sflow_debian.patch @@ -0,0 +1,108 @@ +diff -ruN a/DEBIAN_build/changelog b/DEBIAN_build/changelog +--- a/DEBIAN_build/changelog 1969-12-31 19:00:00.000000000 -0500 ++++ b/DEBIAN_build/changelog 2019-08-19 22:52:10.171736403 -0400 +@@ -0,0 +1,6 @@ ++hsflowd (_VERSION_) stable; urgency=medium ++ ++ [ DellEMC ] ++ * Initial release : hsflowd ++ ++ -- DellEMC Mon, 29 Jul 2019 07:08:02 -0400 +diff -ruN a/DEBIAN_build/compat b/DEBIAN_build/compat +--- a/DEBIAN_build/compat 1969-12-31 19:00:00.000000000 -0500 ++++ b/DEBIAN_build/compat 2019-08-16 23:28:58.020938096 -0400 +@@ -0,0 +1 @@ ++9 +diff -ruN a/DEBIAN_build/control b/DEBIAN_build/control +--- a/DEBIAN_build/control 2019-08-16 05:11:33.974949327 -0400 ++++ b/DEBIAN_build/control 2019-08-19 21:28:07.155722725 -0400 +@@ -1,9 +1,22 @@ +-Package: _PACKAGE_ +-Version: _VERSION_ +-Section: admin ++Source: hsflowd ++Maintainer: Neil McKee [neil.mckee@inmon.com] ++Uploaders: DellEMC ++Section: net ++Priority: optional ++Build-Depends: dh-exec (>=0.3), debhelper (>= 9), autotools-dev ++Standards-Version: 1.0.0 ++ ++Package: hsflowd ++Section: admin + Priority: optional +-Architecture: all ++Architecture: any + Essential: no +-Maintainer: Neil McKee [neil.mckee@inmon.com] + Description: sFlow(R) monitoring agent + Homepage: sflow.net ++ ++Package: hsflowd-dbg ++Architecture: any ++Section: debug ++Priority: extra ++Depends: hsflowd ++Description: debugging symbols for hsflowd +diff -ruN a/DEBIAN_build/rules b/DEBIAN_build/rules +--- a/DEBIAN_build/rules 1969-12-31 19:00:00.000000000 -0500 ++++ b/DEBIAN_build/rules 2019-08-19 22:20:42.998569601 -0400 +@@ -0,0 +1,31 @@ ++#!/usr/bin/make -f ++ ++# See debhelper(7) (uncomment to enable) ++# output every command that modifies files on the build system. ++export DH_VERBOSE = 1 ++ ++# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* ++DPKG_EXPORT_BUILDFLAGS = 1 ++include /usr/share/dpkg/default.mk ++ ++%: ++ dh $@ ++ ++binary: ++ dh_gencontrol ++ dh_strip -phsflowd --dbg-package=hsflowd-dbg ++ dpkg-deb --build debian/hsflowd-dbg hsflowd-dbg_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb ++ dpkg-deb --build debian/hsflowd hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb ++ ++override_dh_auto_build: ++ make sonic-deb FEATURES="SONIC" ++ ++override_dh_auto_configure: ++ ++override_dh_auto_install: ++ ++override_dh_auto_test: ++ ++override_dh_auto_clean: ++ ++override_dh_clean: +diff -ruN a/Makefile b/Makefile +--- a/Makefile 2019-08-16 21:34:25.167679297 -0400 ++++ b/Makefile 2019-08-19 22:20:23.758479002 -0400 +@@ -146,6 +146,23 @@ + cd ..; \ + dpkg-deb --build debian hsflowd_$${MYVER}-$${MYREL}_$$MYARCH.deb + ++sonic-deb: $(PROG) ++ MYARCH=`uname -m|sed 's/x86_64/amd64/'`; \ ++ MYVER=`./getVersion`; \ ++ MYREL=`./getRelease`; \ ++ PLATFORM=`uname`; \ ++ mkdir -p debian/usr/sbin; \ ++ mkdir -p debian/etc/init.d; \ ++ mkdir -p debian/etc/hsflowd/modules; \ ++ mkdir -p debian/lib/systemd/system; \ ++ mkdir -p debian/etc/dbus-1/system.d; \ ++ cd src/$$PLATFORM; $(MAKE) VERSION=$$MYVER RELEASE=$$MYREL INSTROOT="../../debian/hsflowd" install; cd ../..; \ ++ pwd; \ ++ cd debian/hsflowd; \ ++ find . -type d | xargs chmod 755; \ ++ md5sum `find usr etc -type f` > md5sums; \ ++ cd ../..; ++ + xenserver: xenrpm + cd xenserver-ddk; $(MAKE) clean; $(MAKE) + diff --git a/src/sflow/hsflowd/patch/series b/src/sflow/hsflowd/patch/series index 1dccac464a28..90f9e47462e5 100644 --- a/src/sflow/hsflowd/patch/series +++ b/src/sflow/hsflowd/patch/series @@ -1 +1,2 @@ 0001-host_sflow_psample.patch +0002-host_sflow_debian.patch From dd9d0f7d194a1624de731ec2c4e08c5740ca3e9c Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Sun, 25 Aug 2019 16:02:02 -0400 Subject: [PATCH 6/8] Update hsflowd version to address counter polling interval fix --- rules/sflow.mk | 2 +- src/sflow/hsflowd/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/sflow.mk b/rules/sflow.mk index a322b6ff4db6..8b763de37c84 100644 --- a/rules/sflow.mk +++ b/rules/sflow.mk @@ -1,7 +1,7 @@ # host-sflow package HSFLOWD_VERSION = 2.0.21 -HSFLOWD_SUBVERSION = 6 +HSFLOWD_SUBVERSION = 7 export HSFLOWD_VERSION HSFLOWD_SUBVERSION HSFLOWD = hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb diff --git a/src/sflow/hsflowd/Makefile b/src/sflow/hsflowd/Makefile index 18de1adf2f2d..61ef8ef679a8 100644 --- a/src/sflow/hsflowd/Makefile +++ b/src/sflow/hsflowd/Makefile @@ -10,7 +10,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : git clone https://github.com/sflow/host-sflow pushd ./host-sflow - git checkout -b sflow -f cab7079 + git checkout -b sflow -f 14f5794 # Apply patch series stg init From c70b70b64703a4c8dba0c1d6257385808fc944c6 Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Thu, 5 Sep 2019 03:35:53 -0400 Subject: [PATCH 7/8] Remove explicit install of libmnl-dev since it's there in sonic-slave-stretch --- src/sflow/psample/Makefile | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/sflow/psample/Makefile b/src/sflow/psample/Makefile index c62dc875bb3d..3f03c249989a 100644 --- a/src/sflow/psample/Makefile +++ b/src/sflow/psample/Makefile @@ -13,13 +13,6 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : pushd ./libpsample git checkout -b libpsample -f e48fad2 - # get the dpkg lock and install libmnl-dev - while true; do - if mkdir $(DEST)/dpkg_lock &> /dev/null; then - { sudo apt-get install -f -y libmnl-dev=1.0.4-2 && rm -d $(DEST)/dpkg_lock && break; } || { rm -d $(DEST)/dpkg_lock && exit 1 ; } - fi - done - dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) popd From b94dbf9c596d0b891ef9a922f738ebc19fff4394 Mon Sep 17 00:00:00 2001 From: padmanarayana Date: Fri, 13 Sep 2019 22:10:23 -0400 Subject: [PATCH 8/8] Update host-sflow version and remove pid=host --- rules/docker-sflow.mk | 1 - rules/sflow.mk | 2 +- src/sflow/hsflowd/Makefile | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/rules/docker-sflow.mk b/rules/docker-sflow.mk index 3f90157b904f..19b0f290bf99 100644 --- a/rules/docker-sflow.mk +++ b/rules/docker-sflow.mk @@ -29,7 +29,6 @@ $(DOCKER_SFLOW)_CONTAINER_NAME = sflow $(DOCKER_SFLOW)_RUN_OPT += --net=host --privileged -t $(DOCKER_SFLOW)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SFLOW)_RUN_OPT += -v /host/warmboot:/var/warmboot -$(DOCKER_SFLOW)_RUN_OPT += --pid=host $(DOCKER_SFLOW)_BASE_IMAGE_FILES += psample:/usr/bin/psample $(DOCKER_SFLOW)_BASE_IMAGE_FILES += sflowtool:/usr/bin/sflowtool diff --git a/rules/sflow.mk b/rules/sflow.mk index 8b763de37c84..b03e08446370 100644 --- a/rules/sflow.mk +++ b/rules/sflow.mk @@ -1,7 +1,7 @@ # host-sflow package HSFLOWD_VERSION = 2.0.21 -HSFLOWD_SUBVERSION = 7 +HSFLOWD_SUBVERSION = 8 export HSFLOWD_VERSION HSFLOWD_SUBVERSION HSFLOWD = hsflowd_$(HSFLOWD_VERSION)-$(HSFLOWD_SUBVERSION)_$(CONFIGURED_ARCH).deb diff --git a/src/sflow/hsflowd/Makefile b/src/sflow/hsflowd/Makefile index 61ef8ef679a8..526e30e0490c 100644 --- a/src/sflow/hsflowd/Makefile +++ b/src/sflow/hsflowd/Makefile @@ -10,7 +10,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : git clone https://github.com/sflow/host-sflow pushd ./host-sflow - git checkout -b sflow -f 14f5794 + git checkout -b sflow -f 996f5ec # Apply patch series stg init