Blob Blame Raw
Name:           shim
Version:        0.1
Release:        3%{?dist}
Summary:        First-stage UEFI bootloader

License:        BSD
URL:            http://www.codon.org.uk/~mjg59/shim/
Source0:        http://www.codon.org.uk/~mjg59/shim/shim-%{version}.tar.bz2
Source1:	fedora-ca.cer

BuildRequires: gnu-efi git
BuildRequires: pesign >= 0.99-6

# Shim uses OpenSSL, but cannot use the system copy as the UEFI ABI is not
# compatible with SysV (there's no red zone under UEFI) and there isn't a
# POSIX-style C library.
# BuildRequires: OpenSSL

# Shim is only required on platforms implementing the UEFI secure boot
# protocol. The only one of those we currently wish to support is 64-bit x86.
# Adding further platforms will require adding appropriate relocation code.
ExclusiveArch: x86_64

# Shim generates no binaries that run under the installed OS, so debuginfo
# is useless
%global debug_package %{nil}

# Figure out the right file path to use
%if 0%{?rhel}
%global efidir redhat
%endif
%if 0%{?fedora}
%global efidir fedora
%endif

%description
Initial UEFI bootloader that handles chaining to a trusted full bootloader
under secure boot environments.

%package -n shim-unsigned
Summary: First-stage UEFI bootloader (unsigned data)

%description -n shim-unsigned
Initial UEFI bootloader that handles chaining to a trusted full bootloader
under secure boot environments.

%prep
%setup -q -n shim-%{version}
git init
git config user.email "shim-owner@fedoraproject.org"
git config user.name "Fedora Ninjas"
git add .
git commit -a -q -m "%{version} baseline."
git am %{patches} </dev/null

%build
%define vendor_token_str %{expand:%%{nil}%%{?vendor_token_name:-t "%{vendor_token_name}"}}
%define vendor_cert_str %{expand:%%{!?vendor_cert_nickname:-c "Red Hat Test Certificate"}%%{?vendor_cert_nickname:-c "%%{vendor_cert_nickname}"}}
pesign %{vendor_token_str} %{vendor_cert_str} -C vendor.cer

MAKEFLAGS=""
if [ -f "%{SOURCE1}" ]; then
	MAKEFLAGS="VENDOR_CERT_FILE=%{SOURCE1}"
fi
make %{?_smp_mflags} ${MAKEFLAGS}


%install
rm -rf $RPM_BUILD_ROOT
%pesign -s -i shim.efi -e shim.sig
install -D -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/shim/
install -m 0644 shim.efi $RPM_BUILD_ROOT%{_datadir}/shim/shim.efi
install -m 0644 shim.sig $RPM_BUILD_ROOT%{_datadir}/shim/shim.sig

%files -n shim-unsigned
%doc
%dir %{_datadir}/shim
%{_datadir}/shim/*

%changelog
* Thu Oct 18 2012 Peter Jones <pjones@redhat.com>
- Produce an unsigned shim

* Tue Aug 14 2012 Peter Jones <pjones@redhat.com> - 0.1-3
- Update how embedded cert and signing work.

* Mon Aug 13 2012 Josh Boyer <jwboyer@redhat.com> - 0.1-2
- Add patch to fix image size calculation

* Mon Aug 13 2012 Matthew Garrett <mjg@redhat.com> - 0.1-1
- initial release