From: Etienne Cordonnier <ecordonn...@snap.com> The kdump script from kexec-tools does not work without makedumpfile (see https://git.yoctoproject.org/poky/tree/meta/recipes-kernel/kexec/kexec-tools/kdump#n14 ). Thus, let's import makedumpfile from meta-openembedded/meta-oe/recipes-kernel/makedumpfile and make kexec-tools RDEPENDS on makedumpfile.
makedumpfile is the utility which reads /proc/vmcore after a kernel panic and creates a kdump file under /var/crash/. Signed-off-by: Etienne Cordonnier <ecordonn...@snap.com> --- meta/conf/distro/include/maintainers.inc | 1 + .../kexec/kexec-tools_2.0.29.bb | 1 + ...makedumpfile-replace-hardcode-CFLAGS.patch | 139 ++++++++++++++++++ .../makedumpfile/makedumpfile_1.7.5.bb | 62 ++++++++ 4 files changed, 203 insertions(+) create mode 100644 meta/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch create mode 100644 meta/recipes-kernel/makedumpfile/makedumpfile_1.7.5.bb diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index b529786214..ad2544741f 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -490,6 +490,7 @@ RECIPE_MAINTAINER:pn-m4-native = "Robert Yang <liezhi.y...@windriver.com>" RECIPE_MAINTAINER:pn-make = "Robert Yang <liezhi.y...@windriver.com>" RECIPE_MAINTAINER:pn-makedepend = "Robert Yang <liezhi.y...@windriver.com>" RECIPE_MAINTAINER:pn-makedevs = "Chen Qi <qi.c...@windriver.com>" +RECIPE_MAINTAINER:pn-makedumpfile = "Etienne Cordonnier <ecordonn...@snap.com>" RECIPE_MAINTAINER:pn-make-mod-scripts = "Bruce Ashfield <bruce.ashfi...@gmail.com>" RECIPE_MAINTAINER:pn-man-db = "Hongxu Jia <hongxu....@windriver.com>" RECIPE_MAINTAINER:pn-man-pages = "Hongxu Jia <hongxu....@windriver.com>" diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.29.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.29.bb index 2c2901f19e..be24d064bb 100644 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.29.bb +++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.29.bb @@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09 \ " DEPENDS = "zlib xz" +RDEPENDS:${PN} = "makedumpfile" SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz \ file://kdump \ diff --git a/meta/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch b/meta/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch new file mode 100644 index 0000000000..96a996f616 --- /dev/null +++ b/meta/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch @@ -0,0 +1,139 @@ +From 6d16911316cb576db0239f607e60918a222e4436 Mon Sep 17 00:00:00 2001 +From: Mingli Yu <mingli...@windriver.com> +Date: Sun, 24 Apr 2022 17:25:33 +0800 +Subject: [PATCH] makedumpfile: replace hardcode CFLAGS + +* Create alias for target such as powerpc as powerpc32 +* Remove hardcode CFLAGS +* Add CFLAGS_COMMON to instead of CFLAGS so can flexibly + customize CFLAGS and not hardcode the CFLAGS as previously +* Forcibly to link dynamic library as the poky build + system doesn't build static library by default + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Mingli Yu <mingli...@windriver.com> + +[2021-11-18] Patch updated to use CFLAGS_COMMON for zstd +Signed-off-by: Fathi Boudra <fathi.bou...@linaro.org> + +Rebase to 1.7.1 +Signed-off-by: Mingli Yu <mingli...@windriver.com> +--- + Makefile | 40 +++++++++++++++++++++------------------- + 1 file changed, 21 insertions(+), 19 deletions(-) + +diff --git a/Makefile b/Makefile +index 71d8548..22acdd5 100644 +--- a/Makefile ++++ b/Makefile +@@ -8,12 +8,6 @@ ifeq ($(strip $CC),) + CC = gcc + endif + +-CFLAGS_BASE := $(CFLAGS) -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \ +- -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE +-CFLAGS := $(CFLAGS_BASE) -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(DATE)"' +-CFLAGS_ARCH := $(CFLAGS_BASE) +-# LDFLAGS = -L/usr/local/lib -I/usr/local/include +- + HOST_ARCH := $(shell uname -m) + # Use TARGET as the target architecture if specified. + # Defaults to uname -m +@@ -24,26 +18,34 @@ endif + ARCH := $(shell echo ${TARGET} | sed -e s/i.86/x86/ -e s/sun4u/sparc64/ \ + -e s/arm.*/arm/ -e s/sa110/arm/ \ + -e s/s390x/s390/ -e s/parisc64/parisc/ \ +- -e s/ppc64/powerpc64/ -e s/ppc/powerpc32/) ++ -e s/ppc64/powerpc64/ -e s/ppc/powerpc32/ \ ++ -e s/_powerpc_/_powerpc32_/) + + CROSS := + ifneq ($(TARGET), $(HOST_ARCH)) + CROSS := -U__$(HOST_ARCH)__ + endif + +-CFLAGS += -D__$(ARCH)__ $(CROSS) + CFLAGS_ARCH += -D__$(ARCH)__ $(CROSS) + +-ifeq ($(ARCH), powerpc64) +-CFLAGS += -m64 ++ifeq ($(ARCH), __powerpc64__) + CFLAGS_ARCH += -m64 + endif + +-ifeq ($(ARCH), powerpc32) +-CFLAGS += -m32 ++ifeq ($(ARCH), __powerpc32__) + CFLAGS_ARCH += -m32 + endif + ++CFLAGS_ARCH += $(CFLAGS) \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -D_LARGEFILE_SOURCE \ ++ -D_LARGEFILE64_SOURCE ++ ++CFLAGS_COMMON = $(CFLAGS_ARCH) \ ++ -DVERSION='"$(VERSION)"' \ ++ -DRELEASE_DATE='"$(DATE)"' ++ ++ + SRC_BASE = makedumpfile.c makedumpfile.h diskdump_mod.h sadump_mod.h sadump_info.h + SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c printk.c detect_cycle.c + OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART)) +@@ -52,12 +54,12 @@ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH)) + + LIBS = -ldw -lbz2 -ldl -lelf -lz + ifneq ($(LINKTYPE), dynamic) +-LIBS := -static $(LIBS) -llzma ++LIBS := $(LIBS) -llzma + endif + + ifeq ($(USELZO), on) + LIBS := -llzo2 $(LIBS) +-CFLAGS += -DUSELZO ++CFLAGS_COMMON += -DUSELZO + endif + + ifeq ($(USESNAPPY), on) +@@ -65,12 +67,12 @@ LIBS := -lsnappy $(LIBS) + ifneq ($(LINKTYPE), dynamic) + LIBS := $(LIBS) -lstdc++ + endif +-CFLAGS += -DUSESNAPPY ++CFLAGS_COMMON += -DUSESNAPPY + endif + + ifeq ($(USEZSTD), on) + LIBS := -lzstd $(LIBS) +-CFLAGS += -DUSEZSTD ++CFLAGS_COMMON += -DUSEZSTD + endif + + ifeq ($(DEBUG), on) +@@ -104,14 +106,14 @@ LIBS := $(LIBS) $(call try-run,\ + all: makedumpfile + + $(OBJ_PART): $(SRC_PART) +- $(CC) $(CFLAGS) -c -o ./$@ $(VPATH)$(@:.o=.c) ++ $(CC) $(CFLAGS_COMMON) -c -o ./$@ $(VPATH)$(@:.o=.c) + + $(OBJ_ARCH): $(SRC_ARCH) + @mkdir -p $(@D) + $(CC) $(CFLAGS_ARCH) -c -o ./$@ $(VPATH)$(@:.o=.c) + + makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH) +- $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ_PART) $(OBJ_ARCH) -rdynamic -o $@ $< $(LIBS) ++ $(CC) $(CFLAGS_COMMON) $(LDFLAGS) $(OBJ_PART) $(OBJ_ARCH) -rdynamic -o $@ $< $(LIBS) + @sed -e "s/@DATE@/$(DATE)/" \ + -e "s/@VERSION@/$(VERSION)/" \ + $(VPATH)makedumpfile.8.in > $(VPATH)makedumpfile.8 +@@ -120,7 +122,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH) + $(VPATH)makedumpfile.conf.5.in > $(VPATH)makedumpfile.conf.5 + + eppic_makedumpfile.so: extension_eppic.c +- $(CC) $(CFLAGS) $(LDFLAGS) -shared -rdynamic -o $@ extension_eppic.c -fPIC -leppic -ltinfo ++ $(CC) $(CFLAGS_COMMON) $(LDFLAGS) -shared -rdynamic -o $@ extension_eppic.c -fPIC -leppic -ltinfo + + clean: + rm -f $(OBJ) $(OBJ_PART) $(OBJ_ARCH) makedumpfile makedumpfile.8 makedumpfile.conf.5 diff --git a/meta/recipes-kernel/makedumpfile/makedumpfile_1.7.5.bb b/meta/recipes-kernel/makedumpfile/makedumpfile_1.7.5.bb new file mode 100644 index 0000000000..85b44c4941 --- /dev/null +++ b/meta/recipes-kernel/makedumpfile/makedumpfile_1.7.5.bb @@ -0,0 +1,62 @@ +SUMMARY = "VMcore extraction tool" +DESCRIPTION = "\ + This program is used to extract a subset of the memory available either \ + via /dev/mem or /proc/vmcore (for crashdumps). It is used to get memory \ + images without extra uneeded information (zero pages, userspace programs, \ + etc). \ +" +HOMEPAGE = "https://github.com/makedumpfile/makedumpfile" + +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" +LICENSE = "GPL-2.0-only" + +SRCBRANCH ?= "master" +SRCREV = "c266469347d49287be38059d45e7aaa454db9cb2" + +DEPENDS = "bzip2 zlib elfutils xz" +RDEPENDS:${PN}-tools = "perl ${PN}" + +# mips/rv32 would not compile. +COMPATIBLE_HOST:mipsarcho32 = "null" +COMPATIBLE_HOST:riscv32 = "null" + +PACKAGES =+ "${PN}-tools" +FILES:${PN}-tools = "${bindir}/*.pl" + +SRC_URI = "\ + git://github.com/makedumpfile/makedumpfile;branch=${SRCBRANCH};protocol=https \ + file://0001-makedumpfile-replace-hardcode-CFLAGS.patch \ +" + +S = "${WORKDIR}/git" + +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" + +SECTION = "base" + +# If we do not specify TARGET, makedumpfile will build for the host but use the +# target gcc. +# + +MAKEDUMPFILE_TARGET ?= "${TARGET_ARCH}" +MAKEDUMPFILE_TARGET:powerpc = "ppc" + +EXTRA_OEMAKE = "\ + LINKTYPE=static \ + TARGET=${MAKEDUMPFILE_TARGET} \ + ${PACKAGECONFIG_CONFARGS} \ +" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[lzo] = "USELZO=on,USELZO=off,lzo" +PACKAGECONFIG[snappy] = "USESNAPPY=on,USESNAPPY=off,snappy" +PACKAGECONFIG[zstd] = "USEZSTD=on,USEZSTD=off,zstd" + +do_install () { + mkdir -p ${D}/usr/bin + install -m 755 ${S}/makedumpfile ${D}/usr/bin + install -m 755 ${S}/makedumpfile-R.pl ${D}/usr/bin + + mkdir -p ${D}/etc/ + install -m 644 ${S}/makedumpfile.conf ${D}/etc/makedumpfile.conf.sample +} -- 2.43.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#205734): https://lists.openembedded.org/g/openembedded-core/message/205734 Mute This Topic: https://lists.openembedded.org/mt/108998255/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-