diff --git a/platform/mellanox/mlnx-sai.mk b/platform/mellanox/mlnx-sai.mk index bf5795c175d..d0e476aa664 100644 --- a/platform/mellanox/mlnx-sai.mk +++ b/platform/mellanox/mlnx-sai.mk @@ -9,13 +9,17 @@ MLNX_SAI_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SAI_VERSION))) # Place here URL where SAI sources exist MLNX_SAI_SOURCE_BASE_URL = -ifneq ($(MLNX_SAI_SOURCE_BASE_URL), ) -SAI_FROM_SRC = y -else -SAI_FROM_SRC = n -endif +# Optional local file path. If set, it will be used instead of downloading from the remote server. +# Note: When using a local SAI file, DOCKER_BUILDER_USER_MOUNT must also be configured to ensure +# the file is mounted inside the docker build environment. +# Example: +# DOCKER_BUILDER_USER_MOUNT = /auto/local_build:/auto/local_build:rslave +MLNX_LOCAL_SAI_FILE ?= + +# Set SAI_FROM_SRC based on source availability +SAI_FROM_SRC = $(if $(or $(MLNX_SAI_SOURCE_BASE_URL),$(MLNX_LOCAL_SAI_FILE)),y,n) -export MLNX_SAI_VERSION MLNX_SAI_SOURCE_BASE_URL +export MLNX_SAI_VERSION MLNX_SAI_SOURCE_BASE_URL MLNX_LOCAL_SAI_FILE MLNX_SAI = mlnx-sai_1.mlnx.$(MLNX_SAI_VERSION)_$(CONFIGURED_ARCH).deb $(MLNX_SAI)_SRC_PATH = $(PLATFORM_PATH)/mlnx-sai diff --git a/platform/mellanox/mlnx-sai/Makefile b/platform/mellanox/mlnx-sai/Makefile index ecfba91fd75..c27815763e1 100644 --- a/platform/mellanox/mlnx-sai/Makefile +++ b/platform/mellanox/mlnx-sai/Makefile @@ -7,7 +7,12 @@ DERIVED_TARGETS = mlnx-sai-dbgsym_1.mlnx.$(MLNX_SAI_VERSION)_$(CONFIGURED_ARCH). $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : rm -rf mlnx_sai - wget -c $(MLNX_SAI_SOURCE_BASE_URL)/$(MLNX_SAI_VERSION).tar.gz -O - | tar -xz + if [ -n "$(MLNX_LOCAL_SAI_FILE)" ] && [ -f "$(MLNX_LOCAL_SAI_FILE)" ]; then + echo "Using local SAI file: $(MLNX_LOCAL_SAI_FILE)" + tar -xzf $(MLNX_LOCAL_SAI_FILE) + else + wget -c $(MLNX_SAI_SOURCE_BASE_URL)/$(MLNX_SAI_VERSION).tar.gz -O - | tar -xz + fi pushd mlnx_sai debuild -e 'make_extra_flags="DEFS=-DACS_OS -DCONFIG_SYSLOG"' -us -uc -d -b