%global debug_package %{nil} %global efidir %(eval echo $(grep ^ID= /etc/os-release | sed -e 's/^ID=//' -e 's/rhel/redhat/')) %global kver %(kver=$(ls -1 /usr/lib/modules/ | head -1 | cut -d'-' -f1); test -n "$kver" && echo "$kver" || echo 666) %global krel %(krel=$(ls -1 /usr/lib/modules/ | head -1 | cut -d'-' -f2 | cut -d'.' -f1-2); test -n "$krel" && echo "$krel" || echo 999) %global nmbl_root_dir %{_prefix}/lib/nmbl/ %global nmbl_version_dir %{nmbl_root_dir}/%{version}-%{release} %ifarch x86_64 %global efiarch x64 %endif %ifarch aarch64 %global efiarch aa64 %endif %global nmbl_efi_dir %{nmbl_version_dir}/%{efiarch}/EFI/%{efidir} Summary: nmbl proof of concept as a package Name: nmbl-builder Version: 0 Release: 1%{?dist} Group: System Environment/Base License: GPLv3 URL: https:/github.com/rhboot/nmbl-poc BuildRequires: binutils BuildRequires: btrfs-progs %if 0%{?rhel} < 10 BuildRequires: dhcp-client BuildRequires: systemd-networkd %else BuildRequires: kea BuildRequires: NetworkManager %endif BuildRequires: dracut BuildRequires: dracut-nmbl BuildRequires: dracut-network BuildRequires: efi-srpm-macros BuildRequires: findutils BuildRequires: git BuildRequires: grub2-emu BuildRequires: grub2-tools BuildRequires: grub2-tools-minimal BuildRequires: kernel-core BuildRequires: kernel-modules BuildRequires: kernel-modules-core BuildRequires: kexec-tools BuildRequires: keyutils BuildRequires: lvm2 BuildRequires: make BuildRequires: openssh-clients BuildRequires: pesign BuildRequires: systemd-boot BuildRequires: systemd-ukify Source0: nmbl-builder-%{VERSION}.tar.xz Source1: make_efi_entries Source2: install_bootloader %description nmbl-poc is a proof of concept for a bootloader for UEFI machines based on the linux kernel and grub-emu, using either switchroot or kexec. %package -n nmbl Summary: nmbl proof of concept as a package Version: %{kver} Release: %{krel} %description -n nmbl nmbl-poc is a proof of concept for a bootloader for UEFI machines based on the linux kernel and grub-emu, using either switchroot or kexec. %prep %autosetup -S git_am %build make nmbl-cloud.uki %pesign -s -i nmbl-cloud.uki -o nmbl-cloud.signed.uki mv nmbl-cloud.signed.uki nmbl-cloud.uki make nmbl-workstation.uki %pesign -s -i nmbl-workstation.uki -o nmbl-workstation.signed.uki mv nmbl-workstation.signed.uki nmbl-workstation.uki %install install -D -d -m 0700 $RPM_BUILD_ROOT%{_bindir}/ install -D -d -m 0700 $RPM_BUILD_ROOT%{_prefix}/lib/bootloader/ install -D -d -m 0700 $RPM_BUILD_ROOT%{_prefix}/lib/nmbl/ install -D -d -m 0700 $RPM_BUILD_ROOT%{nmbl_efi_dir}/ install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/ install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_prefix}/lib/bootloader/ %make_install INSTALL_DIR="%{nmbl_efi_dir}" %posttrans -n nmbl %{_prefix}/lib/bootloader/install_bootloader nmbl %{version}-%{release} %{efiarch} %{_bindir}/make_efi_entries %files -n nmbl %defattr(-,root,root,-) %{nmbl_efi_dir}/*.uki %{_bindir}/make_efi_entries %{_prefix}/lib/bootloader/install_bootloader %changelog * Fri Mar 17 2023 Peter Jones - 0-0 - Yeet a spec file into the world