From 4ec5f133bb0b800ef8bfa0c8687a8f317b092162 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr <​jk@ozlabs.org> Date: Sat, 12 Apr 2008 23:20:31 +0000 Subject: [PATCH] Use new kexec tools Horms' new kexec-tools repository has a number of updates and fixes for kexec, and also supports the PS3. This change updates the kexec repo, and adds a few build-system patches to make it work with OpenWRT. Signed-off-by: Jeremy Kerr SVN-Revision: 10803 --- package/kexec-tools/Makefile | 51 ++++--- package/kexec-tools/kexec-config.in | 9 ++ ...e-CPPFLAGS-and-LDFLAGS-for-purgatory.patch | 39 ++++++ ...-Use-separate-LDFLAGS-for-bin-to-hex.patch | 27 ++++ ...alled-files-user-writable-permission.patch | 132 ++++++++++++++++++ 5 files changed, 238 insertions(+), 20 deletions(-) create mode 100644 package/kexec-tools/kexec-config.in create mode 100644 package/kexec-tools/patches/0001-Use-separate-CPPFLAGS-and-LDFLAGS-for-purgatory.patch create mode 100644 package/kexec-tools/patches/0002-Use-separate-LDFLAGS-for-bin-to-hex.patch create mode 100644 package/kexec-tools/patches/0003-Give-installed-files-user-writable-permission.patch diff --git a/package/kexec-tools/Makefile b/package/kexec-tools/Makefile index 6274cb81c3..108492dbbf 100644 --- a/package/kexec-tools/Makefile +++ b/package/kexec-tools/Makefile @@ -9,46 +9,57 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kexec-tools -PKG_VERSION:=1.101 +PKG_VERSION:=testing-20080227 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=http://www.xmission.com/~ebiederm/files/kexec/ -PKG_MD5SUM:=b4f7ffcc294d41a6a4c40d6e44b7734d +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://kernel.org/pub/linux/kernel/people/horms/kexec-tools/ +PKG_MD5SUM:=45455af789545fdfaff2401d1988996a include $(INCLUDE_DIR)/package.mk define Package/kexec-tools SECTION:=utils CATEGORY:=Utilities - DEPENDS:=@i386 +zlib + DEPENDS:=@i386||@powerpc +zlib TITLE:=Kernel boots kernel - URL:=http://www.xmission.com/~ebiederm/files/kexec/README + URL:=http://kernel.org/pub/linux/kernel/people/horms/kexec-tools/ + MENU:=1 endef define Package/kexec-tools/description - kexec is a set of systems call that allows you to load + kexec is a set of systems call that allows you to load another kernel from the currently executing Linux kernel. endef -MAKE_FLAGS += \ - DESTDIR="$(PKG_INSTALL_DIR)" \ - EXTRA_CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \ - BUILD_CFLAGS="-Os" \ - LIBS="$(TARGET_LDFLAGS) -lz" \ - install +define Package/kexec-tools/config + source "$(SOURCE)/kexec-config.in" +endef + +CONFIGURE_ARGS = \ + --target=$(CONFIG_KEXEC_TOOLS_TARGET_NAME)-linux-uclibc \ + --host=$(GNU_TARGET_NAME)-uclibc \ + --build=$(GNU_HOST_NAME) \ + --program-prefix="" \ + --program-suffix="" \ + --prefix=/usr \ + --exec-prefix=/usr \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + +CONFIGURE_VARS += BUILD_CC=$(HOSTCC) define Build/Compile - rm -rf $(PKG_INSTALL_DIR) - mkdir -p $(PKG_INSTALL_DIR) - $(call Build/Compile/Default,) + $(MAKE) -C $(PKG_BUILD_DIR) all endef define Package/kexec-tools/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kexec $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kdump $(1)/usr/bin/ - $(INSTALL_BIN) ./files/kexec.sh $(1)/usr/bin/kexec.mtd + $(MAKE) -C $(PKG_BUILD_DIR) \ + DESTDIR="$(1)" \ + install + rm -rf $(1)/usr/man endef $(eval $(call BuildPackage,kexec-tools)) diff --git a/package/kexec-tools/kexec-config.in b/package/kexec-tools/kexec-config.in new file mode 100644 index 0000000000..0907741825 --- /dev/null +++ b/package/kexec-tools/kexec-config.in @@ -0,0 +1,9 @@ + +config KEXEC_TOOLS_TARGET_NAME + string + prompt "Target name for kexec kernel" if PACKAGE_kexec-tools + default ARCH + help + Defines the target type of the kernels that kexec deals + with. This should be the target specification of + the kernel you're booting. diff --git a/package/kexec-tools/patches/0001-Use-separate-CPPFLAGS-and-LDFLAGS-for-purgatory.patch b/package/kexec-tools/patches/0001-Use-separate-CPPFLAGS-and-LDFLAGS-for-purgatory.patch new file mode 100644 index 0000000000..1a64732109 --- /dev/null +++ b/package/kexec-tools/patches/0001-Use-separate-CPPFLAGS-and-LDFLAGS-for-purgatory.patch @@ -0,0 +1,39 @@ +From ee274ca1ae88bef43da3090d0e1e9155e3b493ad Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Wed, 19 Mar 2008 17:06:24 +1100 +Subject: [PATCH] Use separate CPPFLAGS and LDFLAGS for purgatory + +Currently, CPPFLAGS and LDFLAGS can 'leak' into the purgatory build +from the main kexec/kexec object. Because of this, the purgatory +is build with -lz, but we may not have a zlib present for the +architecture of the purgatory object. + +This change uses fresh CPPFLAGS and LDFLAGS for the purgatory object. + +Signed-off-by: Jeremy Kerr +--- + purgatory/Makefile | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/purgatory/Makefile b/purgatory/Makefile +index 6c747b1..ac58719 100644 +--- a/purgatory/Makefile ++++ b/purgatory/Makefile +@@ -49,11 +49,12 @@ $(PURGATORY): CFLAGS+=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ + -Os -fno-builtin -ffreestanding \ + -fno-zero-initialized-in-bss + +-$(PURGATORY): CPPFLAGS+=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ ++$(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ + -I$(srcdir)/purgatory/include \ + -I$(srcdir)/purgatory/arch/$(ARCH)/include \ ++ -I$(srcdir)/util_lib/include \ + -I$(shell $(CC) -print-file-name=include) +-$(PURGATORY): LDFLAGS+=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\ ++$(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\ + --no-undefined -nostartfiles -nostdlib -nodefaultlibs \ + -e purgatory_start -r + +-- +1.5.0.rc4.g85b1 + diff --git a/package/kexec-tools/patches/0002-Use-separate-LDFLAGS-for-bin-to-hex.patch b/package/kexec-tools/patches/0002-Use-separate-LDFLAGS-for-bin-to-hex.patch new file mode 100644 index 0000000000..f420bab6ac --- /dev/null +++ b/package/kexec-tools/patches/0002-Use-separate-LDFLAGS-for-bin-to-hex.patch @@ -0,0 +1,27 @@ +From 072159b1f4aca88f7d99259fe2bd14a6653ede52 Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Wed, 19 Mar 2008 17:20:39 +1100 +Subject: [PATCH] Use separate LDFLAGS for bin-to-hex + +We don't need the general -L and -l flags for the bin-to-hex util. + +Signed-off-by: Jeremy Kerr +--- + util/Makefile | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/util/Makefile b/util/Makefile +index 89732a1..11d82fd 100644 +--- a/util/Makefile ++++ b/util/Makefile +@@ -6,6 +6,7 @@ $(BIN_TO_HEX): $(srcdir)/util/bin-to-hex.c + + $(BIN_TO_HEX): CC=$(BUILD_CC) + $(BIN_TO_HEX): CFLAGS=$(BUILD_CFLAGS) ++$(BIN_TO_HEX): LDFLAGS= + + dist += util/Makefile util/bin-to-hex.c + clean += util/bin-to-hex.o $(BIN_TO_HEX) +-- +1.5.0.rc4.g85b1 + diff --git a/package/kexec-tools/patches/0003-Give-installed-files-user-writable-permission.patch b/package/kexec-tools/patches/0003-Give-installed-files-user-writable-permission.patch new file mode 100644 index 0000000000..7ff2115008 --- /dev/null +++ b/package/kexec-tools/patches/0003-Give-installed-files-user-writable-permission.patch @@ -0,0 +1,132 @@ +From 0c5e14cdad161e510497df58eb206d3b8f8eba47 Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Wed, 19 Mar 2008 17:25:37 +1100 +Subject: [PATCH] Give installed files user-writable permission + +Currently we install all files as 0555 or 0444. This means that we +can't easily do any post-install modification to the files (eg. +stripping, as is done with OpenWRT). + +This change installs the files with the user write bit set + +Signed-off-by: Jeremy Kerr +--- + Makefile.in | 42 +++++++++++++++++++++--------------------- + 1 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 306d6e9..037f9a4 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -237,87 +237,87 @@ install: $(TARGETS) + for file in $(TARGETS) ; do \ + if test `$(DIRNAME) $$file` = "$(SBINDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sbindir)/; \ +- $(INSTALL) -m 555 $$file $(DESTDIR)/$(sbindir)/; \ ++ $(INSTALL) -m 755 $$file $(DESTDIR)/$(sbindir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(BINDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(bindir)/; \ +- $(INSTALL) -m 555 $$file $(DESTDIR)/$(bindir)/; \ ++ $(INSTALL) -m 755 $$file $(DESTDIR)/$(bindir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LIBEXECDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(libexecdir)/; \ +- $(INSTALL) -m 555 $$file $(DESTDIR)/$(libexecdir)/; \ ++ $(INSTALL) -m 755 $$file $(DESTDIR)/$(libexecdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(DATADIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(datadir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(datadir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(datadir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(SYSCONFDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sysconfdir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(sysconfdir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(sysconfdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(SHAREDSTATEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sharedstatedir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(sharedstatedir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(sharedstatedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LOCALSTATEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(localstatedir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(localstatedir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(localstatedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LIBDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(libdir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(libdir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(libdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(INFODIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(infodir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(infodir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(infodir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN1DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man1; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man1; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man1; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN2DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man2; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man2; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man2; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN3DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man3/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man3/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man3/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN4DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man4/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man4/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man4/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN5DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man5/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man5/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man5/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN6DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man6/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man6/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man6/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN7DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man7/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man7/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man7/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN8DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man8/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man8/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man8/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(INCLUDEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(includedir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(includedir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(includedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGDATADIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkgdatadir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkgdatadir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(pkgdatadir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGLIBDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkglibdir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkglibdir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(pkglibdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGINCLUDEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkgincludedir)/; \ +- $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkgincludedir)/; \ ++ $(INSTALL) -m 644 $$file $(DESTDIR)/$(pkgincludedir)/; \ + fi; \ + done + +-- +1.5.0.rc4.g85b1 +