From 7dd9d1f3f23351ef2aed30b9efb7aeb71ca918d0 Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Wed, 21 Apr 2021 03:54:44 +0530 Subject: [PATCH] Flashrom refactoring (#6922) #### Why I did it To build flashrom properly with dependency tracking. #### How I did it Moved flashrom code from platform/broadcom/sonic-platform-modules-dell/tools directory to src/flashrom directory. At the end, flashrom_0.9.7_amd64.deb package is build which will be installed in the devices. --- build_debian.sh | 1 - .../build_templates/sonic_debian_extension.j2 | 3 ++ platform/broadcom/platform-modules-dell.mk | 3 -- .../debian/platform-modules-s6100.install | 1 - .../tools/flashrom.sh | 10 ----- rules/flashrom.dep | 8 ++++ rules/flashrom.mk | 11 +++++ slave.mk | 1 + src/flashrom/Makefile | 25 +++++++++++ ...-for-Intel-Rangeley-and-Denverton-CP.patch | 0 .../patch/0003-Debian-package-base.patch | 45 +++++++++++++++++++ .../patch/0004-Flashrom-remove-tmpl.patch | 37 +++++++++++++++ src/flashrom/patch/series | 3 ++ 13 files changed, 133 insertions(+), 15 deletions(-) delete mode 100755 platform/broadcom/sonic-platform-modules-dell/tools/flashrom.sh create mode 100644 rules/flashrom.dep create mode 100644 rules/flashrom.mk create mode 100644 src/flashrom/Makefile rename {platform/broadcom/sonic-platform-modules-dell/tools => src/flashrom/patch}/0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch (100%) create mode 100644 src/flashrom/patch/0003-Debian-package-base.patch create mode 100644 src/flashrom/patch/0004-Flashrom-remove-tmpl.patch create mode 100644 src/flashrom/patch/series diff --git a/build_debian.sh b/build_debian.sh index 4cc9eec11c..3dc7f73fde 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -326,7 +326,6 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in if [[ $CONFIGURED_ARCH == amd64 ]]; then ## Pre-install the fundamental packages for amd64 (x86) sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ - flashrom \ rasdaemon fi diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index c8604cd598..874f1707d6 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -329,6 +329,9 @@ sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/container_checker # Install custom-built openssh sshd sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/openssh-server_*.deb +# Install custom-built flashrom +sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/flashrom_*.deb + # Copy crontabs sudo cp -f $IMAGE_CONFIGS/cron.d/* $FILESYSTEM_ROOT/etc/cron.d/ diff --git a/platform/broadcom/platform-modules-dell.mk b/platform/broadcom/platform-modules-dell.mk index e4d4f56c53..90eb4fc20b 100644 --- a/platform/broadcom/platform-modules-dell.mk +++ b/platform/broadcom/platform-modules-dell.mk @@ -52,6 +52,3 @@ $(eval $(call add_extra_package,$(DELL_Z9100_PLATFORM_MODULE),$(DELL_S5248F_PLAT DELL_S5296F_PLATFORM_MODULE = platform-modules-s5296f_$(DELL_S5296F_PLATFORM_MODULE_VERSION)_amd64.deb $(DELL_S5296F_PLATFORM_MODULE)_PLATFORM = x86_64-dellemc_s5296f_c3538-r0 $(eval $(call add_extra_package,$(DELL_Z9100_PLATFORM_MODULE),$(DELL_S5296F_PLATFORM_MODULE))) - -#flashrom tool -$(shell ./$(PLATFORM_PATH)/sonic-platform-modules-dell/tools/flashrom.sh > /dev/null 2>&1) diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 4299aa60c7..ae73bf82f5 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -25,6 +25,5 @@ s6100/systemd/platform-modules-s6100.service etc/systemd/system s6100/systemd/s6100-lpc-monitor.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-i2c-enumerate.service etc/systemd/system -tools/flashrom/flashrom usr/local/bin/ common/fw-updater usr/local/bin common/onie_mode_set usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/tools/flashrom.sh b/platform/broadcom/sonic-platform-modules-dell/tools/flashrom.sh deleted file mode 100755 index c3af65fd6d..0000000000 --- a/platform/broadcom/sonic-platform-modules-dell/tools/flashrom.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -export DELL_TOOLS_DIR="platform/broadcom/sonic-platform-modules-dell/tools" - -cd $DELL_TOOLS_DIR -rm -rf $DELL_TOOLS_DIR/flashrom -git clone https://github.com/flashrom/flashrom.git -cd flashrom -git checkout tags/0.9.7 -git apply ../0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch -make diff --git a/rules/flashrom.dep b/rules/flashrom.dep new file mode 100644 index 0000000000..7d3dea5789 --- /dev/null +++ b/rules/flashrom.dep @@ -0,0 +1,8 @@ +SPATH := $($(FLASHROM)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/flashrom.mk rules/flashrom.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(SPATH)) + +$(FLASHROM)_CACHE_MODE := GIT_CONTENT_SHA +$(FLASHROM)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(FLASHROM)_DEP_FILES := $(DEP_FILES) diff --git a/rules/flashrom.mk b/rules/flashrom.mk new file mode 100644 index 0000000000..7ce9dfa49e --- /dev/null +++ b/rules/flashrom.mk @@ -0,0 +1,11 @@ +# flashrom package +# + +FLASHROM_VERSION_FULL = 0.9.7 + +export FLASHROM_VERSION_FULL + +FLASHROM = flashrom_$(FLASHROM_VERSION_FULL)_$(CONFIGURED_ARCH).deb +$(FLASHROM)_SRC_PATH = $(SRC_PATH)/flashrom + +SONIC_MAKE_DEBS += $(FLASHROM) diff --git a/slave.mk b/slave.mk index f7b83ee84b..1f65b0404e 100644 --- a/slave.mk +++ b/slave.mk @@ -860,6 +860,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(LIBNSS_TACPLUS) \ $(MONIT) \ $(OPENSSH_SERVER) \ + $(FLASHROM) \ $(PYTHON_SWSSCOMMON) \ $(PYTHON3_SWSSCOMMON) \ $(SONIC_UTILITIES_DATA) \ diff --git a/src/flashrom/Makefile b/src/flashrom/Makefile new file mode 100644 index 0000000000..42cfe8fd0b --- /dev/null +++ b/src/flashrom/Makefile @@ -0,0 +1,25 @@ +SHELL = /bin/bash +.ONESHELL: +.SHELLFLAGS += -e + + +MAIN_TARGET = flashrom_$(FLASHROM_VERSION_FULL)_$(CONFIGURED_ARCH).deb + +$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : + rm -rf ./flashrom-$(FLASHROM_VERSION_FULL) + # Obtain flashrom + git clone https://github.com/flashrom/flashrom.git flashrom-$(FLASHROM_VERSION_FULL) + pushd ./flashrom-$(FLASHROM_VERSION_FULL) + + # Check out tag: tags/0.9.7 + git checkout -b flashrom-src tags/$(FLASHROM_VERSION_FULL) + + # Apply patch series + stg init + stg import -s ../patch/series + + # Build package + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) + popd + + mv $* $(DEST)/ diff --git a/platform/broadcom/sonic-platform-modules-dell/tools/0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch b/src/flashrom/patch/0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch similarity index 100% rename from platform/broadcom/sonic-platform-modules-dell/tools/0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch rename to src/flashrom/patch/0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch diff --git a/src/flashrom/patch/0003-Debian-package-base.patch b/src/flashrom/patch/0003-Debian-package-base.patch new file mode 100644 index 0000000000..6cccfd6869 --- /dev/null +++ b/src/flashrom/patch/0003-Debian-package-base.patch @@ -0,0 +1,45 @@ +diff --git a/debian/changelog b/debian/changelog +new file mode 100644 +index 0000000..a7acb04 +--- /dev/null ++++ b/debian/changelog +@@ -0,0 +1,5 @@ ++flashrom (0.9.7) unstable; urgency=low ++ ++ * Initial release ++ ++ -- Dell Team Mon, 14 Dec 2020 10:10:10 -0800 +diff --git a/debian/compat b/debian/compat +new file mode 100644 +index 0000000..ec63514 +--- /dev/null ++++ b/debian/compat +@@ -0,0 +1 @@ ++9 +diff --git a/debian/control b/debian/control +new file mode 100644 +index 0000000..8aafc90 +--- /dev/null ++++ b/debian/control +@@ -0,0 +1,8 @@ ++Source: flashrom ++Section: main ++Priority: optional ++Maintainer: Dell Team ++ ++Package: flashrom ++Architecture: amd64 ++Description: Flashrom Utility +diff --git a/debian/rules b/debian/rules +new file mode 100755 +index 0000000..492b21d +--- /dev/null ++++ b/debian/rules +@@ -0,0 +1,7 @@ ++#!/usr/bin/make -f ++ ++ ++%: ++ dh $@ ++ ++override_dh_usrlocal: diff --git a/src/flashrom/patch/0004-Flashrom-remove-tmpl.patch b/src/flashrom/patch/0004-Flashrom-remove-tmpl.patch new file mode 100644 index 0000000000..e73750386d --- /dev/null +++ b/src/flashrom/patch/0004-Flashrom-remove-tmpl.patch @@ -0,0 +1,37 @@ +diff --git a/Makefile b/Makefile +index 0e976e5..d4413df 100644 +--- a/Makefile ++++ b/Makefile +@@ -686,7 +686,7 @@ FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps && printf "% + LIBFLASHROM_OBJS = $(CHIP_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS) + OBJS = $(CLI_OBJS) $(LIBFLASHROM_OBJS) + +-all: hwlibs features $(PROGRAM)$(EXEC_SUFFIX) $(PROGRAM).8 ++all: hwlibs features $(PROGRAM)$(EXEC_SUFFIX) + ifeq ($(ARCH), x86) + @+$(MAKE) -C util/ich_descriptors_tool/ TARGET_OS=$(TARGET_OS) EXEC_SUFFIX=$(EXEC_SUFFIX) + endif +@@ -914,22 +914,9 @@ endif + @$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features + @rm -f .featuretest.c .featuretest$(EXEC_SUFFIX) + +-$(PROGRAM).8: $(PROGRAM).8.tmpl +- @sed -e '1 s#".*".*#"$(shell ./util/getrevision.sh -d $(PROGRAM).8.tmpl)" "$(VERSION)"#' <$< >$@ +- +-install: $(PROGRAM)$(EXEC_SUFFIX) $(PROGRAM).8 ++install: $(PROGRAM)$(EXEC_SUFFIX) + mkdir -p $(DESTDIR)$(PREFIX)/sbin +- mkdir -p $(DESTDIR)$(MANDIR)/man8 + $(INSTALL) -m 0755 $(PROGRAM)$(EXEC_SUFFIX) $(DESTDIR)$(PREFIX)/sbin +- $(INSTALL) -m 0644 $(PROGRAM).8 $(DESTDIR)$(MANDIR)/man8 +- +-export: $(PROGRAM).8 +- @rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME) +- @svn export -r BASE . $(EXPORTDIR)/flashrom-$(RELEASENAME) +- @sed "s/^SVNVERSION.*/SVNVERSION := $(SVNVERSION)/" Makefile >$(EXPORTDIR)/flashrom-$(RELEASENAME)/Makefile +- @cp $(PROGRAM).8 "$(EXPORTDIR)/flashrom-$(RELEASENAME)/$(PROGRAM).8" +- @LC_ALL=C svn log >$(EXPORTDIR)/flashrom-$(RELEASENAME)/ChangeLog +- @echo Exported $(EXPORTDIR)/flashrom-$(RELEASENAME)/ + + tarball: export + @tar cjf $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2 -C $(EXPORTDIR)/ $(TAROPTIONS) flashrom-$(RELEASENAME)/ diff --git a/src/flashrom/patch/series b/src/flashrom/patch/series new file mode 100644 index 0000000000..96293a5aa5 --- /dev/null +++ b/src/flashrom/patch/series @@ -0,0 +1,3 @@ +0002-Flashrom-support-for-Intel-Rangeley-and-Denverton-CP.patch +0003-Debian-package-base.patch +0004-Flashrom-remove-tmpl.patch