From 3987cbd80a6533555bf506a746372f8ad69d3e89 Mon Sep 17 00:00:00 2001 From: Joe LeVeque Date: Sun, 20 Sep 2020 20:16:42 -0700 Subject: [PATCH] [sonic-utilities] Build and install as a Python wheel package (#5409) We are moving toward building all Python packages for SONiC as wheel packages rather than Debian packages. This will also allow us to more easily transition to Python 3. Python files are now packaged in "sonic-utilities" Pyhton wheel. Data files are now packaged in "sonic-utilities-data" Debian package. **- How I did it** - Build and install sonic-utilities as a Python package - Remove explicit installation of wheel dependencies, as these will now get installed implicitly by pip when installing sonic-utilities as a wheel - Build and install new sonic-utilities-data package to install data files required by sonic-utilities applications - Update all references to sonic-utilities scripts/entrypoints to either reference the new /usr/local/bin/ location or remove absolute path entirely where applicable Submodule updates: * src/sonic-utilities aa27dd9...2244d7b (5): > Support building sonic-utilities as a Python wheel package instead of a Debian package (#1122) > [consutil] Display remote device name in show command (#1120) > [vrf] fix check state_db error when vrf moving (#1119) > [consutil] Fix issue where the ConfigDBConnector's reference is missing (#1117) > Update to make config load/reload backward compatible. (#1115) * src/sonic-ztp dd025bc...911d622 (1): > Update paths to reflect new sonic-utilities install location, /usr/local/bin/ (#19) --- build_debian.sh | 6 +++- dockers/docker-fpm-frr/base_image_files/TSC | 2 +- files/build_templates/docker_image_ctl.j2 | 4 +-- .../build_templates/sonic_debian_extension.j2 | 30 +++++++++---------- files/image_config/config-setup/config-setup | 4 +-- files/image_config/fstrim/fstrim.service | 2 +- files/image_config/monit/conf.d/sonic-host | 2 +- files/image_config/sudoers/sudoers | 25 ++++++++-------- .../warmboot-finalizer/finalize-warmboot.sh | 2 +- .../watchdog-control/watchdog-control.sh | 2 +- .../common/fw-updater | 2 +- platform/mellanox/mlnx-onie-fw-update.sh | 2 +- platform/p4/docker-sonic-p4.mk | 2 +- platform/vs/docker-sonic-vs.mk | 8 ++--- platform/vs/docker-sonic-vs/Dockerfile.j2 | 11 ++++--- rules/sonic-utilities-data.dep | 9 ++++++ rules/sonic-utilities-data.mk | 5 ++++ rules/sonic-utilities.dep | 14 ++++----- rules/sonic-utilities.mk | 29 +++++++++--------- slave.mk | 6 ++-- src/sonic-utilities | 2 +- src/sonic-ztp | 2 +- 22 files changed, 92 insertions(+), 79 deletions(-) create mode 100644 rules/sonic-utilities-data.dep create mode 100644 rules/sonic-utilities-data.mk diff --git a/build_debian.sh b/build_debian.sh index 7479001042d8..034a50784bb0 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -318,6 +318,10 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in haveged \ jq +# Install "wheel" package so that we can install .whl packages and not +# encounter a "error: invalid command 'bdist_wheel'" error +sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install wheel +sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install wheel if [[ $CONFIGURED_ARCH == amd64 ]]; then ## Pre-install the fundamental packages for amd64 (x86) @@ -397,7 +401,7 @@ sudo mkdir -p $FILESYSTEM_ROOT/var/core # Config sysctl sudo augtool --autosave " -set /files/etc/sysctl.conf/kernel.core_pattern '|/usr/bin/coredump-compress %e %t %p %P' +set /files/etc/sysctl.conf/kernel.core_pattern '|/usr/local/bin/coredump-compress %e %t %p %P' set /files/etc/sysctl.conf/kernel.softlockup_panic 1 set /files/etc/sysctl.conf/kernel.panic 10 set /files/etc/sysctl.conf/vm.panic_on_oom 2 diff --git a/dockers/docker-fpm-frr/base_image_files/TSC b/dockers/docker-fpm-frr/base_image_files/TSC index f0ccebb73d60..b8136ae4f4c3 100755 --- a/dockers/docker-fpm-frr/base_image_files/TSC +++ b/dockers/docker-fpm-frr/base_image_files/TSC @@ -2,4 +2,4 @@ docker exec -i bgp /usr/bin/TSC -/usr/bin/portstat -p 5 +portstat -p 5 diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 965d927bc5c5..182f7008cc87 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -125,10 +125,10 @@ function postStartAction() $SONIC_DB_CLI CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1" fi - if [[ -x /usr/bin/db_migrator.py ]]; then + if [[ -x /usr/local/bin/db_migrator.py ]]; then # Migrate the DB to the latest schema version if needed if [ -z "$DEV" ]; then - /usr/bin/db_migrator.py -o migrate + /usr/local/bin/db_migrator.py -o migrate fi fi # Add redis UDS to the redis group and give read/write access to the group diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 0c796c092a31..2fbd6687d800 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -169,27 +169,29 @@ sudo cp {{platform_common_py2_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $PLATFORM_COMMON_PY2_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME +# Install Debian packages and their dependencies which are needed by sonic-utilities +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f python-m2crypto + # 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 $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 -# using pip install instead to get a more recent version than is available through debian -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install pexpect - -# Install tabulate >= 0.8.1 via pip in order to support multi-line row output for sonic-utilities -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install tabulate==0.8.2 - -# Install packages to support Dynamic Port Breakout config command for sonic-utilities -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install xmltodict==0.12.0 -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install jsondiff==1.2.0 +# Install SONiC Utilities Python 2 package +SONIC_UTILITIES_PY2_WHEEL_NAME=$(basename {{sonic_utilities_py2_wheel_path}}) +sudo cp {{sonic_utilities_py2_wheel_path}} $FILESYSTEM_ROOT/$SONIC_UTILITIES_PY2_WHEEL_NAME +sudo LANG=C chroot $FILESYSTEM_ROOT pip install $SONIC_UTILITIES_PY2_WHEEL_NAME +sudo rm -rf $FILESYSTEM_ROOT/$SONIC_UTILITIES_PY2_WHEEL_NAME -# Install SONiC Utilities (and its dependencies via 'apt-get -y install -f') -sudo dpkg --root=$FILESYSTEM_ROOT -i $python_debs_path/python-sonic-utilities_*.deb || \ +# Install sonic-utilities data files (and any dependencies via 'apt-get -y install -f') +sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/sonic-utilities-data_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f +# sonic-utilities-data installs bash-completion as a dependency. However, it is disabled by default +# in bash.bashrc, so we copy a version of the file with it enabled here. +sudo cp -f $IMAGE_CONFIGS/bash/bash.bashrc $FILESYSTEM_ROOT/etc/ + {% if enable_ztp == "y" %} # Install ZTP (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/sonic-ztp_*.deb || \ @@ -202,10 +204,6 @@ sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/sonic-host-service_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f {% endif %} -# SONiC utilities installs bash-completion as a dependency. However, it is disabled by default -# in bash.bashrc, so we copy a version of the file with it enabled here. -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 $debs_path/sonic-device-data_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f diff --git a/files/image_config/config-setup/config-setup b/files/image_config/config-setup/config-setup index d3860caf7c20..be89a983e231 100755 --- a/files/image_config/config-setup/config-setup +++ b/files/image_config/config-setup/config-setup @@ -188,9 +188,9 @@ load_config() return $? fi - if [[ -x /usr/bin/db_migrator.py ]]; then + if [[ -x /usr/local/bin/db_migrator.py ]]; then # Migrate the DB to the latest schema version if needed - /usr/bin/db_migrator.py -o migrate + /usr/local/bin/db_migrator.py -o migrate fi sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1" diff --git a/files/image_config/fstrim/fstrim.service b/files/image_config/fstrim/fstrim.service index 0383b5fa010b..c61683400831 100644 --- a/files/image_config/fstrim/fstrim.service +++ b/files/image_config/fstrim/fstrim.service @@ -3,5 +3,5 @@ Description=Discard unused blocks [Service] Type=oneshot -ExecStartPre=/usr/bin/log_ssd_health +ExecStartPre=/usr/local/bin/log_ssd_health ExecStart=/sbin/fstrim -av diff --git a/files/image_config/monit/conf.d/sonic-host b/files/image_config/monit/conf.d/sonic-host index 0a881eb76f6f..3fd313e24bab 100644 --- a/files/image_config/monit/conf.d/sonic-host +++ b/files/image_config/monit/conf.d/sonic-host @@ -27,6 +27,6 @@ check process rsyslog with pidfile /var/run/rsyslogd.pid # Hence for any discrepancy, there will be log messages for "ERR" level # from both route_check.py & monit. # -check program routeCheck with path "/usr/bin/route_check.py" +check program routeCheck with path "/usr/local/bin/route_check.py" every 5 cycles if status != 0 then alert diff --git a/files/image_config/sudoers/sudoers b/files/image_config/sudoers/sudoers index 98493b25856c..94670e936fbc 100644 --- a/files/image_config/sudoers/sudoers +++ b/files/image_config/sudoers/sudoers @@ -19,26 +19,25 @@ Defaults lecture_file = /etc/sudoers.lecture # Cmnd alias specification # Note: bcmcmd is dangerous for users in read only netgroups because it may operate ASIC -Cmnd_Alias READ_ONLY_CMDS = /sbin/brctl show, \ - /usr/bin/decode-syseeprom, \ - /usr/bin/docker images *, \ +Cmnd_Alias READ_ONLY_CMDS = /bin/cat /var/log/syslog*, \ + /sbin/brctl show, \ /usr/bin/docker exec snmp cat /etc/snmp/snmpd.conf, \ /usr/bin/docker exec bgp cat /etc/quagga/bgpd.conf, \ /usr/bin/docker exec * ps aux, \ + /usr/bin/docker images *, \ /usr/bin/docker ps*, \ - /usr/bin/generate_dump, \ /usr/bin/lldpctl, \ - /usr/bin/lldpshow, \ - /usr/bin/psuutil *, \ /usr/bin/sensors, \ - /usr/bin/sonic-installer list, \ - /usr/bin/sfputil show *, \ - /usr/bin/teamshow, \ + /usr/bin/tail -F /var/log/syslog, \ /usr/bin/vtysh -c show *, \ - /bin/cat /var/log/syslog*, \ - /usr/bin/tail -F /var/log/syslog - -Cmnd_Alias PASSWD_CMDS = /usr/bin/config tacacs passkey *, \ + /usr/local/bin/decode-syseeprom, \ + /usr/local/bin/generate_dump, \ + /usr/local/bin/lldpshow, \ + /usr/local/bin/psuutil *, \ + /usr/local/bin/sonic-installer list, \ + /usr/local/bin/sfputil show * + +Cmnd_Alias PASSWD_CMDS = /usr/local/bin/config tacacs passkey *, \ /usr/sbin/chpasswd * # User privilege specification diff --git a/files/image_config/warmboot-finalizer/finalize-warmboot.sh b/files/image_config/warmboot-finalizer/finalize-warmboot.sh index 01ad921137b6..2cde4028396b 100755 --- a/files/image_config/warmboot-finalizer/finalize-warmboot.sh +++ b/files/image_config/warmboot-finalizer/finalize-warmboot.sh @@ -6,7 +6,7 @@ VERBOSE=no COMP_LIST="orchagent neighsyncd bgp natsyncd" EXP_STATE="reconciled" -ASSISTANT_SCRIPT="/usr/bin/neighbor_advertiser" +ASSISTANT_SCRIPT="/usr/local/bin/neighbor_advertiser" function debug() diff --git a/files/image_config/watchdog-control/watchdog-control.sh b/files/image_config/watchdog-control/watchdog-control.sh index b26fea03f192..892039964620 100755 --- a/files/image_config/watchdog-control/watchdog-control.sh +++ b/files/image_config/watchdog-control/watchdog-control.sh @@ -1,7 +1,7 @@ #! /bin/bash VERBOSE=no -WATCHDOG_UTIL="/usr/bin/watchdogutil" +WATCHDOG_UTIL="/usr/local/bin/watchdogutil" function debug() { diff --git a/platform/broadcom/sonic-platform-modules-dell/common/fw-updater b/platform/broadcom/sonic-platform-modules-dell/common/fw-updater index 6905664672ad..22cd1e14e3bb 100755 --- a/platform/broadcom/sonic-platform-modules-dell/common/fw-updater +++ b/platform/broadcom/sonic-platform-modules-dell/common/fw-updater @@ -16,7 +16,7 @@ HOST_GRUB_CFG = HOST_GRUB_DIR + '/grub/grub.cfg' HOST_GRUB_ENV = HOST_GRUB_DIR + '/grub/grubenv' HOST_GRUB_BOOT_DIR = '--boot-directory=' + HOST_GRUB_DIR HOST_PLATFORM_INFO = HOST_GRUB_DIR + '/platform' -dell_reload_tool = '/usr/bin/reboot' +dell_reload_tool = '/usr/local/bin/reboot' diff --git a/platform/mellanox/mlnx-onie-fw-update.sh b/platform/mellanox/mlnx-onie-fw-update.sh index 5a62e74b647b..0abc55ef76b4 100755 --- a/platform/mellanox/mlnx-onie-fw-update.sh +++ b/platform/mellanox/mlnx-onie-fw-update.sh @@ -94,7 +94,7 @@ system_reboot() { sleep 5s # Use SONiC reboot scenario - /usr/bin/reboot + /usr/local/bin/reboot } terminate_handler() { diff --git a/platform/p4/docker-sonic-p4.mk b/platform/p4/docker-sonic-p4.mk index 657a2a9c6d44..14747ec476e0 100644 --- a/platform/p4/docker-sonic-p4.mk +++ b/platform/p4/docker-sonic-p4.mk @@ -11,7 +11,7 @@ $(DOCKER_SONIC_P4)_DEPENDS += $(SWSS) \ $(LIBTEAMDCTL) \ $(LIBTEAM_UTILS) \ $(SONIC_DEVICE_DATA) \ - $(SONIC_UTILS) \ + $(SONIC_UTILITIES_PY2) \ $(IPROUTE2) # ifeq ($(ROUTING_STACK), quagga) diff --git a/platform/vs/docker-sonic-vs.mk b/platform/vs/docker-sonic-vs.mk index e4dda41374fe..d1d694756c59 100644 --- a/platform/vs/docker-sonic-vs.mk +++ b/platform/vs/docker-sonic-vs.mk @@ -10,9 +10,8 @@ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \ $(SONIC_DEVICE_DATA) \ $(LIBYANG) \ $(LIBYANG_CPP) \ - $(LIBYANG_PY2) - -$(DOCKER_SONIC_VS)_PYTHON_DEBS += $(SONIC_UTILS) + $(LIBYANG_PY2) \ + $(SONIC_UTILITIES_DATA) # swsssdk is a dependency of sonic-py-common # TODO: sonic-py-common should depend on swsscommon instead @@ -21,7 +20,8 @@ $(DOCKER_SONIC_VS)_PYTHON_WHEELS += $(SWSSSDK_PY2) \ $(SONIC_PY_COMMON_PY2) \ $(SONIC_PY_COMMON_PY3) \ $(SONIC_YANG_MODELS_PY3) \ - $(SONIC_YANG_MGMT_PY) + $(SONIC_YANG_MGMT_PY) \ + $(SONIC_UTILITIES_PY2) ifeq ($(INSTALL_DEBUG_TOOLS), y) $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS_DBG) \ diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index af06553202f5..96d006883bd2 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -46,7 +46,8 @@ RUN apt-get install -y net-tools \ conntrack \ iptables \ python3-pip \ - jq + jq \ + python-m2crypto # install redis-server RUN curl -o redis-tools_6.0.6-1~bpo10+1_amd64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=73zbmjkf3pi%2Bn0R8Hy7CWT2EUvOAyzM5aLYJWCLySGM%3D&se=2030-09-06T19%3A44%3A59Z&sp=r" @@ -56,6 +57,8 @@ RUN rm redis-tools_6.0.6-1~bpo10+1_amd64.deb redis-server_6.0.6-1~bpo10+1_amd64. RUN pip install setuptools RUN pip3 install setuptools +RUN pip install wheel +RUN pip3 install wheel RUN pip install py2_ipaddress RUN pip install six RUN pip install pyroute2==0.5.3 netifaces==0.10.7 @@ -102,11 +105,7 @@ COPY python-wheels/{{ whl }} python-wheels/ # install PKGs after copying all PKGs to avoid dependency failure # use py3 to find python3 package, which is forced by wheel as of now {%- for whl in docker_sonic_vs_whls.split(' ') %} -{%- if 'py3' in whl %} -RUN pip3 install python-wheels/{{ whl }} -{% else -%} -RUN pip install python-wheels/{{ whl }} -{%- endif %} +RUN pip{% if 'py3' in whl %}3{% endif %} install python-wheels/{{ whl }} {%- endfor %} {% endif %} diff --git a/rules/sonic-utilities-data.dep b/rules/sonic-utilities-data.dep new file mode 100644 index 000000000000..b11d0a554401 --- /dev/null +++ b/rules/sonic-utilities-data.dep @@ -0,0 +1,9 @@ +SPATH := $($(SONIC_UTILITIES_DATA)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-utilities-data.mk rules/sonic-utilities-data.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(SPATH)) + +$(SONIC_UTILITIES_DATA)_CACHE_MODE := GIT_CONTENT_SHA +$(SONIC_UTILITIES_DATA)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(SONIC_UTILITIES_DATA)_DEP_FILES := $(DEP_FILES) + diff --git a/rules/sonic-utilities-data.mk b/rules/sonic-utilities-data.mk new file mode 100644 index 000000000000..8eca8b1c9732 --- /dev/null +++ b/rules/sonic-utilities-data.mk @@ -0,0 +1,5 @@ +# SONiC command line utilities data package + +SONIC_UTILITIES_DATA = sonic-utilities-data_1.0-1_all.deb +$(SONIC_UTILITIES_DATA)_SRC_PATH = $(SRC_PATH)/sonic-utilities/sonic-utilities-data +SONIC_DPKG_DEBS += $(SONIC_UTILITIES_DATA) diff --git a/rules/sonic-utilities.dep b/rules/sonic-utilities.dep index 9d5f64e0ac62..8686c79b61b7 100644 --- a/rules/sonic-utilities.dep +++ b/rules/sonic-utilities.dep @@ -1,12 +1,10 @@ - -SPATH := $($(SONIC_UTILS)_SRC_PATH) +SPATH := $($(SONIC_UTILITIES_PY2)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-utilities.mk rules/sonic-utilities.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) -$(SONIC_UTILS)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_UTILS)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_UTILS)_DEP_FILES := $(DEP_FILES) -$(SONIC_UTILS)_SMDEP_FILES := $(SMDEP_FILES) -$(SONIC_UTILS)_SMDEP_PATHS := $(SPATH) - +$(SONIC_UTILITIES_PY2)_CACHE_MODE := GIT_CONTENT_SHA +$(SONIC_UTILITIES_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(SONIC_UTILITIES_PY2)_DEP_FILES := $(DEP_FILES) +$(SONIC_UTILITIES_PY2)_SMDEP_FILES := $(SMDEP_FILES) +$(SONIC_UTILITIES_PY2)_SMDEP_PATHS := $(SPATH) diff --git a/rules/sonic-utilities.mk b/rules/sonic-utilities.mk index c5f3a3b29e82..614602b8507b 100644 --- a/rules/sonic-utilities.mk +++ b/rules/sonic-utilities.mk @@ -6,19 +6,18 @@ # added here also. However, the current build system assumes all runtime # dependencies are .deb packages. # -# TODO: Create a way to specify both .deb and .whl runtime dependencies -# then add the aforementioned runtime dependencies here. -# -SONIC_UTILS = python-sonic-utilities_1.2-1_all.deb -$(SONIC_UTILS)_SRC_PATH = $(SRC_PATH)/sonic-utilities -$(SONIC_UTILS)_DEBS_DEPENDS = $(LIBYANG) \ - $(LIBYANG_CPP) \ - $(LIBYANG_PY2) \ - $(LIBYANG_PY3) -$(SONIC_UTILS)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2) \ - $(SONIC_PY_COMMON_PY3) \ - $(SONIC_CONFIG_ENGINE) \ - $(SONIC_YANG_MGMT_PY) \ - $(SONIC_YANG_MODELS_PY3) -SONIC_PYTHON_STDEB_DEBS += $(SONIC_UTILS) +SONIC_UTILITIES_PY2 = sonic_utilities-1.2-py2-none-any.whl +$(SONIC_UTILITIES_PY2)_SRC_PATH = $(SRC_PATH)/sonic-utilities +$(SONIC_UTILITIES_PY2)_PYTHON_VERSION = 2 +$(SONIC_UTILITIES_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) \ + $(SONIC_PY_COMMON_PY3) \ + $(SWSSSDK_PY2) \ + $(SONIC_CONFIG_ENGINE) \ + $(SONIC_YANG_MGMT_PY) \ + $(SONIC_YANG_MODELS_PY3) +$(SONIC_UTILITIES_PY2)_DEBS_DEPENDS = $(LIBYANG) \ + $(LIBYANG_CPP) \ + $(LIBYANG_PY2) \ + $(LIBYANG_PY3) +SONIC_PYTHON_WHEELS += $(SONIC_UTILITIES_PY2) diff --git a/slave.mk b/slave.mk index 157027a4daad..2d45b2c1e13f 100644 --- a/slave.mk +++ b/slave.mk @@ -802,12 +802,13 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(LIBPAM_TACPLUS) \ $(LIBNSS_TACPLUS) \ $(MONIT) \ - $(PYTHON_SWSSCOMMON)) \ + $(PYTHON_SWSSCOMMON) \ + $(SONIC_UTILITIES_DATA)) \ $$(addprefix $(TARGET_PATH)/,$$($$*_DOCKERS)) \ $$(addprefix $(FILES_PATH)/,$$($$*_FILES)) \ $(if $(findstring y,$(ENABLE_ZTP)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_ZTP))) \ $(if $(findstring y,$(INCLUDE_HOST_SERVICE)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_HOST_SERVICE))) \ - $(addprefix $(PYTHON_DEBS_PATH)/,$(SONIC_UTILS)) \ + $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_UTILITIES_PY2)) \ $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2)) \ $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3)) \ $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE)) \ @@ -858,6 +859,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export multi_instance="false" export python_swss_debs="$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$($(LIBSWSSCOMMON)_RDEPENDS))" export python_swss_debs+=" $(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(LIBSWSSCOMMON)) $(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(PYTHON_SWSSCOMMON))" + export sonic_utilities_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_UTILITIES_PY2))" $(foreach docker, $($*_DOCKERS),\ export docker_image="$(docker)" diff --git a/src/sonic-utilities b/src/sonic-utilities index aa27dd9781b9..2244d7bec687 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit aa27dd9781b991a944e35612c9faa1ca70b1ed2f +Subproject commit 2244d7bec687fe7f72c3a8565dacdefd47deba0d diff --git a/src/sonic-ztp b/src/sonic-ztp index dd025bc25757..911d62238cb3 160000 --- a/src/sonic-ztp +++ b/src/sonic-ztp @@ -1 +1 @@ -Subproject commit dd025bc25757d8d83c92246bb7b45b9b35a0371b +Subproject commit 911d62238cb30d008f471c9659c3cb105c0604de