diff --git a/.gitignore b/.gitignore index ee80cf8d6c5..96a073d67fc 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,5 @@ dockers/docker-snmp-sv2/Dockerfile dockers/docker-team/Dockerfile dockers/docker-teamd/Dockerfile dockers/docker-config-engine/Dockerfile +dockers/docker-base/Dockerfile platform/broadcom/docker-syncd-brcm/Dockerfile diff --git a/dockers/docker-base/Dockerfile b/dockers/docker-base/Dockerfile.j2 similarity index 89% rename from dockers/docker-base/Dockerfile rename to dockers/docker-base/Dockerfile.j2 index 59af1f3ac6a..5bdbf8b3d5a 100644 --- a/dockers/docker-base/Dockerfile +++ b/dockers/docker-base/Dockerfile.j2 @@ -36,9 +36,16 @@ RUN apt-get -y purge \ exim4-config \ exim4-daemon-light +{% if docker_base_dbgs %} +## Install common debug-packages +RUN apt-get -y install \ +{% for dbg_pkg in docker_base_dbgs.split(' ') -%} + {{ dbg_pkg }}{{' '}} +{%- endfor %} +{% endif %} + ## Clean up apt ## Remove /var/lib/apt/lists/*, could be obsoleted for derived images RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y; \ rm -rf /var/lib/apt/lists/*; \ rm -rf /tmp/*; - diff --git a/rules/config b/rules/config index ea4f32de148..be8b7a9d77f 100644 --- a/rules/config +++ b/rules/config @@ -42,3 +42,6 @@ PASSWORD = YourPaSsWoRd # If not set (default behavior) the default minigraph built into the image will be used. # ENABLE_DHCP_GRAPH_SERVICE = y +# SONIC_CONFIG_DEBUG - install debug packages +# Uncomment next line to enable: +# SONIC_CONFIG_DEBUG = y diff --git a/rules/docker-base.mk b/rules/docker-base.mk index 56e42ac97b4..f041f7d05cd 100644 --- a/rules/docker-base.mk +++ b/rules/docker-base.mk @@ -3,4 +3,12 @@ DOCKER_BASE = docker-base.gz $(DOCKER_BASE)_PATH = $(DOCKERS_PATH)/docker-base -SONIC_SIMPLE_DOCKER_IMAGES += $(DOCKER_BASE) +ifeq ($(SONIC_CONFIG_DEBUG),y) +GDB = gdb +VIM = vim +OPENSSH = openssh-client +SSHPASS = sshpass +$(DOCKER_BASE)_DBG_PACKAGES += $(GDB) $(VIM) $(OPENSSH) $(SSHPASS) +endif + +SONIC_DOCKER_IMAGES += $(DOCKER_BASE) diff --git a/slave.mk b/slave.mk index 4ea96d1f4c8..2484e323c19 100644 --- a/slave.mk +++ b/slave.mk @@ -267,6 +267,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .pl sudo mount --bind $(PYTHON_WHEELS_PATH) $($*.gz_PATH)/python-wheels $(LOG) # Export variables for j2. Use path for unique variable names, e.g. docker_orchagent_debs $(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)))_dbgs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DBG_PACKAGES)))\n" | awk '!a[$$0]++')) j2 $($*.gz_PATH)/Dockerfile.j2 > $($*.gz_PATH)/Dockerfile docker build --squash --no-cache -t $* $($*.gz_PATH) $(LOG) docker save $* | gzip -c > $@