Update SPEC to incl. U-Boot

Use U-Boot klist to find kernel version and file. Add additional build
with QEMU Virt machine (S mode) U-Boot as payload.

Signed-off-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
This commit is contained in:
David Abdurachmanov 2019-03-30 22:13:23 +01:00
parent eb25d0f265
commit 4415806684
Signed by: davidlt
GPG Key ID: 7108702C938B13C1
3 changed files with 81 additions and 14 deletions

Binary file not shown.

View File

@ -3,7 +3,7 @@
Name: opensbi-unstable Name: opensbi-unstable
# The last part is short hash # The last part is short hash
Version: 2019.03.20.e921fc2 Version: 2019.03.30.f9cfe30
Release: 1%{?dist} Release: 1%{?dist}
Summary: RISC-V Open Source Supervisor Binary Interface Summary: RISC-V Open Source Supervisor Binary Interface
@ -12,8 +12,8 @@ URL: https://github.com/riscv/opensbi
# Download tarball, e.g.: # Download tarball, e.g.:
# https://github.com/riscv/opensbi/archive/%full_commit.tar.gz # https://github.com/riscv/opensbi/archive/%full_commit.tar.gz
%global full_commit e921fc26911bd27cf715483b60c22920812aab21 %global full_commit f9cfe301c92aede87e46069e66e250d4039e413e
Source0: https://github.com/riscv/riscv-pk/archive/%{full_commit}.tar.gz Source0: https://github.com/riscv/opensbi/archive/%{full_commit}.tar.gz
BuildRequires: systemd-udev BuildRequires: systemd-udev
BuildRequires: grubby-deprecated BuildRequires: grubby-deprecated
@ -26,6 +26,9 @@ BuildRequires: kernel-core
BuildRequires: make BuildRequires: make
BuildRequires: dtc BuildRequires: dtc
BuildRequires: gzip BuildRequires: gzip
BuildRequires: file
# U-Boot binary builds for all platforms
BuildRequires: uboot-images-riscv64
# For docs # For docs
#BuildRequires: doxygen #BuildRequires: doxygen
#BuildRequires: doxygen-latex #BuildRequires: doxygen-latex
@ -68,28 +71,69 @@ Summary: OpenSBI QEMU virt machine firmware with Fedora kernel embedded
OpenSBI QEMU virt machine firmware with Fedora kernel embedded as payload. OpenSBI QEMU virt machine firmware with Fedora kernel embedded as payload.
%packages images-riscv64
Summary: OpenSBI firmware binaries with Fedora U-Boot embedded
%description images-riscv64
OpenSBI firmware images for all supported platforms with embedded Fedora
U-Boot bootloader.
%prep %prep
%autosetup -n opensbi-%{full_commit} %autosetup -n opensbi-%{full_commit}
%build %build
# Find Fedora kernel image in /boot mkdir -p fedora-builds/{kernel,uboot-qemu-virt}
vmlinuz=$(find /boot | grep vmlinuz | grep -v -E '(rescue|hmac)') for build in kernel uboot-qemu-virt; do
if [[ "$vmlinuz" = *$'\n'* ]]; then cp -r $(ls -1 | grep -v fedora-builds) fedora-builds/$build
echo "We expected to find a single file!" done
exit 1
# BUILD: kernel
pushd fedora-builds/kernel
# Use klist.txt to find the latest installed kernel
[ -f /etc/sysconfig/uboot ] && . /etc/sysconfig/uboot
ubootDir=${UBOOT_DIR:-"/boot"}
ubootKList=${UBOOT_KLIST:-"klist.txt"}
if [ ! -f $ubootDir/$ubootKList ]; then
echo "U-Boot klist was not found! Cannot locate latest installed kernel image!"
exit 1
fi fi
echo "Payload: $vmlinuz" latestKernel="/lib/modules/$(tail -n1 "$ubootDir/$ubootKList")/vmlinuz"
cp "$vmlinuz" Image.gz file "$latestKernel"
echo "Payload: $latestKernel"
# Kernel is built with Image.gz target, we need to unpack before embedding it
# into OpenSBI
cp "$latestKernel" Image.gz
gunzip Image.gz gunzip Image.gz
make PLATFORM=qemu/virt FW_PAYLOAD_PATH="$PWD/Image" make PLATFORM=qemu/virt FW_PAYLOAD_PATH="$PWD/Image"
#make docs #make docs
# BUILD: kernel
popd
# BUILD: uboot-qemu-virt
pushd fedora-builds/uboot-qemu-virt
ubootFile=/usr/share/uboot/qemu-riscv64_smode/u-boot.bin
make PLATFORM=qemu/virt FW_PAYLOAD_PATH="$ubootFile"
# BUILD: uboot-qemu-virt
popd
%install %install
# BUILD: kernel
pushd builds/kernel
make PLATFORM=qemu/virt I=%{buildroot} install make PLATFORM=qemu/virt I=%{buildroot} install
#make I=%{buildroot} install_docs #make I=%{buildroot} install_docs
@ -104,16 +148,31 @@ mv %{buildroot}/platform %{buildroot}%{_datadir}/%{name}/
#mv %{buildroot}/docs/refman.pdf %{buildroot}%{_pkgdocdir}/ #mv %{buildroot}/docs/refman.pdf %{buildroot}%{_pkgdocdir}/
#rm -rf %{buildroot}/docs #rm -rf %{buildroot}/docs
# Find Fedora kernel image in /boot and extract version # Use klist.txt to find the latest installed kernel
vmlinuz=$(find /boot | grep vmlinuz | grep -v -E '(rescue|hmac)') [ -f /etc/sysconfig/uboot ] && . /etc/sysconfig/uboot
vmlinuz_version=$(echo "$vmlinuz" | cut -d'-' -f2-)
ubootDir=${UBOOT_DIR:-"/boot"}
ubootKList=${UBOOT_KLIST:-"klist.txt"}
latestKernelVersion=$(tail -n1 "$ubootDir/$ubootKList")
mkdir -p %{buildroot}/boot/opensbi/unstable mkdir -p %{buildroot}/boot/opensbi/unstable
cp build/platform/qemu/virt/firmware/fw_jump.elf \ cp build/platform/qemu/virt/firmware/fw_jump.elf \
%{buildroot}/boot/opensbi/unstable/fw_jump.elf %{buildroot}/boot/opensbi/unstable/fw_jump.elf
cp build/platform/qemu/virt/firmware/fw_payload.elf \ cp build/platform/qemu/virt/firmware/fw_payload.elf \
%{buildroot}/boot/opensbi/unstable/fw_payload-${vmlinuz_version}.elf %{buildroot}/boot/opensbi/unstable/fw_payload-${latestKernelVersion}.elf
# BUILD: kernel
popd
# BUILD: uboot-qemu-virt
pushd builds/uboot-qemu-virt
cp build/platform/qemu/virt/firmware/fw_payload.elf \
%{buildroot}/boot/opensbi/unstable/fw_payload-uboot-qemu-virt-smode.elf
# BUILD: uboot-qemu-virt
popd
%files %files
%license COPYING.BSD %license COPYING.BSD
@ -122,6 +181,7 @@ cp build/platform/qemu/virt/firmware/fw_payload.elf \
%files fedora %files fedora
/boot/opensbi/unstable/fw_payload-*.elf /boot/opensbi/unstable/fw_payload-*.elf
%exclude /boot/opensbi/unstable/fw_payload-uboot-qemu-virt-smode.elf
%files libsbi-devel %files libsbi-devel
#%%doc %%{_pkgdocdir}/refman.pdf #%%doc %%{_pkgdocdir}/refman.pdf
@ -131,6 +191,13 @@ cp build/platform/qemu/virt/firmware/fw_payload.elf \
%files platform-virt %files platform-virt
%{_datadir}/%{name} %{_datadir}/%{name}
%files images-riscv64
/boot/opensbi/unstable/fw_payload-uboot-qemu-virt-smode.elf
%changelog %changelog
* Sat Mar 30 2019 David Abdurachmanov <david.abdurachmanov@gmail.com> 2019.03.30.f9cfe30-1
- Change the way we find kernel
- Add a QEMU Virt machine build with U-Boot
* Wed Mar 20 2019 David Abdurachmanov <david.abdurachmanov@gmail.com> 2019.03.20.e921fc2-1 * Wed Mar 20 2019 David Abdurachmanov <david.abdurachmanov@gmail.com> 2019.03.20.e921fc2-1
- Initial version - Initial version