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 <jk@ozlabs.org>

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 <jk@ozlabs.org>
+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 <jk@ozlabs.org>
+---
+ 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 <jk@ozlabs.org>
+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 <jk@ozlabs.org>
+---
+ 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 <jk@ozlabs.org>
+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 <jk@ozlabs.org>
+---
+ 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
+
-- 
2.30.2