[PATCH openbmc] Add pflash to SDK

Cyril Bur cyrilbur at gmail.com
Wed May 18 11:47:10 AEST 2016


On Tue, 17 May 2016 21:32:41 -0400
Brad Bishop <bradleyb at fuzziesquirrel.com> wrote:

> Thanks for the review Cyril.
> 
> > On May 17, 2016, at 9:30 PM, Cyril Bur <cyrilbur at gmail.com> wrote:
> > 
> > On Tue, 17 May 2016 09:30:36 -0500
> > OpenBMC Patches <openbmc-patches at stwcx.xyz> wrote:
> > 
> >> From: Brad Bishop <bradleyb at fuzziesquirrel.com>
> >> 
> >> Make use of the skiboot external/shared support for dynamic so/bin.
> >> This allows us to completely remove pflash from skeleton.
> >> 
> > 
> > Hey Brad, this looks great!
> > 
> > This is a pet hate of mine, getting roped into extra work - so I'm totally
> > prepared to do it but we should consider upstreaming the pflash patch. I'm not
> > sure it can be upstreamed as is but the end product is definitely right for
> > upstream.
> > 
> 
> Actually I submitted this upstream also:  https://patchwork.ozlabs.org/patch/623309/ <https://patchwork.ozlabs.org/patch/623309/>
> 

*falls of chair* You did too. Perfect!

