diff --git a/dockers/docker-orchagent/docker-init.j2 b/dockers/docker-orchagent/docker-init.j2 index 88ebba30ed8..5405c2907aa 100755 --- a/dockers/docker-orchagent/docker-init.j2 +++ b/dockers/docker-orchagent/docker-init.j2 @@ -8,9 +8,10 @@ mkdir -p /dev/shm/supervisor/ CFGGEN_PARAMS=" \ -d \ {% if ENABLE_ASAN == "y" %} - -a "{\"ENABLE_ASAN\":\"{{ENABLE_ASAN}}\"}" \ -{% endif %} + -a "{\"ENABLE_ASAN\":\"{{ENABLE_ASAN}}\",\"ASIC_VENDOR\":\"${ASIC_VENDOR:-unknown}\"}" \ +{% else %} -a "{\"ASIC_VENDOR\":\"${ASIC_VENDOR:-unknown}\"}" \ +{% endif %} -y /etc/sonic/constants.yml \ -t /usr/share/sonic/templates/orch_zmq_tables.conf.j2,/etc/swss/orch_zmq_tables.conf \ -t /usr/share/sonic/templates/switch.json.j2,/etc/swss/config.d/switch.json \ diff --git a/platform/mellanox/docker-syncd-mlnx.dep b/platform/mellanox/docker-syncd-mlnx.dep index 20b1ca143cd..33c93e7b247 100644 --- a/platform/mellanox/docker-syncd-mlnx.dep +++ b/platform/mellanox/docker-syncd-mlnx.dep @@ -6,7 +6,7 @@ DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files -- $(DPATH)) $(DOCKER_SYNCD_BASE)_CACHE_MODE := GIT_CONTENT_SHA -$(DOCKER_SYNCD_BASE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(ENABLE_ASAN) $(MLNX_SDK_VERSION) $(MLNX_SAI_VERSION) +$(DOCKER_SYNCD_BASE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(MLNX_SDK_VERSION) $(MLNX_SAI_VERSION) $(DOCKER_SYNCD_BASE)_DEP_FILES := $(DEP_FILES) $(eval $(call add_dbg_docker,$(DOCKER_SYNCD_BASE),$(DOCKER_SYNCD_BASE_DBG))) diff --git a/platform/mellanox/docker-syncd-mlnx.mk b/platform/mellanox/docker-syncd-mlnx.mk index 3d784823d6b..41c4ab4c76b 100644 --- a/platform/mellanox/docker-syncd-mlnx.mk +++ b/platform/mellanox/docker-syncd-mlnx.mk @@ -1,6 +1,6 @@ # # SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES -# Copyright (c) 2016-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (c) 2016-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,7 +23,7 @@ include $(PLATFORM_PATH)/../template/docker-syncd-bookworm.mk $(DOCKER_SYNCD_BASE)_DEPENDS += $(SYNCD) $(PYTHON_SDK_API) $(MFT) $(MFT_FWTRACE_CFG) $(IPROUTE2_MLNX) ifeq ($(ENABLE_ASAN), y) -$(DOCKER_SYNCD_BASE)_DEPENDS += $(SYNCD_DBG) +$(DOCKER_SYNCD_BASE)_DEPENDS += $(SYNCD_DBG) $(LIBSWSSCOMMON_DBG) $(LIBSAIMETADATA_DBG) $(LIBSAIREDIS_DBG) endif $(DOCKER_SYNCD_BASE)_FILES += $(RDB-CLI) $(ISSU_VERSION_FILE) diff --git a/platform/template/docker-syncd-bookworm.mk b/platform/template/docker-syncd-bookworm.mk index 3649516d463..ad1aa7c6111 100644 --- a/platform/template/docker-syncd-bookworm.mk +++ b/platform/template/docker-syncd-bookworm.mk @@ -2,8 +2,12 @@ DOCKER_SYNCD_BASE_STEM = docker-syncd-$(DOCKER_SYNCD_PLATFORM_CODE) +ifeq ($(ENABLE_ASAN), y) +DOCKER_SYNCD_BASE = $(DOCKER_SYNCD_BASE_STEM)-asan.gz +else DOCKER_SYNCD_BASE = $(DOCKER_SYNCD_BASE_STEM).gz -DOCKER_SYNCD_BASE_DBG = $(DOCKER_SYNCD_BASE_STEM)-$(DBG_IMAGE_MARK).gz +endif +DOCKER_SYNCD_BASE_DBG = $(basename $(DOCKER_SYNCD_BASE))-$(DBG_IMAGE_MARK).gz $(DOCKER_SYNCD_BASE)_PATH = $(PLATFORM_PATH)/docker-syncd-$(DOCKER_SYNCD_PLATFORM_CODE) diff --git a/rules/docker-orchagent.dep b/rules/docker-orchagent.dep index a5fc67a65aa..7aff4d0d9f2 100644 --- a/rules/docker-orchagent.dep +++ b/rules/docker-orchagent.dep @@ -5,7 +5,7 @@ DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files $(DPATH)) $(DOCKER_ORCHAGENT)_CACHE_MODE := GIT_CONTENT_SHA -$(DOCKER_ORCHAGENT)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(ENABLE_ASAN) +$(DOCKER_ORCHAGENT)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(DOCKER_ORCHAGENT)_DEP_FILES := $(DEP_FILES) $(eval $(call add_dbg_docker,$(DOCKER_ORCHAGENT),$(DOCKER_ORCHAGENT_DBG))) diff --git a/rules/docker-orchagent.mk b/rules/docker-orchagent.mk index 3c0aa8fbad2..29cb87df09e 100644 --- a/rules/docker-orchagent.mk +++ b/rules/docker-orchagent.mk @@ -1,13 +1,17 @@ # docker image for orchagent DOCKER_ORCHAGENT_STEM = docker-orchagent +ifeq ($(ENABLE_ASAN), y) +DOCKER_ORCHAGENT = $(DOCKER_ORCHAGENT_STEM)-asan.gz +else DOCKER_ORCHAGENT = $(DOCKER_ORCHAGENT_STEM).gz -DOCKER_ORCHAGENT_DBG = $(DOCKER_ORCHAGENT_STEM)-$(DBG_IMAGE_MARK).gz +endif +DOCKER_ORCHAGENT_DBG = $(basename $(DOCKER_ORCHAGENT))-$(DBG_IMAGE_MARK).gz $(DOCKER_ORCHAGENT)_DEPENDS += $(SWSS) $(LIB_SONIC_DASH_API) ifeq ($(ENABLE_ASAN), y) -$(DOCKER_ORCHAGENT)_DEPENDS += $(SWSS_DBG) +$(DOCKER_ORCHAGENT)_DEPENDS += $(SWSS_DBG) $(LIBSWSSCOMMON_DBG) $(LIBSAIREDIS_DBG) endif $(DOCKER_ORCHAGENT)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BOOKWORM)_DBG_DEPENDS) diff --git a/rules/swss.dep b/rules/swss.dep index 784d2ddd951..e57a9e7a631 100644 --- a/rules/swss.dep +++ b/rules/swss.dep @@ -5,7 +5,7 @@ DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) $(SWSS)_CACHE_MODE := GIT_CONTENT_SHA -$(SWSS)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(ENABLE_ASAN) +$(SWSS)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(SWSS)_DEP_FILES := $(DEP_FILES) $(SWSS)_SMDEP_FILES := $(SMDEP_FILES) $(SWSS)_SMDEP_PATHS := $(SPATH) diff --git a/rules/swss.mk b/rules/swss.mk index b68804887c1..e2f5f4c0b69 100644 --- a/rules/swss.mk +++ b/rules/swss.mk @@ -1,19 +1,30 @@ # swss package +ifeq ($(ENABLE_ASAN), y) +SWSS = swss-asan_1.0.0_$(CONFIGURED_ARCH).deb +else SWSS = swss_1.0.0_$(CONFIGURED_ARCH).deb +endif $(SWSS)_SRC_PATH = $(SRC_PATH)/sonic-swss $(SWSS)_DEPENDS += $(LIBSAIREDIS_DEV) $(LIBSAIMETADATA_DEV) $(LIBTEAM_DEV) \ $(LIBTEAMDCTL) $(LIBTEAM_UTILS) $(LIBSWSSCOMMON_DEV) \ $(LIBSAIVS) $(LIBSAIVS_DEV) $(STP)\ $(PROTOBUF) $(PROTOBUF_LITE) $(PROTOBUF_DEV) $(LIB_SONIC_DASH_API) $(SWSS)_UNINSTALLS = $(LIBSAIVS_DEV) +ifeq ($(ENABLE_ASAN), y) +$(SWSS)_DEB_BUILD_PROFILES += asan +endif $(SWSS)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(LIBTEAM) \ $(LIBTEAMDCTL) $(LIBSWSSCOMMON) $(PYTHON3_SWSSCOMMON) \ $(PROTOBUF) $(PROTOBUF_LITE) $(PYTHON3_PROTOBUF) $(LIB_SONIC_DASH_API) SONIC_DPKG_DEBS += $(SWSS) +ifeq ($(ENABLE_ASAN), y) +SWSS_DBG = swss-dbg-asan_1.0.0_$(CONFIGURED_ARCH).deb +else SWSS_DBG = swss-dbg_1.0.0_$(CONFIGURED_ARCH).deb +endif $(SWSS_DBG)_DEPENDS += $(SWSS) $(SWSS_DBG)_RDEPENDS += $(SWSS) $(eval $(call add_derived_package,$(SWSS),$(SWSS_DBG))) diff --git a/rules/syncd.dep b/rules/syncd.dep index a9a72d4f2a8..53c0d6aa792 100644 --- a/rules/syncd.dep +++ b/rules/syncd.dep @@ -12,7 +12,7 @@ $(foreach path, $(SMDEP_PATHS), $(eval $(path) :=$(filter-out $(SMDEP_PATHS),$(a $(SYNCD)_CACHE_MODE := GIT_CONTENT_SHA -$(SYNCD)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(ENABLE_ASAN) +$(SYNCD)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(SYNCD)_DEP_FILES := $(DEP_FILES) $(SYNCD)_SMDEP_FILES := $(foreach path, $(SMDEP_PATHS), $($(path))) $(SYNCD)_SMDEP_PATHS := $(SMDEP_PATHS) diff --git a/rules/syncd.mk b/rules/syncd.mk index cbed33fbf50..1a5e85cc1ef 100644 --- a/rules/syncd.mk +++ b/rules/syncd.mk @@ -2,9 +2,16 @@ ifneq ($(CONFIGURED_PLATFORM),vs) +ifeq ($(ENABLE_ASAN), y) +SYNCD = syncd-asan_1.0.0_$(CONFIGURED_ARCH).deb +else SYNCD = syncd_1.0.0_$(CONFIGURED_ARCH).deb +endif $(SYNCD)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(SYNCD)_DEB_BUILD_PROFILES += syncd +ifeq ($(ENABLE_ASAN), y) +$(SYNCD)_DEB_BUILD_PROFILES += asan +endif $(SYNCD)_SRC_PATH = $(SRC_PATH)/sonic-sairedis $(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) $(LIBSAIREDIS) $(SYNCD)_RDEPENDS += $(LIBSWSSCOMMON) @@ -21,7 +28,11 @@ $(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) $(LIBTHRIFT_DEV) $(SYNCD)_DEB_BUILD_PROFILES += rpc endif +ifeq ($(ENABLE_ASAN), y) +SYNCD_DBG = syncd-asan-dbgsym_1.0.0_$(CONFIGURED_ARCH).deb +else SYNCD_DBG = syncd-dbgsym_1.0.0_$(CONFIGURED_ARCH).deb +endif $(SYNCD_DBG)_DEPENDS += $(SYNCD) $(SYNCD_DBG)_RDEPENDS += $(SYNCD) $(eval $(call add_derived_package,$(SYNCD),$(SYNCD_DBG))) diff --git a/rules/sysmgr.dep b/rules/sysmgr.dep index e6756daec01..41097fbc643 100644 --- a/rules/sysmgr.dep +++ b/rules/sysmgr.dep @@ -7,7 +7,7 @@ $(foreach path, $(SMDEP_PATHS), $(eval $(path) :=$(filter-out $(SMDEP_PATHS),$(a $(shell cd $(path) && git ls-files | grep -v " "))))) $(SYSMGR)_CACHE_MODE := GIT_CONTENT_SHA -$(SYSMGR)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(ENABLE_ASAN) +$(SYSMGR)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(SYSMGR)_DEP_FILES := $(DEP_FILES) $(SYSMGR)_SMDEP_FILES := $(foreach path, $(SMDEP_PATHS), $($(path))) $(SYSMGR)_SMDEP_PATHS := $(SPATH) diff --git a/slave.mk b/slave.mk index 0bc7ee30ee9..20747860275 100644 --- a/slave.mk +++ b/slave.mk @@ -860,7 +860,7 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a # Clean up if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; [ -d .pc ] && rm -rf .pc; popd; fi # Take built package(s) - mv -f $(addprefix $($*_SRC_PATH)/../, $* $($*_DERIVED_DEBS) $($*_EXTRA_DEBS)) $(DEBS_PATH) $(LOG) + $(foreach deb,$* $($*_DERIVED_DEBS) $($*_EXTRA_DEBS),mv -f $($*_SRC_PATH)/../$(or $($(deb)_DPKG_DEB_NAME),$(deb)) $(DEBS_PATH)/$(deb) $(LOG) ;) # Save the target deb into DPKG cache $(call SAVE_CACHE,$*,$@) @@ -1228,6 +1228,7 @@ $(addprefix $(TARGET_PATH)/, $(DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform # Export variables for j2. Use path for unique variable names, e.g. docker_orchagent_debs export include_system_eventd="$(INCLUDE_SYSTEM_EVENTD)" export build_reduce_image_size="$(BUILD_REDUCE_IMAGE_SIZE)" + export enable_asan="$(ENABLE_ASAN)" export sonic_asic_platform="$(patsubst %-$(CONFIGURED_ARCH),%,$(CONFIGURED_PLATFORM))" $(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_debs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DEPENDS),RDEPENDS))\n" | awk '!a[$$0]++')) $(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_pydebs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_PYTHON_DEBS)))\n" | awk '!a[$$0]++'))