2019-10-30 20:36:22 +03:00
i f d e f B U I L D D I R
# in deciseconds
DEFAULT_TIMEOUT = 90
# prepare data for grub installation;
# see also stage1/scripts.d/01-grub
i n c l u d e $( BUILDDIR ) / d i s t c f g . m k
i f n d e f B O O T L O A D E R
$( error grub feature enabled but BOOTLOADER undefined )
e n d i f
i f n d e f G R U B _ D I R E C T
# SUBPROFILES are considered GRUB_CFG too
# (note these can appear like stage2@live);
# 01defaults.cfg is included indefinitely
2020-01-10 21:56:52 +03:00
GRUB_CFG := $( GRUB_CFG) $( SUBPROFILE_DIRS) defaults fwsetup_efi
2019-10-30 20:36:22 +03:00
e n d i f
2020-01-02 18:28:16 +03:00
DSTDIR := $( BUILDDIR) /stage1/files/boot/grub/.in
2019-10-30 20:36:22 +03:00
DSTCFGS := $( DSTDIR) /*.cfg
# we can do GRUB_{CFG,MODULES,FILES}
# CFG have only cfg snippet
cfg = $( wildcard cfg.in/??$( 1) .cfg)
# NB: list position determined by file numbering (*.cfg sorting)
#
# config snippets are copied into generated profile where they can
# be also tested against grub modules (some can be unavailable);
# we can't do tests right now since that implies host grub being
# identical to build system one which might be not the case...
#
# have to piggyback parameters as we're running in host system yet,
# and files involved will appear inside instrumental chroot
#
# arguments get evaluated before recipe body execution thus prep
all : debug timeout
@### proper text branding should be implemented
@echo $( GRUB_FILES) > $( DSTDIR) /grub.list
@sed -i \
-e 's,@mkimage-profiles@,$(IMAGE_NAME),' \
-e 's,@relname@,$(RELNAME),' \
$( DSTCFGS)
# integerity check
timeout : distro
@if [ " $( GRUB_TIMEOUT) " -ge 0 ] 2>/dev/null; then \
TIMEOUT = " $( GRUB_TIMEOUT) " ; \
else \
TIMEOUT = " $( DEFAULT_TIMEOUT) " ; \
fi ; \
sed -i " s,@timeout@, $$ TIMEOUT, " $( DSTCFGS)
distro : bootargs
@if [ -n " $( META_VOL_SET) " ] ; then \
DISTRO = " $( META_VOL_SET) " ; \
else \
DISTRO = "ALT" ; \
fi ; \
sed -i " s,@distro@, $$ DISTRO, " $( DSTCFGS)
# pass over additional parameters, if any
bootargs : clean
@if [ -n " $( STAGE2_BOOTARGS) " ] ; then \
sed -i " s,@bootargs@, $( STAGE2_BOOTARGS) , " $( DSTCFGS) ; \
fi ; \
sed -i "s,@bootargs@,," $( DSTCFGS)
@if [ -n " $( RESCUE_BOOTARGS) " ] ; then \
sed -i " s,@rescue_bootargs@, $( RESCUE_BOOTARGS) , " $( DSTCFGS) ; \
fi ; \
sed -i "s,@rescue_bootargs@,," $( DSTCFGS)
@if [ -n " $( BOOTVGA) " ] ; then \
sed -i " s,@bootvga@, $( BOOTVGA) , " $( DSTCFGS) ; \
fi ; \
sed -i "s,@bootvga@,,;s,vga= ,," $( DSTCFGS)
clean : copy
@if [ " $( GRUB_UI) " = gfxboot ] ; then \
sed -i "s/\^//;/menu label /d" $( DSTCFGS) ; \
fi
copy : prep
@cp -pLt $( DSTDIR) -- $( sort \
$( foreach C,$( GRUB_CFG) ,$( call cfg,$( C) ) ) )
prep :
@mkdir -p $( DSTDIR)
debug :
@if [ -n " $( DEBUG) " ] ; then \
echo " ** BOOTLOADER: $( BOOTLOADER) " ; \
echo " ** GRUB_CFG: $( GRUB_CFG) " ; \
echo " ** GRUB_FILES: $( GRUB_FILES) " ; \
fi
e n d i f