diff --git a/build_debian.sh b/build_debian.sh index c507275d11..65966f4a96 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -377,7 +377,6 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in mtr-tiny \ locales \ cgroup-tools \ - ipmitool \ ndisc6 \ makedumpfile \ conntrack \ diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 3dc242cc79..e0bd1242d9 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -101,6 +101,10 @@ sudo mkdir -p $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/ifupdown2_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f +# Install a patched version of ipmitool (and its dependencies via 'apt-get -y install -f') +sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/ipmitool_*.deb || \ + sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f + # Install a patched version of ntp (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT --force-confdef --force-confold -i $debs_path/ntp_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y \ diff --git a/rules/ipmitool.dep b/rules/ipmitool.dep new file mode 100644 index 0000000000..7643d2477b --- /dev/null +++ b/rules/ipmitool.dep @@ -0,0 +1,11 @@ + +SPATH := $($(IPMITOOL)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/ipmitool.mk rules/ipmitool.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(SPATH)) + +$(IPMITOOL)_CACHE_MODE := GIT_CONTENT_SHA +$(IPMITOOL)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(IPMITOOL)_DEP_FILES := $(DEP_FILES) + + diff --git a/rules/ipmitool.mk b/rules/ipmitool.mk new file mode 100644 index 0000000000..aad6fea3a8 --- /dev/null +++ b/rules/ipmitool.mk @@ -0,0 +1,17 @@ +# ipmitool packages +IPMITOOL_VERSION = 1.8.19 +IPMITOOL_VERSION_SUFFIX = 4 +IPMITOOL_VERSION_FULL = $(IPMITOOL_VERSION)-$(IPMITOOL_VERSION_SUFFIX) +IPMITOOL = ipmitool_$(IPMITOOL_VERSION_FULL)_$(CONFIGURED_ARCH).deb +$(IPMITOOL)_SRC_PATH = $(SRC_PATH)/ipmitool +SONIC_MAKE_DEBS += $(IPMITOOL) +IPMITOOL_DBG = ipmitool-dbgsym_$(IPMITOOL_VERSION_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(IPMITOOL),$(IPMITOOL_DBG))) +DBG_SRC_ARCHIVE += ipmitool +# The .c, .cpp, .h & .hpp files under src/{$DBG_SRC_ARCHIVE list} +# are archived into debug one image to facilitate debugging. +# Export these variables so they can be used in a sub-make +export IPMITOOL_VERSION +export IPMITOOL_VERSION_FULL +export IPMITOOL +export IPMITOOL_DBG diff --git a/slave.mk b/slave.mk index 8473b2b3e7..32e88c2b67 100644 --- a/slave.mk +++ b/slave.mk @@ -1356,6 +1356,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(LINUX_KERNEL) \ $(SONIC_DEVICE_DATA) \ $(IFUPDOWN2) \ + $(IPMITOOL) \ $(KDUMP_TOOLS) \ $(LIBPAM_RADIUS) \ $(LIBNSS_RADIUS) \ diff --git a/src/ipmitool/Makefile b/src/ipmitool/Makefile new file mode 100644 index 0000000000..dc8b9c05ca --- /dev/null +++ b/src/ipmitool/Makefile @@ -0,0 +1,28 @@ +.ONESHELL: +SHELL = /bin/bash +.SHELLFLAGS += -e + +MAIN_TARGET = $(IPMITOOL) +DERIVED_TARGETS = $(IPMITOOL_DBG) + +$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : + # Remove any stale files + rm -rf ./ipmitool-$(IPMITOOL_VERSION) ./ipmitool*.{deb,udeb,dsc,gz,xz} + # Obtain ipmitool + dget https://deb.debian.org/debian/pool/main/i/ipmitool/ipmitool_$(IPMITOOL_VERSION_FULL).dsc + # Build source and Debian packages + pushd ipmitool-$(IPMITOOL_VERSION) + + git init + git add -f * + git commit -m "unmodified ipmitool source" + + # Apply patches + stg init + stg import -s ../patch/series + dpkg-buildpackage -rfakeroot -d -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) + popd + mv $* $(DERIVED_TARGETS) $(DEST)/ + +$(addprefix $(DEST)/, $(DERIVED_TARGETS)): $(DEST)/% : $(DEST)/$(MAIN_TARGET) + diff --git a/src/ipmitool/patch/0001-Changes-needed-to-install-enterprise.txt.patch b/src/ipmitool/patch/0001-Changes-needed-to-install-enterprise.txt.patch new file mode 100644 index 0000000000..dcaab247a9 --- /dev/null +++ b/src/ipmitool/patch/0001-Changes-needed-to-install-enterprise.txt.patch @@ -0,0 +1,113 @@ +From 719292c4800054ead278affc2972d8f77babd227 Mon Sep 17 00:00:00 2001 +From: rajib-dutta1 +Date: Wed, 10 Jan 2024 20:51:03 -0800 +Subject: [PATCH] Changes needed to install enterprise.txt + +--- + Makefile.am | 40 ++++++++++++++++++++-------------------- + configure.ac | 30 +++++++++++++++--------------- + 2 files changed, 35 insertions(+), 35 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 355d3f0..ec9605c 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -49,25 +49,25 @@ dist-hook: + .PHONY: install-pen-database uninstall-pen-database + .INTERMEDIATE: %.o %.la enterprise-numbers + +-#if DOWNLOAD +- +-#enterprise-numbers: +-# @echo Downloading IANA PEN database... +-# @$(DOWNLOAD) "$(IANA_PEN)" > tmpfile.$$PPID || {\ +-# echo "FAILED to download the IANA PEN database"; \ +-# rm tmpfile.$$PPID; \ +-# false; \ +-# } +-# @mv tmpfile.$$PPID $@ +-# +-#install-pen-database: enterprise-numbers +-# mkdir -m 755 -p $(DESTDIR)$(IANADIR) +-# $(INSTALL_DATA) $< $(DESTDIR)$(IANADIR)/ +-# +-#uninstall-pen-database: +-# -rm -rf $(DESTDIR)$(IANADIR)/enterprise-numbers +-# +-#else ++if DOWNLOAD ++ ++enterprise-numbers.txt: ++ @echo Downloading IANA PEN database... ++ @$(DOWNLOAD) "$(IANA_PEN)" > tmpfile.$$PPID || {\ ++ echo "FAILED to download the IANA PEN database"; \ ++ rm tmpfile.$$PPID; \ ++ false; \ ++ } ++ @mv tmpfile.$$PPID $@ ++ ++install-pen-database: enterprise-numbers.txt ++ mkdir -m 755 -p $(DESTDIR)$(IANADIR) ++ $(INSTALL_DATA) $< $(DESTDIR)$(IANADIR)/ ++ ++uninstall-pen-database: ++ -rm -rf $(DESTDIR)$(IANADIR)/enterprise-numbers.txt ++ ++else + + install-pen-database: + @echo "*** NOT installing the IANA PEN database." +@@ -77,7 +77,7 @@ uninstall-pen-database: + @echo "*** NOT uninstalling the IANA PEN database." + @echo "*** It was installed manually (if ever)." + +-#endif ++endif + + install-data-local: install-pen-database + mkdir -p $(DESTDIR)$(DOCDIR) +diff --git a/configure.ac b/configure.ac +index b4321c6..d6ba62b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,22 +56,22 @@ if test "x$exec_prefix" = "xNONE"; then + exec_prefix="$prefix" + fi + +-#if test "x$WGET" = "x"; then +-# if test "x$CURL" = "x"; then +-# AC_MSG_WARN([** Neither wget nor curl could be found.]) +-# AC_MSG_WARN([** IANA PEN database will not be installed by `make install` !]) +-# else +-# DOWNLOAD="$CURL --location --progress-bar" +-# AM_CONDITIONAL([DOWNLOAD], [true]) +-# fi +-#else +-# DOWNLOAD="$WGET -c -nd -O -" +-# AM_CONDITIONAL([DOWNLOAD], [true]) +-#fi ++if test "x$WGET" = "x"; then ++ if test "x$CURL" = "x"; then ++ AC_MSG_WARN([** Neither wget nor curl could be found.]) ++ AC_MSG_WARN([** IANA PEN database will not be installed by `make install` !]) ++ else ++ DOWNLOAD="$CURL --location --progress-bar" ++ AM_CONDITIONAL([DOWNLOAD], [true]) ++ fi ++else ++ DOWNLOAD="$WGET -c -nd -O -" ++ AM_CONDITIONAL([DOWNLOAD], [true]) ++fi + +-#AC_MSG_WARN([** Download is:]) +-#AC_MSG_WARN($DOWNLOAD) +-#AC_SUBST(DOWNLOAD, $DOWNLOAD) ++AC_MSG_WARN([** Download is:]) ++AC_MSG_WARN($DOWNLOAD) ++AC_SUBST(DOWNLOAD, $DOWNLOAD) + + dnl + dnl set default option values +-- +2.25.1 + diff --git a/src/ipmitool/patch/series b/src/ipmitool/patch/series new file mode 100644 index 0000000000..df9c99f748 --- /dev/null +++ b/src/ipmitool/patch/series @@ -0,0 +1 @@ +0001-Changes-needed-to-install-enterprise.txt.patch