Use new kexec tools
authorJeremy Kerr <​jk@ozlabs.org>
Sat, 12 Apr 2008 23:20:31 +0000 (23:20 +0000)
committerJeremy Kerr <​jk@ozlabs.org>
Sat, 12 Apr 2008 23:20:31 +0000 (23:20 +0000)
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
package/kexec-tools/kexec-config.in [new file with mode: 0644]
package/kexec-tools/patches/0001-Use-separate-CPPFLAGS-and-LDFLAGS-for-purgatory.patch [new file with mode: 0644]
package/kexec-tools/patches/0002-Use-separate-LDFLAGS-for-bin-to-hex.patch [new file with mode: 0644]
package/kexec-tools/patches/0003-Give-installed-files-user-writable-permission.patch [new file with mode: 0644]

index 6274cb81c3240b0d0c985b1b089ca3ce2acd45e5..108492dbbf02da3b344eb4c78fbb67499d9cbb4e 100644 (file)
@@ -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 (file)
index 0000000..0907741
--- /dev/null
@@ -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 (file)
index 0000000..1a64732
--- /dev/null
@@ -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 (file)
index 0000000..f420bab
--- /dev/null
@@ -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 (file)
index 0000000..7ff2115
--- /dev/null
@@ -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
+