121 lines
4.2 KiB
Makefile
121 lines
4.2 KiB
Makefile
################################################################################
|
|
#
|
|
# petitboot
|
|
#
|
|
################################################################################
|
|
|
|
PETITBOOT_VERSION = 1.15
|
|
PETITBOOT_SOURCE = petitboot-v$(PETITBOOT_VERSION).tar.gz
|
|
PETITBOOT_SITE = https://github.com/open-power/petitboot/releases/download/v$(PETITBOOT_VERSION)
|
|
PETITBOOT_DEPENDENCIES = \
|
|
elfutils \
|
|
ncurses \
|
|
udev \
|
|
host-bison \
|
|
host-flex \
|
|
lvm2 \
|
|
$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \
|
|
$(TARGET_NLS_DEPENDENCIES)
|
|
PETITBOOT_LICENSE = GPL-2.0
|
|
PETITBOOT_LICENSE_FILES = COPYING
|
|
|
|
PETITBOOT_CONF_ENV = LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)"
|
|
PETITBOOT_CONF_OPTS = \
|
|
--enable-crypt \
|
|
--enable-platform-auto \
|
|
--disable-mtd \
|
|
--with-ncurses \
|
|
--without-signed-boot \
|
|
--without-twin-fbdev \
|
|
--without-twin-x11 \
|
|
$(if $(BR2_PACKAGE_BUSYBOX),--enable-busybox,--disable-busybox) \
|
|
HOST_PROG_KEXEC=/usr/sbin/kexec \
|
|
HOST_PROG_SH=/usr/libexec/petitboot/pb-shell \
|
|
HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/kexec-restart
|
|
|
|
# HPA and Busybox tftp are supported. HPA tftp is part of Buildroot's tftpd
|
|
# package.
|
|
ifeq ($(BR2_PACKAGE_TFTPD),y)
|
|
PETITBOOT_CONF_OPTS += --with-tftp=hpa
|
|
else ifeq ($(BR2_PACKAGE_BUSYBOX),y)
|
|
PETITBOOT_CONF_OPTS += --with-tftp=busybox
|
|
else
|
|
# This actually means "autodetect", there's no way to really disable.
|
|
PETITBOOT_CONF_OPTS += --without-tftp
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DTC),y)
|
|
PETITBOOT_DEPENDENCIES += dtc
|
|
PETITBOOT_CONF_OPTS += --with-fdt
|
|
define PETITBOOT_POST_INSTALL_DTB
|
|
$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-dtb-updates \
|
|
$(TARGET_DIR)/etc/petitboot/boot.d/30-dtb-updates
|
|
endef
|
|
PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_DTB
|
|
else
|
|
PETITBOOT_CONF_OPTS += --without-fdt
|
|
endif
|
|
|
|
ifeq ($(BR2_INIT_BUSYBOX),y)
|
|
# inittab "restart" runlevel entry runs kexec
|
|
PETITBOOT_KEXEC_COMMAND = /bin/kill -QUIT 1
|
|
define PETITBOOT_BUSYBOX_INITTAB
|
|
grep -q kexec $(TARGET_DIR)/etc/inittab || \
|
|
printf "\nnull::restart:/usr/sbin/kexec -f -e\n" >> $(TARGET_DIR)/etc/inittab
|
|
endef
|
|
PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_BUSYBOX_INITTAB
|
|
else ifeq ($(BR2_INIT_SYSV),y)
|
|
# inittab runlevel 6 entry runs kexec
|
|
PETITBOOT_KEXEC_COMMAND = /sbin/shutdown -r now
|
|
define PETITBOOT_SYSV_INITTAB
|
|
grep -q kexec $(TARGET_DIR)/etc/inittab || \
|
|
$(SED) 's~^reb0:.*~reb0:6:wait:/usr/sbin/kexec -f -e~' $(TARGET_DIR)/etc/inittab
|
|
endef
|
|
PETITBOOT_TARGET_FINALIZE_HOOKS += PETITBOOT_SYSV_INITTAB
|
|
else ifeq ($(BR2_INIT_OPENRC),y)
|
|
PETITBOOT_KEXEC_COMMAND = /sbin/openrc-shutdown --kexec now
|
|
else ifeq ($(BR2_INIT_SYSTEMD),y)
|
|
PETITBOOT_KEXEC_COMMAND = /usr/bin/systemctl kexec
|
|
else # BR2_INIT_NONE
|
|
PETITBOOT_KEXEC_COMMAND = /usr/sbin/kexec -f -e
|
|
endif
|
|
|
|
PETITBOOT_GETTY_PORT = $(patsubst %,'%',$(call qstrip,$(BR2_PACKAGE_PETITBOOT_GETTY_PORT)))
|
|
|
|
define PETITBOOT_POST_INSTALL
|
|
$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/kexec-restart.in \
|
|
$(TARGET_DIR)/usr/libexec/petitboot/kexec-restart
|
|
$(SED) 's~@KEXEC_COMMAND@~$(PETITBOOT_KEXEC_COMMAND)~' \
|
|
$(TARGET_DIR)/usr/libexec/petitboot/kexec-restart
|
|
$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
|
|
$(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb
|
|
$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
|
|
$(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb
|
|
$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/S15pb-discover \
|
|
$(TARGET_DIR)/etc/init.d/S15pb-discover
|
|
$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-console \
|
|
$(TARGET_DIR)/etc/init.d/pb-console
|
|
$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/pb-shell \
|
|
$(TARGET_DIR)/usr/libexec/petitboot/pb-shell
|
|
$(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/shell_profile \
|
|
$(TARGET_DIR)/home/petituser/.profile
|
|
|
|
mkdir -p $(TARGET_DIR)/etc/udev/rules.d
|
|
for port in $(PETITBOOT_GETTY_PORT); do \
|
|
printf 'SUBSYSTEM=="tty", KERNEL=="%s", RUN+="/etc/init.d/pb-console start $$name"\n' "$$port"; \
|
|
done > $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules
|
|
|
|
mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/
|
|
ln -sf /usr/sbin/pb-udhcpc \
|
|
$(TARGET_DIR)/usr/share/udhcpc/default.script.d/
|
|
|
|
endef
|
|
|
|
PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
|
|
|
|
define PETITBOOT_USERS
|
|
petituser -1 petitgroup -1 * /home/petituser /bin/sh - petitboot user
|
|
endef
|
|
|
|
$(eval $(autotools-package))
|