[build]: put stretch debian packages under target/debs/stretch/ (#2519)
* [build]: put stretch debian packages under target/debs/stretch/ * in stretch build phase, all debian packages built in that stage are placed under target/debs/stretch directory. * for python-based debian packages, since they are really the same for jessie and stretch, they are placed under target/python-debs directory. Signed-off-by: Guohan Lu <gulv@microsoft.com>
This commit is contained in:
parent
3d0d0077d7
commit
f20665008c
@ -103,6 +103,7 @@ DOCKER_BUILD = docker build --no-cache \
|
||||
|
||||
SONIC_BUILD_INSTRUCTION := make \
|
||||
-f slave.mk \
|
||||
BLDENV=$(BLDENV) \
|
||||
PLATFORM=$(PLATFORM) \
|
||||
BUILD_NUMBER=$(BUILD_NUMBER) \
|
||||
BUILD_TIMESTAMP=$(BUILD_TIMESTAMP) \
|
||||
|
@ -114,11 +114,11 @@ sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c 'cd /dev && MAKEDEV generic'
|
||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install busybox
|
||||
echo '[INFO] Install SONiC linux kernel image'
|
||||
## Note: duplicate apt-get command to ensure every line return zero
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/initramfs-tools-core_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/initramfs-tools-core_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/initramfs-tools_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/initramfs-tools_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/linux-image-${LINUX_KERNEL_VERSION}-amd64_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/linux-image-${LINUX_KERNEL_VERSION}-amd64_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install acl
|
||||
|
||||
@ -157,7 +157,7 @@ sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/union-fsck
|
||||
pushd $FILESYSTEM_ROOT/usr/share/initramfs-tools/scripts/init-bottom && sudo patch -p1 < $OLDPWD/files/initramfs-tools/udev.patch; popd
|
||||
|
||||
## Install latest intel ixgbe driver
|
||||
sudo cp target/files/ixgbe.ko $FILESYSTEM_ROOT/lib/modules/${LINUX_KERNEL_VERSION}-amd64/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
|
||||
sudo cp target/files/stretch/ixgbe.ko $FILESYSTEM_ROOT/lib/modules/${LINUX_KERNEL_VERSION}-amd64/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
|
||||
|
||||
## Install docker
|
||||
echo '[INFO] Install docker'
|
||||
|
@ -24,6 +24,18 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
|
||||
{% if docker_platform_monitor_pydebs.strip() -%}
|
||||
# Copy locally-built Debian package dependencies
|
||||
{%- for deb in docker_platform_monitor_pydebs.split(' ') %}
|
||||
COPY python-debs/{{ deb }} /debs/
|
||||
{%- endfor %}
|
||||
|
||||
# Install locally-built Debian packages and implicitly install their dependencies
|
||||
{%- for deb in docker_platform_monitor_pydebs.split(' ') %}
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
|
||||
{% if docker_platform_monitor_whls.strip() -%}
|
||||
# Copy locally-built Python wheel dependencies
|
||||
{%- for whl in docker_platform_monitor_whls.split(' ') %}
|
||||
|
@ -102,7 +102,7 @@ sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME
|
||||
# Install built Python Click package (and its dependencies via 'apt-get -y install -f')
|
||||
# Do this before installing sonic-utilities so that it doesn't attempt to install
|
||||
# an older version as part of its dependencies
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/python-click*_all.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/python-click*_all.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
|
||||
# Install python pexpect used by sonic-utilities consutil
|
||||
@ -113,7 +113,7 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install pexpect
|
||||
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install tabulate==0.8.2
|
||||
|
||||
# Install SONiC Utilities (and its dependencies via 'apt-get -y install -f')
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/python-sonic-utilities_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $python_debs_path/python-sonic-utilities_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
|
||||
# SONiC utilities installs bash-completion as a dependency. However, it is disabled by default
|
||||
@ -121,15 +121,15 @@ sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/python-sonic-utilities_*.deb ||
|
||||
sudo cp -f $IMAGE_CONFIGS/bash/bash.bashrc $FILESYSTEM_ROOT/etc/
|
||||
|
||||
# Install SONiC Device Data (and its dependencies via 'apt-get -y install -f')
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/sonic-device-data_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/sonic-device-data_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
|
||||
# Install pam-tacplus and nss-tacplus
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/libtac2_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libtac2_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/libpam-tacplus_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libpam-tacplus_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/libnss-tacplus_*.deb || \
|
||||
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libnss-tacplus_*.deb || \
|
||||
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
|
||||
# Disable tacplus by default
|
||||
sudo LANG=C chroot $FILESYSTEM_ROOT pam-auth-update --remove tacplus
|
||||
|
@ -1,3 +1,4 @@
|
||||
CAVM_PLATFORM_DEB = cavm_platform_modules.deb
|
||||
$(CAVM_PLATFORM_DEB)_SRC_PATH = $(PLATFORM_PATH)/cavm_platform_modules
|
||||
SONIC_MAKE_DEBS += $(CAVM_PLATFORM_DEB)
|
||||
SONIC_STRETCH_DEBS += $(CAVM_PLATFORM_DEB)
|
||||
|
@ -4,3 +4,4 @@ CAVM_XPNET_DEB = xp80-Pcie-Endpoint.deb
|
||||
$(CAVM_XPNET_DEB)_URL = $(CAVM_SAI_URL)/netdev/$(CAVM_XPNET_DEB)
|
||||
|
||||
SONIC_ONLINE_DEBS += $(CAVM_XPNET_DEB)
|
||||
SONIC_STRETCH_DEBS += $(CAVM_XPNET_DEB)
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
DOCKER_SAISERVER_MLNX = docker-saiserver-mlnx.gz
|
||||
$(DOCKER_SAISERVER_MLNX)_PATH = $(PLATFORM_PATH)/docker-saiserver-mlnx
|
||||
$(DOCKER_SAISERVER_MLNX)_DEPENDS += $(SAISERVER) $(PYTHON_SDK_API) $(MLNX_SFPD) $(CRIU)
|
||||
$(DOCKER_SAISERVER_MLNX)_DEPENDS += $(SAISERVER) $(PYTHON_SDK_API)
|
||||
$(DOCKER_SAISERVER_MLNX)_PYTHON_DEBS += $(MLNX_SFPD)
|
||||
$(DOCKER_SAISERVER_MLNX)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
|
||||
SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MLNX)
|
||||
|
||||
|
@ -14,6 +14,12 @@ debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
COPY \
|
||||
{% for deb in docker_saiserver_mlnx_pydebs.split(' ') -%}
|
||||
python-debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
RUN apt-get install -y --no-install-recommends libxml2 iptables libbsd0 protobuf-c-compiler protobuf-compiler python-protobuf libprotobuf-c1 python-future python-ipaddr libnet1 pkg-config asciidoc xmlto
|
||||
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \
|
||||
@ -21,6 +27,11 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
||||
dpkg_apt debs/{{ deb }}{{'; '}}
|
||||
{%- endfor %}
|
||||
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \
|
||||
{% for deb in docker_saiserver_mlnx_pydebs.split(' ') -%}
|
||||
dpkg_apt debs/{{ deb }}{{'; '}}
|
||||
{%- endfor %}
|
||||
|
||||
COPY ["start.sh", "/usr/bin/"]
|
||||
|
||||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
DOCKER_SYNCD_MLNX_RPC = docker-syncd-mlnx-rpc.gz
|
||||
$(DOCKER_SYNCD_MLNX_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-mlnx-rpc
|
||||
$(DOCKER_SYNCD_MLNX_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(MLNX_SFPD)
|
||||
$(DOCKER_SYNCD_MLNX_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT)
|
||||
$(DOCKER_SYNCD_MLNX_RPC)_PYTHON_DEBS += $(MLNX_SFPD)
|
||||
$(DOCKER_SYNCD_MLNX_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_MLNX)
|
||||
SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_MLNX_RPC)
|
||||
ifeq ($(ENABLE_SYNCD_RPC),y)
|
||||
|
@ -9,6 +9,12 @@ debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
COPY \
|
||||
{% for deb in docker_syncd_mlnx_rpc_pydebs.split(' ') -%}
|
||||
python-debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
RUN dpkg -P syncd
|
||||
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \
|
||||
@ -16,6 +22,10 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
||||
dpkg_apt debs/{{ deb }}{{'; '}}
|
||||
{%- endfor %}
|
||||
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \
|
||||
{% for deb in docker_syncd_mlnx_rpc_pydebs.split(' ') -%}
|
||||
dpkg_apt debs/{{ deb }}{{'; '}}
|
||||
|
||||
## Pre-install the fundamental packages
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install \
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
DOCKER_SYNCD_MLNX = docker-syncd-mlnx.gz
|
||||
$(DOCKER_SYNCD_MLNX)_PATH = $(PLATFORM_PATH)/docker-syncd-mlnx
|
||||
$(DOCKER_SYNCD_MLNX)_DEPENDS += $(SYNCD) $(PYTHON_SDK_API) $(MLNX_SFPD)
|
||||
$(DOCKER_SYNCD_MLNX)_DEPENDS += $(SYNCD) $(PYTHON_SDK_API)
|
||||
$(DOCKER_SYNCD_MLNX)_PYTHON_DEBS += $(MLNX_SFPD)
|
||||
$(DOCKER_SYNCD_MLNX)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
|
||||
SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_MLNX)
|
||||
ifneq ($(ENABLE_SYNCD_RPC),y)
|
||||
|
@ -14,6 +14,12 @@ debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
COPY \
|
||||
{% for deb in docker_syncd_mlnx_pydebs.split(' ') -%}
|
||||
python-debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
RUN apt-get install -y libxml2
|
||||
|
||||
RUN dpkg -i \
|
||||
@ -21,6 +27,11 @@ RUN dpkg -i \
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor %}
|
||||
|
||||
RUN dpkg -i \
|
||||
{% for deb in docker_syncd_mlnx_pydebs.split(' ') -%}
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor %}
|
||||
|
||||
COPY ["start.sh", "/usr/bin/"]
|
||||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||
|
||||
|
@ -55,4 +55,4 @@ $(eval $(foreach deb,$(MLNX_SDK_RDEBS),$(call make_url,$(deb))))
|
||||
$(eval $(foreach deb,$(PYTHON_SDK_API) $(SX_KERNEL) $(SX_KERNEL_DEV),$(call make_url,$(deb))))
|
||||
|
||||
SONIC_ONLINE_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) $(SX_KERNEL)
|
||||
|
||||
SONIC_STRETCH_DEBS += $(SX_KERNEL)
|
||||
|
@ -10,9 +10,10 @@ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \
|
||||
$(LIBTEAMDCT) \
|
||||
$(LIBTEAM_UTILS) \
|
||||
$(SONIC_DEVICE_DATA) \
|
||||
$(SONIC_UTILS) \
|
||||
$(IPROUTE2)
|
||||
|
||||
$(DOCKER_SONIC_VS)_PYTHON_DEBS += $(SONIC_UTILS)
|
||||
|
||||
ifeq ($(INSTALL_DEBUG_TOOLS), y)
|
||||
$(DOCKER_SONIC_VS)_DEPENDS += $(SWSS_DBG) \
|
||||
$(LIBSWSSCOMMON_DBG) \
|
||||
|
@ -67,6 +67,18 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
|
||||
{% if docker_sonic_vs_pydebs.strip() -%}
|
||||
# Copy locally-built Debian package dependencies
|
||||
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
||||
COPY python-debs/{{ deb }} /debs/
|
||||
{%- endfor %}
|
||||
|
||||
# Install locally-built Debian packages and implicitly install their dependencies
|
||||
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
|
||||
# Clean up
|
||||
RUN apt-get clean -y
|
||||
RUN apt-get autoclean -y
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
DOCKER_PLATFORM_MONITOR = docker-platform-monitor.gz
|
||||
$(DOCKER_PLATFORM_MONITOR)_PATH = $(DOCKERS_PATH)/docker-platform-monitor
|
||||
$(DOCKER_PLATFORM_MONITOR)_DEPENDS += $(LIBSWSSCOMMON) $(PYTHON_SWSSCOMMON) $(SONIC_LEDD) $(SONIC_XCVRD) $(SONIC_PSUD)
|
||||
$(DOCKER_PLATFORM_MONITOR)_DEPENDS += $(LIBSWSSCOMMON) $(PYTHON_SWSSCOMMON)
|
||||
$(DOCKER_PLATFORM_MONITOR)_PYTHON_DEBS += $(SONIC_LEDD) $(SONIC_XCVRD) $(SONIC_PSUD)
|
||||
$(DOCKER_PLATFORM_MONITOR)_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2)
|
||||
$(DOCKER_PLATFORM_MONITOR)_PYTHON_WHEELS += $(SWSSSDK_PY2)
|
||||
$(DOCKER_PLATFORM_MONITOR)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE)
|
||||
|
@ -14,3 +14,4 @@ export PYTHON_CLICK_VERSION
|
||||
PYTHON_CLICK = python-click_$(PYTHON_CLICK_VERSION)_all.deb
|
||||
$(PYTHON_CLICK)_SRC_PATH = $(SRC_PATH)/python-click
|
||||
SONIC_MAKE_DEBS += $(PYTHON_CLICK)
|
||||
SONIC_STRETCH_DEBS += $(PYTHON_CLICK)
|
||||
|
@ -8,3 +8,4 @@ export SONIC_DEVICE_DATA_VERSION SONIC_DEVICE_DATA_VERSION_FULL
|
||||
SONIC_DEVICE_DATA = sonic-device-data_$(SONIC_DEVICE_DATA_VERSION_FULL)_all.deb
|
||||
$(SONIC_DEVICE_DATA)_SRC_PATH = $(SRC_PATH)/sonic-device-data
|
||||
SONIC_MAKE_DEBS += $(SONIC_DEVICE_DATA)
|
||||
SONIC_STRETCH_DEBS += $(SONIC_DEVICE_DATA)
|
||||
|
103
slave.mk
103
slave.mk
@ -24,10 +24,18 @@ SRC_PATH = src
|
||||
RULES_PATH = rules
|
||||
TARGET_PATH = target
|
||||
DOCKERS_PATH = dockers
|
||||
ifdef BLDENV
|
||||
DEBS_PATH = $(TARGET_PATH)/debs/$(BLDENV)
|
||||
FILES_PATH = $(TARGET_PATH)/files/$(BLDENV)
|
||||
else
|
||||
DEBS_PATH = $(TARGET_PATH)/debs
|
||||
FILES_PATH = $(TARGET_PATH)/files
|
||||
endif
|
||||
PYTHON_DEBS_PATH = $(TARGET_PATH)/python-debs
|
||||
PYTHON_WHEELS_PATH = $(TARGET_PATH)/python-wheels
|
||||
PROJECT_ROOT = $(shell pwd)
|
||||
STRETCH_DEBS_PATH = $(TARGET_PATH)/debs/stretch
|
||||
STRETCH_FILES_PATH = $(TARGET_PATH)/files/stretch
|
||||
|
||||
CONFIGURED_PLATFORM := $(shell [ -f .platform ] && cat .platform || echo generic)
|
||||
PLATFORM_PATH = platform/$(CONFIGURED_PLATFORM)
|
||||
@ -48,7 +56,10 @@ endif
|
||||
|
||||
configure :
|
||||
@mkdir -p target/debs
|
||||
@mkdir -p target/debs/stretch
|
||||
@mkdir -p target/files
|
||||
@mkdir -p target/files/stretch
|
||||
@mkdir -p target/python-debs
|
||||
@mkdir -p target/python-wheels
|
||||
@echo $(PLATFORM) > .platform
|
||||
|
||||
@ -155,6 +166,7 @@ $(info "SONIC_DEBUGGING_ON" : "$(SONIC_DEBUGGING_ON)")
|
||||
$(info "SONIC_PROFILING_ON" : "$(SONIC_PROFILING_ON)")
|
||||
$(info "KERNEL_PROCURE_METHOD" : "$(KERNEL_PROCURE_METHOD)")
|
||||
$(info "BUILD_TIMESTAMP" : "$(BUILD_TIMESTAMP)")
|
||||
$(info "BLDENV" : "$(BLDENV)")
|
||||
$(info )
|
||||
|
||||
###############################################################################
|
||||
@ -304,30 +316,6 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a
|
||||
|
||||
SONIC_TARGET_LIST += $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS))
|
||||
|
||||
# Build project with python setup.py --command-packages=stdeb.command
|
||||
# Add new package for build:
|
||||
# SOME_NEW_DEB = some_new_deb.deb
|
||||
# $(SOME_NEW_DEB)_SRC_PATH = $(SRC_PATH)/project_name
|
||||
# $(SOME_NEW_DEB)_DEPENDS = $(SOME_OTHER_DEB1) $(SOME_OTHER_DEB2) ...
|
||||
# SONIC_PYTHON_STDEB_DEBS += $(SOME_NEW_DEB)
|
||||
$(addprefix $(DEBS_PATH)/, $(SONIC_PYTHON_STDEB_DEBS)) : $(DEBS_PATH)/% : .platform $$(addsuffix -install,$$(addprefix $(DEBS_PATH)/,$$($$*_DEPENDS))) \
|
||||
$$(addsuffix -install,$$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*_WHEEL_DEPENDS)))
|
||||
$(HEADER)
|
||||
# Apply series of patches if exist
|
||||
if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && QUILT_PATCHES=../$(notdir $($*_SRC_PATH)).patch quilt push -a; popd; fi
|
||||
# Build project
|
||||
pushd $($*_SRC_PATH) $(LOG)
|
||||
rm -rf deb_dist/* $(LOG)
|
||||
python setup.py --command-packages=stdeb.command bdist_deb $(LOG)
|
||||
popd $(LOG)
|
||||
# Clean up
|
||||
if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; popd; fi
|
||||
# Take built package(s)
|
||||
mv $(addprefix $($*_SRC_PATH)/deb_dist/, $* $($*_DERIVED_DEBS)) $(DEBS_PATH) $(LOG)
|
||||
$(FOOTER)
|
||||
|
||||
SONIC_TARGET_LIST += $(addprefix $(DEBS_PATH)/, $(SONIC_PYTHON_STDEB_DEBS))
|
||||
|
||||
# Rules for derived debian packages (dev, dbg, etc.)
|
||||
# All noise takes place in main deb recipe, so we are just telling that
|
||||
# we depend on it and move our deb to other targets
|
||||
@ -382,6 +370,31 @@ $(SONIC_INSTALL_TARGETS) : $(DEBS_PATH)/%-install : .platform $$(addsuffix -inst
|
||||
## Python packages
|
||||
###############################################################################
|
||||
|
||||
# Build project with python setup.py --command-packages=stdeb.command
|
||||
# Add new package for build:
|
||||
# SOME_NEW_DEB = some_new_deb.deb
|
||||
# $(SOME_NEW_DEB)_SRC_PATH = $(SRC_PATH)/project_name
|
||||
# $(SOME_NEW_DEB)_DEPENDS = $(SOME_OTHER_DEB1) $(SOME_OTHER_DEB2) ...
|
||||
# SONIC_PYTHON_STDEB_DEBS += $(SOME_NEW_DEB)
|
||||
$(addprefix $(PYTHON_DEBS_PATH)/, $(SONIC_PYTHON_STDEB_DEBS)) : $(PYTHON_DEBS_PATH)/% : .platform \
|
||||
$$(addsuffix -install,$$(addprefix $(PYTHON_DEBS_PATH)/,$$($$*_DEPENDS))) \
|
||||
$$(addsuffix -install,$$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*_WHEEL_DEPENDS)))
|
||||
$(HEADER)
|
||||
# Apply series of patches if exist
|
||||
if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && QUILT_PATCHES=../$(notdir $($*_SRC_PATH)).patch quilt push -a; popd; fi
|
||||
# Build project
|
||||
pushd $($*_SRC_PATH) $(LOG)
|
||||
rm -rf deb_dist/* $(LOG)
|
||||
python setup.py --command-packages=stdeb.command bdist_deb $(LOG)
|
||||
popd $(LOG)
|
||||
# Clean up
|
||||
if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; popd; fi
|
||||
# Take built package(s)
|
||||
mv $(addprefix $($*_SRC_PATH)/deb_dist/, $* $($*_DERIVED_DEBS)) $(PYTHON_DEBS_PATH) $(LOG)
|
||||
$(FOOTER)
|
||||
|
||||
SONIC_TARGET_LIST += $(addprefix $(PYTHON_DEBS_PATH)/, $(SONIC_PYTHON_STDEB_DEBS))
|
||||
|
||||
# Build project using python setup.py bdist_wheel
|
||||
# Projects that generate python wheels
|
||||
# Add new package for build:
|
||||
@ -452,18 +465,27 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.g
|
||||
SONIC_TARGET_LIST += $(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES))
|
||||
|
||||
# Targets for building docker images
|
||||
$(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addprefix $(DEBS_PATH)/,$$($$*.gz_DEPENDS)) $$(addprefix $(FILES_PATH)/,$$($$*.gz_FILES)) $$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*.gz_PYTHON_WHEELS)) $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS))) $$($$*.gz_PATH)/Dockerfile.j2
|
||||
$(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start \
|
||||
$$(addprefix $(DEBS_PATH)/,$$($$*.gz_DEPENDS)) \
|
||||
$$(addprefix $(FILES_PATH)/,$$($$*.gz_FILES)) \
|
||||
$$(addprefix $(PYTHON_DEBS_PATH)/,$$($$*.gz_PYTHON_DEBS)) \
|
||||
$$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*.gz_PYTHON_WHEELS)) \
|
||||
$$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS))) \
|
||||
$$($$*.gz_PATH)/Dockerfile.j2
|
||||
$(HEADER)
|
||||
# Apply series of patches if exist
|
||||
if [ -f $($*.gz_PATH).patch/series ]; then pushd $($*.gz_PATH) && QUILT_PATCHES=../$(notdir $($*.gz_PATH)).patch quilt push -a; popd; fi
|
||||
mkdir -p $($*.gz_PATH)/debs $(LOG)
|
||||
mkdir -p $($*.gz_PATH)/files $(LOG)
|
||||
mkdir -p $($*.gz_PATH)/python-debs $(LOG)
|
||||
mkdir -p $($*.gz_PATH)/python-wheels $(LOG)
|
||||
sudo mount --bind $(DEBS_PATH) $($*.gz_PATH)/debs $(LOG)
|
||||
sudo mount --bind $(FILES_PATH) $($*.gz_PATH)/files $(LOG)
|
||||
sudo mount --bind $(PYTHON_DEBS_PATH) $($*.gz_PATH)/python-debs $(LOG)
|
||||
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)))_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]++'))
|
||||
$(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
|
||||
@ -504,27 +526,28 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \
|
||||
onie-image.conf \
|
||||
build_debian.sh \
|
||||
build_image.sh \
|
||||
$$(addsuffix -install,$$(addprefix $(DEBS_PATH)/,$$($$*_DEPENDS))) \
|
||||
$$(addprefix $(DEBS_PATH)/,$$($$*_INSTALLS)) \
|
||||
$$(addprefix $(DEBS_PATH)/,$$($$*_LAZY_INSTALLS)) \
|
||||
$$(addprefix $(FILES_PATH)/,$$($$*_FILES)) \
|
||||
$(addprefix $(FILES_PATH)/,$(IXGBE_DRIVER)) \
|
||||
$(addprefix $(DEBS_PATH)/,$(INITRAMFS_TOOLS) \
|
||||
$$(addsuffix -install,$$(addprefix $(STRETCH_DEBS_PATH)/,$$($$*_DEPENDS))) \
|
||||
$$(addprefix $(STRETCH_DEBS_PATH)/,$$($$*_INSTALLS)) \
|
||||
$$(addprefix $(STRETCH_DEBS_PATH)/,$$($$*_LAZY_INSTALLS)) \
|
||||
$(addprefix $(STRETCH_DEBS_PATH)/,$(INITRAMFS_TOOLS) \
|
||||
$(LINUX_KERNEL) \
|
||||
$(SONIC_DEVICE_DATA) \
|
||||
$(PYTHON_CLICK) \
|
||||
$(SONIC_UTILS) \
|
||||
$(BASH) \
|
||||
$(LIBPAM_TACPLUS) \
|
||||
$(LIBNSS_TACPLUS)) \
|
||||
$$(addprefix $(TARGET_PATH)/,$$($$*_DOCKERS)) \
|
||||
$$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE)) \
|
||||
$$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PLATFORM_COMMON_PY2)) \
|
||||
$$(addprefix $(PYTHON_WHEELS_PATH)/,$(REDIS_DUMP_LOAD_PY2))
|
||||
$$(addprefix $(FILES_PATH)/,$$($$*_FILES)) \
|
||||
$(addprefix $(STRETCH_FILES_PATH)/,$(IXGBE_DRIVER)) \
|
||||
$(addprefix $(PYTHON_DEBS_PATH)/,$(SONIC_UTILS)) \
|
||||
$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE)) \
|
||||
$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PLATFORM_COMMON_PY2)) \
|
||||
$(addprefix $(PYTHON_WHEELS_PATH)/,$(REDIS_DUMP_LOAD_PY2))
|
||||
$(HEADER)
|
||||
# Pass initramfs and linux kernel explicitly. They are used for all platforms
|
||||
export initramfs_tools="$(DEBS_PATH)/$(INITRAMFS_TOOLS)"
|
||||
export linux_kernel="$(DEBS_PATH)/$(LINUX_KERNEL)"
|
||||
export debs_path="$(STRETCH_DEBS_PATH)"
|
||||
export python_debs_path="$(PYTHON_DEBS_PATH)"
|
||||
export initramfs_tools="$(STRETCH_DEBS_PATH)/$(INITRAMFS_TOOLS)"
|
||||
export linux_kernel="$(STRTCH_DEBS_PATH)/$(LINUX_KERNEL)"
|
||||
export onie_recovery_image="$(FILES_PATH)/$(ONIE_RECOVERY_IMAGE)"
|
||||
export kversion="$(KVERSION)"
|
||||
export image_type="$($*_IMAGE_TYPE)"
|
||||
@ -534,8 +557,8 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \
|
||||
export enable_dhcp_graph_service="$(ENABLE_DHCP_GRAPH_SERVICE)"
|
||||
export shutdown_bgp_on_start="$(SHUTDOWN_BGP_ON_START)"
|
||||
export enable_pfcwd_on_start="$(ENABLE_PFCWD_ON_START)"
|
||||
export installer_debs="$(addprefix $(DEBS_PATH)/,$($*_INSTALLS))"
|
||||
export lazy_installer_debs="$(foreach deb, $($*_LAZY_INSTALLS),$(foreach device, $($(deb)_PLATFORM),$(addprefix $(device)@, $(DEBS_PATH)/$(deb))))"
|
||||
export installer_debs="$(addprefix $(STRETCH_DEBS_PATH)/,$($*_INSTALLS))"
|
||||
export lazy_installer_debs="$(foreach deb, $($*_LAZY_INSTALLS),$(foreach device, $($(deb)_PLATFORM),$(addprefix $(device)@, $(STRETCH_DEBS_PATH)/$(deb))))"
|
||||
export installer_images="$(addprefix $(TARGET_PATH)/,$($*_DOCKERS))"
|
||||
export config_engine_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE))"
|
||||
export swsssdk_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SWSSSDK_PY2))"
|
||||
|
@ -201,6 +201,16 @@ RUN apt-get update && apt-get install -y \
|
||||
cmake \
|
||||
# For pam_tacplus build
|
||||
autoconf-archive \
|
||||
# For python-click build
|
||||
python-sphinx \
|
||||
python-docutils \
|
||||
python3-all \
|
||||
python3-setuptools \
|
||||
python3-sphinx \
|
||||
python3-docutils \
|
||||
python3-requests \
|
||||
python3-pytest \
|
||||
python3-colorama \
|
||||
# For initramfs
|
||||
bash-completion
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user