[PATCH openbmc] Add pflash to SDK

Brad Bishop bradleyb at fuzziesquirrel.com
Wed May 18 11:32:41 AEST 2016


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/>

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