petitboot: Update to petitboot to latest

Update the petitboot package to the latest version
in the petitboot git repo.

Add new build config options to allow selection of which of
the petitboot user interface program to run at system boot.


git-svn-id: svn://svn.openwrt.org/openwrt/packages@16762 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
geoff 2009-07-10 01:12:10 +00:00
parent 79e2334491
commit f8b977d9de
4 changed files with 158 additions and 48 deletions

View File

@ -8,53 +8,104 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=petitboot PKG_NAME:=petitboot
PKG_VERSION:=0.2 PKG_VERSION:=53aa807ae41e48fd71653c2d00083a44a8bca14c
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://ozlabs.org/~jk/projects/petitboot/downloads/ PKG_SOURCE_URL:=git://ozlabs.org/home/jk/git/petitboot
PKG_MD5SUM:=b320c434f38d57c1fcc6980e51d934a8 PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_VERSION)
PKG_INSTALL=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/petitboot define Package/petitboot
SECTION:=boot SECTION:=boot
CATEGORY:=Boot Loaders CATEGORY:=Boot Loaders
DEPENDS:=+libtwin +udev +udevextras +kexec-tools @TARGET_ps3 TITLE:=A kexec based bootloader
TITLE:=Graphical bootloader
URL:=http://ozlabs.org/~jk/projects/petitboot/ URL:=http://ozlabs.org/~jk/projects/petitboot/
MAINTAINER:=Geoff Levand <geoffrey.levand@am.sony.com>
DEPENDS:=+kexec-tools +libncurses +libtwin +udev +ps3-utils
endef endef
define Build/Configure define Package/petitboot/description
Petitboot is a Linux kexec based bootloader with both
graphical and command-line user interfaces. The OpenWRT
Petitboot package has configuration options that can be
used to specify which Petitboot components to build, and
can also be used to specify that Petitboot should be run
automatically at system start-up.
Petitboot supports loading Linux kernel and initrd images
from any device that can be mounted by Linux. It can
handle gzipped images and can also load images from the
network using TFTP, NFS, HTTP, HTTPS, and SFTP. Petitboot
looks for bootloader config files on mountable devices in
the system, and also uses the boot configuration sent to
it from a DHCP server.
endef endef
TARGET_CPPFLAGS += -I$(PKG_BUILD_DIR) define Package/petitboot/config
source "$(SOURCE)/petitboot-config.in"
endef
define Build/Compile petitboot-config-args-y$(CONFIG_PETITBOOT_CUI) += --without-ncurses
PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ petitboot-config-args-y$(CONFIG_PETITBOOT_GUI) += --without-twin
PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ petitboot-config-args-y$(CONFIG_PETITBOOT_PS3) += --enable-ps3=no
$(MAKE) -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \ petitboot-cppflags-$(CONFIG_PETITBOOT_DEBUG) += -DDEBUG
$(TARGET_CONFIGURE_OPTS) \ petitboot-cppflags-y$(CONFIG_PETITBOOT_DEBUG) += -DNDEBUG
CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
all install petitboot-extra-bin-$(CONFIG_PETITBOOT_CUI) += /usr/sbin/pb-cui
petitboot-extra-bin-$(CONFIG_PETITBOOT_GUI) += /usr/sbin/pb-twin
petitboot-extra-data-$(CONFIG_PETITBOOT_GUI) += /usr/share/petitboot/artwork/*
# The platform inittab and/or initrun should check for /usr/sbin/petitboot
# and run it on startup if found.
petitboot-install-autorun-$(CONFIG_PETITBOOT_AUTORUN_CUI) = \
ln -sf pb-cui $(1)/usr/sbin/petitboot
petitboot-install-autorun-$(CONFIG_PETITBOOT_AUTORUN_GUI) = \
ln -sf pb-twin $(1)/usr/sbin/petitboot
CONFIGURE_ARGS += $(petitboot-config-args-y)
EXTRA_CPPFLAGS += $(petitboot-cppflags-y)
define Build/Prepare
$(call Build/Prepare/Default)
(cd $(PKG_BUILD_DIR) && $(BASH) -x ./bootstrap)
endef endef
define Package/petitboot/install define Package/petitboot/install
$(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/petitboot $(1)/usr/sbin/ $(INSTALL_BIN) \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/petitboot-udev-helper \ $(addprefix $(PKG_INSTALL_DIR),$(petitboot-extra-bin-y)) \
$(PKG_INSTALL_DIR)/usr/sbin/pb-discover \
$(PKG_INSTALL_DIR)/usr/sbin/pb-event \
$(1)/usr/sbin/ $(1)/usr/sbin/
$(INSTALL_BIN) files/petitboot-wrapper $(1)/usr/sbin/petitboot-wrapper
$(INSTALL_DIR) $(1)/usr/share/petitboot/
$(CP) $(PKG_INSTALL_DIR)/usr/share/petitboot/artwork \
$(1)/usr/share/petitboot/
$(INSTALL_DIR) $(1)/etc/udev/rules.d
$(CP) $(PKG_BUILD_DIR)/utils/99-petitboot.rules $(1)/etc/udev/rules.d/
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) ./files/petitboot.init $(1)/etc/init.d/petitboot
$(INSTALL_DIR) $(1)/usr/share/petitboot/
$(INSTALL_DATA) \
$(addprefix $(PKG_INSTALL_DIR),$(petitboot-extra-data-y)) \
$(1)/usr/share/petitboot/
$(INSTALL_DIR) $(1)/etc/udev/rules.d
$(INSTALL_DATA) \
$(PKG_BUILD_DIR)/utils/99-petitboot.rules \
$(1)/etc/udev/rules.d/
$(INSTALL_DIR) $(1)/etc/
$(INSTALL_DATA) -T $(PKG_BUILD_DIR)/utils/udhcpc $(1)/etc/udhcpc.user
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) \
./files/petitboot.init \
$(1)/etc/init.d/petitboot
$(petitboot-install-autorun-y)
endef endef
$(eval $(call BuildPackage,petitboot)) $(eval $(call BuildPackage,petitboot))

View File

@ -1,16 +0,0 @@
#!/bin/sh
# wrapper script for petitboot - re-exec as required.
mkdir -p /var/tmp/mnt
while :
do
/usr/sbin/petitboot -u >/var/log/petitboot.log 2>&1
# cleanup
for dir in /var/tmp/mnt/*
do
umount "$dir"
rmdir "$dir"
done
done

View File

@ -1,12 +1,22 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org # Copyright (C) 2006 OpenWrt.org
START=80
START=90
kill_discover() {
killall -q -KILL pb-discover
umount -f -d /var/petitboot/mnt/* 2>/dev/null
}
start() { start() {
/usr/sbin/petitboot-wrapper & kill_discover
/usr/sbin/pb-discover 2>&- >&- &
} }
stop() { stop() {
killall petitboot-wrapper # first signal pb-discover to exit
killall petitboot killall -q -INT pb-discover
sleep 3
# now force it
kill_discover
} }

View File

@ -0,0 +1,65 @@
# petitboot package config
config PETITBOOT_GUI
bool "Enable Graphical UI support"
depends on PACKAGE_petitboot
select PACKAGE_libtwin
default y
help
Enable support a petitboot graphical front end based on
the twin windowing package.
config PETITBOOT_CUI
bool "Enable Command-line UI support"
depends on PACKAGE_petitboot
select PACKAGE_libncurses
default y
help
Enable support a petitboot command-line front end based on
the ncurses package.
config PETITBOOT_DEBUG
bool "Build debug versions of petitboot binaries"
depends on PACKAGE_petitboot
default n
help
Enable additional petitboot runtime checks and debug messages.
config PETITBOOT_PS3
bool "Build in extra support for the PS3 game console"
depends on PACKAGE_petitboot
default n
help
Enable additional petitboot runtime checks and debug messages.
choice
prompt "Startup behavior"
default PETITBOOT_AUTORUN_GUI
depends on PETITBOOT_GUI || PETITBOOT_CUI
config PETITBOOT_AUTORUN_GUI
bool "Auto run Petitboot GUI"
depends on PETITBOOT_GUI
help
Automatically run Petitboot in graphical mode at
system startup. Note that the Petitboot program has a menu item
'Exit to Shell' that can be used to exit the program when
it is running.
config PETITBOOT_AUTORUN_CUI
bool "Auto run Petitboot CUI"
depends on PETITBOOT_CUI
help
Automatically run Petitboot in command-line mode at system
startup. Note that the Petitboot program has a menu item
'Exit to Shell' that can be used to exit the program when
it is running.
config PETITBOOT_AUTORUN_NONE
bool "Disable Petitboot auto run"
help
Disable Petitboot from running automatically at system startup.
The system will boot into a shell. Petitboot can still be run
manually from the shell prompt when this option is selected.
endchoice