From 4ac9c5d718322982d33913578623f2692ff99a5a Mon Sep 17 00:00:00 2001 From: StormLiangMS <89824293+StormLiangMS@users.noreply.github.com> Date: Sun, 4 Feb 2024 10:30:58 +0800 Subject: [PATCH] fix the compile issue for slim image (#18015) Why I did it The PR introduced a bug for slim image build, #17905, by which the sonic_asic_platform is missing when build docker image for slim image. [ building ] [ target/docker-dhcp-relay.gz ] /sonic/dockers/docker-dhcp-relay/cli-plugin-tests /sonic /sonic Traceback (most recent call last): File "/usr/local/bin/j2", line 8, in sys.exit(main()) File "/usr/local/lib/python3.9/dist-packages/j2cli/cli.py", line 202, in main output = render_command( File "/usr/local/lib/python3.9/dist-packages/j2cli/cli.py", line 186, in render_command result = renderer.render(args.template, context) File "/usr/local/lib/python3.9/dist-packages/j2cli/cli.py", line 85, in render return self._env \ File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1090, in render self.environment.handle_exception() File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 832, in handle_exception reraise(*rewrite_traceback_stack(source=source)) File "/usr/lib/python3/dist-packages/jinja2/_compat.py", line 28, in reraise raise value.with_traceback(tb) File "/sonic/dockers/docker-dhcp-relay/Dockerfile.j2", line 48, in top-level template code {% if build_reduce_image_size != "y" or sonic_asic_platform != "broadcom" %} jinja2.exceptions.UndefinedError: 'sonic_asic_platform' is undefined make: *** [slave.mk:1072: target/docker-dhcp-relay.gz] Error 1 make: *** Waiting for unfinished jobs.... [ finished ] [ target/docker-swss-layer-bullseye.gz ] [ finished ] [ target/docker-syncd-brcm-dnx.gz ] make[1]: *** [Makefile.work:608: target/sonic-broadcom.bin] Error 2 make[1]: Leaving directory '/data/work/1/s' make: *** [Makefile:41: target/sonic-broadcom.bin] Error 2 And why it slipped the PR test? PR test doesn't compile with slim option, it won't check sonic_asic_platform != "broadcom" for PR build. Work item tracking Microsoft ADO (number only): How I did it Export sonic_asic_platform for docker build in slave.mk How to verify it build with slim image option. --- slave.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/slave.mk b/slave.mk index 2e35874c64a9..8473b2b3e7f4 100644 --- a/slave.mk +++ b/slave.mk @@ -1136,6 +1136,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 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]++')) $(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_whls=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_PYTHON_WHEELS)))\n" | awk '!a[$$0]++'))