> Let me know if it needs any work….
> 
> > Do you or does anyone have any thoughts as to how to integrate into upstream?
> > `make shared` target just as an idea off the top of my head.
> > 
> >> Signed-off-by: Brad Bishop <bradleyb at fuzziesquirrel.com>
> > 
> > Reviewed-by: Cyril Bur <cyrilbur at gmail.com>
> > 
> >> ---
> >> .../common/recipes-bsp/pflash/pflash.bb            |   8 +-
> >> .../pflash/pflash/0001-pflash-Build-solib.patch    | 119 +++++++++++++++++++++
> >> .../common/recipes-phosphor/skeleton/skeleton.bb   |   7 +-
> >> 3 files changed, 127 insertions(+), 7 deletions(-)
> >> create mode 100644 meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash/0001-pflash-Build-solib.patch
> >> 
> >> diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash.bb b/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash.bb
> >> index 5c0cfa4..862f4fb 100644
> >> --- a/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash.bb
> >> +++ b/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash.bb
> >> @@ -8,15 +8,19 @@ LIC_FILES_CHKSUM = "file://${S}/LICENCE;md5=3b83ef96387f14655fc854ddc3c6bd57"
> >> 
> >> SRCREV = "skiboot-5.2.1"
> >> PV = "5.2.1"
> >> +SRC_URI += "file://0001-pflash-Build-solib.patch"
> >> 
> >> S = "${WORKDIR}/git"
> >> 
> >> EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} PFLASH_VERSION=${PV} V=1'
> >> +CFLAGS_append = ' -fPIC'
> >> 
> >> do_compile () {
> >> -        oe_runmake -C external/pflash all
> >> +        oe_runmake -C external/shared all
> >> }
> >> 
> >> do_install () {
> >> -        oe_runmake -C external/pflash install DESTDIR=${D}
> >> +        oe_runmake -C external/shared install DESTDIR=${D}
> >> }
> >> +
> >> +BBCLASSEXTEND = "nativesdk"
> >> diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash/0001-pflash-Build-solib.patch b/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash/0001-pflash-Build-solib.patch
> >> new file mode 100644
> >> index 0000000..59f2ebc
> >> --- /dev/null
> >> +++ b/meta-openbmc-machines/meta-openpower/common/recipes-bsp/pflash/pflash/0001-pflash-Build-solib.patch
> >> @@ -0,0 +1,119 @@
> >> +diff --git a/external/pflash/rules.mk b/external/pflash/rules.mk
> >> +index aa426b5..c0199e3 100644
> >> +--- a/external/pflash/rules.mk
> >> ++++ b/external/pflash/rules.mk
> >> +@@ -1,12 +1,12 @@
> >> + .DEFAULT_GOAL := all
> >> + 
> >> + override CFLAGS  += -O2 -Wall -I.
> >> +-OBJS    = pflash.o progress.o version.o
> >> ++PFLASH_OBJS    = pflash.o progress.o version.o common-arch_flash.o
> >> + LIBFLASH_FILES := libflash.c libffs.c ecc.c blocklevel.c file.c
> >> + LIBFLASH_OBJS := $(addprefix libflash-, $(LIBFLASH_FILES:.c=.o))
> >> + LIBFLASH_SRC := $(addprefix libflash/,$(LIBFLASH_FILES))
> >> ++OBJS	+= $(PFLASH_OBJS)
> >> + OBJS	+= $(LIBFLASH_OBJS)
> >> +-OBJS	+= common-arch_flash.o
> >> + EXE     = pflash
> >> + 
> >> + PFLASH_VERSION ?= $(shell ../../make_version.sh $(EXE))
> >> +diff --git a/external/shared/.gitignore b/external/shared/.gitignore
> >> +new file mode 100644
> >> +index 0000000..541d2a2
> >> +--- /dev/null
> >> ++++ b/external/shared/.gitignore
> >> +@@ -0,0 +1,2 @@
> >> ++pflash-dynamic
> >> ++libflash.so*
> >> +diff --git a/external/shared/Makefile b/external/shared/Makefile
> >> +index 4c31657..aa1d881 100644
> >> +--- a/external/shared/Makefile
> >> ++++ b/external/shared/Makefile
> >> +@@ -1,56 +1,44 @@
> >> +-.DEFAULT_GOAL := all
> >> + GET_ARCH = ../../external/common/get_arch.sh
> >> ++include ../../external/pflash/rules.mk
> >> + include ../../external/common/rules.mk
> >> + 
> >> +-PREFIX ?= /usr/local/
> >> +-LIBDIR = $(PREFIX)/lib
> >> +-INCDIR = $(PREFIX)/include/libflash
> >> ++libdir=/usr/lib
> >> ++incdir=/usr/include
> >> ++sbindir=/usr/sbin
> >> + 
> >> +-VERSION = $(shell ../../make_version.sh)
> >> ++PFLASH_DIR=../pflash/
> >> ++EXE=pflash-dynamic
> >> ++LIB=libflash.so
> >> ++SONAME=$(LIB).1
> >> ++VERSION = $(shell ../../make_version.sh "$(SONAME)")
> >> ++OBJS=$(addprefix $(PFLASH_DIR), $(LIBFLASH_OBJS))
> >> ++OBJS+=$(addprefix $(PFLASH_DIR), $(ARCH_OBJS))
> >> ++DYN_OBJS=$(addprefix $(PFLASH_DIR), $(PFLASH_OBJS))
> >> + 
> >> +-CFLAGS += -m64 -Werror -Wall -g2 -ggdb -I. -fPIC
> >> ++LIBFLASH_HEADERS=libffs.h libflash.h blocklevel.h errors.h ffs.h
> >> ++ARCHFLASH_HEADERS=arch_flash.h io.h
> >> + 
> >> +-.PHONY: links
> >> +-links: libflash ccan common
> >> ++all: $(EXE)
> >> + 
> >> +-libflash:
> >> +-	ln -sf ../../libflash .
> >> ++$(LIB):
> >> ++	$(MAKE) -C $(PFLASH_DIR)
> >> ++	$(Q_CC)$(CC) -shared -fPIC -Wl,-soname,$(SONAME) $(OBJS) -o $(VERSION)
> >> + 
> >> +-common:
> >> +-	ln -sf ../common .
> >> ++$(EXE): $(LIB)
> >> ++	$(Q_CC)$(CC) $(CFLAGS) $(DYN_OBJS) $(VERSION) -lrt -o $(EXE)
> >> + 
> >> +-ccan:
> >> +-	ln -sf ../../ccan .
> >> ++install: install-bins install-headers
> >> + 
> >> +-LIBFLASH_OBJS = libflash-file.o libflash-libflash.o libflash-libffs.o libflash-ecc.o libflash-blocklevel.o
> >> +-ARCHFLASH_OBJS = common-arch_flash.o
> >> +-OBJS = $(LIBFLASH_OBJS) $(ARCHFLASH_OBJS)
> >> ++install-headers:
> >> ++	$(Q_MKDIR)mkdir -p $(DESTDIR)$(incdir)/libflash $(DESTDIR)$(incdir)/common
> >> ++	install -m644 $(addprefix $(PFLASH_DIR)libflash/, $(LIBFLASH_HEADERS)) $(DESTDIR)$(incdir)/libflash
> >> ++	install -m644 $(addprefix $(PFLASH_DIR)common/, $(ARCHFLASH_HEADERS)) $(DESTDIR)$(incdir)/common
> >> + 
> >> +-LIBFLASH_H = libflash/file.h libflash/libflash.h libflash/libffs.h libflash/ffs.h libflash/ecc.h libflash/blocklevel.h libflash/errors.h
> >> +-ARCHFLASH_H = common/arch_flash.h
> >> +-
> >> +-$(LIBFLASH_OBJS) : libflash-%.o : libflash/%.c
> >> +-	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
> >> ++install-bins: all
> >> ++	install -D $(EXE) $(DESTDIR)$(sbindir)/pflash
> >> ++	install -D $(VERSION) $(DESTDIR)$(libdir)/$(VERSION)
> >> ++	$(Q_LN)ln -sf $(VERSION) $(DESTDIR)$(libdir)/$(SONAME)
> >> ++	$(Q_LN)ln -sf $(VERSION) $(DESTDIR)$(libdir)/$(LIB)
> >> + 
> >> + clean:
> >> +-	rm -f $(OBJS) common-*.o *.so*
> >> +-
> >> +-distclean: clean
> >> +-	rm -f ccan libflash common
> >> +-
> >> +-all: links arch_links $(OBJS)
> >> +-	$(CC) -shared -Wl,-soname,libflash.so -o libflash.so.$(VERSION) $(OBJS)
> >> +-
> >> +-install-lib: all
> >> +-	install -D -m 0755 libflash.so.$(VERSION) $(LIBDIR)/libflash.so.$(VERSION)
> >> +-	ln -sf libflash.so.$(VERSION) $(LIBDIR)/libflash.so
> >> +-
> >> +-install-dev: links arch_links
> >> +-	mkdir -p $(INCDIR)
> >> +-	install -m 0644 $(LIBFLASH_H) $(ARCHFLASH_H) $(INCDIR)
> >> +-
> >> +-install: install-lib install-dev
> >> +-
> >> +-uninstall:
> >> +-	rm -f $(LIBDIR)/libflash*
> >> +-	rm -rf $(INCDIR)
> >> ++	rm -rf $(LIB).* $(EXE)
> >> diff --git a/meta-phosphor/common/recipes-phosphor/skeleton/skeleton.bb b/meta-phosphor/common/recipes-phosphor/skeleton/skeleton.bb
> >> index 1553314..8a11ee1 100644
> >> --- a/meta-phosphor/common/recipes-phosphor/skeleton/skeleton.bb
> >> +++ b/meta-phosphor/common/recipes-phosphor/skeleton/skeleton.bb
> >> @@ -16,9 +16,9 @@ DEPENDS += "glib-2.0 systemd"
> >> RDEPENDS_${PN} += "python-subprocess python-compression libsystemd"
> >> SRC_URI += "git://github.com/openbmc/skeleton"
> >> 
> >> -# RDEPEND on pflash if the openpower-pflash machine feature is set.
> >> +# DEPEND/RDEPEND on pflash if the openpower-pflash machine feature is set.
> >> PACKAGECONFIG ??= "${@bb.utils.contains('MACHINE_FEATURES', 'openpower-pflash', 'openpower-pflash', '', d)}"
> >> -PACKAGECONFIG[openpower-pflash] = ",,,pflash"
> >> +PACKAGECONFIG[openpower-pflash] = ",,pflash,pflash"
> >> 
> >> SRCREV = "264009617c231447d6c8fc61264cf3c6ea7f49d5"
> >> 
> >> @@ -26,9 +26,6 @@ S = "${WORKDIR}"
> >> 
> >> do_compile() {
> >>         oe_runmake -C git
> >> -
> >> -        # Remove deprecated files.
> >> -        rm ${S}/git/bin/pflash
> >> }
> >> 
> >> do_install() {



More information about the openbmc mailing list