[202205][Marvell-armhf] Build saiserverv2 docker on marvell-armhf (#13713)
* Enable marvell-armhf saiserver docker Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> * fix libsaithriift build env Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> * fix thrift 014 dependent issue in armhf * fix build env Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> * [sai_ptf]fix thrift armhf build in armhf buidl failed as no python command how add a checker for different python command, python/python3 and base on result use the right command verify container build * [Thrift_014[armhf]]Fix libboost_unit_test_framework.a not found during build Why error happen build thirft in armhf How fix this issue, add a soft link for the dependent file Verify Build pipeline Signed-off-by: richardyu-ms <richard.yu@microsoft.com> * add metadata dependence Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> * change build pipeline Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> --------- Signed-off-by: zitingguo-ms <zitingguo@microsoft.com> Signed-off-by: richardyu-ms <richard.yu@microsoft.com> Co-authored-by: richardyu-ms <richard.yu@microsoft.com>
This commit is contained in:
parent
d1fa414f1b
commit
b3424ea2e6
@ -129,6 +129,12 @@ jobs:
|
||||
if [ $(raw_image) == yes ]; then
|
||||
make $BUILD_OPTIONS target/sonic-$(GROUP_NAME).raw
|
||||
fi
|
||||
if [ $(GROUP_NAME) == marvell-armhf ]; then
|
||||
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y PLATFORM_ARCH=armhf target/docker-saiserverv2-mrvl.gz
|
||||
pushd ./src/sonic-sairedis/SAI
|
||||
git stash
|
||||
popd
|
||||
fi
|
||||
if [ $(docker_syncd_rpc_image) == yes ]; then
|
||||
# workaround for issue in rules/sairedis.dep, git ls-files will list un-exist files for cache
|
||||
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/docker-syncd-$(platform_rpc)-rpc.gz
|
||||
@ -145,6 +151,12 @@ jobs:
|
||||
git stash
|
||||
popd
|
||||
fi
|
||||
if [ $(GROUP_NAME) == marvell-armhf ]; then
|
||||
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y PLATFORM_ARCH=armhf target/docker-saiserverv2-mrvl.gz
|
||||
pushd ./src/sonic-sairedis/SAI
|
||||
git stash
|
||||
popd
|
||||
fi
|
||||
fi
|
||||
if [ $(syncd_rpc_image) == yes ]; then
|
||||
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/sonic-$(GROUP_NAME).bin
|
||||
|
@ -115,6 +115,12 @@ jobs:
|
||||
git stash
|
||||
popd
|
||||
fi
|
||||
if [ $(GROUP_NAME) == marvell-armhf ]; then
|
||||
make USERNAME=admin $CACHE_OPTIONS SONIC_BUILD_JOBS=$(nproc) ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y PLATFORM_ARCH=armhf target/docker-saiserverv2-mrvl.gz
|
||||
pushd ./src/sonic-sairedis/SAI
|
||||
git stash
|
||||
popd
|
||||
fi
|
||||
fi
|
||||
|
||||
make USERNAME=admin $CACHE_OPTIONS SONIC_BUILD_JOBS=$(nproc) target/sonic-${{ parameters.platform }}.bin
|
||||
|
@ -1,13 +1,22 @@
|
||||
# docker image for mrvl saiserver
|
||||
|
||||
DOCKER_SAISERVER_MRVL = docker-saiserver-mrvl.gz
|
||||
DOCKER_SAISERVER_MRVL = docker-saiserver$(SAITHRIFT_VER)-mrvl.gz
|
||||
$(DOCKER_SAISERVER_MRVL)_PATH = $(PLATFORM_PATH)/docker-saiserver-mrvl
|
||||
$(DOCKER_SAISERVER_MRVL)_DEPENDS += $(SAISERVER)
|
||||
$(DOCKER_SAISERVER_MRVL)_FILES += $(DSSERVE) $(BCMCMD)
|
||||
|
||||
$(DOCKER_SAISERVER_MRVL)_DEPENDS += $(MRVL_FPA) $(MRVL_SAI)
|
||||
|
||||
# Use syncd_init_common.sh to init hardware platform
|
||||
SYNCD_INIT_COMMON_SCRIPT = syncd_init_common.sh
|
||||
$(SYNCD_INIT_COMMON_SCRIPT)_PATH = $(SRC_PATH)/sonic-sairedis/syncd/scripts
|
||||
SONIC_COPY_FILES += $(SYNCD_INIT_COMMON_SCRIPT)
|
||||
|
||||
$(DOCKER_SAISERVER_MRVL)_FILES += $(SYNCD_INIT_COMMON_SCRIPT)
|
||||
$(DOCKER_SAISERVER_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BULLSEYE)
|
||||
SONIC_BULLSEYE_DOCKERS += $(DOCKER_SAISERVER_MRVL)
|
||||
SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL)
|
||||
|
||||
$(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver
|
||||
$(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver$(SAITHRIFT_VER)
|
||||
$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --privileged -t
|
||||
$(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf
|
||||
$(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd
|
||||
|
57
platform/marvell-armhf/docker-saiserver-mrvl/Dockerfile.j2
Normal file
57
platform/marvell-armhf/docker-saiserver-mrvl/Dockerfile.j2
Normal file
@ -0,0 +1,57 @@
|
||||
{% from "dockers/dockerfile-macros.j2" import install_debian_packages %}
|
||||
FROM docker-config-engine-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}
|
||||
|
||||
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
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install \
|
||||
net-tools \
|
||||
iputils-ping
|
||||
|
||||
RUN apt-get -y install libpcap-dev libxml2-dev python-dev swig libsensors4-dev nfs-common
|
||||
|
||||
## Pre-install the fundamental packages
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install \
|
||||
net-tools \
|
||||
python3-pip \
|
||||
python-setuptools \
|
||||
build-essential \
|
||||
libssl-dev \
|
||||
libffi-dev \
|
||||
python-dev \
|
||||
wget \
|
||||
cmake \
|
||||
libqt5core5a \
|
||||
libqt5network5 \
|
||||
libboost-atomic1.74.0
|
||||
|
||||
COPY \
|
||||
{% for deb in docker_saiserver_mrvl_debs.split(' ') -%}
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
RUN dpkg -i \
|
||||
{% for deb in docker_saiserver_mrvl_debs.split(' ') -%}
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor %}
|
||||
|
||||
COPY ["start.sh", "saiserver_start.sh", "/usr/bin/"]
|
||||
COPY ["files/syncd_init_common.sh", "/usr/bin/"]
|
||||
RUN chmod +x /usr/bin/start.sh /usr/bin/saiserver_start.sh /usr/bin/syncd_init_common.sh
|
||||
|
||||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||
|
||||
## Clean up
|
||||
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||
RUN rm -rf /debs
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/supervisord"]
|
@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copy from src/sonic-sairedis/syncd/scripts/syncd_start.sh
|
||||
# Re-use the structure for syncd setup
|
||||
# Use it to start saiserver
|
||||
# Script to start syncd using supervisord
|
||||
#
|
||||
|
||||
# Source the file that holds common code for systemd and supervisord
|
||||
. /usr/bin/syncd_init_common.sh
|
||||
|
||||
get_saiserver_param()
|
||||
{
|
||||
IFS=' ' read -r -a array <<< "$CMD_ARGS"
|
||||
for index in "${!array[@]}"
|
||||
do
|
||||
#echo "$index ${array[index]}"
|
||||
if [[ "${array[index]}" == *"-p"* ]]; then
|
||||
SAI_PROFILE="${array[index+1]}"
|
||||
fi
|
||||
if [[ "${array[index]}" == *"-m"* ]]; then
|
||||
PORT_CONFIG="${array[index+1]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
ENABLE_SAITHRIFT=1
|
||||
config_syncd
|
||||
get_saiserver_param
|
||||
|
||||
echo exec /usr/sbin/saiserver -p ${SAI_PROFILE} -f ${PORT_CONFIG}
|
||||
exec /usr/sbin/saiserver -p ${SAI_PROFILE} -f ${PORT_CONFIG}
|
||||
#exec ${CMD} ${CMD_ARGS}
|
5
platform/marvell-armhf/docker-saiserver-mrvl/start.sh
Normal file
5
platform/marvell-armhf/docker-saiserver-mrvl/start.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
rm -f /var/run/rsyslogd.pid
|
||||
supervisorctl start rsyslogd
|
||||
supervisorctl start saiserver
|
@ -0,0 +1,29 @@
|
||||
[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 -iNONE
|
||||
priority=1
|
||||
autostart=false
|
||||
autorestart=false
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
|
||||
[program:saiserver]
|
||||
command=/usr/bin/saiserver_start.sh
|
||||
priority=2
|
||||
autostart=false
|
||||
autorestart=false
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
|
@ -2,19 +2,30 @@
|
||||
|
||||
SAI_VER = 0.9.4
|
||||
|
||||
LIBSAITHRIFT_DEV = libsaithrift-dev_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
LIBSAITHRIFT_DEV = libsaithrift$(SAITHRIFT_VER)-dev_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
$(LIBSAITHRIFT_DEV)_SRC_PATH = $(SRC_PATH)/sonic-sairedis/SAI
|
||||
$(LIBSAITHRIFT_DEV)_DEPENDS += $(LIBTHRIFT) $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(MRVL_FPA) $(MRVL_SAI)
|
||||
$(LIBSAITHRIFT_DEV)_RDEPENDS += $(LIBTHRIFT) $(MRVL_SAI)
|
||||
|
||||
#Support two different versions of thrift
|
||||
ifeq ($(SAITHRIFT_V2),y)
|
||||
$(LIBSAITHRIFT_DEV)_DEPENDS += $(LIBTHRIFT_0_14_1) $(LIBTHRIFT_0_14_1_DEV) $(PYTHON3_THRIFT_0_14_1) $(THRIFT_0_14_1_COMPILER)
|
||||
$(LIBSAITHRIFT_DEV)_DEPENDS += $(LIBSAIMETADATA) $(LIBSAIMETADATA_DEV)
|
||||
$(LIBSAITHRIFT_DEV)_RDEPENDS += $(LIBTHRIFT_0_14_1) $(LIBSAIMETADATA)
|
||||
$(LIBSAITHRIFT_DEV)_BUILD_ENV = SAITHRIFTV2=true SAITHRIFT_VER=v2 GEN_SAIRPC_OPTS="--adapter_logger" SAIRPC_EXTRA_LIBS="-L\$(top_srcdir)/meta/.libs -lsaimetadata -lsaimeta"
|
||||
else
|
||||
$(LIBSAITHRIFT_DEV)_DEPENDS += $(LIBTHRIFT) $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER)
|
||||
$(LIBSAITHRIFT_DEV)_RDEPENDS += $(LIBTHRIFT)
|
||||
endif
|
||||
$(LIBSAITHRIFT_DEV)_DEPENDS += $(MRVL_FPA) $(MRVL_SAI)
|
||||
$(LIBSAITHRIFT_DEV)_RDEPENDS += $(MRVL_SAI)
|
||||
SONIC_DPKG_DEBS += $(LIBSAITHRIFT_DEV)
|
||||
|
||||
PYTHON_SAITHRIFT = python-saithrift_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
PYTHON_SAITHRIFT = python-saithrift$(SAITHRIFT_VER)_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(PYTHON_SAITHRIFT)))
|
||||
|
||||
SAISERVER = saiserver_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
$(SAISERVER)_RDEPENDS += $(LIBTHRIFT) $(MRVL_SAI)
|
||||
SAISERVER = saiserver$(SAITHRIFT_VER)_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
$(SAISERVER)_RDEPENDS += $(LIBSAITHRIFT_DEV)
|
||||
$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(SAISERVER)))
|
||||
|
||||
SAISERVER_DBG = saiserver-dbg_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
SAISERVER_DBG = saiserver$(SAITHRIFT_VER)-dbg_$(SAI_VER)_$(CONFIGURED_ARCH).deb
|
||||
$(SAISERVER_DBG)_RDEPENDS += $(SAISERVER)
|
||||
$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(SAISERVER_DBG)))
|
||||
|
@ -0,0 +1,13 @@
|
||||
diff --git a/debian/rules b/debian/rules
|
||||
index 3a50319ee..4b2a05932 100755
|
||||
--- a/debian/rules
|
||||
+++ b/debian/rules
|
||||
@@ -86,7 +86,7 @@ clean:
|
||||
dh_testroot
|
||||
rm -f build-arch-stamp build-indep-stamp configure-stamp
|
||||
|
||||
- cd $(CURDIR)/lib/py && python setup.py clean --all
|
||||
+ if [ -z $(shell command -v python) ]; then cd $(CURDIR)/lib/py && python3 setup.py clean --all; else cd $(CURDIR)/lib/py && python setup.py clean --all; fi
|
||||
|
||||
# Add here commands to clean up after the build process.
|
||||
-$(MAKE) clean
|
@ -0,0 +1,12 @@
|
||||
diff --git a/debian/rules b/debian/rules
|
||||
index 3a50319ee..4b2a05932 100755
|
||||
--- a/debian/rules
|
||||
+++ b/debian/rules
|
||||
@@ -65,6 +65,7 @@ build-compiler-stamp: configure-stamp
|
||||
|
||||
build-libcpp-stamp: configure-stamp build-compiler-stamp
|
||||
# Compile C++ library
|
||||
+ if [ -f /usr/lib/arm-linux-gnueabihf/libboost_unit_test_framework.a ]; then sudo ln -s /usr/lib/arm-linux-gnueabihf/libboost_unit_test_framework.a /usr/lib/libboost_unit_test_framework.a ; fi
|
||||
$(MAKE) -C $(CURDIR)/lib/cpp
|
||||
touch $@
|
||||
|
@ -3,3 +3,5 @@
|
||||
0003-Remove-minimist-packages.patch
|
||||
0004-Remove-underscore-packages.patch
|
||||
0002-cve-2017-1000487.patch
|
||||
0005-Fix-build-rules-python.patch
|
||||
0006-Fix-build-rules-boost-test.patch
|
||||
|
Reference in New Issue
Block a user